X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-new.c;h=f58a384b52b1cf48cbb7067b2e5f8743e9b0aeae;hp=72c6c58799a3a96b92e452592826b61d87b63db7;hb=0a7bd1c728390efc5cc000987f6dd42638314328;hpb=24ae7718b738bcb4af0b5e1beac1fc40c06d45ef diff --git a/notmuch-new.c b/notmuch-new.c index 72c6c587..f58a384b 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -87,7 +87,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 +99,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 +197,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)) {