]> diplodocus.org Git - nmh/blobdiff - sbr/dtime.c
inc/test-eom-align: Fix MMDF-mbox `B' size calculation.
[nmh] / sbr / dtime.c
index 3a51d87ff11145783475c06b76e9ce8b87760c9c..5e0fdc0a3fb496a4f8404da998d793d4d66ed9f9 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <h/mh.h>   /* for snprintf() */
 #include <h/nmh.h>
 
 #include <h/mh.h>   /* for snprintf() */
 #include <h/nmh.h>
+#include <h/utils.h>
 #include <h/tws.h>
 #include <time.h>
 
 #include <h/tws.h>
 #include <time.h>
 
@@ -117,7 +118,7 @@ dlocaltime (time_t *clock)
 
     tw.tw_clock = *clock;
 
 
     tw.tw_clock = *clock;
 
-    return (&tw);
+    return &tw;
 }
 
 
 }
 
 
@@ -164,7 +165,7 @@ dgmtime (time_t *clock)
 
     tw.tw_clock = *clock;
 
 
     tw.tw_clock = *clock;
 
-    return (&tw);
+    return &tw;
 }
 
 
 }
 
 
@@ -178,15 +179,15 @@ dgmtime (time_t *clock)
 char *
 dctime (struct tws *tw)
 {
 char *
 dctime (struct tws *tw)
 {
-    static char buffer[64];
+    static char buffer[26];
 
     if (!tw)
        return NULL;
 
 
     if (!tw)
        return NULL;
 
-    snprintf (buffer, sizeof(buffer), "%.3s %.3s %02d %02d:%02d:%02d %.4d\n",
+    snprintf (buffer, sizeof(buffer), "%.3s %.3s %02d %02d:%02d:%02d %s\n",
            tw_dotw[tw->tw_wday], tw_moty[tw->tw_mon], tw->tw_mday,
            tw->tw_hour, tw->tw_min, tw->tw_sec,
            tw_dotw[tw->tw_wday], tw_moty[tw->tw_mon], tw->tw_mday,
            tw->tw_hour, tw->tw_min, tw->tw_sec,
-           tw->tw_year < 100 ? tw->tw_year + 1900 : tw->tw_year);
+           m_strn(tw->tw_year < 100 ? tw->tw_year + 1900 : tw->tw_year, 4));
 
     return buffer;
 }
 
     return buffer;
 }
@@ -291,7 +292,7 @@ char *dtimezone(int offset, int flags)
     unsigned os, hours, mins;
 
     pos = offset >= 0;
     unsigned os, hours, mins;
 
     pos = offset >= 0;
-    os = pos ? offset : ~offset + 1;
+    os = pos ? offset : ~offset + 1; /* abs(3) undefined on INT_MIN. */
     hours = os / 60;
     mins = os % 60;
 
     hours = os / 60;
     mins = os % 60;
 
@@ -344,14 +345,17 @@ dmktime (struct tws *tw)
     while (--mon)
        result += dmsize[mon - 1];
     result += mday - 1;
     while (--mon)
        result += dmsize[mon - 1];
     result += mday - 1;
-    result = 24 * result + hour;
-    result = 60 * result + min;
-    result = 60 * result + sec;
+    result *= 24; /* Days to hours. */
+    result += hour;
+    result *= 60; /* Hours to minutes. */
+    result += min;
+    result *= 60; /* Minutes to seconds. */
+    result += sec;
     result -= 60 * tw->tw_zone;
     if (tw->tw_flags & TW_DST)
     result -= 60 * tw->tw_zone;
     if (tw->tw_flags & TW_DST)
-       result -= 60 * 60;
+       result -= 60 * 60; /* One hour. */
 
 
-    return (tw->tw_clock = result);
+    return tw->tw_clock = result;
 }
 
 
 }
 
 
@@ -404,6 +408,6 @@ twsort (struct tws *tw1, struct tws *tw2)
     if (tw2->tw_clock == 0)
        dmktime (tw2);
 
     if (tw2->tw_clock == 0)
        dmktime (tw2);
 
-    return ((c1 = tw1->tw_clock) > (c2 = tw2->tw_clock) ? 1
-           : c1 == c2 ? 0 : -1);
+    return (c1 = tw1->tw_clock) > (c2 = tw2->tw_clock) ? 1
+           : c1 == c2 ? 0 : -1;
 }
 }