notmuch: Add Maildir directory name as tag name for messages
[notmuch] / notmuch-new.c
index 1b0558486b400b74609c811d7eb8188ebe17700a..6264628a4b8b01aa2f6267038eac16257db69453 100644 (file)
@@ -101,6 +101,7 @@ static int ino_cmp(const struct dirent **a, const struct dirent **b)
 static notmuch_status_t
 add_files_recursive (notmuch_database_t *notmuch,
                     const char *path,
+                    const char *tag,
                     struct stat *st,
                     add_files_state_t *state)
 {
@@ -183,6 +184,7 @@ add_files_recursive (notmuch_database_t *notmuch,
                    case NOTMUCH_STATUS_SUCCESS:
                        state->added_messages++;
                        tag_inbox_and_unread (message);
+                       notmuch_message_add_tag (message, tag);
                        break;
                    /* Non-fatal issues (go on to next file) */
                    case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID:
@@ -220,7 +222,13 @@ add_files_recursive (notmuch_database_t *notmuch,
                }
            }
        } else if (S_ISDIR (st->st_mode)) {
-           status = add_files_recursive (notmuch, next, st, state);
+               if ((strcmp (entry->d_name, "cur") == 0) ||
+                       (strcmp (entry->d_name, "new") == 0) ||
+                       (strcmp (entry->d_name, "tmp") == 0)) {
+                       status = add_files_recursive (notmuch, next, tag, st, state);
+               } else {
+                       status = add_files_recursive (notmuch, next, entry->d_name, st, state);
+               }
            if (status && ret == NOTMUCH_STATUS_SUCCESS)
                ret = status;
        }
@@ -284,7 +292,7 @@ add_files (notmuch_database_t *notmuch,
     timerval.it_value.tv_usec = 0;
     setitimer (ITIMER_REAL, &timerval, NULL);
 
-    status = add_files_recursive (notmuch, path, &st, state);
+    status = add_files_recursive (notmuch, path, basename(path), &st, state);
 
     /* Now stop the timer. */
     timerval.it_interval.tv_sec = 0;