summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2009-10-23 06:08:22 -0700
committerCarl Worth <cworth@cworth.org>2009-10-23 06:08:22 -0700
commitc9fbe6b58b8bff56b4c6774625b8c21846fe027d (patch)
tree92bf8640c5b2f6dd5fdf64fce2929664844a9900
parentdb93109cfef2de359a1cbfd3dc2ec08be480745e (diff)
notmuch restore: Print names of tags that cannot be applied
This helps the user gauge the severity of the error. For example, when restoring my sup tags I see a bunch of tags missing for message IDs of the form "sup-faked-...". That's not surprising since I know that sup generates these with the md5sum of the message header while notmuch uses the sha-1 of the entire message. But how much will this hurt? Well, now that I can see that most of the missing tags are just "attachment", then I'm not concerned, (I'll be automatically creating that tag in the future based on the message contents). But if a missing tag is "inbox" then that's more concerning because that's data that I can't easily regenerate outside of sup.
-rw-r--r--notmuch.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/notmuch.c b/notmuch.c
index e140920..9b841b3 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -515,9 +515,8 @@ restore_command (int argc, char *argv[])
message = notmuch_database_find_message (notmuch, message_id);
if (message == NULL) {
- fprintf (stderr, "Warning: Cannot apply tags to missing message: %s\n",
+ fprintf (stderr, "Warning: Cannot apply tags to missing message: %s (",
message_id);
- goto NEXT_LINE;
}
next = tags;
@@ -525,19 +524,25 @@ restore_command (int argc, char *argv[])
tag = strsep (&next, " ");
if (*tag == '\0')
continue;
- status = notmuch_message_add_tag (message, tag);
- if (status) {
- fprintf (stderr,
- "Error applying tag %s to message %s:\n",
- tag, message_id);
- fprintf (stderr, "%s\n",
- notmuch_status_to_string (status));
+ if (message) {
+ status = notmuch_message_add_tag (message, tag);
+ if (status) {
+ fprintf (stderr,
+ "Error applying tag %s to message %s:\n",
+ tag, message_id);
+ fprintf (stderr, "%s\n",
+ notmuch_status_to_string (status));
+ }
+ } else {
+ fprintf (stderr, "%s ", tag);
}
}
- notmuch_message_destroy (message);
+ if (message)
+ notmuch_message_destroy (message);
+ else
+ fprintf (stderr, ")\n");
}
- NEXT_LINE:
free (message_id);
free (tags);
}