aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2015-11-25 17:29:22 +0000
committerJustus Winter <[email protected]>2015-11-25 17:29:22 +0000
commit127aba9a4d6c1aabb4a18a74b16d3bddc6eb5c54 (patch)
treeacadf0ca51c1fdad8ea62e0e3864905f2968d04b
parenttools/gpgtar: Handle '--gpg' argument. (diff)
downloadgnupg-127aba9a4d6c1aabb4a18a74b16d3bddc6eb5c54.tar.gz
gnupg-127aba9a4d6c1aabb4a18a74b16d3bddc6eb5c54.zip
tools/gpgtar: Handle '--directory' argument.
* tools/gpgtar-extract.c (gpgtar_extract): Only generate a directory name if none is given via arguments. * tools/gpgtar.c (enum cmd_and_opt_values): New constant. (opts): Add argument. (main): Parse argument. * tools/gpgtar.h (opt): New field 'directory'. Signed-off-by: Justus Winter <[email protected]>
-rw-r--r--tools/gpgtar-extract.c49
-rw-r--r--tools/gpgtar.c4
-rw-r--r--tools/gpgtar.h1
3 files changed, 32 insertions, 22 deletions
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c
index 92346b0e0..fa2f3626a 100644
--- a/tools/gpgtar-extract.c
+++ b/tools/gpgtar-extract.c
@@ -312,31 +312,36 @@ gpgtar_extract (const char *filename, int decrypt)
goto leave;
}
- if (filename)
- {
- dirprefix = strrchr (filename, '/');
- if (dirprefix)
- dirprefix++;
- else
- dirprefix = filename;
- }
- else if (opt.filename)
+ if (opt.directory)
+ dirname = xtrystrdup (opt.directory);
+ else
{
- dirprefix = strrchr (opt.filename, '/');
- if (dirprefix)
- dirprefix++;
- else
- dirprefix = opt.filename;
- }
+ if (filename)
+ {
+ dirprefix = strrchr (filename, '/');
+ if (dirprefix)
+ dirprefix++;
+ else
+ dirprefix = filename;
+ }
+ else if (opt.filename)
+ {
+ dirprefix = strrchr (opt.filename, '/');
+ if (dirprefix)
+ dirprefix++;
+ else
+ dirprefix = opt.filename;
+ }
- if (!dirprefix || !*dirprefix)
- dirprefix = "GPGARCH";
+ if (!dirprefix || !*dirprefix)
+ dirprefix = "GPGARCH";
- dirname = create_directory (dirprefix);
- if (!dirname)
- {
- err = gpg_error (GPG_ERR_GENERAL);
- goto leave;
+ dirname = create_directory (dirprefix);
+ if (!dirname)
+ {
+ err = gpg_error (GPG_ERR_GENERAL);
+ goto leave;
+ }
}
if (opt.verbose)
diff --git a/tools/gpgtar.c b/tools/gpgtar.c
index c4bf855cd..991fbedf6 100644
--- a/tools/gpgtar.c
+++ b/tools/gpgtar.c
@@ -58,6 +58,7 @@ enum cmd_and_opt_values
oRecipient = 'r',
oUser = 'u',
oOutput = 'o',
+ oDirectory = 'C',
oQuiet = 'q',
oVerbose = 'v',
oFilesFrom = 'T',
@@ -89,6 +90,8 @@ static ARGPARSE_OPTS opts[] = {
ARGPARSE_s_s (oUser, "local-user",
N_("|USER-ID|use USER-ID to sign or decrypt")),
ARGPARSE_s_s (oOutput, "output", N_("|FILE|write output to FILE")),
+ ARGPARSE_s_s (oDirectory, "directory",
+ N_("|DIRECTORY|extract files into DIRECTORY")),
ARGPARSE_s_n (oVerbose, "verbose", N_("verbose")),
ARGPARSE_s_n (oQuiet, "quiet", N_("be somewhat more quiet")),
ARGPARSE_s_s (oGpgProgram, "gpg", "@"),
@@ -194,6 +197,7 @@ main (int argc, char **argv)
switch (pargs.r_opt)
{
case oOutput: opt.outfile = pargs.r.ret_str; break;
+ case oDirectory: opt.directory = pargs.r.ret_str; break;
case oSetFilename: opt.filename = pargs.r.ret_str; break;
case oQuiet: opt.quiet = 1; break;
case oVerbose: opt.verbose++; break;
diff --git a/tools/gpgtar.h b/tools/gpgtar.h
index 98fd51c01..66a8ae17a 100644
--- a/tools/gpgtar.h
+++ b/tools/gpgtar.h
@@ -35,6 +35,7 @@ struct
const char *user;
int symmetric;
const char *filename;
+ const char *directory;
} opt;