diff options
author | Werner Koch <[email protected]> | 2014-04-10 12:17:19 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2014-04-10 12:17:19 +0000 |
commit | d3bd8fff863f62b6d0e228aea754efbbde861e9a (patch) | |
tree | ddccf579f1938a61e687b1f8b93054e5e9029f87 /src/engine-spawn.c | |
parent | Add GPGME_PROTOCOL_SPAWN and gpgme_op_spawn. (diff) | |
download | gpgme-d3bd8fff863f62b6d0e228aea754efbbde861e9a.tar.gz gpgme-d3bd8fff863f62b6d0e228aea754efbbde861e9a.zip |
Actually implement flags for gpgme_op_spawn.
* src/spawn.c (gpgme_op_spawn_start, gpgme_op_spawn): Pass FLAGS dow
to spawn_start and add FLAGS args along the call path.
* src/engine-spawn.c (engspawn_start): Hack to automagically provide
argv[0].
Diffstat (limited to 'src/engine-spawn.c')
-rw-r--r-- | src/engine-spawn.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/engine-spawn.c b/src/engine-spawn.c index 1e71c1cc..bfcad3d9 100644 --- a/src/engine-spawn.c +++ b/src/engine-spawn.c @@ -231,6 +231,7 @@ engspawn_start (engine_spawn_t esp, const char *file, const char *argv[], struct spawn_fd_item_s *fd_list; pid_t pid; unsigned int spflags; + const char *save_argv0 = NULL; if (!esp || !file || !argv || !argv[0]) return gpg_error (GPG_ERR_INV_VALUE); @@ -264,8 +265,15 @@ engspawn_start (engine_spawn_t esp, const char *file, const char *argv[], fd_list[n].fd = -1; fd_list[n].dup_to = -1; + if (argv[0] && !*argv[0]) + { + save_argv0 = argv[0]; + argv[0] = _gpgme_get_basename (file); + } status = _gpgme_io_spawn (file, (char * const *)argv, spflags, fd_list, NULL, NULL, &pid); + if (save_argv0) + argv[0] = save_argv0; free (fd_list); if (status == -1) return gpg_error_from_syserror (); |