From 17acdb5acf4dbb7e6a56bbb777780a7051beb4e7 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 11 Sep 2004 13:07:42 +0000 Subject: [PATCH] slightly better but still lacks --- lib/parsedate.c | 51 ++++++++++++++----------------------------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/lib/parsedate.c b/lib/parsedate.c index 8c734211d6..787507f6fb 100644 --- a/lib/parsedate.c +++ b/lib/parsedate.c @@ -62,10 +62,10 @@ static const char *wkday[] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}; static const char *weekday[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; -static const char *month[]= { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", - "Aug", "Sep", "Oct", "Nov", "Dec" }; +const char *Curl_month[]= { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", + "Aug", "Sep", "Oct", "Nov", "Dec" }; -static const char *tz[]= { "GMT", "UTC" }; +static const char *tz[]= { "GMT", "UTC", "MET" }; /* returns: -1 no day @@ -97,7 +97,7 @@ static int checkmonth(char *check) const char **what; bool found= FALSE; - what = &month[0]; + what = &Curl_month[0]; for(i=0; i<12; i++) { if(curl_strequal(check, what[0])) { found=TRUE; @@ -256,6 +256,15 @@ time_t Curl_parsedate(const char *date) part++; } + if(-1 == secnum) + secnum = minnum = hournum = 0; /* no time, make it zero */ + + if((-1 == mdaynum) || + (-1 == monnum) || + (-1 == yearnum)) + /* lacks vital info, fail */ + return -1; + tm.tm_sec = secnum; tm.tm_min = minnum; tm.tm_hour = hournum; @@ -268,8 +277,7 @@ time_t Curl_parsedate(const char *date) t = mktime(&tm); - /* We have the time-stamp now, but in our local time zone, we must now - adjust it to GMT. */ + /* time zone adjust */ { struct tm *gmt; long delta; @@ -296,34 +304,3 @@ time_t curl_getdate(const char *p, const time_t *now) (void)now; return Curl_parsedate(p); } - -#ifdef TESTIT - -int main(void) -{ - char buffer[1024]; - char cmd[1024]; - time_t t; - - while(fgets(buffer, sizeof(buffer), stdin)) { - size_t len = strlen(buffer); - - buffer[len-1]=0; /* cut off newline */ - - t = curl_getdate(buffer, NULL); - - printf("curl_getdate(): %d\n", t); - - sprintf(cmd, "date -d \"%s\" +%%s", buffer); - - printf("GNU date:\n"); - system(cmd); - - t = parse_a_date(buffer); - printf("parse_a_date: %d\n===================\n\n", t); - } - - return 0; -} - -#endif