diff options
author | Lukas Fleischer <lfleischer@calcurse.org> | 2015-05-20 13:28:23 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2015-05-20 13:30:16 +0200 |
commit | 41b3ab7d17866ba01a378d88a970c494c7600c48 (patch) | |
tree | 320345906de44ddd5c8588da6494c506ec7b5568 /src | |
parent | 794e9509426ef4671914e29cb2fd877db3a61445 (diff) | |
download | calcurse-41b3ab7d17866ba01a378d88a970c494c7600c48.tar.gz calcurse-41b3ab7d17866ba01a378d88a970c494c7600c48.zip |
Add support for --filter-end-* to events
A natural convention is to specify the end time of an event as 23:59:59
on the day it is scheduled.
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/event.c | 7 | ||||
-rw-r--r-- | src/recur.c | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/event.c b/src/event.c index e8694ed..3918ce3 100644 --- a/src/event.c +++ b/src/event.c @@ -124,7 +124,7 @@ struct event *event_scan(FILE * f, struct tm start, int id, char *note, struct item_filter *filter) { char buf[BUFSIZ], *nl; - time_t tstart; + time_t tstart, tend; EXIT_IF(!check_date(start.tm_year, start.tm_mon, start.tm_mday) || !check_time(start.tm_hour, start.tm_min), @@ -147,6 +147,7 @@ struct event *event_scan(FILE * f, struct tm start, int id, char *note, tstart = mktime(&start); EXIT_IF(tstart == -1, _("date error in the event\n")); + tend = tstart + DAYINSEC - 1; /* Filter item. */ if (filter) { @@ -158,6 +159,10 @@ struct event *event_scan(FILE * f, struct tm start, int id, char *note, return NULL; if (filter->start_to >= 0 && tstart > filter->start_to) return NULL; + if (filter->end_from >= 0 && tend < filter->end_from) + return NULL; + if (filter->end_to >= 0 && tend > filter->end_to) + return NULL; } return event_new(buf, note, tstart, id); diff --git a/src/recur.c b/src/recur.c index 667ecdf..2fa2d03 100644 --- a/src/recur.c +++ b/src/recur.c @@ -403,7 +403,7 @@ struct recur_event *recur_event_scan(FILE * f, struct tm start, int id, struct item_filter *filter) { char buf[BUFSIZ], *nl; - time_t tstart, tuntil; + time_t tstart, tend, tuntil; EXIT_IF(!check_date(start.tm_year, start.tm_mon, start.tm_mday) || !check_time(start.tm_hour, start.tm_min) || @@ -434,6 +434,7 @@ struct recur_event *recur_event_scan(FILE * f, struct tm start, int id, } tstart = mktime(&start); EXIT_IF(tstart == -1 || tuntil == -1, _("date error in event")); + tend = tstart + DAYINSEC - 1; /* Filter item. */ if (filter) { @@ -445,6 +446,10 @@ struct recur_event *recur_event_scan(FILE * f, struct tm start, int id, return NULL; if (filter->start_to >= 0 && tstart > filter->start_to) return NULL; + if (filter->end_from >= 0 && tend < filter->end_from) + return NULL; + if (filter->end_to >= 0 && tend > filter->end_to) + return NULL; } return recur_event_new(buf, note, tstart, id, recur_char2def(type), |