diff options
author | P. J. McDermott <pj@pehjota.net> | 2022-03-19 19:57:05 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2022-03-19 19:57:05 (EDT) |
commit | 004891c1800b77f8a1e84030b42b100484bae8a0 (patch) | |
tree | 77a333766249698843fabf57f920d8e12e44d9f6 /src/datetime.c | |
parent | 989a30e669b3a4fc3b25a5b3b5d39baf4e76bd7c (diff) | |
parent | 44cb41b8995b30c6b2754f3e1182cfdefc6c7b7b (diff) | |
download | atsign-004891c1800b77f8a1e84030b42b100484bae8a0.zip atsign-004891c1800b77f8a1e84030b42b100484bae8a0.tar.gz atsign-004891c1800b77f8a1e84030b42b100484bae8a0.tar.bz2 |
Merge branch 'feature/tests'
Diffstat (limited to 'src/datetime.c')
-rw-r--r-- | src/datetime.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/datetime.c b/src/datetime.c index 7c5dcfa..230a348 100644 --- a/src/datetime.c +++ b/src/datetime.c @@ -116,19 +116,15 @@ _datetime_reset_tm(struct tm *tm) } static void -_datetime_normalize(struct tm *arg_tm, time_t *arg_sec) +_datetime_normalize(struct tm *now_tm, struct tm *arg_tm, time_t *arg_sec) { - time_t now_sec; - struct tm *now_tm; - int wday; + int wday; if (arg_tm->tm_sec == INT_MIN) { arg_tm->tm_sec = 0; } if (arg_tm->tm_mday == INT_MIN && arg_tm->tm_wday == INT_MIN) { /* No date specified; try today. */ - now_sec = time(NULL); - now_tm = localtime(&now_sec); arg_tm->tm_year = now_tm->tm_year; arg_tm->tm_mon = now_tm->tm_mon; arg_tm->tm_mday = now_tm->tm_mday; @@ -150,8 +146,6 @@ _datetime_normalize(struct tm *arg_tm, time_t *arg_sec) /* Only a weekday specified; try tomorrow or next week. Uses * same shortcut as above. */ wday = arg_tm->tm_wday; - now_sec = time(NULL); - now_tm = localtime(&now_sec); arg_tm->tm_year = now_tm->tm_year; arg_tm->tm_mon = now_tm->tm_mon; arg_tm->tm_mday = now_tm->tm_mday; @@ -163,8 +157,6 @@ _datetime_normalize(struct tm *arg_tm, time_t *arg_sec) *arg_sec += (60 * 60 * 24) * (wday - now_tm->tm_wday); } else if (arg_tm->tm_year == INT_MIN) { /* No year specified; try this year. */ - now_sec = time(NULL); - now_tm = localtime(&now_sec); arg_tm->tm_year = now_tm->tm_year; *arg_sec = mktime(arg_tm); if (*arg_sec <= mktime(now_tm)) { @@ -179,7 +171,7 @@ _datetime_normalize(struct tm *arg_tm, time_t *arg_sec) } int -datetime_parse(const char *input, time_t *arg_sec) +datetime_parse(struct tm *now_tm, const char *input, time_t *arg_sec) { int date_fmt_len; int time_fmt_len; @@ -219,7 +211,7 @@ datetime_parse(const char *input, time_t *arg_sec) end = strptime(input, fmt_buf, &arg_tm); if (end != NULL && *end == '\0') { free(fmt_buf); - _datetime_normalize(&arg_tm, arg_sec); + _datetime_normalize(now_tm, &arg_tm, arg_sec); return 0; } } @@ -235,7 +227,7 @@ datetime_parse(const char *input, time_t *arg_sec) end = strptime(input, fmt_buf, &arg_tm); if (end != NULL && *end == '\0') { free(fmt_buf); - _datetime_normalize(&arg_tm, arg_sec); + _datetime_normalize(now_tm, &arg_tm, arg_sec); return 0; } } @@ -246,7 +238,7 @@ datetime_parse(const char *input, time_t *arg_sec) end = strptime(input, DATETIME_MISC_FMTS_[d], &arg_tm); if (end != NULL && *end == '\0') { free(fmt_buf); - _datetime_normalize(&arg_tm, arg_sec); + _datetime_normalize(now_tm, &arg_tm, arg_sec); return 0; } } |