From owner-svn-src-head@FreeBSD.ORG Sun Mar 8 06:19:28 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D5815106564A; Sun, 8 Mar 2009 06:19:28 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C340B8FC13; Sun, 8 Mar 2009 06:19:28 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n286JSUF074634; Sun, 8 Mar 2009 06:19:28 GMT (envelope-from kientzle@svn.freebsd.org) Received: (from kientzle@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n286JSgH074629; Sun, 8 Mar 2009 06:19:28 GMT (envelope-from kientzle@svn.freebsd.org) Message-Id: <200903080619.n286JSgH074629@svn.freebsd.org> From: Tim Kientzle Date: Sun, 8 Mar 2009 06:19:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r189526 - head/usr.bin/tar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Mar 2009 06:19:29 -0000 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);