const char *k, *utc = NULL, *tzn = NULL;
struct tm tm, copy;
time_t x;
- usec_t usec, x_usec, plus = 0, minus = 0;
+ usec_t usec, plus = 0, minus = 0;
int r, weekday = -1, dst = -1;
+ unsigned fractional = 0;
/* Allowed syntaxes:
*
}
x = (time_t) (usec / USEC_PER_SEC);
- x_usec = 0;
if (!localtime_or_gmtime_r(&x, &tm, utc))
return -EINVAL;
return -EINVAL;
parse_usec:
- {
- unsigned add;
-
- k++;
- r = parse_fractional_part_u(&k, 6, &add);
- if (r < 0)
- return -EINVAL;
-
- if (*k)
- return -EINVAL;
-
- x_usec = add;
- }
+ k++;
+ r = parse_fractional_part_u(&k, 6, &fractional);
+ if (r < 0)
+ return -EINVAL;
+ if (*k != '\0')
+ return -EINVAL;
from_tm:
if (weekday >= 0 && tm.tm_wday != weekday)
if (x < 0)
return -EINVAL;
- usec = usec_add(x * USEC_PER_SEC, x_usec);
+ usec = usec_add(x * USEC_PER_SEC, fractional);
finish:
usec = usec_add(usec, plus);