summaryrefslogtreecommitdiff
path: root/builtin-cat-file.c
diff options
context:
space:
mode:
authorLea Wiemann <lewiemann@gmail.com>2008-06-09 00:02:21 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-06-09 20:46:08 (GMT)
commit3c076dbe3cffee3b5cbf34759d627c47a417c145 (patch)
treed4d2d86ca6409739f69cec826e6c813a1234672d /builtin-cat-file.c
parent4e44ae45fe96c6972c3e5d4aac2a149972429deb (diff)
downloadgit-3c076dbe3cffee3b5cbf34759d627c47a417c145.zip
git-3c076dbe3cffee3b5cbf34759d627c47a417c145.tar.gz
git-3c076dbe3cffee3b5cbf34759d627c47a417c145.tar.bz2
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.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/builtin-cat-file.c b/builtin-cat-file.c
index f8b3160..bd343ef 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);