|
|
|
@ -50,6 +50,13 @@ static int filter_object(const char *path, unsigned mode,
@@ -50,6 +50,13 @@ static int filter_object(const char *path, unsigned mode,
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int stream_blob(const struct object_id *oid) |
|
|
|
|
{ |
|
|
|
|
if (stream_blob_to_fd(1, oid, NULL, 0)) |
|
|
|
|
die("unable to stream %s to stdout", oid_to_hex(oid)); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int cat_one_file(int opt, const char *exp_type, const char *obj_name, |
|
|
|
|
int unknown_type) |
|
|
|
|
{ |
|
|
|
@ -131,7 +138,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
@@ -131,7 +138,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (type == OBJ_BLOB) |
|
|
|
|
return stream_blob_to_fd(1, &oid, NULL, 0); |
|
|
|
|
return stream_blob(&oid); |
|
|
|
|
buf = read_object_file(&oid, &type, &size); |
|
|
|
|
if (!buf) |
|
|
|
|
die("Cannot read object %s", obj_name); |
|
|
|
@ -154,7 +161,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
@@ -154,7 +161,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
|
|
|
|
|
oidcpy(&blob_oid, &oid); |
|
|
|
|
|
|
|
|
|
if (oid_object_info(the_repository, &blob_oid, NULL) == OBJ_BLOB) |
|
|
|
|
return stream_blob_to_fd(1, &blob_oid, NULL, 0); |
|
|
|
|
return stream_blob(&blob_oid); |
|
|
|
|
/* |
|
|
|
|
* we attempted to dereference a tag to a blob |
|
|
|
|
* and failed; there may be new dereference |
|
|
|
@ -317,8 +324,9 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
@@ -317,8 +324,9 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
|
|
|
|
|
BUG("invalid cmdmode: %c", opt->cmdmode); |
|
|
|
|
batch_write(opt, contents, size); |
|
|
|
|
free(contents); |
|
|
|
|
} else if (stream_blob_to_fd(1, oid, NULL, 0) < 0) |
|
|
|
|
die("unable to stream %s to stdout", oid_to_hex(oid)); |
|
|
|
|
} else { |
|
|
|
|
stream_blob(oid); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
enum object_type type; |
|
|
|
|