From c2a9292bf457b3119c4e141d28d6c629d08de71d Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 7 Aug 2014 16:34:48 +0200 Subject: Add a grep mode This allows for printing a subset of the items in the data files by using filters. Signed-off-by: Lukas Fleischer --- src/io.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'src/io.c') diff --git a/src/io.c b/src/io.c index a6f5958..dca23d1 100644 --- a/src/io.c +++ b/src/io.c @@ -303,11 +303,15 @@ unsigned io_save_apts(const char *aptsfile) llist_item_t *i; FILE *fp; - if (read_only) - return 1; + if (aptsfile) { + if (read_only) + return 1; - if ((fp = fopen(aptsfile, "w")) == NULL) - return 0; + if ((fp = fopen(aptsfile, "w")) == NULL) + return 0; + } else { + fp = stdout; + } recur_save_data(fp); @@ -324,7 +328,9 @@ unsigned io_save_apts(const char *aptsfile) struct event *ev = LLIST_TS_GET_DATA(i); event_write(ev, fp); } - file_close(fp, __FILE_POS__); + + if (aptsfile) + file_close(fp, __FILE_POS__); return 1; } @@ -335,17 +341,23 @@ unsigned io_save_todo(const char *todofile) llist_item_t *i; FILE *fp; - if (read_only) - return 1; + if (todofile) { + if (read_only) + return 1; - if ((fp = fopen(todofile, "w")) == NULL) - return 0; + if ((fp = fopen(todofile, "w")) == NULL) + return 0; + } else { + fp = stdout; + } LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_TS_GET_DATA(i); todo_write(todo, fp); } - file_close(fp, __FILE_POS__); + + if (todofile) + file_close(fp, __FILE_POS__); return 1; } -- cgit v1.2.3-54-g00ecf