brane       01/06/30 02:50:31

  Modified:    include  apr_time.h
               test     testtime.c
               time/unix time.c
               time/win32 time.c
  Log:
  Added new function apr_implode_gmt, which works like apr_implode_time, except
  that it always produces an apr_time_t that represents GMT.
  
  * include/apr_time.h (apr_implode_gmt): New function.
  * time/unix/time.c, time/win32/time.c: Implement it.
  * test/testtime.c: Test it. The test is analogous to the apr_implode_time 
test.
  
  Revision  Changes    Path
  1.40      +10 -0     apr/include/apr_time.h
  
  Index: apr_time.h
  ===================================================================
  RCS file: /home/cvs/apr/include/apr_time.h,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- apr_time.h        2001/06/09 06:54:33     1.39
  +++ apr_time.h        2001/06/30 09:50:27     1.40
  @@ -176,6 +176,16 @@
                                              apr_exploded_time_t *input);
   
   /**
  + * Convert time value from human readable format to a numeric apr_time_t that
  + * always represents GMT
  + * @param result the resulting imploded time
  + * @param input the input exploded time
  + * @deffunc apr_status_t apr_implode_gmt(apr_time_t *result, 
apr_exploded_time_t *input)
  + */
  +APR_DECLARE(apr_status_t) apr_implode_gmt(apr_time_t *result, 
  +                                          apr_exploded_time_t *input);
  +
  +/**
    * Sleep for the specified number of micro-seconds.
    * @param t desired amount of time to sleep.
    * @deffunc void apr_sleep(apr_interval_time_t t)
  
  
  
  1.23      +15 -0     apr/test/testtime.c
  
  Index: testtime.c
  ===================================================================
  RCS file: /home/cvs/apr/test/testtime.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- testtime.c        2001/06/29 08:23:15     1.22
  +++ testtime.c        2001/06/30 09:50:29     1.23
  @@ -99,6 +99,21 @@
       }
       printf("OK\n");
   
  +    STD_TEST_NEQ("    apr_implode_gmt (localtime)",
  +                 apr_implode_gmt(&imp, &xt2))
  +
  +    printf("%-60s", "    checking localtime explode == GMT implode");
  +    if (imp != now) {
  +     printf("mismatch\n"
  +                "\t\tapr_now()                %" APR_INT64_T_FMT "\n"
  +                "\t\tapr_implode() returned   %" APR_INT64_T_FMT "\n"
  +                "\t\terror delta was          %" APR_TIME_T_FMT "\n"
  +                "\t\tshould have been         0\n",
  +                now, imp, imp-now);
  +     exit(-1);
  +    }
  +    printf("OK\n");
  +
       str = apr_pcalloc(p, sizeof(char) * STR_SIZE);
       str2 = apr_pcalloc(p, sizeof(char) * STR_SIZE);
       imp = 0;
  
  
  
  1.48      +8 -0      apr/time/unix/time.c
  
  Index: time.c
  ===================================================================
  RCS file: /home/cvs/apr/time/unix/time.c,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- time.c    2001/06/29 12:17:40     1.47
  +++ time.c    2001/06/30 09:50:29     1.48
  @@ -193,6 +193,14 @@
       return APR_SUCCESS;
   }
   
  +apr_status_t apr_implode_gmt(apr_time_t *t, apr_exploded_time_t *xt)
  +{
  +    apr_status_t status = apr_implode_time(t, xt);
  +    if (status == APR_SUCCESS)
  +        *t -= (apr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC;
  +    return status;
  +}
  +
   apr_status_t apr_os_imp_time_get(apr_os_imp_time_t **ostime, apr_time_t 
*aprtime)
   {
       (*ostime)->tv_usec = *aprtime % APR_USEC_PER_SEC;
  
  
  
  1.24      +9 -0      apr/time/win32/time.c
  
  Index: time.c
  ===================================================================
  RCS file: /home/cvs/apr/time/win32/time.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- time.c    2001/06/06 18:59:25     1.23
  +++ time.c    2001/06/30 09:50:30     1.24
  @@ -210,6 +210,15 @@
       return APR_SUCCESS;
   }
   
  +APR_DECLARE(apr_status_t) apr_implode_gmt(apr_time_t *t,
  +                                          apr_exploded_time_t *xt)
  +{
  +    apr_status_t status = apr_implode_time(t, xt);
  +    if (status == APR_SUCCESS)
  +        *t -= (apr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC;
  +    return status;
  +}
  +
   APR_DECLARE(apr_status_t) apr_os_imp_time_get(apr_os_imp_time_t **ostime,
                                                 apr_time_t *aprtime)
   {
  
  
  

Reply via email to