123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*
- * asctime - print a date
- */
- /* $Id$ */
- #include <string.h>
- #include <time.h>
- #include "loc_time.h"
- #define DATE_STR "??? ??? ?? ??:??:?? ????\n"
- static char *
- two_digits(register char *pb, int i, int nospace)
- {
- *pb = (i / 10) % 10 + '0';
- if (!nospace && *pb == '0') *pb = ' ';
- pb++;
- *pb++ = (i % 10) + '0';
- return ++pb;
- }
- static char *
- four_digits(register char *pb, int i)
- {
- i %= 10000;
- *pb++ = (i / 1000) + '0';
- i %= 1000;
- *pb++ = (i / 100) + '0';
- i %= 100;
- *pb++ = (i / 10) + '0';
- *pb++ = (i % 10) + '0';
- return ++pb;
- }
- char *asctime(const struct tm *timeptr)
- {
- static char buf[26];
- register char *pb = buf;
- register const char *ps;
- register int n;
- strcpy(pb, DATE_STR);
- ps = _days[timeptr->tm_wday];
- n = ABB_LEN;
- while(--n >= 0) *pb++ = *ps++;
- pb++;
- ps = _months[timeptr->tm_mon];
- n = ABB_LEN;
- while(--n >= 0) *pb++ = *ps++;
- pb++;
- pb = two_digits(
- two_digits(
- two_digits(two_digits(pb, timeptr->tm_mday, 0)
- , timeptr->tm_hour, 1)
- , timeptr->tm_min, 1)
- , timeptr->tm_sec, 1);
- four_digits(pb, timeptr->tm_year + 1900);
- return buf;
- }
|