#include <sys/types.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#define E_MONTH 4
#define E_DAY 8
#define E_HOUR 11
#define E_MINUTE 14
#define E_SECOND 17
#define E_YEAR 20
#ifdef __STDC__
static int lookup(char *);
static time_t emitl(struct tm *);
#else
static int lookup();
static time_t emitl();
#endif
time_t
unctime(str)
char *str;
{
struct tm then;
char dbuf[30];
(void) strncpy(dbuf, str, 24);
dbuf[24] = '\0';
dbuf[E_MONTH+3] = '\0';
then.tm_mon = lookup(&dbuf[E_MONTH]);
if (then.tm_mon < 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;
return (emitl(&then));
}
static char months[] =
"JanFebMarAprMayJunJulAugSepOctNovDec";
static int
lookup(str)
char *str;
{
char *cp, *cp2;
for (cp = months, cp2 = str; *cp != 0; cp += 3)
if (strncmp(cp, cp2, 3) == 0)
return (((int)(cp-months)) / 3);
return (-1);
}
static time_t
emitl(dp)
struct tm *dp;
{
dp->tm_isdst = -1;
return (mktime(dp));
}