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:
13
src/event.c
13
src/event.c
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user