diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-09-06 10:31:19 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-09-09 01:13:40 +0200 |
commit | 10105b3fb0123dd4bb84e39f0611102247765b7b (patch) | |
tree | 8a16213e0fbcdf3044b6ae074c37879bf09dfce7 /src/meta.c | |
parent | cca4c856301caa8959ac98aac5811130bc19512c (diff) |
meta: skip -T for hour and date format
If -T is used:
- meta hour displays the hours in seconds based on your timezone.
- meta time displays the UNIX time since 1970 in nanoseconds.
Better, skip -T for these two datatypes and use the formatted output
instead, ie.
- meta hour "00:00:20"
- meta time "1970-01-01 01:00:01"
Fixes: f8f32deda31d ("meta: Introduce new conditions 'time', 'day' and 'hour'")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/meta.c')
-rw-r--r-- | src/meta.c | 33 |
1 files changed, 9 insertions, 24 deletions
@@ -388,27 +388,17 @@ static void date_type_print(const struct expr *expr, struct output_ctx *octx) /* Convert from nanoseconds to seconds */ tstamp /= 1000000000L; - if (!nft_output_seconds(octx)) { - /* Obtain current tm, to add tm_gmtoff to the timestamp */ - cur_tm = localtime((time_t *) &tstamp); + /* Obtain current tm, to add tm_gmtoff to the timestamp */ + cur_tm = localtime((time_t *) &tstamp); - if (cur_tm) - tstamp += cur_tm->tm_gmtoff; - - if ((tm = gmtime((time_t *) &tstamp)) != NULL && - strftime(timestr, sizeof(timestr) - 1, "%F %T", tm)) - nft_print(octx, "\"%s\"", timestr); - else - nft_print(octx, "Error converting timestamp to printed time"); - - return; - } + if (cur_tm) + tstamp += cur_tm->tm_gmtoff; - /* - * Do our own printing. The default print function will print in - * nanoseconds, which is ugly. - */ - nft_print(octx, "%" PRIu64, tstamp); + if ((tm = gmtime((time_t *) &tstamp)) != NULL && + strftime(timestr, sizeof(timestr) - 1, "%F %T", tm)) + nft_print(octx, "\"%s\"", timestr); + else + nft_print(octx, "Error converting timestamp to printed time"); } static time_t parse_iso_date(const char *sym) @@ -498,11 +488,6 @@ static void hour_type_print(const struct expr *expr, struct output_ctx *octx) struct tm *cur_tm; time_t ts; - if (nft_output_seconds(octx)) { - expr_basetype(expr)->print(expr, octx); - return; - } - /* Obtain current tm, so that we can add tm_gmtoff */ ts = time(NULL); cur_tm = localtime(&ts); |