notmuch restore: Print names of tags that cannot be applied
authorCarl Worth <cworth@cworth.org>
Fri, 23 Oct 2009 13:08:22 +0000 (06:08 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 23 Oct 2009 13:08:22 +0000 (06:08 -0700)
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.

notmuch.c

index e1409209e43694aca6f5896deb1f7484d9d3d2ac..9b841b3a5cc2470be60c06fcdafa3bab75a8b027 100644 (file)
--- 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);
     }