]> git.cworth.org Git - notmuch/blobdiff - notmuch-new.c
cli: for loop is more customary
[notmuch] / notmuch-new.c
index 1dd8fc95c97ca4ad40b632a08e30eac80e4efbf8..f6d9c3a4508f52cbb2da594a030acee8acdb06b2 100644 (file)
@@ -702,10 +702,9 @@ count_files (const char *path, int *count, add_files_state_t *state)
 {
     struct dirent *entry = NULL;
     char *next;
-    struct stat st;
     struct dirent **fs_entries = NULL;
     int num_fs_entries = scandir (path, &fs_entries, 0, dirent_sort_inode);
-    int i = 0;
+    int entry_type, i;
 
     if (num_fs_entries == -1) {
        fprintf (stderr, "Warning: failed to open directory %s: %s\n",
@@ -713,11 +712,8 @@ count_files (const char *path, int *count, add_files_state_t *state)
        goto DONE;
     }
 
-    while (!interrupted) {
-        if (i == num_fs_entries)
-           break;
-
-        entry = fs_entries[i++];
+    for (i = 0; i < num_fs_entries && ! interrupted; i++) {
+        entry = fs_entries[i];
 
        /* Ignore special directories to avoid infinite recursion.
         * Also ignore the .notmuch directory and files/directories
@@ -728,7 +724,7 @@ count_files (const char *path, int *count, add_files_state_t *state)
            strcmp (entry->d_name, ".notmuch") == 0 ||
            _entry_in_ignore_list (entry->d_name, state))
        {
-           if (_entry_in_ignore_list (entry->d_name, state) && state->debug)
+           if (state->debug && _entry_in_ignore_list (entry->d_name, state))
                printf ("(D) count_files: explicitly ignoring %s/%s\n",
                        path,
                        entry->d_name);
@@ -742,15 +738,14 @@ count_files (const char *path, int *count, add_files_state_t *state)
            continue;
        }
 
-       stat (next, &st);
-
-       if (S_ISREG (st.st_mode)) {
+       entry_type = dirent_type (path, entry);
+       if (entry_type == S_IFREG) {
            *count = *count + 1;
            if (*count % 1000 == 0) {
                printf ("Found %d files so far.\r", *count);
                fflush (stdout);
            }
-       } else if (S_ISDIR (st.st_mode)) {
+       } else if (entry_type == S_IFDIR) {
            count_files (next, count, state);
        }