X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-new.c;h=9d206167e997382d623934ce4dd1797751b2e950;hp=72c6c58799a3a96b92e452592826b61d87b63db7;hb=4faf809578ca63edc9f23f92d7ce47d60dbc061e;hpb=24ae7718b738bcb4af0b5e1beac1fc40c06d45ef diff --git a/notmuch-new.c b/notmuch-new.c index 72c6c587..9d206167 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -35,8 +35,10 @@ static volatile sig_atomic_t interrupted; static void handle_sigint (unused (int sig)) { + ssize_t ignored; static char msg[] = "Stopping... \n"; - write(2, msg, sizeof(msg)-1); + + ignored = write(2, msg, sizeof(msg)-1); interrupted = 1; } @@ -87,7 +89,8 @@ static int ino_cmp(const struct dirent **a, const struct dirent **b) * * Return 1 if the directory looks like a Maildir and 0 otherwise. */ -static int is_maildir (struct dirent **entries, int count) +static int +is_maildir (struct dirent **entries, int count) { int i, found = 0; @@ -98,7 +101,8 @@ static int is_maildir (struct dirent **entries, int count) strcmp(entries[i]->d_name, "tmp") == 0) { found++; - if (found == 3) return 1; + if (found == 3) + return 1; } } @@ -195,10 +199,21 @@ add_files_recursive (notmuch_database_t *notmuch, next = talloc_asprintf (notmuch, "%s/%s", path, entry->d_name); if (stat (next, st)) { + int err = errno; + + switch (err) { + case ENOENT: + /* The file was removed between scandir and now... */ + case EPERM: + case EACCES: + /* We can't read this file so don't add it to the cache. */ + continue; + } + fprintf (stderr, "Error reading %s: %s\n", next, strerror (errno)); ret = NOTMUCH_STATUS_FILE_ERROR; - continue; + goto DONE; } if (S_ISREG (st->st_mode)) {