From 5e4639e2002d0a19d4278f9ff4ed11f1bdace33b Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 4 Sep 2003 09:52:39 +0000 Subject: localtime_r patch by (Glenn Maynard ) Originally committed as revision 2204 to svn://svn.ffmpeg.org/ffmpeg/trunk --- configure | 15 +++++++++++++++ libavformat/Makefile | 4 ++++ libavformat/dvcore.c | 1 + libavformat/localtime_r.c | 43 +++++++++++++++++++++++++++++++++++++++++++ libavformat/localtime_r.h | 42 ++++++++++++++++++++++++++++++++++++++++++ libavformat/strptime.c | 23 +---------------------- 6 files changed, 106 insertions(+), 22 deletions(-) create mode 100644 libavformat/localtime_r.c create mode 100644 libavformat/localtime_r.h diff --git a/configure b/configure index f253754..81d2d45 100755 --- a/configure +++ b/configure @@ -574,6 +574,16 @@ if $cc -o $TMPE $TMPC 2> /dev/null ; then strptime=yes fi +cat > $TMPC << EOF +#include +int main( void ) { localtime_r(NULL, NULL); } +EOF + +localtime_r=no +if $cc -o $TMPE $TMPC 2> /dev/null ; then + localtime_r=yes +fi + if test "$zlib" = "yes"; then # check for zlib - mmu_man cat > $TMPC << EOF @@ -920,6 +930,11 @@ if test "$strptime" = "yes" ; then else echo "BUILD_STRPTIME=yes" >> config.mak fi +if test "$localtime_r" = "yes" ; then + echo "#define HAVE_LOCALTIME_R 1" >> $TMPH +else + echo "BUILD_LOCALTIME_R=yes" >> config.mak +fi if test "$imlib2" = "yes" ; then echo "HAVE_IMLIB2=yes" >> config.mak fi diff --git a/libavformat/Makefile b/libavformat/Makefile index e064cf6..866fdd5 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -34,6 +34,10 @@ ifeq ($(BUILD_STRPTIME),yes) OBJS+= strptime.o endif +ifeq ($(BUILD_LOCALTIME_R),yes) +OBJS+= localtime_r.o +endif + ifeq ($(CONFIG_VIDEO4LINUX),yes) OBJS+= grab.o endif diff --git a/libavformat/dvcore.c b/libavformat/dvcore.c index c6d5ed6..57864c5 100644 --- a/libavformat/dvcore.c +++ b/libavformat/dvcore.c @@ -21,6 +21,7 @@ */ #include "avformat.h" #include "dvcore.h" +#include "localtime_r.h" /* * The reason why the following three big ugly looking tables are diff --git a/libavformat/localtime_r.c b/libavformat/localtime_r.c new file mode 100644 index 0000000..1b619a4 --- /dev/null +++ b/libavformat/localtime_r.c @@ -0,0 +1,43 @@ +/* Convert a string representation of time to a time value. + Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "localtime_r.h" + +#if !defined(HAVE_LOCALTIME_R) +/* Approximate localtime_r as best we can in its absence. */ +#include + +struct tm * +localtime_r (t, tp) + const time_t *t; + struct tm *tp; +{ + struct tm *l = localtime (t); + if (! l) + return 0; + *tp = *l; + return tp; +} +#endif /* !defined(HAVE_LOCALTIME_R) */ + diff --git a/libavformat/localtime_r.h b/libavformat/localtime_r.h new file mode 100644 index 0000000..a3f8bec --- /dev/null +++ b/libavformat/localtime_r.h @@ -0,0 +1,42 @@ +/* strptime.h + * + * $Id$ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __LOCALTIME_R_H__ +#define __LOCALTIME_R_H__ + +/* + * Version of "localtime_r()", for the benefit of OSes that don't have it. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#if !defined(HAVE_LOCALTIME_R) +#include +/* Approximate localtime_r as best we can in its absence. */ +# define localtime_r my_localtime_r +extern struct tm *localtime_r(const time_t *, struct tm *); +#endif + +#endif diff --git a/libavformat/strptime.c b/libavformat/strptime.c index 7aece6a..4564538 100644 --- a/libavformat/strptime.c +++ b/libavformat/strptime.c @@ -37,6 +37,7 @@ #endif #include "strptime.h" +#include "localtime_r.h" #ifndef __P # if defined (__GNUC__) || (defined (__STDC__) && __STDC__) @@ -46,28 +47,6 @@ # endif /* GCC. */ #endif /* Not __P. */ -#if ! HAVE_LOCALTIME_R && ! defined localtime_r -# ifdef _LIBC -# define localtime_r __localtime_r -# else -/* Approximate localtime_r as best we can in its absence. */ -# define localtime_r my_localtime_r -static struct tm *localtime_r __P ((const time_t *, struct tm *)); -static struct tm * -localtime_r (t, tp) - const time_t *t; - struct tm *tp; -{ - struct tm *l = localtime (t); - if (! l) - return 0; - *tp = *l; - return tp; -} -# endif /* ! _LIBC */ -#endif /* ! HAVE_LOCALTIME_R && ! defined (localtime_r) */ - - #define match_char(ch1, ch2) if (ch1 != ch2) return NULL #if defined __GNUC__ && __GNUC__ >= 2 # define match_string(cs1, s2) \ -- cgit v1.1