X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=archive-zip.c;h=444e1623db66fe4f5d8983e1e9e2cf4083b005b4;hb=1654a3ba0c3a91ee3c0f38c922e3d2d1255ec868;hp=f31b8ed8236c3fcad10ac9a84e2f508f11e1a6cf;hpb=5bac4a671907604b5fb4e24ff682d5b0e8431931;p=git.git diff --git a/archive-zip.c b/archive-zip.c index f31b8ed82..444e1623d 100644 --- a/archive-zip.c +++ b/archive-zip.c @@ -167,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; @@ -182,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; @@ -195,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);