summaryrefslogtreecommitdiff
path: root/log-tree.c
diff options
context:
space:
mode:
authorStephen Boyd <bebarino@gmail.com>2009-03-23 02:14:04 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-03-23 04:42:05 (GMT)
commit6fa8e6278b210bfa56fcb54ed38d2b485350e7c6 (patch)
tree823383ea9f4d4f82fb0a8b3be21a023b6ca0f95d /log-tree.c
parentcd2ef591c8e753fe5295ac3c6f1dee481f00a185 (diff)
downloadgit-6fa8e6278b210bfa56fcb54ed38d2b485350e7c6.zip
git-6fa8e6278b210bfa56fcb54ed38d2b485350e7c6.tar.gz
git-6fa8e6278b210bfa56fcb54ed38d2b485350e7c6.tar.bz2
format-patch: move get_patch_filename() into log-tree
Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'log-tree.c')
-rw-r--r--log-tree.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/log-tree.c b/log-tree.c
index 9565c18..aee9995 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -179,6 +179,28 @@ static int has_non_ascii(const char *s)
return 0;
}
+void get_patch_filename(struct commit *commit, int nr, const char *suffix,
+ struct strbuf *buf)
+{
+ int suffix_len = strlen(suffix) + 1;
+ int start_len = buf->len;
+
+ strbuf_addf(buf, commit ? "%04d-" : "%d", nr);
+ if (commit) {
+ format_commit_message(commit, "%f", buf, DATE_NORMAL);
+ /*
+ * Replace characters at the end with the suffix if the
+ * filename is too long
+ */
+ if (buf->len + suffix_len > FORMAT_PATCH_NAME_MAX + start_len)
+ strbuf_splice(buf,
+ start_len + FORMAT_PATCH_NAME_MAX - suffix_len,
+ suffix_len, suffix, suffix_len);
+ else
+ strbuf_addstr(buf, suffix);
+ }
+}
+
void log_write_email_headers(struct rev_info *opt, const char *name,
const char **subject_p,
const char **extra_headers_p,