gpgtar: Make option -C work for archive creation.

* 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>
(cherry picked from commit b3a7a51407)
This commit is contained in:
Werner Koch 2019-03-06 20:08:26 +01:00
parent 2e4151a341
commit 5d73c231e4
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
3 changed files with 14 additions and 5 deletions

View File

@ -2014,10 +2014,11 @@ Do not actually output the extracted files.
@item --directory @var{dir} @item --directory @var{dir}
@itemx -C @var{dir} @itemx -C @var{dir}
@opindex directory @opindex directory
Extract the files into the directory @var{dir}. The Extract the files into the directory @var{dir}. The default is to
default is to take the directory name from take the directory name from the input filename. If no input filename
the input filename. If no input filename is known a directory named is known a directory named @file{GPGARCH} is used. For tarball
@file{GPGARCH} is used. creation, switch to directory @var{dir} before performing any
operations.
@item --files-from @var{file} @item --files-from @var{file}
@itemx -T @var{file} @itemx -T @var{file}

View File

@ -762,6 +762,14 @@ gpgtar_create (char **inpattern, int encrypt, int sign)
memset (scanctrl, 0, sizeof *scanctrl); memset (scanctrl, 0, sizeof *scanctrl);
scanctrl->flist_tail = &scanctrl->flist; 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) while (!eof_seen)
{ {
char *pat, *p; char *pat, *p;

View File

@ -112,7 +112,7 @@ static ARGPARSE_OPTS opts[] = {
ARGPARSE_group (302, N_("@\nTar options:\n ")), ARGPARSE_group (302, N_("@\nTar options:\n ")),
ARGPARSE_s_s (oDirectory, "directory", ARGPARSE_s_s (oDirectory, "directory",
N_("|DIRECTORY|extract files into DIRECTORY")), N_("|DIRECTORY|change to DIRECTORY first")),
ARGPARSE_s_s (oFilesFrom, "files-from", ARGPARSE_s_s (oFilesFrom, "files-from",
N_("|FILE|get names to create from FILE")), N_("|FILE|get names to create from FILE")),
ARGPARSE_s_n (oNull, "null", N_("-T reads null-terminated names")), ARGPARSE_s_n (oNull, "null", N_("-T reads null-terminated names")),