gpgtar: Allow decryption from stdin.

* tools/gpgtar.c (main): Revamp switch and fix usage test for aDecrypt
and aList.
--

GnuPG-bug-id: 6355
This commit is contained in:
Werner Koch 2023-01-26 11:39:19 +01:00
parent 3de5e00d04
commit 1ab21c82c3
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
2 changed files with 20 additions and 19 deletions

View File

@ -1907,6 +1907,8 @@ Put given files and directories into a vanilla ``ustar'' archive.
@item --extract
@opindex extract
Extract all files from a vanilla ``ustar'' archive.
If no file name is given (or it is "-") the archive is taken from
stdin.
@item --encrypt
@itemx -e
@ -1918,7 +1920,8 @@ be decrypted via a secret key or a passphrase.
@item --decrypt
@itemx -d
@opindex decrypt
Extract all files from an encrypted archive.
Extract all files from an encrypted archive. If no file name is given
(or it is "-") the archive is taken from stdin.
@item --sign
@itemx -s
@ -1929,7 +1932,8 @@ encrypted archive.
@item --list-archive
@itemx -t
@opindex list-archive
List the contents of the specified archive.
List the contents of the specified archive. If no file name is given
(or it is "-") the archive is taken from stdin.
@item --symmetric
@itemx -c

View File

@ -499,17 +499,27 @@ main (int argc, char **argv)
switch (cmd)
{
case aDecrypt:
case aList:
if (argc > 1)
gpgrt_usage (1);
fname = argc ? *argv : NULL;
fname = (argc && strcmp (*argv, "-"))? *argv : NULL;
if (opt.filename)
log_info ("note: ignoring option --set-filename\n");
if (files_from)
log_info ("note: ignoring option --files-from\n");
err = gpgtar_list (fname, !skip_crypto);
if (err && log_get_errorcount (0) == 0)
log_error ("listing archive failed: %s\n", gpg_strerror (err));
if (cmd == aDecrypt)
{
err = gpgtar_extract (fname, !skip_crypto);
if (err && !log_get_errorcount (0))
log_error ("extracting archive failed: %s\n", gpg_strerror (err));
}
else
{
err = gpgtar_list (fname, !skip_crypto);
if (err && !log_get_errorcount (0))
log_error ("listing archive failed: %s\n", gpg_strerror (err));
}
break;
case aEncrypt:
@ -530,19 +540,6 @@ main (int argc, char **argv)
log_error ("creating archive failed: %s\n", gpg_strerror (err));
break;
case aDecrypt:
if (argc != 1)
gpgrt_usage (1);
if (opt.outfile)
log_info ("note: ignoring option --output\n");
if (files_from)
log_info ("note: ignoring option --files-from\n");
fname = argc ? *argv : NULL;
err = gpgtar_extract (fname, !skip_crypto);
if (err && log_get_errorcount (0) == 0)
log_error ("extracting archive failed: %s\n", gpg_strerror (err));
break;
default:
log_error (_("invalid command (there is no implicit command)\n"));
break;