cat-file: introduce batch_mode enum to replace print_contents

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>
This commit is contained in:
John Cai 2022-02-18 18:23:12 +00:00 committed by Junio C Hamano
parent a2c75526d2
commit ac4e58cab9

View file

@ -17,10 +17,15 @@
#include "object-store.h" #include "object-store.h"
#include "promisor-remote.h" #include "promisor-remote.h"
enum batch_mode {
BATCH_MODE_CONTENTS,
BATCH_MODE_INFO,
};
struct batch_options { struct batch_options {
int enabled; int enabled;
int follow_symlinks; int follow_symlinks;
int print_contents; enum batch_mode batch_mode;
int buffer_output; int buffer_output;
int all_objects; int all_objects;
int unordered; int unordered;
@ -386,7 +391,7 @@ static void batch_object_write(const char *obj_name,
strbuf_addch(scratch, '\n'); strbuf_addch(scratch, '\n');
batch_write(opt, scratch->buf, scratch->len); batch_write(opt, scratch->buf, scratch->len);
if (opt->print_contents) { if (opt->batch_mode == BATCH_MODE_CONTENTS) {
print_object_or_die(opt, data); print_object_or_die(opt, data);
batch_write(opt, "\n", 1); 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, * If we are printing out the object, then always fill in the type,
* since we will want to decide whether or not to stream. * 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; data.info.typep = &data.type;
if (opt->all_objects) { if (opt->all_objects) {
@ -635,7 +640,14 @@ static int batch_option_callback(const struct option *opt,
} }
bo->enabled = 1; 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; bo->format = arg;
return 0; return 0;