Aha! Finally found the culprit. Someone (possibly me) at
authorArt Cancro <ajc@citadel.org>
Sat, 19 Jan 2008 06:51:26 +0000 (06:51 +0000)
committerArt Cancro <ajc@citadel.org>
Sat, 19 Jan 2008 06:51:26 +0000 (06:51 +0000)
some point in the past decided to set the TZ environment variable
to UTC if it was empty.  This is wrong because an empty TZ causes
libc to discover the timezone by other means.  As a result, hosts
that were in other timezones were getting their times changed to
UTC.

webcit/fmt_date.c
webcit/webserver.c

index c01f8778e286ef5ecc3e3f9e099af4b0ee30862c..af694a8c6b0ea72bd2503ad6102349c90bad3ce8 100644 (file)
@@ -1,27 +1,23 @@
 /*
  * $Id$
  */
-/**
- * \defgroup FormatDates Miscellaneous routines formating dates
- * \ingroup Calendaring
- */
-/*@{*/
+
 #include "webcit.h"
 #include "webserver.h"
 
-typedef unsigned char byte; /**< a byte. */
+typedef unsigned char byte;
 
 #define FALSE 0 /**< no. */
 #define TRUE 1 /**< yes. */
 
-/**
- * \brief      Wrapper around strftime() or strftime_l()
- *             depending upon how our build is configured.
+/*
+ * Wrapper around strftime() or strftime_l()
+ * depending upon how our build is configured.
  *
- * \param      s       String target buffer
- * \param      max     Maximum size of string target buffer
- * \param      format  strftime() format
- * \param      tm      Input date/time
+ * s           String target buffer
+ * max         Maximum size of string target buffer
+ * format      strftime() format
+ * tm          Input date/time
  */
 size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm)
 {
@@ -38,11 +34,8 @@ size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm)
 }
 
 
