Date: Sun, 8 Mar 2009 06:19:28 +0000 (UTC) From: Tim Kientzle <kientzle@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r189526 - head/usr.bin/tar Message-ID: <200903080619.n286JSgH074629@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kientzle Date: Sun Mar 8 06:19:28 2009 New Revision: 189526 URL: http://svn.freebsd.org/changeset/base/189526 Log: Merge r492 from libarchive.googlecode.com: First cut at exposing the new options mechanism to userland. Documentation pending... Modified: head/usr.bin/tar/bsdtar.c head/usr.bin/tar/bsdtar.h head/usr.bin/tar/cmdline.c head/usr.bin/tar/read.c head/usr.bin/tar/write.c Modified: head/usr.bin/tar/bsdtar.c ============================================================================== --- head/usr.bin/tar/bsdtar.c Sun Mar 8 06:14:33 2009 (r189525) +++ head/usr.bin/tar/bsdtar.c Sun Mar 8 06:19:28 2009 (r189526) @@ -212,6 +212,9 @@ main(int argc, char **argv) case OPTION_FORMAT: /* GNU tar, others */ bsdtar->create_format = bsdtar->optarg; break; + case OPTION_FORMAT_OPTIONS: + bsdtar->option_format_options = bsdtar->optarg; + break; case 'f': /* SUSv2 */ bsdtar->filename = bsdtar->optarg; if (strcmp(bsdtar->filename, "-") == 0) Modified: head/usr.bin/tar/bsdtar.h ============================================================================== --- head/usr.bin/tar/bsdtar.h Sun Mar 8 06:14:33 2009 (r189525) +++ head/usr.bin/tar/bsdtar.h Sun Mar 8 06:19:28 2009 (r189526) @@ -60,6 +60,7 @@ struct bsdtar { char option_chroot; /* --chroot */ char option_dont_traverse_mounts; /* --one-file-system */ char option_fast_read; /* --fast-read */ + const char *option_format_options; /* --format-options */ char option_honor_nodump; /* --nodump */ char option_interactive; /* -w */ char option_no_owner; /* -o */ @@ -110,6 +111,7 @@ enum { OPTION_CHROOT, OPTION_EXCLUDE, OPTION_FORMAT, + OPTION_FORMAT_OPTIONS, OPTION_HELP, OPTION_INCLUDE, OPTION_KEEP_NEWER_FILES, Modified: head/usr.bin/tar/cmdline.c ============================================================================== --- head/usr.bin/tar/cmdline.c Sun Mar 8 06:14:33 2009 (r189525) +++ head/usr.bin/tar/cmdline.c Sun Mar 8 06:19:28 2009 (r189526) @@ -83,6 +83,7 @@ static struct option { { "file", 1, 'f' }, { "files-from", 1, 'T' }, { "format", 1, OPTION_FORMAT }, + { "format-options", 1, OPTION_FORMAT_OPTIONS }, { "gunzip", 0, 'z' }, { "gzip", 0, 'z' }, { "help", 0, OPTION_HELP }, Modified: head/usr.bin/tar/read.c ============================================================================== --- head/usr.bin/tar/read.c Sun Mar 8 06:14:33 2009 (r189525) +++ head/usr.bin/tar/read.c Sun Mar 8 06:19:28 2009 (r189526) @@ -132,6 +132,12 @@ read_archive(struct bsdtar *bsdtar, char DEFAULT_BYTES_PER_BLOCK)) bsdtar_errc(bsdtar, 1, 0, "Error opening archive: %s", archive_error_string(a)); + if (bsdtar->option_format_options != NULL) { + r = archive_read_set_options(a, bsdtar->option_format_options); + if (r != ARCHIVE_OK) + bsdtar_errc(bsdtar, 1, 0, "Error archive options: %s", + archive_error_string(a)); + } do_chdir(bsdtar); Modified: head/usr.bin/tar/write.c ============================================================================== --- head/usr.bin/tar/write.c Sun Mar 8 06:14:33 2009 (r189525) +++ head/usr.bin/tar/write.c Sun Mar 8 06:19:28 2009 (r189526) @@ -208,6 +208,12 @@ tar_mode_c(struct bsdtar *bsdtar) if (r != ARCHIVE_OK) bsdtar_errc(bsdtar, 1, 0, archive_error_string(a)); + if (bsdtar->option_format_options != NULL) { + r = archive_write_set_options(a, bsdtar->option_format_options); + if (r != ARCHIVE_OK) + bsdtar_errc(bsdtar, 1, 0, archive_error_string(a)); + } + write_archive(a, bsdtar); } @@ -294,6 +300,11 @@ tar_mode_r(struct bsdtar *bsdtar) } lseek(bsdtar->fd, end_offset, SEEK_SET); /* XXX check return val XXX */ archive_write_open_fd(a, bsdtar->fd); /* XXX check return val XXX */ + if (bsdtar->option_format_options != NULL) { + r = archive_write_set_options(a, bsdtar->option_format_options); + if (r != ARCHIVE_OK) + bsdtar_errc(bsdtar, 1, 0, archive_error_string(a)); + } write_archive(a, bsdtar); /* XXX check return val XXX */ @@ -310,6 +321,7 @@ tar_mode_u(struct bsdtar *bsdtar) int format; struct archive_dir_entry *p; struct archive_dir archive_dir; + int r; bsdtar->archive_dir = &archive_dir; memset(&archive_dir, 0, sizeof(archive_dir)); @@ -374,6 +386,11 @@ tar_mode_u(struct bsdtar *bsdtar) lseek(bsdtar->fd, end_offset, SEEK_SET); ftruncate(bsdtar->fd, end_offset); archive_write_open_fd(a, bsdtar->fd); + if (bsdtar->option_format_options != NULL) { + r = archive_write_set_options(a, bsdtar->option_format_options); + if (r != ARCHIVE_OK) + bsdtar_errc(bsdtar, 1, 0, archive_error_string(a)); + } write_archive(a, bsdtar);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903080619.n286JSgH074629>