Index: source/tools/tzcode/asctime.c |
diff --git a/source/tools/tzcode/asctime.c b/source/tools/tzcode/asctime.c |
index e0804f16f4dd23485f44244fdf28d5f4cd7fcd32..152b0db4e593e5f7fdd1c2205bfa38cc327c9f8a 100644 |
--- a/source/tools/tzcode/asctime.c |
+++ b/source/tools/tzcode/asctime.c |
@@ -9,12 +9,6 @@ |
** whereas the output of asctime is supposed to be constant. |
*/ |
-#ifndef lint |
-#ifndef NOID |
-static char elsieid[] = "@(#)asctime.c 8.2"; |
-#endif /* !defined NOID */ |
-#endif /* !defined lint */ |
- |
/*LINTLIBRARY*/ |
#include "private.h" |
@@ -75,9 +69,7 @@ static char buf_asctime[MAX_ASCTIME_BUF_SIZE]; |
*/ |
char * |
-asctime_r(timeptr, buf) |
-register const struct tm * timeptr; |
-char * buf; |
+asctime_r(register const struct tm *timeptr, char *buf) |
{ |
static const char wday_name[][3] = { |
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" |
@@ -91,6 +83,10 @@ char * buf; |
char year[INT_STRLEN_MAXIMUM(int) + 2]; |
char result[MAX_ASCTIME_BUF_SIZE]; |
+ if (timeptr == NULL) { |
+ errno = EINVAL; |
+ return strcpy(buf, "??? ??? ?? ??:??:?? ????\n"); |
+ } |
if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK) |
wn = "???"; |
else wn = wday_name[timeptr->tm_wday]; |
@@ -113,10 +109,9 @@ char * buf; |
timeptr->tm_mday, timeptr->tm_hour, |
timeptr->tm_min, timeptr->tm_sec, |
year); |
- if (strlen(result) < STD_ASCTIME_BUF_SIZE || buf == buf_asctime) { |
- (void) strcpy(buf, result); |
- return buf; |
- } else { |
+ if (strlen(result) < STD_ASCTIME_BUF_SIZE || buf == buf_asctime) |
+ return strcpy(buf, result); |
+ else { |
#ifdef EOVERFLOW |
errno = EOVERFLOW; |
#else /* !defined EOVERFLOW */ |
@@ -131,8 +126,7 @@ char * buf; |
*/ |
char * |
-asctime(timeptr) |
-register const struct tm * timeptr; |
+asctime(register const struct tm *timeptr) |
{ |
return asctime_r(timeptr, buf_asctime); |
} |