Mercurial > hg > octave-kai > gnulib-hg
changeset 1113:9e63acf67991
.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Thu, 13 Nov 1997 14:29:18 +0000 |
parents | 13d9cd0b3ac0 |
children | 0528b8ca22f8 |
files | m4/mktime.m4 |
diffstat | 1 files changed, 75 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/m4/mktime.m4 @@ -0,0 +1,75 @@ +#serial 2 + +dnl From Jim Meyering. +dnl FIXME: this should migrate into libit. + +AC_DEFUN(AM_FUNC_MKTIME, +[AC_REQUIRE([AC_HEADER_TIME])dnl + AC_CHECK_HEADERS(sys/time.h) + AC_CACHE_CHECK([for working mktime], am_cv_func_working_mktime, + [AC_TRY_RUN( +changequote(<<, >>)dnl +<</* Test program from Paul Eggert (eggert@twinsun.com) + and Tony Leneis (tony@plaza.ds.adp.com). */ +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + +static time_t time_t_max; + +/* Values we'll use to set the TZ environment variable. */ +static const char *const tz_strings[] = { + NULL, "GMT0", "JST-9", "EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" +}; +#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) + +static void +mktime_test (now) + time_t now; +{ + if (mktime (localtime (&now)) != now) + exit (1); + now = time_t_max - now; + if (mktime (localtime (&now)) != now) + exit (1); +} + +int +main () +{ + time_t t, delta; + int i; + + for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) + continue; + time_t_max--; + delta = time_t_max / 997; /* a suitable prime number */ + for (i = 0; i < N_STRINGS; i++) + { + if (tz_strings[i]) + putenv (tz_strings[i]); + + for (t = 0; t <= time_t_max - delta; t += delta) + mktime_test (t); + mktime_test ((time_t) 60 * 60); + mktime_test ((time_t) 60 * 60 * 24); + } + exit (0); +} + >>, +changequote([, ])dnl + am_cv_func_working_mktime=yes, am_cv_func_working_mktime=no, + dnl When crosscompiling, assume mktime is missing or broken. + am_cv_func_working_mktime=no) + ]) + if test $am_cv_func_working_mktime = no; then + LIBOBJS="$LIBOBJS mktime.o" + fi +])