[PATCH] Introduce 'git-format-patch --suffix=patch'

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Junio C Hamano
Date: Wednesday, January 17, 2007 - 12:18 pm

The default can also be changed with "format.suffix" configuration.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---

  Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

  > Why not
  >
  > 	static const char *file_extension = ".txt"
  >
  > Hmm?

  Let's do this instead.  By the way, there is a bug in the
  configuration parsing for format.headers from commit 20ff0680,
  which needs to be check NULLness of the value the same way as
  this one deals with format.suffix, which I've already fixed in
  my tree.

 Documentation/git-format-patch.txt |   13 ++++++++++++-
 builtin-log.c                      |   19 ++++++++++++++++---
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 67425dc..34abd2f 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -11,7 +11,7 @@ SYNOPSIS
 [verse]
 'git-format-patch' [-n | -k] [-o <dir> | --stdout] [--attach] [--thread]
 	           [-s | --signoff] [--diff-options] [--start-number <n>]
-		   [--in-reply-to=Message-Id]
+		   [--in-reply-to=Message-Id] [--suffix=<sfx>]
 		   <since>[..<until>]
 
 DESCRIPTION
@@ -78,6 +78,12 @@ OPTIONS
 	reply to the given Message-Id, which avoids breaking threads to
 	provide a new patch series.
 
+--suffix=<sfx>::
+	Instead of using `txt` as the suffix for generated
+	filenames, use specifed suffix.  A common alternative is
+	`--suffix=patch`.
+
+
 CONFIGURATION
 -------------
 You can specify extra mail header lines to be added to each
@@ -86,6 +92,11 @@ message in the repository configuration as follows:
 [format]
         headers = "Organization: git-foo\n"
 
+You can specify default suffix used:
+
+[format]
+        suffix = patch
+
 
 EXAMPLES
 --------
diff --git a/builtin-log.c b/builtin-log.c
index a59b4ac..04e3144 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -197,6 +197,7 @@ static int istitlechar(char c)
 
 static char *extra_headers = NULL;
 static int extra_headers_size = 0;
+static const char *fmt_patch_suffix = "txt";
 
 static int git_format_config(const char *var, const char *value)
 {
@@ -208,6 +209,12 @@ static int git_format_config(const char *var, const char *value)
 		strcat(extra_headers, value);
 		return 0;
 	}
+	if (!strcmp(var, "format.suffix")) {
+		if (!value)
+			die("format.suffix without value");
+		fmt_patch_suffix = xstrdup(value);
+		return 0;
+	}
 	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
 		return 0;
 	}
@@ -223,9 +230,10 @@ static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
 	char filename[1024];
 	char *sol;
 	int len = 0;
+	int suffix_len = strlen(fmt_patch_suffix) + 10; /* ., NUL and slop */
 
 	if (output_directory) {
-		strlcpy(filename, output_directory, 1010);
+		strlcpy(filename, output_directory, 1000);
 		len = strlen(filename);
 		if (filename[len - 1] != '/')
 			filename[len++] = '/';
@@ -249,7 +257,10 @@ static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
 			}
 		}
 
-		for (j = 0; len < 1024 - 6 && sol[j] && sol[j] != '\n'; j++) {
+		for (j = 0;
+		     len < sizeof(filename) - suffix_len &&
+			     sol[j] && sol[j] != '\n';
+		     j++) {
 			if (istitlechar(sol[j])) {
 				if (space) {
 					filename[len++] = '-';
@@ -265,7 +276,7 @@ static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
 		while (filename[len - 1] == '.' || filename[len - 1] == '-')
 			len--;
 	}
-	strcpy(filename + len, ".txt");
+	sprintf(filename + len, ".%s", fmt_patch_suffix);
 	fprintf(realstdout, "%s\n", filename);
 	freopen(filename, "w", stdout);
 }
@@ -436,6 +447,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 				die("Need a Message-Id for --in-reply-to");
 			in_reply_to = argv[i];
 		}
+		else if (!strncmp(argv[i], "--suffix=", 9))
+			fmt_patch_suffix = argv[i] + 9;
 		else
 			argv[j++] = argv[i];
 	}
-- 
1.5.0.rc1.g5e1a2-dirty

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC] Add a suffix option to git-format-patch, Josh Boyer, (Wed Jan 17, 6:10 am)
Re: [RFC] Add a suffix option to git-format-patch, Johannes Schindelin, (Wed Jan 17, 6:49 am)
Re: [RFC] Add a suffix option to git-format-patch, Josh Boyer, (Wed Jan 17, 7:50 am)
Re: [RFC] Add a suffix option to git-format-patch, Horst H. von Brand, (Wed Jan 17, 9:39 am)
[PATCH] Introduce 'git-format-patch --suffix=patch', Junio C Hamano, (Wed Jan 17, 12:18 pm)
Re: [PATCH] Introduce 'git-format-patch --suffix=patch', Andy Whitcroft, (Wed Jan 17, 12:20 pm)
Re: [PATCH] Introduce 'git-format-patch --suffix=patch', Junio C Hamano, (Wed Jan 17, 12:27 pm)
Re: [PATCH] Introduce 'git-format-patch --suffix=patch', Brian Gernhardt, (Wed Jan 17, 12:51 pm)
Re: [PATCH] Introduce 'git-format-patch --suffix=patch', Junio C Hamano, (Wed Jan 17, 12:57 pm)
Re: [PATCH] Introduce 'git-format-patch --suffix=patch', Brian Gernhardt, (Wed Jan 17, 1:08 pm)
Re: [PATCH] Introduce 'git-format-patch --suffix=patch', Johannes Schindelin, (Wed Jan 17, 6:11 pm)