Return-Path: Delivered-To: apache-cvs-archive@hyperreal.org Received: (qmail 10748 invoked by uid 6000); 9 Aug 1999 15:52:35 -0000 Received: (qmail 10741 invoked by alias); 9 Aug 1999 15:52:33 -0000 Delivered-To: apache-apr-cvs@hyperreal.org Received: (qmail 10739 invoked by uid 236); 9 Aug 1999 15:52:32 -0000 Date: 9 Aug 1999 15:52:32 -0000 Message-ID: <19990809155232.10738.qmail@hyperreal.org> From: rbb@hyperreal.org To: apache-apr-cvs@hyperreal.org Subject: cvs commit: apache-apr/include apr_portable.h Sender: apache-cvs-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org rbb 99/08/09 08:52:32 Modified: apr/include apr_config.h.in apr/test ab_apr.c apr/time/unix access.c atime.h time.c include apr_portable.h Log: Update Unix side to match Windows side from the work done this weekend. All the test program compile now, and the simple ones still work. I am still working on the more complex programs. Revision Changes Path 1.14 +1 -0 apache-apr/apr/include/apr_config.h.in Index: apr_config.h.in =================================================================== RCS file: /home/cvs/apache-apr/apr/include/apr_config.h.in,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- apr_config.h.in 1999/08/04 17:51:56 1.13 +++ apr_config.h.in 1999/08/09 15:52:29 1.14 @@ -248,6 +248,7 @@ #undef HAVE_LIBPTHREAD #define API_EXPORT(type) type #define API_EXPORT_NONSTD(type) type +#define API_VAR_IMPORT extern /* Make sure we have ssize_t defined to be somethine */ #undef ssize_t 1.15 +0 -14 apache-apr/apr/test/ab_apr.c Index: ab_apr.c =================================================================== RCS file: /home/cvs/apache-apr/apr/test/ab_apr.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- ab_apr.c 1999/08/08 21:19:45 1.14 +++ ab_apr.c 1999/08/09 15:52:29 1.15 @@ -233,20 +233,6 @@ } /* --------------------------------------------------------- */ - /* returns the time in ms between two timevals */ - -static int timedif(struct timeval a, struct timeval b) -{ - register int us, s; - - us = a.tv_usec - b.tv_usec; - us /= 1000; - s = a.tv_sec - b.tv_sec; - s *= 1000; - return s + us; -} - - /* --------------------------------------------------------- */ /* calculate and output results */ 1.8 +1 -1 apache-apr/apr/time/unix/access.c Index: access.c =================================================================== RCS file: /home/cvs/apache-apr/apr/time/unix/access.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- access.c 1999/07/30 15:35:57 1.7 +++ access.c 1999/08/09 15:52:30 1.8 @@ -69,7 +69,7 @@ ap_status_t ap_get_curtime(struct atime_t *time, ap_int64_t *rv) { if (time) { - (*rv) = time->currtime; + (*rv) = time->currtime->tv_sec; return APR_SUCCESS; } return APR_ENOTIME; 1.3 +2 -2 apache-apr/apr/time/unix/atime.h Index: atime.h =================================================================== RCS file: /home/cvs/apache-apr/apr/time/unix/atime.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- atime.h 1999/05/21 19:54:04 1.2 +++ atime.h 1999/08/09 15:52:30 1.3 @@ -57,11 +57,11 @@ #define ATIME_H #include "apr_time.h" -#include +#include struct atime_t { ap_context_t *cntxt; - time_t currtime; + struct timeval *currtime; struct tm *explodedtime; }; 1.9 +38 -18 apache-apr/apr/time/unix/time.c Index: time.c =================================================================== RCS file: /home/cvs/apache-apr/apr/time/unix/time.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- time.c 1999/07/30 15:35:57 1.8 +++ time.c 1999/08/09 15:52:31 1.9 @@ -78,7 +78,7 @@ (*new)->cntxt = cont; (*new)->explodedtime = NULL; - (*new)->currtime = -1; + (*new)->currtime = NULL; return APR_SUCCESS; } @@ -89,9 +89,9 @@ */ ap_status_t ap_current_time(struct atime_t *new) { - if (time(&new->currtime) == -1) { - return errno; - } + struct timeval newtime; + new->currtime = ap_palloc(new->cntxt, sizeof(struct timeval)); + gettimeofday(new->currtime, NULL); return APR_SUCCESS; } @@ -104,15 +104,15 @@ * APR_LOCALTIME -- Use local time * APR_UTCTIME -- Use UTC time */ -ap_status_t ap_explode_time(struct atime_t *time, ap_timetype_e type) +ap_status_t ap_explode_time(struct atime_t *atime, ap_timetype_e type) { switch (type) { case APR_LOCALTIME: { - time->explodedtime = localtime(&time->currtime); + atime->explodedtime = localtime(&atime->currtime->tv_sec); break; } case APR_UTCTIME: { - time->explodedtime = gmtime(&time->currtime); + atime->explodedtime = gmtime(&atime->currtime->tv_sec); break; } } @@ -125,14 +125,14 @@ * since epoch * arg 1) The time entity to reference. */ -ap_status_t ap_implode_time(struct atime_t *time) +ap_status_t ap_implode_time(struct atime_t *atime) { int year; time_t days; static const int dayoffset[12] = {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275}; - year = time->explodedtime->tm_year; + year = atime->explodedtime->tm_year; if (year < 70 || ((sizeof(time_t) <= 4) && (year >= 138))) { return APR_EBADDATE; @@ -140,23 +140,25 @@ /* shift new year to 1st March in order to make leap year calc easy */ - if (time->explodedtime->tm_mon < 2) + if (atime->explodedtime->tm_mon < 2) year--; /* Find number of days since 1st March 1900 (in the Gregorian calendar). */ days = year * 365 + year / 4 - year / 100 + (year / 100 + 3) / 4; - days += dayoffset[time->explodedtime->tm_mon] + - time->explodedtime->tm_mday - 1; + days += dayoffset[atime->explodedtime->tm_mon] + + atime->explodedtime->tm_mday - 1; days -= 25508; /* 1 jan 1970 is 25508 days since 1 mar 1900 */ - days = ((days * 24 + time->explodedtime->tm_hour) * 60 + - time->explodedtime->tm_min) * 60 + time->explodedtime->tm_sec; + days = ((days * 24 + atime->explodedtime->tm_hour) * 60 + + atime->explodedtime->tm_min) * 60 + atime->explodedtime->tm_sec; if (days < 0) { return APR_EBADDATE; } - time->currtime = days; /* must be a valid time */ + atime->currtime = ap_palloc(atime->cntxt, sizeof(struct timeval)); + atime->currtime->tv_sec = days; /* must be a valid time */ + atime->currtime->tv_usec = 0; return APR_SUCCESS; } @@ -166,12 +168,12 @@ * arg 1) The time value to convert. * arg 2) The OS specific value to convert to. */ -ap_status_t ap_get_os_time(struct atime_t *thetime, ap_os_time_t *atime) +ap_status_t ap_get_os_time(struct atime_t *thetime, ap_os_time_t **atime) { if (thetime == NULL) { return APR_ENOTIME; } - if (thetime->currtime == -1) { + if (thetime->currtime == NULL) { ap_implode_time(thetime); } atime = &(thetime->currtime); @@ -195,7 +197,25 @@ (*thetime) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); (*thetime)->cntxt = cont; } - (*thetime)->currtime = *atime; + (*thetime)->currtime = atime; return APR_SUCCESS; } +/* ***APRDOC******************************************************** + * ap_status_t ap_timediff(ap_time_t *, ap_time_t *, ap_int32_t *) + * Retrieve the difference between two time structures in milliseconds. + * arg 1) The first time value + * arg 2) The second timevalue + * arg 3) The difference to return. + */ +ap_status_t ap_timediff(struct atime_t *a, struct atime_t *b, ap_int32_t *rv) +{ + register int us, s; + + us = a->currtime->tv_usec - b->currtime->tv_usec; + us /= 1000; + s = a->currtime->tv_sec - b->currtime->tv_sec; + s *= 1000; + return s + us; +} + 1.5 +2 -2 apache-apr/include/apr_portable.h Index: apr_portable.h =================================================================== RCS file: /home/cvs/apache-apr/include/apr_portable.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- apr_portable.h 1999/07/13 19:51:41 1.4 +++ apr_portable.h 1999/08/09 15:52:31 1.5 @@ -137,7 +137,7 @@ typedef pthread_t ap_os_thread_t; typedef pid_t ap_os_proc_t; typedef pthread_key_t ap_os_threadkey_t; -typedef time_t ap_os_time_t; +typedef struct timeval ap_os_time_t; #endif ap_status_t ap_get_os_file(ap_file_t *, ap_os_file_t *); @@ -146,7 +146,7 @@ ap_status_t ap_get_os_lock(ap_lock_t *, ap_os_lock_t *); ap_status_t ap_get_os_thread(ap_thread_t *, ap_os_thread_t *); ap_status_t ap_get_os_proc(ap_proc_t *, ap_os_proc_t *); -ap_status_t ap_get_os_time(ap_time_t *, ap_os_time_t *); +ap_status_t ap_get_os_time(ap_time_t *, ap_os_time_t **); ap_status_t ap_get_os_threadkey(ap_key_t *, ap_os_threadkey_t *); ap_status_t ap_put_os_file(ap_context_t *, ap_file_t **, ap_os_file_t *);