diff options
author | P. J. McDermott <pj@pehjota.net> | 2022-03-18 14:04:33 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2022-03-18 14:04:33 (EDT) |
commit | fc565cdcf5b6aaac1e65dc9412d96bbcb2e0c509 (patch) | |
tree | 5a8309ef6aa14538aed09c6f314568f0007d7b5c /src/datetime.c | |
parent | c617d8239d104c206696aa0afc77753dad3f731d (diff) | |
download | atsign-fc565cdcf5b6aaac1e65dc9412d96bbcb2e0c509.zip atsign-fc565cdcf5b6aaac1e65dc9412d96bbcb2e0c509.tar.gz atsign-fc565cdcf5b6aaac1e65dc9412d96bbcb2e0c509.tar.bz2 |
datetime: Try time-only formats only once
Diffstat (limited to 'src/datetime.c')
-rw-r--r-- | src/datetime.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/datetime.c b/src/datetime.c index 079266b..7c5dcfa 100644 --- a/src/datetime.c +++ b/src/datetime.c @@ -32,7 +32,6 @@ /* IMPORTANT: All of the format strings in each array must be padded with spaces * to be of equal lengths */ static const char *DATETIME_DATE_FMTS_[] = { - " ", /* */ " %a ", /* Wed */ " %Y-%m-%d ", /* 1969-12-31 */ " %Y/%m/%d ", /* 1969/12/31 */ @@ -199,6 +198,16 @@ datetime_parse(const char *input, time_t *arg_sec) return -1; } + for (t = 0; t < sizeof(DATETIME_TIME_FMTS_) / + sizeof(DATETIME_TIME_FMTS_[0]) ; ++t) { + _datetime_reset_tm(&arg_tm); + end = strptime(input, DATETIME_TIME_FMTS_[t], &arg_tm); + if (end != NULL && *end == '\0') { + free(fmt_buf); + _datetime_normalize(&arg_tm, arg_sec); + return 0; + } + } for (d = 0; d < sizeof(DATETIME_DATE_FMTS_) / sizeof(DATETIME_DATE_FMTS_[0]); ++d) { memcpy(fmt_buf, DATETIME_DATE_FMTS_[d], date_fmt_len); |