]> git.ipfire.org Git - thirdparty/git.git/commitdiff
repo: factor out field printing to dedicated function
authorLucas Seiki Oshiro <lucasseikioshiro@gmail.com>
Tue, 18 Nov 2025 20:37:03 +0000 (17:37 -0300)
committerJunio C Hamano <gitster@pobox.com>
Tue, 18 Nov 2025 21:29:10 +0000 (13:29 -0800)
Move the field printing in git-repo-info to a new function called
`print_field`, allowing it to be called by functions other than
`print_fields`.

Also change its use of quote_c_style() helper to output directly to
the standard output stream, instead of taking a result in a strbuf
and then printing it outselves.

Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/repo.c

index 9d4749f79befa8e383424f9af1b28a6ffa9b9abe..f9fb4184940e2ef0a30f6b3b341aa2e95503162e 100644 (file)
@@ -85,13 +85,29 @@ static get_value_fn *get_value_fn_for_key(const char *key)
        return found ? found->get_value : NULL;
 }
 
+static void print_field(enum output_format format, const char *key,
+                       const char *value)
+{
+       switch (format) {
+       case FORMAT_KEYVALUE:
+               printf("%s=", key);
+               quote_c_style(value, NULL, stdout, 0);
+               putchar('\n');
+               break;
+       case FORMAT_NUL_TERMINATED:
+               printf("%s\n%s%c", key, value, '\0');
+               break;
+       default:
+               BUG("not a valid output format: %d", format);
+       }
+}
+
 static int print_fields(int argc, const char **argv,
                        struct repository *repo,
                        enum output_format format)
 {
        int ret = 0;
        struct strbuf valbuf = STRBUF_INIT;
-       struct strbuf quotbuf = STRBUF_INIT;
 
        for (int i = 0; i < argc; i++) {
                get_value_fn *get_value;
@@ -105,25 +121,11 @@ static int print_fields(int argc, const char **argv,
                }
 
                strbuf_reset(&valbuf);
-               strbuf_reset(&quotbuf);
-
                get_value(repo, &valbuf);
-
-               switch (format) {
-               case FORMAT_KEYVALUE:
-                       quote_c_style(valbuf.buf, &quotbuf, NULL, 0);
-                       printf("%s=%s\n", key, quotbuf.buf);
-                       break;
-               case FORMAT_NUL_TERMINATED:
-                       printf("%s\n%s%c", key, valbuf.buf, '\0');
-                       break;
-               default:
-                       BUG("not a valid output format: %d", format);
-               }
+               print_field(format, key, valbuf.buf);
        }
 
        strbuf_release(&valbuf);
-       strbuf_release(&quotbuf);
        return ret;
 }