# include <time.h> # include "dgd.h" /* * NAME: P->time() * DESCRIPTION: return the current time */ Uint P_time() { return (Uint) time((time_t *) NULL); } /* * NAME: P->ctime() * DESCRIPTION: convert the given time to a string */ char *P_ctime(Uint t) { char *buf; register int offset; offset = 0; for (offset = 0; t >= 2147397248L; t -= 1009843200L, offset += 32) ; buf = ctime((time_t *) &t); if (offset != 0) { long year; year = strtol(buf + 20, (char **) NULL, 10) + offset; if (year >= 2100 && (buf[4] != 'J' || buf[5] != 'a') && (buf[4] != 'F' || (buf[8] == '2' && buf[9] == '9'))) { /* 2100 is not a leap year */ t += 86400L; if (t >= 2147397248L) { t -= 1009843200L; offset += 32; } buf = ctime((time_t *) &t); year = strtol(buf + 20, (char **) NULL, 10) + offset; } sprintf(buf + 20, "%ld\012", year); } return buf; }