diff options
author | Lea Wiemann <lewiemann@gmail.com> | 2008-06-09 02:02:21 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-06-09 13:46:08 -0700 |
commit | 3c076dbe3cffee3b5cbf34759d627c47a417c145 (patch) | |
tree | d4d2d86ca6409739f69cec826e6c813a1234672d /builtin-cat-file.c | |
parent | 4e44ae45fe96c6972c3e5d4aac2a149972429deb (diff) | |
download | git-3c076dbe3cffee3b5cbf34759d627c47a417c145.tar.gz git-3c076dbe3cffee3b5cbf34759d627c47a417c145.tar.xz |
cat-file --batch / --batch-check: do not exit if hashes are missing
Previously, cat-file --batch / --batch-check would silently exit if it
was passed a non-existent SHA1 on stdin. Now it prints "<SHA1>
missing" as in all other cases (and as advertised in the
documentation).
Note that cat-file --batch-check (but not --batch) will still output
"error: unable to find <SHA1>" on stderr if a non-existent SHA1 is
passed, but this does not affect parsing its stdout.
Also, type <= 0 was previously using the potentially uninitialized
type variable (relying on it being 0); it is now being initialized.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-cat-file.c')
-rw-r--r-- | builtin-cat-file.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/builtin-cat-file.c b/builtin-cat-file.c index f8b316066..bd343efae 100644 --- a/builtin-cat-file.c +++ b/builtin-cat-file.c @@ -150,7 +150,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name) static int batch_one_object(const char *obj_name, int print_contents) { unsigned char sha1[20]; - enum object_type type; + enum object_type type = 0; unsigned long size; void *contents = contents; @@ -168,8 +168,11 @@ static int batch_one_object(const char *obj_name, int print_contents) else type = sha1_object_info(sha1, &size); - if (type <= 0) - return 1; + if (type <= 0) { + printf("%s missing\n", obj_name); + fflush(stdout); + return 0; + } printf("%s %s %lu\n", sha1_to_hex(sha1), typename(type), size); fflush(stdout); |