summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2009-03-07 03:00:44 +0000
committerkientzle <kientzle@FreeBSD.org>2009-03-07 03:00:44 +0000
commit4c7dead1473441763295e61ca1de4073a5d57fc6 (patch)
tree76da18086c200cc0c89a4dec0422aa88445071e2 /lib
parent1047af1f550ec2c3f4d3edc964dffd5fb2a088f7 (diff)
downloadFreeBSD-src-4c7dead1473441763295e61ca1de4073a5d57fc6.zip
FreeBSD-src-4c7dead1473441763295e61ca1de4073a5d57fc6.tar.gz
Merge r723 from libarchive.googlecode.com: Don't try to restore
owner or SUID bits on Windows; just ignore them.
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_write_disk.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/libarchive/archive_write_disk.c b/lib/libarchive/archive_write_disk.c
index 948aaf7..0d84156 100644
--- a/lib/libarchive/archive_write_disk.c
+++ b/lib/libarchive/archive_write_disk.c
@@ -414,8 +414,10 @@ _archive_write_header(struct archive *_a, struct archive_entry *entry)
a->mode &= ~S_ISVTX;
a->mode &= ~a->user_umask;
}
+#ifndef _WIN32
if (a->flags & ARCHIVE_EXTRACT_OWNER)
a->todo |= TODO_OWNER;
+#endif
if (a->flags & ARCHIVE_EXTRACT_TIME)
a->todo |= TODO_TIMES;
if (a->flags & ARCHIVE_EXTRACT_ACL)
@@ -1942,6 +1944,7 @@ set_mode(struct archive_write_disk *a, int mode)
return (r);
if (a->pst->st_gid != a->gid) {
mode &= ~ S_ISGID;
+#ifndef _WIN32
if (a->flags & ARCHIVE_EXTRACT_OWNER) {
/*
* This is only an error if you
@@ -1954,16 +1957,19 @@ set_mode(struct archive_write_disk *a, int mode)
"Can't restore SGID bit");
r = ARCHIVE_WARN;
}
+#endif
}
/* While we're here, double-check the UID. */
if (a->pst->st_uid != a->uid
&& (a->todo & TODO_SUID)) {
mode &= ~ S_ISUID;
+#ifndef _WIN32
if (a->flags & ARCHIVE_EXTRACT_OWNER) {
archive_set_error(&a->archive, -1,
"Can't restore SUID bit");
r = ARCHIVE_WARN;
}
+#endif
}
a->todo &= ~TODO_SGID_CHECK;
a->todo &= ~TODO_SUID_CHECK;
@@ -1975,11 +1981,13 @@ set_mode(struct archive_write_disk *a, int mode)
*/
if (a->user_uid != a->uid) {
mode &= ~ S_ISUID;
+#ifndef _WIN32
if (a->flags & ARCHIVE_EXTRACT_OWNER) {
archive_set_error(&a->archive, -1,
"Can't make file SUID");
r = ARCHIVE_WARN;
}
+#endif
}
a->todo &= ~TODO_SUID_CHECK;
}
OpenPOWER on IntegriCloud