-/**
- * \brief Format a date/time stamp for output 
- * \param buf the output buffer
- * \param thetime time to convert to string 
- * \param brief do we want compact view?????
+/*
+ * Format a date/time stamp for output 
  */
 void webcit_fmt_date(char *buf, time_t thetime, int brief)
 {
@@ -50,7 +43,7 @@ void webcit_fmt_date(char *buf, time_t thetime, int brief)
        struct tm today_tm;
        time_t today_timet;
        int time_format;
-       
+
        time_format = get_time_format_cached ();
        today_timet = time(NULL);
        localtime_r(&today_timet, &today_tm);
@@ -59,7 +52,7 @@ void webcit_fmt_date(char *buf, time_t thetime, int brief)
 
        if (brief) {
 
-               /** If date == today, show only the time */
+               /* If date == today, show only the time */
                if ((tm.tm_year == today_tm.tm_year)
                  &&(tm.tm_mon == today_tm.tm_mon)
                  &&(tm.tm_mday == today_tm.tm_mday)) {
@@ -68,14 +61,14 @@ void webcit_fmt_date(char *buf, time_t thetime, int brief)
                        else
                                wc_strftime(buf, 32, "%l:%M%p", &tm);
                }
-               /** Otherwise, for messages up to 6 months old, show the month and day, and the time */
+               /* Otherwise, for messages up to 6 months old, show the month and day, and the time */
                else if (today_timet - thetime < 15552000) {
                        if (time_format == WC_TIMEFORMAT_24) 
                                wc_strftime(buf, 32, "%b %d %k:%M", &tm);
                        else
                                wc_strftime(buf, 32, "%b %d %l:%M%p", &tm);
                }
-               /** older than 6 months, show only the date */
+               /* older than 6 months, show only the date */
                else {
                        wc_strftime(buf, 32, "%b %d %Y", &tm);
                }
@@ -89,8 +82,8 @@ void webcit_fmt_date(char *buf, time_t thetime, int brief)
 }
 
 
-/**
- * \brief learn the users timeformat preference.
+/*
+ * learn the users timeformat preference.
  */
 int get_time_format_cached (void)
 {
@@ -108,10 +101,10 @@ int get_time_format_cached (void)
        return *time_format_cache;
 }
 
-/**
- * \brief Format TIME ONLY for output 
- * \param buf the output buffer
- * \param thetime time to format into buf
+/*
+ * Format TIME ONLY for output 
+ * buf         the output buffer
+ * thetime     time to format into buf
  */
 void fmt_time(char *buf, time_t thetime)
 {
@@ -143,13 +136,11 @@ void fmt_time(char *buf, time_t thetime)
 
 
 
-/**
- * \brief Break down the timestamp used in HTTP headers
+/*
+ * Break down the timestamp used in HTTP headers
  * Should read rfc1123 and rfc850 dates OK
- * \todo FIXME won't read asctime
+ * FIXME won't read asctime
  * Doesn't understand timezone, but we only should be using GMT/UTC anyway
- * \param buf time to parse
- * \return the time found in buf
  */
 time_t httpdate_to_timestamp(char *buf)
 {
@@ -168,62 +159,62 @@ time_t httpdate_to_timestamp(char *buf)
        for (; *c != ' ' && *c != '-'; c++);
        c++;
 
-       /** Get month */
+       /* Get month */
        switch (*c) {
-       case 'A':       /** April, August */
+       case 'A':       /* April, August */
                tt.tm_mon = (c[1] == 'p') ? 3 : 7;
                break;
-       case 'D':       /** December */
+       case 'D':       /* December */
                tt.tm_mon = 11;
                break;
-       case 'F':       /** February */
+       case 'F':       /* February */
                tt.tm_mon = 1;
                break;
-       case 'M':       /** March, May */
+       case 'M':       /* March, May */
                tt.tm_mon = (c[2] == 'r') ? 2 : 4;
                break;
-       case 'J':       /** January, June, July */
+       case 'J':       /* January, June, July */
                tt.tm_mon = (c[2] == 'n') ? ((c[1] == 'a') ? 0 : 5) : 6;
                break;
-       case 'N':       /** November */
+       case 'N':       /* November */
                tt.tm_mon = 10;
                break;
-       case 'O':       /** October */
+       case 'O':       /* October */
                tt.tm_mon = 9;
                break;
-       case 'S':       /** September */
+       case 'S':       /* September */
                tt.tm_mon = 8;
                break;
        default:
                return 42;
-               break;  /** NOTREACHED */
+               break;  /* NOTREACHED */
        }
        c += 4;
 
        tt.tm_year = 0;
-       /** Get year */
+       /* Get year */
        tt.tm_year = atoi(c);
        for (; *c != ' '; c++);
        c++;
        if (tt.tm_year >= 1900)
                tt.tm_year -= 1900;
 
-       /** Get hour */
+       /* Get hour */
        tt.tm_hour = atoi(c);
        for (; *c != ':'; c++);
        c++;
 
-       /** Get minute */
+       /* Get minute */
        tt.tm_min = atoi(c);
        for (; *c != ':'; c++);
        c++;
 
-       /** Get second */
+       /* Get second */
        tt.tm_sec = atoi(c);
        for (; *c && *c != ' '; c++);
 
-       /** Got everything; let's go */
-       /** First, change to UTC */
+       /* Got everything; let's go */
+       /* First, change to UTC */
        if (getenv("TZ"))
                snprintf(tz, 256, "TZ=%s", getenv("TZ"));
        else
@@ -237,6 +228,3 @@ time_t httpdate_to_timestamp(char *buf)
 }
 
 
-
-
-/*@}*/
index 91dc4d12ee84bbf049598b6c7a81f57ae934b315..2bb9270301342da85503e90cfb927e040aa47c3b 100644 (file)
@@ -670,9 +670,6 @@ int main(int argc, char **argv)
 
        strcpy(uds_listen_path, "");
 
-       if (getenv("TZ") == NULL)
-               putenv("TZ=UTC");
-
        /* Parse command line */
 #ifdef HAVE_OPENSSL
        while ((a = getopt(argc, argv, "h:i:p:t:x:dD:cfs")) != EOF)