Re: [PATCH] Teach mailsplit about Maildir's
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:07
"Fernando J. Pereda" [off-list ref] writes:
+int split_maildir(const char *maildir, const char *dir, int nr_prec, int skip)
{
...
+ while ((maildent = readdir(mddir)) != NULL) {
+ FILE *f;
+
+ snprintf(file, sizeof(file), "%s/%s",
+ curdir, maildent->d_name);
+
+ if (maildent->d_name[0] == '.')
+ continue;
...
+ sprintf(name, "%s/%0*d", dir, nr_prec, ++skip);
+ split_one(f, name, 1);
+
+ fclose(f);
+ }
+
+ closedir(mddir);
+
+ ret = skip;
+out:
+ return ret;
+}I do not personally deal with maildir so I do not know for sure, but this feels very wrong. What order are you emitting the output? split_mbox() is designed to number the messages the same order as they are found in the mailbox, but the above loop relies on readdir() to give them in a reasonable order to you, which does not seem a right assumption to me (otherwise "/bin/ls" and friends would not sort what they read from the filesystem would they?).