diff options
author | Junio C Hamano <junkio@cox.net> | 2007-01-17 11:12:03 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-17 12:03:26 -0800 |
commit | 03eeaeaea57485e288dfecc37b120b074d6e92de (patch) | |
tree | 0f9fdb45c95d894cb108e10d462c62c544dc3853 /builtin-log.c | |
parent | 2aa73a8fa23d9f5b9048816f9884f65a2d24215a (diff) | |
download | git-03eeaeaea57485e288dfecc37b120b074d6e92de.tar.gz |
Introduce 'git-format-patch --suffix=.patch'
The default can also be changed with "format.suffix" configuration.
Leaving it empty would not add any suffix.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-log.c')
-rw-r--r-- | builtin-log.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/builtin-log.c b/builtin-log.c index a59b4acef1..7397a5af07 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"); + strcpy(filename + len, 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]; } |