]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cat-file: use strbuf_expand_bad_format()
authorRené Scharfe <l.s.r@web.de>
Sun, 24 Mar 2024 11:21:15 +0000 (12:21 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Mar 2024 18:59:26 +0000 (11:59 -0700)
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>
builtin/cat-file.c

index bbf851138ec40875367aba94bc5b5de29b8dbe77..fadf2da2f067cdfeed5e85d7365264cd66399ddd 100644 (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");
        }
 }