diff options
author | attilio <attilio@FreeBSD.org> | 2011-10-22 22:56:20 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2011-10-22 22:56:20 +0000 |
commit | 4be1d1f7d25274261562ad10fb8197d48da0d113 (patch) | |
tree | a5939a4eeef7c173fb98194a6a23499c9b5a561d /usr.bin/tar/write.c | |
parent | 62842622e5f4dd7e394cb2530b955c9818aaeec0 (diff) | |
parent | d5b30f0715769670b0cb9e859e79e85cc990f441 (diff) | |
download | FreeBSD-src-4be1d1f7d25274261562ad10fb8197d48da0d113.zip FreeBSD-src-4be1d1f7d25274261562ad10fb8197d48da0d113.tar.gz |
MFC
Diffstat (limited to 'usr.bin/tar/write.c')
-rw-r--r-- | usr.bin/tar/write.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/usr.bin/tar/write.c b/usr.bin/tar/write.c index 32e43c6..a0a9b75 100644 --- a/usr.bin/tar/write.c +++ b/usr.bin/tar/write.c @@ -833,6 +833,24 @@ write_hierarchy(struct bsdtar *bsdtar, struct archive *a, const char *path) #endif r = archive_read_disk_entry_from_file(bsdtar->diskreader, entry, -1, st); + if (bsdtar->uid >= 0) { + archive_entry_set_uid(entry, bsdtar->uid); + if (!bsdtar->uname) + archive_entry_set_uname(entry, + archive_read_disk_uname(bsdtar->diskreader, + bsdtar->uid)); + } + if (bsdtar->gid >= 0) { + archive_entry_set_gid(entry, bsdtar->gid); + if (!bsdtar->gname) + archive_entry_set_gname(entry, + archive_read_disk_gname(bsdtar->diskreader, + bsdtar->gid)); + } + if (bsdtar->uname) + archive_entry_set_uname(entry, bsdtar->uname); + if (bsdtar->gname) + archive_entry_set_gname(entry, bsdtar->gname); if (r != ARCHIVE_OK) lafe_warnc(archive_errno(bsdtar->diskreader), "%s", archive_error_string(bsdtar->diskreader)); |