1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-11 21:46:09 +02:00

cat-file: use strbuf_expand_bad_format()

Report unknown format elements and missing closing parentheses with
consistent and translated messages by calling strbuf_expand_bad_format()
at the very end of the combined if/else chain of expand_format() and
expand_atom().

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2024-03-24 12:21:15 +01:00 committed by Junio C Hamano
parent e36091aa1d
commit 7c43bdf07b

View File

@ -310,8 +310,8 @@ static int is_atom(const char *atom, const char *s, int slen)
return alen == slen && !memcmp(atom, s, alen);
}
static void expand_atom(struct strbuf *sb, const char *atom, int len,
struct expand_data *data)
static int expand_atom(struct strbuf *sb, const char *atom, int len,
struct expand_data *data)
{
if (is_atom("objectname", atom, len)) {
if (!data->mark_query)
@ -343,7 +343,8 @@ static void expand_atom(struct strbuf *sb, const char *atom, int len,
strbuf_addstr(sb,
oid_to_hex(&data->delta_base_oid));
} else
die("unknown format element: %.*s", len, atom);
return 0;
return 1;
}
static void expand_format(struct strbuf *sb, const char *start,
@ -354,12 +355,11 @@ static void expand_format(struct strbuf *sb, const char *start,
if (skip_prefix(start, "%", &start) || *start != '(')
strbuf_addch(sb, '%');
else if (!(end = strchr(start + 1, ')')))
die("format element '%s' does not end in ')'", start);
else {
expand_atom(sb, start + 1, end - start - 1, data);
else if ((end = strchr(start + 1, ')')) &&
expand_atom(sb, start + 1, end - start - 1, data))
start = end + 1;
}
else
strbuf_expand_bad_format(start, "cat-file");
}
}