diff options
author | Ingo Klöcker <[email protected]> | 2023-01-23 11:17:22 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2023-01-23 11:17:22 +0000 |
commit | 419adf41afa40e5b34f646f2cb16d8aebda20048 (patch) | |
tree | 36bc59215f41a551f6dfeecd3fe5b4c975969c35 /src/engine-gpg.c | |
parent | doc: Update NEWS and API documentation (diff) | |
download | gpgme-419adf41afa40e5b34f646f2cb16d8aebda20048.tar.gz gpgme-419adf41afa40e5b34f646f2cb16d8aebda20048.zip |
core: Allow setting the base directory when creating an archive
* src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign, gpg_sign): Pass
file name set in data with --directory option to gpgtar.
* tests/run-encrypt.c (show_usage): New option --directory.
(main): Parse new option. Set file name of input data to option value.
* tests/run-sign.c (show_usage): New option --directory.
(main): Parse new option. Set file name of input data to option value.
--
GnuPG-bug-id: 6342
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r-- | src/engine-gpg.c | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c index 16dfcc48..06eb3e18 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -2369,13 +2369,15 @@ gpg_encrypt (void *engine, gpgme_key_t recp[], const char *recpstring, err = add_arg (gpg, "-"); if (!err) err = add_data (gpg, ciph, 1, 1); - if (gpgme_data_get_file_name (plain)) - { - if (!err) - err = add_gpg_arg_with_value (gpg, "--set-filename=", gpgme_data_get_file_name (plain), 0); - } if (gpg->flags.use_gpgtar) { + const char *file_name = gpgme_data_get_file_name (plain); + if (!err && file_name) + { + err = add_arg (gpg, "--directory"); + if (!err) + err = add_arg (gpg, file_name); + } if (!err) err = add_arg (gpg, "--files-from"); if (!err) @@ -2390,6 +2392,9 @@ gpg_encrypt (void *engine, gpgme_key_t recp[], const char *recpstring, } else { + const char *file_name = gpgme_data_get_file_name (plain); + if (!err && file_name) + err = add_gpg_arg_with_value (gpg, "--set-filename=", file_name, 0); if (!err) err = add_input_size_hint (gpg, plain); if (!err) @@ -2476,13 +2481,15 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[], err = add_arg (gpg, "-"); if (!err) err = add_data (gpg, ciph, 1, 1); - if (gpgme_data_get_file_name (plain)) - { - if (!err) - err = add_gpg_arg_with_value (gpg, "--set-filename=", gpgme_data_get_file_name (plain), 0); - } if (gpg->flags.use_gpgtar) { + const char *file_name = gpgme_data_get_file_name (plain); + if (!err && file_name) + { + err = add_arg (gpg, "--directory"); + if (!err) + err = add_arg (gpg, file_name); + } if (!err) err = add_arg (gpg, "--files-from"); if (!err) @@ -2497,6 +2504,9 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[], } else { + const char *file_name = gpgme_data_get_file_name (plain); + if (!err && file_name) + err = add_gpg_arg_with_value (gpg, "--set-filename=", file_name, 0); if (!err) err = add_input_size_hint (gpg, plain); if (!err) @@ -3584,15 +3594,16 @@ gpg_sign (void *engine, gpgme_data_t in, gpgme_data_t out, if (!err) err = append_args_from_sig_notations (gpg, ctx, NOTATION_FLAG_SIG); - if (gpgme_data_get_file_name (in)) - { - if (!err) - err = add_gpg_arg_with_value (gpg, "--set-filename=", gpgme_data_get_file_name (in), 0); - } - /* Tell the gpg object about the data. */ if (gpg->flags.use_gpgtar) { + const char *file_name = gpgme_data_get_file_name (in); + if (!err && file_name) + { + err = add_arg (gpg, "--directory"); + if (!err) + err = add_arg (gpg, file_name); + } if (!err) err = add_arg (gpg, "--files-from"); if (!err) @@ -3607,6 +3618,9 @@ gpg_sign (void *engine, gpgme_data_t in, gpgme_data_t out, } else { + const char *file_name = gpgme_data_get_file_name (in); + if (!err && file_name) + err = add_gpg_arg_with_value (gpg, "--set-filename=", file_name, 0); if (!err) err = add_input_size_hint (gpg, in); if (!err) |