diff options
author | Werner Koch <[email protected]> | 2014-02-21 10:22:45 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2014-02-21 10:22:45 +0000 |
commit | 651d9e1c6bc1cab248024c3850ef64698247588f (patch) | |
tree | 1ef03ae1f09046eae7ae5c31daa48b7394c157b1 /src/engine-gpgsm.c | |
parent | Fix type inconsistency between gpgme.h and gpgme.c. (diff) | |
download | gpgme-651d9e1c6bc1cab248024c3850ef64698247588f.tar.gz gpgme-651d9e1c6bc1cab248024c3850ef64698247588f.zip |
Always pass correct name to argv[0]. Ignore GPG_AGENT_INFO for gpg2.
* src/dirinfo.c (WANT_GPG_ONE_MODE): New.
(struct dirinfo): Add field "gpg_one_mode".
(get_gpgconf_item): Set that field and return it if requested.
(_gpgme_in_gpg_one_mode): New.
* src/engine-gpg.c (build_argv): Check GPG_AGENT_INFO only in gpg-1
mode.
* src/dirinfo.c (_gpgme_get_basename): New.
* src/engine-g13.c (g13_new): Take argv[0] from the pgmname.
* src/engine-gpgsm.c (gpgsm_new): Ditto.
* src/engine-gpg.c (build_argv): Ditto. Add arg PGMNAME.
(start): Pass PGMNAME to buildargv.
Diffstat (limited to 'src/engine-gpgsm.c')
-rw-r--r-- | src/engine-gpgsm.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c index 24cd34d9..6bcc0952 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -239,6 +239,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir) { gpgme_error_t err = 0; engine_gpgsm_t gpgsm; + const char *pgmname; const char *argv[5]; int argc; #if !USE_DESCRIPTOR_PASSING @@ -321,8 +322,10 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir) child_fds[3] = -1; #endif + pgmname = file_name ? file_name : _gpgme_get_default_gpgsm_name (); + argc = 0; - argv[argc++] = "gpgsm"; + argv[argc++] = _gpgme_get_basename (pgmname); if (home_dir) { argv[argc++] = "--homedir"; @@ -339,10 +342,8 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir) assuan_ctx_set_system_hooks (gpgsm->assuan_ctx, &_gpgme_assuan_system_hooks); #if USE_DESCRIPTOR_PASSING - err = assuan_pipe_connect - (gpgsm->assuan_ctx, - file_name ? file_name : _gpgme_get_default_gpgsm_name (), - argv, NULL, NULL, NULL, ASSUAN_PIPE_CONNECT_FDPASSING); + err = assuan_pipe_connect (gpgsm->assuan_ctx, pgmname, argv, + NULL, NULL, NULL, ASSUAN_PIPE_CONNECT_FDPASSING); #else { assuan_fd_t achild_fds[4]; @@ -352,10 +353,8 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir) for (i = 0; i < 4; i++) achild_fds[i] = (assuan_fd_t) child_fds[i]; - err = assuan_pipe_connect - (gpgsm->assuan_ctx, - file_name ? file_name : _gpgme_get_default_gpgsm_name (), - argv, achild_fds, NULL, NULL, 0); + err = assuan_pipe_connect (gpgsm->assuan_ctx, pgmname, argv, + achild_fds, NULL, NULL, 0); /* For now... */ for (i = 0; i < 4; i++) |