rbb 99/12/21 13:16:20
Modified: src/lib/apr acconfig.h aclocal.m4 configure.in src/lib/apr/include apr_time.h src/lib/apr/time/unix access.c Log: A couple of new functions for APR's time library. Revision Changes Path 1.17 +2 -0 apache-2.0/src/lib/apr/acconfig.h Index: acconfig.h =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/acconfig.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- acconfig.h 1999/12/06 15:47:42 1.16 +++ acconfig.h 1999/12/21 21:16:14 1.17 @@ -44,6 +44,8 @@ #undef NEED_RLIM_T #undef USEBCOPY +#undef HAVE_GMTOFF + #undef SIZEOF_SSIZE_T @BOTTOM@ 1.7 +0 -1 apache-2.0/src/lib/apr/aclocal.m4 Index: aclocal.m4 =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/aclocal.m4,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- aclocal.m4 1999/11/13 00:07:04 1.6 +++ aclocal.m4 1999/12/21 21:16:17 1.7 @@ -161,4 +161,3 @@ undefine([AC_CV_NAME])dnl ]) - 1.37 +8 -0 apache-2.0/src/lib/apr/configure.in Index: configure.in =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/configure.in,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- configure.in 1999/12/19 18:09:59 1.36 +++ configure.in 1999/12/21 21:16:17 1.37 @@ -367,6 +367,14 @@ AC_SUBST(sys_typesh) AC_SUBST(sys_uioh) +AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], + ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) + +if test "$ac_cv_struct_tm_gmtoff" = "yes"; then + AC_DEFINE(HAVE_GMTOFF) +fi MAKEFILE1="Makefile lib/Makefile " SUBDIRS="lib " 1.6 +2 -0 apache-2.0/src/lib/apr/include/apr_time.h Index: apr_time.h =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_time.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- apr_time.h 1999/12/21 16:21:41 1.5 +++ apr_time.h 1999/12/21 21:16:19 1.6 @@ -101,6 +101,8 @@ ap_status_t ap_set_wday(ap_time_t *, ap_int32_t); ap_status_t ap_timecmp(ap_time_t *a, ap_time_t *b); +ap_status_t ap_get_gmtoff(int *tz, ap_time_t *tt, ap_context_t *cont); + ap_status_t ap_get_timedata(ap_time_t *, char *, void *); ap_status_t ap_set_timedata(ap_time_t *, void *, char *, ap_status_t (*cleanup) (void *)); 1.9 +37 -0 apache-2.0/src/lib/apr/time/unix/access.c Index: access.c =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/time/unix/access.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- access.c 1999/12/20 16:10:15 1.8 +++ access.c 1999/12/21 21:16:19 1.9 @@ -383,3 +383,40 @@ } } +#if defined(HAVE_GMTOFF) +ap_status_t ap_get_gmtoff(int *tz, ap_time_t *tt, ap_context_t *cont) +{ + if (tt->currtime == NULL) { + tt->currtime = ap_pcalloc(cont, sizeof(struct timeval)); + } + tt->currtime->tv_sec = time(NULL); + tt->explodedtime = localtime(&tt->currtime->tv_sec); + *tz = (int) (tt->explodedtime->tm_gmtoff / 60); + return APR_SUCCESS; +} +#else +ap_status_t ap_get_gmtoff(int *tz, ap_time_t *tt, ap_context_t *cont) +{ + struct tm gmt; + int days, hours, minutes; + + if (tt->currtime == NULL) { + tt->currtime = ap_pcalloc(cont, sizeof(struct timeval)); + } + tt->currtime->tv_sec = time(NULL); + + /* Assume we are never more than 24 hours away. */ + /* remember gmtime/localtime return ptr to static */ + /* buffer... so be careful */ + gmt = *gmtime(&tt->currtime->tv_sec); + tt->explodedtime = localtime(&tt->currtime->tv_sec); + days = tt->explodedtime->tm_yday - gmt.tm_yday; + hours = ((days < -1 ? 24 : 1 < days ? -24 : days * 24) + + tt->explodedtime->tm_hour - gmt.tm_hour); + minutes = hours * 60 + tt->explodedtime->tm_min - gmt.tm_min; + *tz = minutes; + return APR_SUCCESS; +} +#endif + +