X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=archive-zip.c;h=444e1623db66fe4f5d8983e1e9e2cf4083b005b4;hb=1654a3ba0c3a91ee3c0f38c922e3d2d1255ec868;hp=36e922a1f2ffe34264ac55c002072cb2777e7026;hpb=d63afe9ebb9b27952d3c29215a246b252f2d80f9;p=git.git diff --git a/archive-zip.c b/archive-zip.c index 36e922a1f..444e1623d 100644 --- a/archive-zip.c +++ b/archive-zip.c @@ -1,7 +1,6 @@ /* * Copyright (c) 2006 Rene Scharfe */ -#include #include "cache.h" #include "commit.h" #include "blob.h" @@ -168,7 +167,7 @@ static int write_zip_entry(const unsigned char *sha1, int pathlen; unsigned char *out; char *path; - char type[20]; + enum object_type type; void *buffer = NULL; void *deflated = NULL; @@ -183,10 +182,10 @@ static int write_zip_entry(const unsigned char *sha1, goto out; } - if (S_ISDIR(mode)) { + if (S_ISDIR(mode) || S_ISGITLINK(mode)) { method = 0; attr2 = 16; - result = READ_TREE_RECURSIVE; + result = (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0); out = NULL; uncompressed_size = 0; compressed_size = 0; @@ -196,7 +195,7 @@ static int write_zip_entry(const unsigned char *sha1, if (S_ISREG(mode) && zlib_compression_level != 0) method = 8; result = 0; - buffer = read_sha1_file(sha1, type, &size); + buffer = convert_sha1_file(path, sha1, mode, &type, &size); if (!buffer) die("cannot read %s", sha1_to_hex(sha1)); crc = crc32(crc, buffer, size);