return 0;
}
+static notmuch_bool_t
+_special_directory (const char *entry)
+{
+ return strcmp (entry, ".") == 0 || strcmp (entry, "..") == 0;
+}
+
/* Test if the file/directory is to be ignored.
*/
static notmuch_bool_t
if (status)
goto DONE;
- status = notmuch_database_add_message (notmuch, filename, &message);
+ status = notmuch_database_index_file (notmuch, filename, NULL, &message);
switch (status) {
/* Success. */
case NOTMUCH_STATUS_SUCCESS:
state->added_messages++;
notmuch_message_freeze (message);
- for (tag = state->new_tags; *tag != NULL; tag++)
- notmuch_message_add_tag (message, *tag);
if (state->synchronize_flags)
notmuch_message_maildir_flags_to_tags (message);
+
+ for (tag = state->new_tags; *tag != NULL; tag++) {
+ if (strcmp ("unread", *tag) !=0 ||
+ !notmuch_message_has_maildir_flag (message, 'S')) {
+ notmuch_message_add_tag (message, *tag);
+ }
+ }
+
notmuch_message_thaw (message);
break;
/* Non-fatal issues (go on to next file). */
/* Pass 1: Recurse into all sub-directories. */
is_maildir = _entries_resemble_maildir (path, fs_entries, num_fs_entries);
- for (i = 0; i < num_fs_entries; i++) {
- if (interrupted)
- break;
-
+ for (i = 0; i < num_fs_entries && ! interrupted; i++) {
entry = fs_entries[i];
/* Ignore any files/directories the user has configured to
* Also ignore the .notmuch directory and any "tmp" directory
* that appears within a maildir.
*/
- if (strcmp (entry->d_name, ".") == 0 ||
- strcmp (entry->d_name, "..") == 0 ||
+ if (_special_directory (entry->d_name) ||
(is_maildir && strcmp (entry->d_name, "tmp") == 0) ||
strcmp (entry->d_name, ".notmuch") == 0)
continue;
}
/* Pass 2: Scan for new files, removed files, and removed directories. */
- for (i = 0; i < num_fs_entries; i++)
- {
- if (interrupted)
- break;
-
+ for (i = 0; i < num_fs_entries && ! interrupted; i++) {
entry = fs_entries[i];
/* Ignore files & directories user has configured to be ignored */
/* Ignore special directories to avoid infinite recursion.
* Also ignore the .notmuch directory.
*/
- if (strcmp (entry->d_name, ".") == 0 ||
- strcmp (entry->d_name, "..") == 0 ||
+ if (_special_directory (entry->d_name) ||
strcmp (entry->d_name, ".notmuch") == 0)
continue;