cat-file: stop returning value from batch_one_object

If batch_one_object returns an error code, we stop reading input. However, it will only do so if we feed it NULL, which cannot happen; we give it the "buf" member of a strbuf, which is always non-NULL. We did originally stop on other errors (like a missing object), but this was changed in 3c076db (cat-file --batch / --batch-check: do not exit if hashes are missing, 2008-06-09). These days we keep going for any per-object error (and print "missing" when necessary). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Jun 22, 2015 at 06:45 UTC 82330950d96a2c2b971ec5b29f59625bcfb62d47
1 file changed +6 -12
builtin/cat-file.c
+6 -12
@@ -251,17 +251,14 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
251 }
252 }
253
254 -static int batch_one_object(const char *obj_name, struct batch_options *opt,
255 - struct expand_data *data)
254 +static void batch_one_object(const char *obj_name, struct batch_options *opt,
255 + struct expand_data *data)
256 {
257 struct strbuf buf = STRBUF_INIT;
258 struct object_context ctx;
259 int flags = opt->follow_symlinks ? GET_SHA1_FOLLOW_SYMLINKS : 0;
260 enum follow_symlinks_result result;
261
262 - if (!obj_name)
263 - return 1;
264 -
262 result = get_sha1_with_context(obj_name, flags, data->sha1, &ctx);
263 if (result != FOUND) {
264 switch (result) {
@@ -286,7 +283,7 @@ static int batch_one_object(const char *obj_name, struct batch_options *opt,
283 break;
284 }
285 fflush(stdout);
289 - return 0;
286 + return;
287 }
288
289 if (ctx.mode == 0) {
@@ -294,13 +291,13 @@ static int batch_one_object(const char *obj_name, struct batch_options *opt,
291 (uintmax_t)ctx.symlink_path.len,
292 ctx.symlink_path.buf);
293 fflush(stdout);
297 - return 0;
294 + return;
295 }
296
297 if (sha1_object_info_extended(data->sha1, &data->info, LOOKUP_REPLACE_OBJECT) < 0) {
298 printf("%s missing\n", obj_name);
299 fflush(stdout);
303 - return 0;
300 + return;
301 }
302
303 strbuf_expand(&buf, opt->format, expand_format, data);
@@ -312,7 +309,6 @@ static int batch_one_object(const char *obj_name, struct batch_options *opt,
309 print_object_or_die(opt, data);
310 batch_write(opt, "\n", 1);
311 }
315 - return 0;
312 }
313
314 static int batch_objects(struct batch_options *opt)
@@ -367,9 +363,7 @@ static int batch_objects(struct batch_options *opt)
363 data.rest = p;
364 }
365
370 - retval = batch_one_object(buf.buf, opt, &data);
371 - if (retval)
372 - break;
366 + batch_one_object(buf.buf, opt, &data);
367 }
368
369 strbuf_release(&buf);