X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=unpack-file.c;h=65c66eb0bf34efee6485db3dbf8af11788c394f4;hb=a37cce3b23afa2c88baa2f1369c585e05bcf4526;hp=d4ac3a5460568408f96fc26e5228c639dfc20439;hpb=b30245c8e92ecaf8fb877189d7620a5a9a205120;p=git.git diff --git a/unpack-file.c b/unpack-file.c index d4ac3a546..65c66eb0b 100644 --- a/unpack-file.c +++ b/unpack-file.c @@ -1,22 +1,21 @@ #include "cache.h" +#include "blob.h" static char *create_temp_file(unsigned char *sha1) { static char path[50]; void *buf; - char type[100]; + enum object_type type; unsigned long size; int fd; - buf = read_sha1_file(sha1, type, &size); - if (!buf || strcmp(type, "blob")) + buf = read_sha1_file(sha1, &type, &size); + if (!buf || type != OBJ_BLOB) die("unable to read blob object %s", sha1_to_hex(sha1)); strcpy(path, ".merge_file_XXXXXX"); - fd = mkstemp(path); - if (fd < 0) - die("unable to create temp-file"); - if (write(fd, buf, size) != size) + fd = xmkstemp(path); + if (write_in_full(fd, buf, size) != size) die("unable to write temp-file"); close(fd); return path; @@ -26,8 +25,13 @@ int main(int argc, char **argv) { unsigned char sha1[20]; - if (argc != 2 || get_sha1(argv[1], sha1)) + if (argc != 2) usage("git-unpack-file "); + if (get_sha1(argv[1], sha1)) + die("Not a valid object name %s", argv[1]); + + setup_git_directory(); + git_config(git_default_config); puts(create_temp_file(sha1)); return 0;