#include <h/mh.h> /* for snprintf() */
#include <h/nmh.h>
+#include <h/utils.h>
#include <h/tws.h>
#include <time.h>
tw.tw_clock = *clock;
- return (&tw);
+ return &tw;
}
tw.tw_clock = *clock;
- return (&tw);
+ return &tw;
}
char *
dctime (struct tws *tw)
{
- static char buffer[64];
+ static char buffer[26];
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->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;
}
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;
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 * 60;
+ result -= 60 * 60; /* One hour. */
return (tw->tw_clock = result);
}
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;
}