aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/tools.texi8
-rw-r--r--tools/gpgtar.c31
2 files changed, 20 insertions, 19 deletions
diff --git a/doc/tools.texi b/doc/tools.texi
index e22a2285f..5fa21c66a 100644
--- a/doc/tools.texi
+++ b/doc/tools.texi
@@ -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
diff --git a/tools/gpgtar.c b/tools/gpgtar.c
index 8461666b9..b412f3ffb 100644
--- a/tools/gpgtar.c
+++ b/tools/gpgtar.c
@@ -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;