summaryrefslogtreecommitdiff
path: root/archive-zip.c
diff options
context:
space:
mode:
authorLibravatar René Scharfe <rene.scharfe@lsrfire.ath.cx>2007-05-19 00:09:41 +0200
committerLibravatar Junio C Hamano <junkio@cox.net>2007-05-18 16:36:45 -0700
commit5e6cfc80e26a4d0ebac38cff74c2cdebbe66cd27 (patch)
tree6f816b7b8ea0c284aa9c25c440ecca64c514b83c /archive-zip.c
parentgitweb: Allow arbitrary strings to be dug with pickaxe (diff)
downloadtgif-5e6cfc80e26a4d0ebac38cff74c2cdebbe66cd27.tar.xz
git-archive: convert archive entries like checkouts do
As noted by Johan Herland, git-archive is a kind of checkout and needs to apply any checkout filters that might be configured. This patch adds the convenience function convert_sha1_file which returns a buffer containing the object's contents, after converting, if necessary (i.e. it's a combination of read_sha1_file and convert_to_working_tree). Direct calls to read_sha1_file in git-archive are then replaced by calls to convert_sha1_file. Since convert_sha1_file expects its path argument to be NUL-terminated -- a convention it inherits from convert_to_working_tree -- the patch also changes the path handling in archive-tar.c to always NUL-terminate the string. It used to solely rely on the len field of struct strbuf before. archive-zip.c already NUL-terminates the path and thus needs no such change. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'archive-zip.c')
-rw-r--r--archive-zip.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/archive-zip.c b/archive-zip.c
index 1eaf262b74..3cbf6bb8ac 100644
--- a/archive-zip.c
+++ b/archive-zip.c
@@ -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);