diff options
author | ru <ru@FreeBSD.org> | 2001-09-04 16:17:17 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-09-04 16:17:17 +0000 |
commit | 29e117e97875b5c4c297c48dae32a287e46e1785 (patch) | |
tree | 45f9da482c41ba2077e2d956cf8b8e73d297ec40 | |
parent | 3527c363d57e1688de0e11e9b409130ba99d6c4a (diff) | |
download | FreeBSD-src-29e117e97875b5c4c297c48dae32a287e46e1785.zip FreeBSD-src-29e117e97875b5c4c297c48dae32a287e46e1785.tar.gz |
Don't reinvent the wheel; use strptime(3).
MFC after: 2 weeks
-rw-r--r-- | sbin/dump/unctime.c | 48 |
1 files changed, 4 insertions, 44 deletions
diff --git a/sbin/dump/unctime.c b/sbin/dump/unctime.c index 4e8e669..7184e3b 100644 --- a/sbin/dump/unctime.c +++ b/sbin/dump/unctime.c @@ -40,10 +40,6 @@ static const char rcsid[] = #endif /* not lint */ #include <time.h> -#ifdef __STDC__ -#include <stdlib.h> -#include <string.h> -#endif /* * Convert a ctime(3) format string into a system format date. @@ -52,52 +48,16 @@ static const char rcsid[] = * Return -1 if the string is not in ctime format. */ -/* - * Offsets into the ctime string to various parts. - */ - -#define E_MONTH 4 -#define E_DAY 8 -#define E_HOUR 11 -#define E_MINUTE 14 -#define E_SECOND 17 -#define E_YEAR 20 - -static int lookup __P((char *)); - time_t unctime(str) char *str; { struct tm then; - char dbuf[26]; - (void) strncpy(dbuf, str, sizeof(dbuf) - 1); - dbuf[sizeof(dbuf) - 1] = '\0'; - dbuf[E_MONTH+3] = '\0'; - if ((then.tm_mon = lookup(&dbuf[E_MONTH])) < 0) - return (-1); - then.tm_mday = atoi(&dbuf[E_DAY]); - then.tm_hour = atoi(&dbuf[E_HOUR]); - then.tm_min = atoi(&dbuf[E_MINUTE]); - then.tm_sec = atoi(&dbuf[E_SECOND]); - then.tm_year = atoi(&dbuf[E_YEAR]) - 1900; + str = strptime(str, "%a %b %e %T %Y", &then); + if (str == NULL || (*str != '\n' && *str != '\0')) + return ((time_t)-1); then.tm_isdst = -1; - return(mktime(&then)); -} - -static char months[] = - "JanFebMarAprMayJunJulAugSepOctNovDec"; - -static int -lookup(str) - char *str; -{ - register char *cp, *cp2; - - for (cp = months, cp2 = str; *cp != '\0'; cp += 3) - if (strncmp(cp, cp2, 3) == 0) - return((cp-months) / 3); - return(-1); + return (mktime(&then)); } |