diff options
author | kientzle <kientzle@FreeBSD.org> | 2009-03-07 03:00:44 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2009-03-07 03:00:44 +0000 |
commit | 4c7dead1473441763295e61ca1de4073a5d57fc6 (patch) | |
tree | 76da18086c200cc0c89a4dec0422aa88445071e2 /lib | |
parent | 1047af1f550ec2c3f4d3edc964dffd5fb2a088f7 (diff) | |
download | FreeBSD-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.c | 8 |
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; } |