X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=archive-zip.c;h=444e1623db66fe4f5d8983e1e9e2cf4083b005b4;hb=952c8c56380734d45bddf369fe478895672c5a3a;hp=7c4984886f14aaba5d6a71c3b9213934b45d713a;hpb=8b969a5fb5e5891d9ad4c236fd9487c4673bfa2a;p=git.git diff --git a/archive-zip.c b/archive-zip.c index 7c4984886..444e1623d 100644 --- a/archive-zip.c +++ b/archive-zip.c @@ -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);