summaryrefslogtreecommitdiffstats
path: root/src/datetime.c
diff options
context:
space:
mode:
authorP. 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)
commitfc565cdcf5b6aaac1e65dc9412d96bbcb2e0c509 (patch)
tree5a8309ef6aa14538aed09c6f314568f0007d7b5c /src/datetime.c
parentc617d8239d104c206696aa0afc77753dad3f731d (diff)
downloadatsign-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.c11
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);