Message ID | 81bc5ae1fc1415b9bd751d93ba1ad305e31af4d6.1644465706.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add cat-file --batch-command flag | expand |
On Thu, Feb 10, 2022 at 9:46 AM John Cai via GitGitGadget <gitgitgadget@gmail.com> wrote: > > From: John Cai <johncai86@gmail.com> > > The next patch introduces a new --batch-command flag. Including --batch > and --batch-check, we will have a total of three batch modes. Currently, > from the batch_options struct's perspective, print_options is the only Here you talk about "print_options"... > member 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 ...but here it's "print_contents". Also it would perhaps be a bit clearer if you introduced it saying something like "the print_contents flag (or boolean?) is the only member..." > help readability and clarity. > > Helped-by: Junio C Hamano <gitster@pobox.com> > Signed-off-by: John Cai <johncai86@gmail.com> > @@ -635,7 +640,15 @@ 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); > + } I think we prefer to remove braces when there is only one instruction. So the above could be just: 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);
diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 5f015e71096..709510c6564 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -17,10 +17,15 @@ #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,15 @@ 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;