| version 1.1.2.4, 2013/03/07 15:49:27 | version 1.2, 2013/03/07 16:24:32 | 
| Line 83  stridx_compare(struct stridx * __restrict a, struct st | Line 83  stridx_compare(struct stridx * __restrict a, struct st | 
 | } | } | 
 |  |  | 
 | static int | static int | 
| search4month(char * __restrict psMonth, int * __restrict id) | search4month(char * psMonth, int * __restrict id) | 
 | { | { | 
 | static int sorted = 0; | static int sorted = 0; | 
| struct stridx *el; | struct stridx *el, item = { psMonth, 0 }; | 
 |  |  | 
 | if (!psMonth) | if (!psMonth) | 
 | return -1; | return -1; | 
| Line 98  search4month(char * __restrict psMonth, int * __restri | Line 98  search4month(char * __restrict psMonth, int * __restri | 
 | } | } | 
 |  |  | 
 | str_Lower(psMonth); | str_Lower(psMonth); | 
| el = bsearch(psMonth, months, sizeof(months) / sizeof(struct stridx), sizeof(struct stridx), | el = bsearch(&item, months, sizeof(months) / sizeof(struct stridx), sizeof(struct stridx), | 
 | (int (*)(const void*, const void*)) stridx_compare); | (int (*)(const void*, const void*)) stridx_compare); | 
 | if (el && id) | if (el && id) | 
 | *id = el->id; | *id = el->id; | 
| Line 110  static int | Line 110  static int | 
 | search4wday(char * __restrict psWDay, int * __restrict id) | search4wday(char * __restrict psWDay, int * __restrict id) | 
 | { | { | 
 | static int sorted = 0; | static int sorted = 0; | 
| struct stridx *el; | struct stridx *el, item = { psWDay, 0 }; | 
 |  |  | 
 | if (!psWDay) | if (!psWDay) | 
 | return -1; | return -1; | 
| Line 122  search4wday(char * __restrict psWDay, int * __restrict | Line 122  search4wday(char * __restrict psWDay, int * __restrict | 
 | } | } | 
 |  |  | 
 | str_Lower(psWDay); | str_Lower(psWDay); | 
| el = bsearch(psWDay, wdays, sizeof(wdays) / sizeof(struct stridx), sizeof(struct stridx), | el = bsearch(&item, wdays, sizeof(wdays) / sizeof(struct stridx), sizeof(struct stridx), | 
 | (int (*)(const void*, const void*)) stridx_compare); | (int (*)(const void*, const void*)) stridx_compare); | 
 | if (el && id) | if (el && id) | 
 | *id = el->id; | *id = el->id; | 
| Line 247  time_Parse(const char *csTime) | Line 247  time_Parse(const char *csTime) | 
 | tm.tm_min = tm_min; | tm.tm_min = tm_min; | 
 | tm.tm_sec = tm_sec; | tm.tm_sec = tm_sec; | 
 | tm.tm_year = tm_year; | tm.tm_year = tm_year; | 
| } else | } else { | 
|  | elwix_SetErr(EINVAL, "Invalid date/time format"); | 
 | return (time_t) -1; | return (time_t) -1; | 
 |  | } | 
 |  |  | 
 | if (tm.tm_year > 1900) | if (tm.tm_year > 1900) | 
 | tm.tm_year -= 1900; | tm.tm_year -= 1900; | 
 | else if (tm.tm_year < 70) | else if (tm.tm_year < 70) | 
 | tm.tm_year += 100; | tm.tm_year += 100; | 
 |  |  | 
| return timegm(&tm); | if ((tim = timegm(&tm)) == (time_t) -1) | 
|  | elwix_SetErr(EINVAL, "Invalid date/time format"); | 
|  | return tim; | 
 | } | } |