diff options
author | P. J. McDermott <pj@pehjota.net> | 2022-03-18 20:31:27 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2022-03-18 20:31:27 (EDT) |
commit | eb8dbc0d4cddd1161e2b02d7973985a36e2efc95 (patch) | |
tree | 180f4105c7554a91ee2f99a4f7d3c7ce297affe3 | |
parent | 557090b458bc5a61b56eaf4a0cc66376ac84bdd4 (diff) | |
download | atsign-eb8dbc0d4cddd1161e2b02d7973985a36e2efc95.zip atsign-eb8dbc0d4cddd1161e2b02d7973985a36e2efc95.tar.gz atsign-eb8dbc0d4cddd1161e2b02d7973985a36e2efc95.tar.bz2 |
datetime: Get now (struct tm) from caller
-rw-r--r-- | src/datetime.c | 17 | ||||
-rw-r--r-- | src/datetime.h | 2 | ||||
-rw-r--r-- | src/main.c | 18 |
3 files changed, 18 insertions, 19 deletions
diff --git a/src/datetime.c b/src/datetime.c index 59adcb9..27c27a2 100644 --- a/src/datetime.c +++ b/src/datetime.c @@ -117,14 +117,9 @@ _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; - - now_sec = time(NULL); - now_tm = localtime(&now_sec); + int wday; if (arg_tm->tm_sec == INT_MIN) { arg_tm->tm_sec = 0; @@ -177,7 +172,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; @@ -207,7 +202,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; } } @@ -223,7 +218,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; } } @@ -234,7 +229,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; } } diff --git a/src/datetime.h b/src/datetime.h index edff8f7..554748b 100644 --- a/src/datetime.h +++ b/src/datetime.h @@ -23,7 +23,7 @@ #include <time.h> int -datetime_parse(const char *input, time_t *arg_sec); +datetime_parse(struct tm *now_tm, const char *input, time_t *arg_sec); int datetime_strftime_date(const struct tm *tm, char **out, size_t *out_sz, @@ -181,12 +181,13 @@ _concat_args(int argc, char * const argv[]) int main(int argc, char * const argv[]) { - bool dbg; - int opt; - char *buf; - time_t arg; - time_t now; - double dif; + bool dbg; + int opt; + char *buf; + time_t now; + struct tm *now_tm_p; + time_t arg; + double dif; dbg = false; optind = 1; @@ -229,7 +230,10 @@ main(int argc, char * const argv[]) return EXIT_FAILURE; } - if (datetime_parse(buf, &arg) < 0) { + now = time(NULL); + now_tm_p = localtime(&now); + + if (datetime_parse(now_tm_p, buf, &arg) < 0) { free(buf); return EXIT_FAILURE; } |