]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cat-file: introduce batch_mode enum to replace print_contents
authorJohn Cai <johncai86@gmail.com>
Fri, 18 Feb 2022 18:23:12 +0000 (18:23 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 18 Feb 2022 19:21:46 +0000 (11:21 -0800)
A future patch introduces a new --batch-command flag. Including --batch
and --batch-check, we will have a total of three batch modes. print_contents
is the only boolean on the batch_options sturct used to distinguish
between the different modes. This makes the code harder to read.

To reduce potential confusion, replace print_contents with an enum to
help readability and clarity.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: John Cai <johncai86@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/cat-file.c

index 5f015e7109681ce91e8309ea6ddb25cbf313707e..5e38af82af13c3fab83946a42f69a3b43c97fdba 100644 (file)
 #include "object-store.h"
 #include "promisor-remote.h"
 
+enum batch_mode {
+       BATCH_MODE_CONTENTS,
+       BATCH_MODE_INFO,
+};
+
 struct batch_options {
        int enabled;
        int follow_symlinks;
-       int print_contents;
+       enum batch_mode batch_mode;
        int buffer_output;
        int all_objects;
        int unordered;
@@ -386,7 +391,7 @@ static void batch_object_write(const char *obj_name,
        strbuf_addch(scratch, '\n');
        batch_write(opt, scratch->buf, scratch->len);
 
-       if (opt->print_contents) {
+       if (opt->batch_mode == BATCH_MODE_CONTENTS) {
                print_object_or_die(opt, data);
                batch_write(opt, "\n", 1);
        }
@@ -536,7 +541,7 @@ static int batch_objects(struct batch_options *opt)
         * If we are printing out the object, then always fill in the type,
         * since we will want to decide whether or not to stream.
         */
-       if (opt->print_contents)
+       if (opt->batch_mode == BATCH_MODE_CONTENTS)
                data.info.typep = &data.type;
 
        if (opt->all_objects) {
@@ -635,7 +640,14 @@ static int batch_option_callback(const struct option *opt,
        }
 
        bo->enabled = 1;
-       bo->print_contents = !strcmp(opt->long_name, "batch");
+
+       if (!strcmp(opt->long_name, "batch"))
+               bo->batch_mode = BATCH_MODE_CONTENTS;
+       else if (!strcmp(opt->long_name, "batch-check"))
+               bo->batch_mode = BATCH_MODE_INFO;
+       else
+               BUG("%s given to batch-option-callback", opt->long_name);
+
        bo->format = arg;
 
        return 0;