aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2015-11-26 16:05:12 +0000
committerJustus Winter <[email protected]>2015-11-26 16:05:12 +0000
commit676b2d7081291f7e47a66755ab07af259fea130b (patch)
tree302dda6bb3a06964c5ce2b8d2370e3a9bf3241bf
parenttools/gpgtar: Handle '--gpg-args'. (diff)
downloadgnupg-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.c7
-rw-r--r--tools/gpgtar.c8
-rw-r--r--tools/gpgtar.h1
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;