diff options
author | Junio C Hamano <junkio@cox.net> | 2005-10-01 12:01:07 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-10-01 23:14:06 -0700 |
commit | 38ec15a973a1f075f0d94d130b0ef279562921cd (patch) | |
tree | 66b5560d248a6234040a147ce017fd1013519e60 /tar-tree.c | |
parent | f8d839ad992d92e1e31d7a557c198371d1fb7692 (diff) | |
download | git-38ec15a973a1f075f0d94d130b0ef279562921cd.tar.gz |
Honor extractor's umask in git-tar-tree.
The archive generated with git-tar-tree had 0755 and 0644 mode bits.
This inconvenienced the extractor with umask 002 by robbing g+w bit
unconditionally. Just write it out with loose permissions bits and
let the umask of the extractor do its job.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'tar-tree.c')
-rw-r--r-- | tar-tree.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/tar-tree.c b/tar-tree.c index 2716ae3eb1..970c4bb54e 100644 --- a/tar-tree.c +++ b/tar-tree.c @@ -353,6 +353,8 @@ static void traverse_tree(void *buffer, unsigned long size, if (size < namelen + 20 || sscanf(buffer, "%o", &mode) != 1) die("corrupt 'tree' file"); + if (S_ISDIR(mode) || S_ISREG(mode)) + mode |= (mode & 0100) ? 0777 : 0666; buffer = sha1 + 20; size -= namelen + 20; |