]> diplodocus.org Git - nmh/blobdiff - sbr/dtime.c
mh.h: Compact the reserved sequence bit-masks.
[nmh] / sbr / dtime.c
index 066a72d74e444d272a9f7406fb7b85d7fc0d079c..53c565786a97cbbc6d812a62e4fef4058f6c7515 100644 (file)
@@ -1,6 +1,4 @@
-
-/*
- * dtime.c -- time/date routines
+/* dtime.c -- time/date routines
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -41,12 +39,6 @@ char *tw_ldotw[] = {
     "Saturday",  NULL
 };
 
     "Saturday",  NULL
 };
 
-struct zone {
-    char *std;
-    char *dst;
-    int shift;
-};
-
 static int dmsize[] = {
     31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
 };
 static int dmsize[] = {
     31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
 };
@@ -108,13 +100,19 @@ dlocaltime (time_t *clock)
     if (tm->tm_isdst)                  /* if DST is in effect */
        tw.tw_zone -= 60;               /* reset to normal offset */
 #else
     if (tm->tm_isdst)                  /* if DST is in effect */
        tw.tw_zone -= 60;               /* reset to normal offset */
 #else
-    tzset();
+    {
+        static bool deja_vu;
+
+        if (!deja_vu) {
+            deja_vu = true;
+            tzset();
+        }
+    }
     tw.tw_zone = -(timezone / 60);
 #endif
 
     tw.tw_flags &= ~TW_SDAY;
     tw.tw_flags |= TW_SEXP;
     tw.tw_zone = -(timezone / 60);
 #endif
 
     tw.tw_flags &= ~TW_SDAY;
     tw.tw_flags |= TW_SEXP;
-    tw.tw_flags &= ~TW_SZONE;
     tw.tw_flags |= TW_SZEXP;
 
     tw.tw_clock = *clock;
     tw.tw_flags |= TW_SZEXP;
 
     tw.tw_clock = *clock;
@@ -162,7 +160,6 @@ dgmtime (time_t *clock)
 
     tw.tw_flags &= ~TW_SDAY;
     tw.tw_flags |= TW_SEXP;
 
     tw.tw_flags &= ~TW_SDAY;
     tw.tw_flags |= TW_SEXP;
-    tw.tw_flags &= ~TW_SZONE;
     tw.tw_flags |= TW_SZEXP;
 
     tw.tw_clock = *clock;
     tw.tw_flags |= TW_SZEXP;
 
     tw.tw_clock = *clock;
@@ -252,28 +249,29 @@ dasctime (struct tws *tw, int flags)
 {
     char buffer[80];
     static char result[80];
 {
     char buffer[80];
     static char result[80];
+    int twf;
 
     if (!tw)
        return NULL;
 
     /* Display timezone if known */
 
     if (!tw)
        return NULL;
 
     /* Display timezone if known */
-    if ((tw->tw_flags & TW_SZONE) == TW_SZNIL)
-       result[0] = '\0';
-    else
+    if (tw->tw_flags & TW_SZEXP)
        snprintf(result, sizeof(result), " %s", dtimezone(tw->tw_zone, tw->tw_flags | flags));
        snprintf(result, sizeof(result), " %s", dtimezone(tw->tw_zone, tw->tw_flags | flags));
+    else
+       result[0] = '\0';
 
     snprintf(buffer, sizeof(buffer), "%02d %s %0*d %02d:%02d:%02d%s",
            tw->tw_mday, tw_moty[tw->tw_mon],
            tw->tw_year < 100 ? 2 : 4, tw->tw_year,
            tw->tw_hour, tw->tw_min, tw->tw_sec, result);
 
 
     snprintf(buffer, sizeof(buffer), "%02d %s %0*d %02d:%02d:%02d%s",
            tw->tw_mday, tw_moty[tw->tw_mon],
            tw->tw_year < 100 ? 2 : 4, tw->tw_year,
            tw->tw_hour, tw->tw_min, tw->tw_sec, result);
 
-    if ((tw->tw_flags & TW_SDAY) == TW_SEXP)
-       snprintf (result, sizeof(result), "%s, %s", tw_dotw[tw->tw_wday], buffer);
-    else
-       if ((tw->tw_flags & TW_SDAY) == TW_SNIL)
-           strncpy (result, buffer, sizeof(result));
-       else
-           snprintf (result, sizeof(result), "%s (%s)", buffer, tw_dotw[tw->tw_wday]);
+    if ((twf = tw->tw_flags & TW_SDAY)) {
+        if (twf == TW_SEXP)
+            snprintf(result, sizeof(result), "%s, %s", tw_dotw[tw->tw_wday], buffer);
+        else
+           snprintf(result, sizeof(result), "%s (%s)", buffer, tw_dotw[tw->tw_wday]);
+    } else
+        strncpy(result, buffer, sizeof(result));
 
     return result;
 }
 
     return result;
 }
@@ -394,17 +392,6 @@ set_dotw (struct tws *tw)
 }
 
 
 }
 
 
-/*
- * Copy nmh time structure
- */
-
-void
-twscopy (struct tws *tb, struct tws *tw)
-{
-    *tb = *tw;  /* struct copy */
-}
-
-
 /*
  * Compare two nmh time structures
  */
 /*
  * Compare two nmh time structures
  */