Merge branch 'jk/commit-author-parsing'
Code clean-up. * jk/commit-author-parsing: determine_author_info(): copy getenv output determine_author_info(): reuse parsing functions date: use strbufs in date-formatting functions record_author_date(): use find_commit_header() record_author_date(): fix memory leak on malformed commit commit: provide a function to find a header in a buffer
This commit is contained in:
33
pretty.c
33
pretty.c
@ -554,31 +554,11 @@ static void add_merge_info(const struct pretty_print_context *pp,
|
||||
strbuf_addch(sb, '\n');
|
||||
}
|
||||
|
||||
static char *get_header(const struct commit *commit, const char *msg,
|
||||
const char *key)
|
||||
static char *get_header(const char *msg, const char *key)
|
||||
{
|
||||
int key_len = strlen(key);
|
||||
const char *line = msg;
|
||||
|
||||
while (line) {
|
||||
const char *eol = strchrnul(line, '\n'), *next;
|
||||
|
||||
if (line == eol)
|
||||
return NULL;
|
||||
if (!*eol) {
|
||||
warning("malformed commit (header is missing newline): %s",
|
||||
sha1_to_hex(commit->object.sha1));
|
||||
next = NULL;
|
||||
} else
|
||||
next = eol + 1;
|
||||
if (eol - line > key_len &&
|
||||
!strncmp(line, key, key_len) &&
|
||||
line[key_len] == ' ') {
|
||||
return xmemdupz(line + key_len + 1, eol - line - key_len - 1);
|
||||
}
|
||||
line = next;
|
||||
}
|
||||
return NULL;
|
||||
size_t len;
|
||||
const char *v = find_commit_header(msg, key, &len);
|
||||
return v ? xmemdupz(v, len) : NULL;
|
||||
}
|
||||
|
||||
static char *replace_encoding_header(char *buf, const char *encoding)
|
||||
@ -624,11 +604,10 @@ const char *logmsg_reencode(const struct commit *commit,
|
||||
|
||||
if (!output_encoding || !*output_encoding) {
|
||||
if (commit_encoding)
|
||||
*commit_encoding =
|
||||
get_header(commit, msg, "encoding");
|
||||
*commit_encoding = get_header(msg, "encoding");
|
||||
return msg;
|
||||
}
|
||||
encoding = get_header(commit, msg, "encoding");
|
||||
encoding = get_header(msg, "encoding");
|
||||
if (commit_encoding)
|
||||
*commit_encoding = encoding;
|
||||
use_encoding = encoding ? encoding : utf8;
|
||||
|
||||
Reference in New Issue
Block a user