From: Sebastian Harl Date: Sun, 23 Nov 2014 18:01:17 +0000 (+0100) Subject: frontend/scanner: Fixed parsing of time values. X-Git-Tag: sysdb-0.7.0~124 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=a818a27f0f5bf001c212659c0a09247671056a08;p=sysdb.git frontend/scanner: Fixed parsing of time values. It turns out, mktime() cannot be used to parse a time (at day 0). Let's do it manually then, it's no big magic anyway ;-) --- diff --git a/src/frontend/scanner.l b/src/frontend/scanner.l index f17b689..65ec9ed 100644 --- a/src/frontend/scanner.l +++ b/src/frontend/scanner.l @@ -210,6 +210,7 @@ time ([0-9]{1,2}:[0-9]{1,2}(:[0-9]{1,2}(\.[0-9]{1,9})?)?) struct tm tm; char time[9], ns[10]; char *tmp; + int t; memset(&tm, 0, sizeof(tm)); memset(time, '\0', sizeof(time)); @@ -246,7 +247,8 @@ time ([0-9]{1,2}:[0-9]{1,2}(:[0-9]{1,2}(\.[0-9]{1,9})?)?) return SCANNER_ERROR; } - yylval->datetime = SECS_TO_SDB_TIME(mktime(&tm)); + t = tm.tm_sec + 60 * tm.tm_min + 3600 * tm.tm_hour; + yylval->datetime = SECS_TO_SDB_TIME(t); yylval->datetime += (sdb_time_t)strtoll(ns, NULL, 10); return TIME; }