gpgtar: Make option -C work for archive creation.
authorWerner Koch <wk@gnupg.org>
Wed, 6 Mar 2019 19:08:26 +0000 (20:08 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 6 Mar 2019 19:08:26 +0000 (20:08 +0100)
* tools/gpgtar-create.c (gpgtar_create): Switch to the -C directory.
--

The -C option is pretty useful given that pattern are always relative
to the current directory.  In contrast to GNU tar, the switching is
done only once.

Signed-off-by: Werner Koch <wk@gnupg.org>
doc/tools.texi
tools/gpgtar-create.c
tools/gpgtar.c

index 6256c05..119f698 100644 (file)
@@ -2014,10 +2014,11 @@ Do not actually output the extracted files.
 @item --directory @var{dir}
 @itemx -C @var{dir}
 @opindex directory
-Extract the files into the directory @var{dir}.  The
-default is to take the directory name from
-the input filename.  If no input filename is known a directory named
-@file{GPGARCH} is used.
+Extract the files into the directory @var{dir}.  The default is to
+take the directory name from the input filename.  If no input filename
+is known a directory named @file{GPGARCH} is used.  For tarball
+creation, switch to directory @var{dir} before performing any
+operations.
 
 @item --files-from @var{file}
 @itemx -T @var{file}
index c622a66..a086016 100644 (file)
@@ -762,6 +762,14 @@ gpgtar_create (char **inpattern, int encrypt, int sign)
   memset (scanctrl, 0, sizeof *scanctrl);
   scanctrl->flist_tail = &scanctrl->flist;
 
+  if (opt.directory && gnupg_chdir (opt.directory))
+    {
+      err = gpg_error_from_syserror ();
+      log_error ("chdir to '%s' failed: %s\n",
+                 opt.directory, gpg_strerror (err));
+      return err;
+    }
+
   while (!eof_seen)
     {
       char *pat, *p;
index 77001dc..b33aa6d 100644 (file)
@@ -112,7 +112,7 @@ static ARGPARSE_OPTS opts[] = {
   ARGPARSE_group (302, N_("@\nTar options:\n ")),
 
   ARGPARSE_s_s (oDirectory, "directory",
-                N_("|DIRECTORY|extract files into DIRECTORY")),
+                N_("|DIRECTORY|change to DIRECTORY first")),
   ARGPARSE_s_s (oFilesFrom, "files-from",
                 N_("|FILE|get names to create from FILE")),
   ARGPARSE_s_n (oNull, "null", N_("-T reads null-terminated names")),