aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/corpus/30
diff options
context:
space:
mode:
Diffstat (limited to 'test/corpus/30')
-rw-r--r--test/corpus/3075
1 files changed, 75 insertions, 0 deletions
diff --git a/test/corpus/30 b/test/corpus/30
new file mode 100644
index 00000000..a5b94a0a
--- /dev/null
+++ b/test/corpus/30
@@ -0,0 +1,75 @@
+From: "Stewart Smith" <stewart@flamingspork.com>
+To: notmuch@notmuchmail.org
+Date: Wed, 18 Nov 2009 13:22:20 +1100
+Subject: [notmuch] [PATCH] count_files: sort directory in inode order before
+ statting
+Message-ID: <1258510940-7018-1-git-send-email-stewart@flamingspork.com>
+
+---
+ notmuch-new.c | 30 ++++++++++--------------------
+ 1 files changed, 10 insertions(+), 20 deletions(-)
+
+diff --git a/notmuch-new.c b/notmuch-new.c
+index 11fad8c..c5f841a 100644
+--- a/notmuch-new.c
++++ b/notmuch-new.c
+@@ -308,36 +308,26 @@ add_files (notmuch_database_t *notmuch,
+ static void
+ count_files (const char *path, int *count)
+ {
+- DIR *dir;
+- struct dirent *e, *entry = NULL;
+- int entry_length;
+- int err;
++ struct dirent *entry = NULL;
+ char *next;
+ struct stat st;
++ struct dirent **namelist = NULL;
+
+- dir = opendir (path);
++ int n_entries= scandir(path, &namelist, 0, ino_cmp);
+
+- if (dir == NULL) {
++ if (n_entries == -1) {
+ fprintf (stderr, "Warning: failed to open directory %s: %s\n",
+ path, strerror (errno));
+ goto DONE;
+ }
+
+- entry_length = offsetof (struct dirent, d_name) +
+- pathconf (path, _PC_NAME_MAX) + 1;
+- entry = malloc (entry_length);
++ int i=0;
+
+ while (!interrupted) {
+- err = readdir_r (dir, entry, &e);
+- if (err) {
+- fprintf (stderr, "Error reading directory: %s\n",
+- strerror (errno));
+- free (entry);
+- goto DONE;
+- }
++ if (i == n_entries)
++ break;
+
+- if (e == NULL)
+- break;
++ entry= namelist[i++];
+
+ /* Ignore special directories to avoid infinite recursion.
+ * Also ignore the .notmuch directory.
+@@ -376,8 +366,8 @@ count_files (const char *path, int *count)
+ DONE:
+ if (entry)
+ free (entry);
+-
+- closedir (dir);
++ if (namelist)
++ free (namelist);
+ }
+
+ int
+--
+1.6.3.3
+
+