aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/tar
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@FreeBSD.org>2005-08-02 03:02:55 +0000
committerTim Kientzle <kientzle@FreeBSD.org>2005-08-02 03:02:55 +0000
commit5d596ecb2545f46c0182803a80e5394a2ea1501b (patch)
treebc85b9ba567baf68ffe0f6d67125a88bd9fae652 /usr.bin/tar
parentfe6f40dd7609dcd3c67de2bac6288fdf26cd0564 (diff)
downloadsrc-5d596ecb2545f46c0182803a80e5394a2ea1501b.tar.gz
src-5d596ecb2545f46c0182803a80e5394a2ea1501b.zip
The bsdtar_warnc() reporting function requires the program name to be
set up before it is called, so move the progname initialization before the first possible call to bsdtar_warnc(). Thanks to: Stanislav Sedov PR: bin/83366 MFC after: 7 days
Notes
Notes: svn path=/head/; revision=148632
Diffstat (limited to 'usr.bin/tar')
-rw-r--r--usr.bin/tar/bsdtar.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/usr.bin/tar/bsdtar.c b/usr.bin/tar/bsdtar.c
index 87ac5f18d62c..59d3aced1049 100644
--- a/usr.bin/tar/bsdtar.c
+++ b/usr.bin/tar/bsdtar.c
@@ -206,6 +206,17 @@ main(int argc, char **argv)
bsdtar->fd = -1; /* Mark as "unused" */
option_o = 0;
+ /* Need bsdtar->progname before calling bsdtar_warnc. */
+ if (*argv == NULL)
+ bsdtar->progname = "bsdtar";
+ else {
+ bsdtar->progname = strrchr(*argv, '/');
+ if (bsdtar->progname != NULL)
+ bsdtar->progname++;
+ else
+ bsdtar->progname = *argv;
+ }
+
if (setlocale(LC_ALL, "") == NULL)
bsdtar_warnc(bsdtar, 0, "Failed to set default locale");
#if defined(HAVE_NL_LANGINFO) && defined(HAVE_D_MD_ORDER)
@@ -224,19 +235,10 @@ main(int argc, char **argv)
/* Default: preserve mod time on extract */
bsdtar->extract_flags = ARCHIVE_EXTRACT_TIME;
+ /* Default for root user: preserve ownership on extract. */
if (bsdtar->user_uid == 0)
bsdtar->extract_flags |= ARCHIVE_EXTRACT_OWNER;
- if (*argv == NULL)
- bsdtar->progname = "bsdtar";
- else {
- bsdtar->progname = strrchr(*argv, '/');
- if (bsdtar->progname != NULL)
- bsdtar->progname++;
- else
- bsdtar->progname = *argv;
- }
-
/* Rewrite traditional-style tar arguments, if used. */
argv = rewrite_argv(bsdtar, &argc, argv, tar_opts);