diff options
author | Justus Winter <[email protected]> | 2015-11-26 16:05:12 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2015-11-26 16:05:12 +0000 |
commit | 676b2d7081291f7e47a66755ab07af259fea130b (patch) | |
tree | 302dda6bb3a06964c5ce2b8d2370e3a9bf3241bf | |
parent | tools/gpgtar: Handle '--gpg-args'. (diff) | |
download | gnupg-676b2d7081291f7e47a66755ab07af259fea130b.tar.gz gnupg-676b2d7081291f7e47a66755ab07af259fea130b.zip |
tools/gpgtar: Add '--dry-run'.
* tools/gpgtar-extract.c (extract_{regular,directory}): Honor
'--dry-run'.
* tools/gpgtar.c (enum cmd_and_opt_values): New value.
(opts): Add '--dry-run'.
(parse_arguments): Handle '--dry-run'.
* tools/gpgtar.h (opt): Add field 'dry_run'.
Signed-off-by: Justus Winter <[email protected]>
-rw-r--r-- | tools/gpgtar-extract.c | 7 | ||||
-rw-r--r-- | tools/gpgtar.c | 8 | ||||
-rw-r--r-- | tools/gpgtar.h | 1 |
3 files changed, 14 insertions, 2 deletions
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c index 3b73c8506..728737d78 100644 --- a/tools/gpgtar-extract.c +++ b/tools/gpgtar-extract.c @@ -53,7 +53,10 @@ extract_regular (estream_t stream, const char *dirname, else err = 0; - outfp = es_fopen (fname, "wb"); + if (opt.dry_run) + outfp = es_fopenmem (0, "wb"); + else + outfp = es_fopen (fname, "wb"); if (!outfp) { err = gpg_error_from_syserror (); @@ -120,7 +123,7 @@ extract_directory (const char *dirname, tar_header_t hdr) /* Note that we don't need to care about EEXIST because we always extract into a new hierarchy. */ - if (gnupg_mkdir (fname, "-rwx------")) + if (! opt.dry_run && gnupg_mkdir (fname, "-rwx------")) { err = gpg_error_from_syserror (); if (gpg_err_code (err) == GPG_ERR_ENOENT) diff --git a/tools/gpgtar.c b/tools/gpgtar.c index 90fee054e..a46a3398c 100644 --- a/tools/gpgtar.c +++ b/tools/gpgtar.c @@ -77,6 +77,9 @@ enum cmd_and_opt_values /* Compatibility with gpg-zip. */ oGpgArgs, oTarArgs, + + /* Debugging. */ + oDryRun, }; @@ -100,6 +103,7 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_n (oQuiet, "quiet", N_("be somewhat more quiet")), ARGPARSE_s_s (oGpgProgram, "gpg", "@"), ARGPARSE_s_n (oSkipCrypto, "skip-crypto", N_("skip the crypto processing")), + ARGPARSE_s_n (oDryRun, "dry-run", N_("do not make any changes")), ARGPARSE_s_s (oSetFilename, "set-filename", "@"), ARGPARSE_s_n (oOpenPGP, "openpgp", "@"), ARGPARSE_s_n (oCMS, "cms", "@"), @@ -377,6 +381,10 @@ parse_arguments (ARGPARSE_ARGS *pargs, ARGPARSE_OPTS *popts) } break; + case oDryRun: + opt.dry_run = 1; + break; + default: pargs->err = 2; break; } } diff --git a/tools/gpgtar.h b/tools/gpgtar.h index f130c94ee..eadbcac2a 100644 --- a/tools/gpgtar.h +++ b/tools/gpgtar.h @@ -29,6 +29,7 @@ struct int verbose; unsigned int debug_level; int quiet; + int dry_run; const char *gpg_program; strlist_t gpg_arguments; const char *outfile; |