commit d02327d0ebf564101421f8c1312b86a8b3c8ea48
parent 0f4192e6b2994add1bdf659816d23ab1218b2094
Author: FRIGN <dev@frign.de>
Date: Thu, 19 Feb 2015 19:27:17 +0100
Get rid of the %Z-flag in strptime-format
We don't actually need it for Zulu-time and handroll it.
We can add the gmt-offset to hour without range-checking, because
the implementation will take care of it in mktime().
Diffstat:
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/touch.c b/touch.c
@@ -48,6 +48,7 @@ time_t
parsetime(char *str, time_t current)
{
struct tm *cur, t;
+ int zulu = 0;
char *format;
size_t len = strlen(str);
@@ -87,7 +88,9 @@ parsetime(char *str, time_t current)
/* only Zulu-timezone supported */
if (str[19] != 'Z')
eprintf("Invalid time zone\n");
- format = "%Y-%m-%dT%H:%M:%S%Z";
+ str[19] = 0;
+ zulu = 1;
+ format = "%Y-%m-%dT%H:%M:%S";
break;
default:
eprintf("Invalid date format length\n", str);
@@ -95,6 +98,11 @@ parsetime(char *str, time_t current)
if (!strptime(str, format, &t))
weprintf("strptime %s: Invalid date format\n", str);
+ if (zulu) {
+ t.tm_hour += t.tm_gmtoff / 60;
+ t.tm_gmtoff = 0;
+ t.tm_zone = "Z";
+ }
return mktime(&t);
}