From: Junio C Hamano <junkio@cox.net>
To: "Fernando J. Pereda" <ferdy@gentoo.org>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH] Teach mailsplit about Maildir's
Date: Thu, 24 May 2007 12:47:00 -0700 [thread overview]
Message-ID: <7vd50qvwaz.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: 20070521182052.GB4696@ferdyx.org
"Fernando J. Pereda" <ferdy@gentoo.org> writes:
> Signed-off-by: Fernando J. Pereda <ferdy@gentoo.org>
> ---
> Documentation/git-am.txt | 8 ++-
> Documentation/git-mailsplit.txt | 13 +++-
> builtin-mailsplit.c | 139 ++++++++++++++++++++++++++++++++-------
> builtin.h | 2 +-
> 4 files changed, 132 insertions(+), 30 deletions(-)
>
> diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
> index ba79773..25cf84a 100644
> --- a/Documentation/git-am.txt
> +++ b/Documentation/git-am.txt
> @@ -12,7 +12,8 @@ SYNOPSIS
> 'git-am' [--signoff] [--dotest=<dir>] [--keep] [--utf8 | --no-utf8]
> [--3way] [--interactive] [--binary]
> [--whitespace=<option>] [-C<n>] [-p<n>]
> - <mbox>...
> + <mbox>|<Maildir>...
> +
> 'git-am' [--skip | --resolved]
Does the document still format Ok if you add a blank line there
(not a rhetorical question -- I haven't checked)?
> diff --git a/builtin-mailsplit.c b/builtin-mailsplit.c
> index 3bca855..454f943 100644
> --- a/builtin-mailsplit.c
> +++ b/builtin-mailsplit.c
> @@ -6,9 +6,10 @@
> */
> #include "cache.h"
> #include "builtin.h"
> +#include "path-list.h"
>
> static const char git_mailsplit_usage[] =
> -"git-mailsplit [-d<prec>] [-f<n>] [-b] -o<directory> <mbox>...";
> +"git-mailsplit [-d<prec>] [-f<n>] [-b] -o<directory> <mbox>|<Maildir>...";
>
> static int is_from_line(const char *line, int len)
> {
> @@ -96,44 +97,106 @@ static int split_one(FILE *mbox, const char *name, int allow_bare)
> exit(1);
> }
>
> -int split_mbox(const char **mbox, const char *dir, int allow_bare, int nr_prec, int skip)
> +static int populate_maildir_list(struct path_list *list, const char *path)
> {
> - char *name = xmalloc(strlen(dir) + 2 + 3 * sizeof(skip));
> + DIR *dir;
> + struct dirent *dent;
> +
> + if ((dir = opendir(path)) == NULL) {
> + error("cannot diropen %s (%s)", path, strerror(errno));
> + return -1;
> + }
Didn't you just fail opendir, not diropen?
> +
> + while ((dent = readdir(dir)) != NULL) {
> + if (dent->d_name[0] == '.')
> + continue;
> + path_list_insert(dent->d_name, list);
> + }
> +
> + closedir(dir);
> +
> + return 1;
> +}
Usually we signal success by returning 0.
> +static int split_maildir(const char *maildir, const char *dir,
> + int nr_prec, int skip)
> +{
> + char file[PATH_MAX];
> + char curdir[PATH_MAX];
> + char name[PATH_MAX];
> int ret = -1;
> + struct path_list list = {NULL, 0, 0, 1};
>
> + snprintf(curdir, sizeof(curdir), "%s/cur", maildir);
> + if (populate_maildir_list(&list, curdir) < 0)
> + goto out;
>
> + int i;
Decl-after-statement.
> + for (i = 0; i < list.nr; i++) {
> + snprintf(file, sizeof(file), "%s/%s", curdir, list.items[i].path);
> + FILE *f = fopen(file, "r");
Likewise.
> @@ -186,9 +249,39 @@ int cmd_mailsplit(int argc, const char **argv, const char *prefix)
> ...
> + if (ret < 0) {
> + error("cannot split patches from %s", arg);
> + return 1;
> + }
> + num += ret;
> + }
> +
> + printf("%d\n", num);
>
> - return ret == -1;
> + return 0;
> }
We do not signal error anymore from the command?
next prev parent reply other threads:[~2007-05-24 19:47 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-20 18:14 [PATCH] Teach mailsplit about Maildir's Fernando J. Pereda
2007-05-20 18:36 ` Junio C Hamano
2007-05-20 18:49 ` Alex Riesen
2007-05-20 19:00 ` Fernando J. Pereda
2007-05-20 20:35 ` Alex Riesen
2007-05-20 20:44 ` Fernando J. Pereda
2007-05-20 18:53 ` Johan Herland
2007-05-20 19:18 ` Fernando J. Pereda
2007-05-20 19:27 ` Johan Herland
2007-05-21 12:55 ` Johannes Schindelin
2007-05-21 3:15 ` Junio C Hamano
2007-05-21 12:56 ` Johannes Schindelin
2007-05-21 18:17 ` Fernando J. Pereda
2007-05-21 18:20 ` Fernando J. Pereda
2007-05-21 23:05 ` [PATCH] Allow user to specify mailbox format for mailsplit Alex Riesen
2007-05-21 23:19 ` Junio C Hamano
2007-05-22 22:04 ` Alex Riesen
2007-05-24 19:47 ` Junio C Hamano [this message]
2007-05-24 19:56 ` [PATCH] Teach mailsplit about Maildir's Fernando J. Pereda
2007-05-24 20:12 ` Junio C Hamano
2007-05-24 22:15 ` Fernando J. Pereda
-- strict thread matches above, loose matches on Subject: below --
2007-04-26 19:24 Fernando J. Pereda
2007-04-27 8:30 ` Fernando J. Pereda
2007-04-27 8:54 ` Junio C Hamano
2007-04-27 8:59 ` Fernando J. Pereda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vd50qvwaz.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=ferdy@gentoo.org \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.