[PATCHv5 1/8] commit.c: prefer get_header() to manual searching
Signed-off-by: Pat Notz <patnotz@gmail.com>
---
builtin/commit.c | 11 +++--------
commit.h | 1 +
pretty.c | 2 +-
3 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/builtin/commit.c b/builtin/commit.c
index 66fdd22..bf9fcc1 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -899,7 +899,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
unsigned char sha1[20];
static char utf8[] = "UTF-8";
const char *out_enc;
- char *enc, *end;
+ char *enc;
struct commit *commit;
if (get_sha1(use_message, sha1))
@@ -908,13 +908,8 @@ static int parse_and_validate_options(int argc, const char *argv[],
if (!commit || parse_commit(commit))
die("could not parse commit %s", use_message);
- enc = strstr(commit->buffer, "\nencoding");
- if (enc) {
- end = strchr(enc + 10, '\n');
- enc = xstrndup(enc + 10, end - (enc + 10));
- } else {
- enc = utf8;
- }
+ enc = get_header(commit, "encoding");
+ enc = enc ? enc : utf8;
out_enc = git_commit_encoding ? git_commit_encoding : utf8;
if (strcmp(out_enc, enc))
diff --git a/commit.h b/commit.h
index 9113bbe..c246c94 100644
--- a/commit.h
+++ b/commit.h
@@ -87,6 +87,7 @@ struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
extern char *reencode_commit_message(const struct commit *commit,
const char **encoding_p);
extern void get_commit_format(const char *arg, struct rev_info *);
+extern char *get_header(const struct commit *commit, const char *key);
extern void userformat_find_requirements(const char *fmt, struct userformat_want *w);
extern void format_commit_message(const struct commit *commit,
const char *format, struct strbuf *sb,
diff --git a/pretty.c b/pretty.c
index f85444b..839944c 100644
--- a/pretty.c
+++ b/pretty.c
@@ -348,7 +348,7 @@ static void add_merge_info(enum cmit_fmt fmt, struct strbuf *sb,
strbuf_addch(sb, '\n');
}
-static char *get_header(const struct commit *commit, const char *key)
+char *get_header(const struct commit *commit, const char *key)
{
int key_len = strlen(key);
const char *line = commit->buffer;
--
1.7.3.1