From bbe940c095f2bca7a1ca5f8e68ca1af98350a885 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 8 Sep 2016 00:45:45 +0200 Subject: [PATCH] gpg: Make --output work with --verify. * g10/mainproc.c (proc_plaintext): Handle opt.output. Signed-off-by: Werner Koch --- doc/gpg.texi | 16 +++++++++------- g10/mainproc.c | 7 ++++++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/doc/gpg.texi b/doc/gpg.texi index 8864a0ad5..74977c59e 100644 --- a/doc/gpg.texi +++ b/doc/gpg.texi @@ -3438,13 +3438,15 @@ show fingerprint @item gpg --verify @code{pgpfile} @itemx gpg --verify @code{sigfile} -Verify the signature of the file but do not output the data. The -second form is used for detached signatures, where @code{sigfile} -is the detached signature (either ASCII armored or binary) and -are the signed data; if this is not given, the name of -the file holding the signed data is constructed by cutting off the -extension (".asc" or ".sig") of @code{sigfile} or by asking the -user for the filename. +Verify the signature of the file but do not output the data unless +requested. The second form is used for detached signatures, where +@code{sigfile} is the detached signature (either ASCII armored or +binary) and are the signed data; if this is not given, the name of the +file holding the signed data is constructed by cutting off the +extension (".asc" or ".sig") of @code{sigfile} or by asking the user +for the filename. If the option @option{--output} is also used the +signed data is written to the file specified by that option; use +@code{-} to write the signed data to stdout. @end table diff --git a/g10/mainproc.c b/g10/mainproc.c index 7bb43502b..929e18a72 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -757,7 +757,12 @@ proc_plaintext( CTX c, PACKET *pkt ) if (!rc) { - rc = handle_plaintext (pt, &c->mfx, c->sigs_only, clearsig); + /* It we are in --verify mode, we do not want to output the + * signed text. However, if --output is also used we do what + * has been requested and write out the signed data. */ + rc = handle_plaintext (pt, &c->mfx, + (opt.outfp || opt.outfile)? 0 : c->sigs_only, + clearsig); if (gpg_err_code (rc) == GPG_ERR_EACCES && !c->sigs_only) { /* Can't write output but we hash it anyway to check the