git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Teach mailsplit about Maildir's

From
Junio C Hamano <junkio@cox.net>
Date
May 24, 2007, 19:47 UTC
Message-ID
<7vd50qvwaz.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20070521182052.GB4696@ferdyx.org>
"Fernando J. Pereda" <ferdy@gentoo.org> writes:
Show 20 quoted lines
> 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)?

Show 31 quoted lines
> 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?
Show 11 quoted lines
> +
> +	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.
Show 14 quoted lines
> +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.
Show 14 quoted lines
> @@ -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?
Previous: Alex RiesenNext: Fernando J. Pereda
Message 18 of 21 in “Teach mailsplit about Maildir's”
  1. Teach mailsplit about Maildir'sFernando J. Pereda, May 20, 2007
  2. Junio C HamanoMay 20, 2007
  3. Alex RiesenMay 20, 2007
  4. Fernando J. PeredaMay 20, 2007
  5. Alex RiesenMay 20, 2007
  6. Fernando J. PeredaMay 20, 2007
  7. Johan HerlandMay 20, 2007
  8. Fernando J. PeredaMay 20, 2007
  9. Johan HerlandMay 20, 2007
  10. Johannes SchindelinMay 21, 2007
  11. Junio C HamanoMay 21, 2007
  12. Johannes SchindelinMay 21, 2007
  13. Fernando J. PeredaMay 21, 2007
  14. Fernando J. PeredaMay 21, 2007
  15. Allow user to specify mailbox format for mailsplitAlex Riesen, May 21, 2007
  16. Junio C HamanoMay 21, 2007
  17. Alex RiesenMay 22, 2007
  18. Junio C HamanoMay 24, 2007
  19. Fernando J. PeredaMay 24, 2007
  20. Junio C HamanoMay 24, 2007
  21. Teach mailsplit about Maildir'sFernando J. Pereda, May 24, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.