#include #include /* * Internal ascii conversion routine, avoid use of printf, it's a bit big! */ static void hit(buf, val) char *buf; int val; { *buf = '0' + val % 10; } void __asctime(buffer, ptm) register char *buffer; struct tm *ptm; { static char days[] = "SunMonTueWedThuFriSat"; static char mons[] = "JanFebMarAprMayJunJulAugSepOctNovDec"; int year; /* 012345678901234567890123456 */ strcpy(buffer, "Err Err .. ..:..:.. ....\n"); if ((ptm->tm_wday >= 0) && (ptm->tm_wday <= 6)) memcpy(buffer, days + 3 * (ptm->tm_wday), 3); if ((ptm->tm_mon >= 0) && (ptm->tm_mon <= 11)) memcpy(buffer + 4, mons + 3 * (ptm->tm_mon), 3); hit(buffer + 8, ptm->tm_mday / 10); hit(buffer + 9, ptm->tm_mday); hit(buffer + 11, ptm->tm_hour / 10); hit(buffer + 12, ptm->tm_hour); hit(buffer + 14, ptm->tm_min / 10); hit(buffer + 15, ptm->tm_min); hit(buffer + 17, ptm->tm_sec / 10); hit(buffer + 18, ptm->tm_sec); year = ptm->tm_year + 1900; hit(buffer + 20, year / 1000); hit(buffer + 21, year / 100); hit(buffer + 22, year / 10); hit(buffer + 23, year); }