diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine-gpg.c | 20 | 
1 files changed, 17 insertions, 3 deletions
| diff --git a/src/engine-gpg.c b/src/engine-gpg.c index fdb786a9..173e940c 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -2001,9 +2001,11 @@ append_args_from_recipients_string (engine_gpg_t gpg,                                      const char *string)  {    gpg_error_t err = 0; +  gpgme_encrypt_flags_t orig_flags = flags;    int any = 0;    int ignore = 0;    int hidden = 0; +  int file = 0;    const char *s;    int n; @@ -2028,10 +2030,22 @@ append_args_from_recipients_string (engine_gpg_t gpg,          ignore = 1;        else if (!ignore && n == 8 && !memcmp (string, "--hidden", 8))          hidden = 1; -      else if (n) +      else if (!ignore && n == 11 && !memcmp (string, "--no-hidden", 11)) +        hidden = 0; +      else if (!ignore && n == 6 && !memcmp (string, "--file", 6))          { -          /* Add arg if it is not empty.  */ -          err = add_arg (gpg, hidden? "-R":"-r"); +          file = 1; +          /* Because the key is used as is we need to ignore this flag:  */ +          flags &= ~GPGME_ENCRYPT_WANT_ADDRESS; +        } +      else if (!ignore && n == 9 && !memcmp (string, "--no-file", 9)) +        { +          file = 0; +          flags = orig_flags; +        } +      else if (n) /* Not empty - use it.  */ +        { +          err = add_arg (gpg, file? (hidden? "-F":"-f") : (hidden? "-R":"-r"));            if (!err)              err = add_arg_recipient_string (gpg, flags, string, n);            if (!err) | 
