Add item filters

This adds the following filter options that allow for restricting the
set of items that are read from the appointments file:

* --filter-type
* --filter-start-from
* --filter-start-to
* --filter-start-after
* --filter-start-before
* --filter-end-from
* --filter-end-to
* --filter-end-after
* --filter-end-before

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer
2014-08-06 08:53:51 +02:00
parent 4ec7fe1239
commit bfe73d0e5d
8 changed files with 207 additions and 24 deletions

View File

@@ -120,7 +120,8 @@ void event_write(struct event *o, FILE * f)
}
/* Load the events from file */
struct event *event_scan(FILE * f, struct tm start, int id, char *note)
struct event *event_scan(FILE * f, struct tm start, int id, char *note,
struct item_filter *filter)
{
char buf[BUFSIZ], *nl;
time_t tstart;
@@ -147,6 +148,16 @@ 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"));
/* Filter item. */
if (filter) {
if (!(filter->type_mask & TYPE_MASK_EVNT))
return NULL;
if (filter->start_from >= 0 && tstart < filter->start_from)
return NULL;
if (filter->start_to >= 0 && tstart > filter->start_to)
return NULL;
}
return event_new(buf, note, tstart, id);
}