aboutsummaryrefslogtreecommitdiffstats
path: root/tools/gpgtar-extract.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gpgtar-extract.c')
-rw-r--r--tools/gpgtar-extract.c49
1 files changed, 27 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)