diff options
author | Lars Henriksen <LarsHenriksen@get2net.dk> | 2018-11-08 10:12:38 +0100 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2019-01-07 16:57:43 +0100 |
commit | 03880a82bf203becaa2c8c12d75c1c16a53c0449 (patch) | |
tree | 248e2ddd1d3e03623f035f720182d0acbd8e6e33 | |
parent | 4285e8859353c31b39fa9539a89e58dc3a020264 (diff) | |
download | calcurse-03880a82bf203becaa2c8c12d75c1c16a53c0449.tar.gz calcurse-03880a82bf203becaa2c8c12d75c1c16a53c0449.zip |
Fix day range for queries
In "--from a --to z", a is included in the range, z not. This is
non-intuitive and disagrees with the semantics of "to" in filter options
like --filter-start-to, where "to" (and "from") are used inclusively (as
opposed to "before" and "after"). It also has the effect that "--from
today --to tomorrow" has a range of 1 day, "--to z" a range of 0 days
(otherwise not allowed), and "--to today --days -1" is allowed and
displays yesterday!
The implementation has been fixed to agree with "inclusive" semantics.
Options --from and -days with negative range are allowed, while --to and
--days are disallowed also when the range is negative.
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
-rw-r--r-- | src/args.c | 14 |
1 files changed, 6 insertions, 8 deletions
@@ -249,7 +249,7 @@ date_arg_from_to(long from, long to, int add_line, const char *fmt_apt, { long date; - for (date = from; date < to; date = date_sec_change(date, 0, 1)) { + for (date = from; date <= to; date = date_sec_change(date, 0, 1)) { day_store_items(date, 0); if (day_item_count(0) == 0) continue; @@ -713,18 +713,16 @@ int parse_args(int argc, char **argv) goto cleanup; } - EXIT_IF(to >= 0 && range > 0, _("cannot specify a range and an end date")); - EXIT_IF(from >= 0 && range < 0, _("cannot specify a negative range and a start date")); - + EXIT_IF(to >= 0 && range, _("cannot specify a range and an end date")); if (from == -1) from = get_today(); if (to == -1) - to = date_sec_change(from, 0, 1); - + to = from; + EXIT_IF(to < from, _("end date cannot come before start date")); if (range > 0) - to = date_sec_change(from, 0, range); + to = date_sec_change(from, 0, range - 1); else if (range < 0) - from = date_sec_change(to, 0, range); + from = date_sec_change(to, 0, range + 1); io_init(cfile, datadir, confdir); io_check_dir(path_ddir); |