From: David Bremner <brem...@unb.ca> logging of tags is enabled by adding a stanza like
[log] tags = /some/path/you/can/write/to to your notmuch config. Note that we intentionally do the logging after the database transaction is finished. --- notmuch-tag.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) diff --git a/notmuch-tag.c b/notmuch-tag.c index fd54bc7..f24d1e4 100644 --- a/notmuch-tag.c +++ b/notmuch-tag.c @@ -46,6 +46,9 @@ notmuch_tag_command (void *ctx, unused (int argc), unused (char *argv[])) notmuch_message_t *message; struct sigaction action; int i; + int log_fd = -1; + notmuch_bool_t enable_log = FALSE; + const char *log_path; /* Setup our handler for SIGINT */ memset (&action, 0, sizeof (struct sigaction)); @@ -96,6 +99,17 @@ notmuch_tag_command (void *ctx, unused (int argc), unused (char *argv[])) if (config == NULL) return 1; + log_path = notmuch_config_get_log_path (config, "tags"); + + if (log_path != NULL) { + enable_log = TRUE; + + log_fd = notmuch_log_open(log_path); + + if (log_fd < 0) + return 1; + } + notmuch = notmuch_database_open (notmuch_config_get_database_path (config), NOTMUCH_DATABASE_MODE_READ_WRITE); if (notmuch == NULL) @@ -114,10 +128,15 @@ notmuch_tag_command (void *ctx, unused (int argc), unused (char *argv[])) notmuch_messages_valid (messages) && !interrupted; notmuch_messages_move_to_next (messages)) { + const char *message_id = NULL; message = notmuch_messages_get (messages); notmuch_message_freeze (message); + if (enable_log) + message_id = talloc_strdup (ctx, + notmuch_message_get_message_id (message)); + for (i = 0; i < remove_tags_count; i++) notmuch_message_remove_tag (message, argv[remove_tags[i]] + 1); @@ -128,6 +147,18 @@ notmuch_tag_command (void *ctx, unused (int argc), unused (char *argv[])) notmuch_message_thaw (message); notmuch_message_destroy (message); + + if (enable_log) { + for (i = 0; i < remove_tags_count; i++) + notmuch_log_string_pair (ctx, log_fd, + message_id, + argv[remove_tags[i]]); + + for (i = 0; i < add_tags_count; i++) + notmuch_log_string_pair (ctx, log_fd, + message_id, + argv[add_tags[i]]); + } } notmuch_query_destroy (query); -- 1.7.1 _______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch