diff options
Diffstat (limited to 'gpgme/rungpg.c')
-rw-r--r-- | gpgme/rungpg.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c index e437ba88..a370f5e9 100644 --- a/gpgme/rungpg.c +++ b/gpgme/rungpg.c @@ -312,6 +312,8 @@ build_argv ( GpgObject gpg ) size_t datac=0, argc=0; char **argv; int need_special = 0; + int use_agent = !!getenv ("GPG_AGENT_INFO"); + if ( gpg->argv ) { free_argv ( gpg->argv ); @@ -337,6 +339,8 @@ build_argv ( GpgObject gpg ) } if ( need_special ) argc++; + if (use_agent) + argc++; argv = xtrycalloc ( argc+1, sizeof *argv ); if (!argv) @@ -364,6 +368,15 @@ build_argv ( GpgObject gpg ) } argc++; } + if ( use_agent ) { + argv[argc] = xtrystrdup ( "--use-agent" ); + if (!argv[argc]) { + xfree (fd_data_map); + free_argv (argv); + return mk_error (Out_Of_Core); + } + argc++; + } for ( a=gpg->arglist; a; a = a->next ) { if ( a->data ) { switch ( _gpgme_data_get_mode (a->data) ) { @@ -535,7 +548,7 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque ) close (fd); } - execv ("./gpg", gpg->argv ); + execv ("/usr/local/bin/gpg", gpg->argv ); fprintf (stderr,"exec of gpg failed\n"); _exit (8); } |