Re: [PATCH] Teach mailsplit about Maildir's
- From
Junio C Hamano <junkio@cox.net>
- Date
- Apr 27, 2007, 08:54 UTC
- Message-ID
- <7vd51qp57k.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <20070426192439.GA6976@ferdyx.org>
"Fernando J. Pereda" <ferdy@gentoo.org> writes:
Show 24 quoted lines
> +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?).