aboutsummaryrefslogtreecommitdiffstats
path: root/src/io.c
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@calcurse.org>2016-01-11 22:26:46 +0100
committerLukas Fleischer <lfleischer@calcurse.org>2016-01-13 17:39:44 +0100
commit7f8c62bf57b85234c248316505a503602792839a (patch)
treeef8ff6e778840192ee7cfb6c06579602ed6942cb /src/io.c
parentdd85a7374675c3f91e215c2e318b2c5045a01f53 (diff)
downloadcalcurse-7f8c62bf57b85234c248316505a503602792839a.tar.gz
calcurse-7f8c62bf57b85234c248316505a503602792839a.zip
Add an option to filter by object hash
Implement a new --filter-hash option to filter by object identifiers. Each object having an identifier that has the specified pattern as a prefix is matched. Patterns starting with an exclamation mark (!) are interpreted as negative patterns. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/io.c')
-rw-r--r--src/io.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/io.c b/src/io.c
index fcb13ae..d25180a 100644
--- a/src/io.c
+++ b/src/io.c
@@ -684,8 +684,20 @@ void io_load_todo(struct item_filter *filter)
continue;
}
- todo_add(e_todo, id, note);
- ++nb_tod;
+ struct todo *todo = todo_add(e_todo, id, note);
+
+ /* Filter by hash. */
+ if (filter && filter->hash) {
+ char *hash = todo_hash(todo);
+ if (!hash_matches(filter->hash, hash)) {
+ todo_delete(todo);
+ todo = NULL;
+ }
+ mem_free(hash);
+ }
+
+ if (todo)
+ ++nb_tod;
}
file_close(data_file, __FILE_POS__);
}