mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
spawn: Remove spawn callback, introduce gnupg_spawn_actions.
* common/exechelp-posix.c (call_spawn_cb): Remove. (gnupg_spawn_actions_new, gnupg_spawn_actions_release) (gnupg_spawn_actions_set_environ, gnupg_spawn_actions_set_atfork) (gnupg_spawn_actions_set_redirect) (gnupg_spawn_actions_set_inherit_fds): New. (my_exec, spawn_detached): Use spawn actions. (gnupg_spawn_helper): Remove. (gnupg_process_spawn): Remove callback, introduce gnupg_spawn_actions. * common/exechelp-w32.c: Ditto. * common/exechelp.h: Ditto. * agent/genkey.c (do_check_passphrase_pattern): Follow the change of gnupg_process_spawn API. * common/asshelp.c (start_new_service): Likewise. * common/exectool.c (gnupg_exec_tool_stream): Likewise. * common/t-exechelp.c (test_pipe_stream): Likewise. * dirmngr/ldap-wrapper.c (ldap_wrapper): Likewise. * g10/photoid.c (run_with_pipe): Likewise. * scd/app.c (report_change): Likewise. * tests/gpgscm/ffi.c (do_process_spawn_io, do_process_spawn_fd): Likewise. * tools/gpg-card.c (cmd_gpg): Likewise. * tools/gpgconf-comp.c (gpg_agent_runtime_change): Likewise. (scdaemon_runtime_change, tpm2daemon_runtime_change) (dirmngr_runtime_change, keyboxd_runtime_change) (gc_component_launch, gc_component_check_options) (retrieve_options_from_program): Likewise. * tools/gpgconf.c (show_versions_via_dirmngr): Likewise. * tools/gpgtar-create.c (gpgtar_create): Likewise. * tools/gpgtar-extract.c (gpgtar_extract): Likewise. * tools/gpgtar-list.c (gpgtar_list): Likewise. -- Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
34045ed9e1
commit
fc3fde1bde
17 changed files with 351 additions and 181 deletions
|
@ -3835,7 +3835,7 @@ cmd_gpg (card_info_t info, char *argstr, int use_gpgsm)
|
|||
argv,
|
||||
(GNUPG_PROCESS_STDOUT_KEEP
|
||||
| GNUPG_PROCESS_STDERR_KEEP),
|
||||
NULL, NULL, &proc);
|
||||
NULL, &proc);
|
||||
if (!err)
|
||||
{
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
|
|
|
@ -761,7 +761,7 @@ gpg_agent_runtime_change (int killflag)
|
|||
log_assert (i < DIM(argv));
|
||||
|
||||
if (!err)
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, &proc);
|
||||
if (!err)
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
if (err)
|
||||
|
@ -805,7 +805,7 @@ scdaemon_runtime_change (int killflag)
|
|||
log_assert (i < DIM(argv));
|
||||
|
||||
if (!err)
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, &proc);
|
||||
if (!err)
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
if (err)
|
||||
|
@ -850,7 +850,7 @@ tpm2daemon_runtime_change (int killflag)
|
|||
log_assert (i < DIM(argv));
|
||||
|
||||
if (!err)
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, &proc);
|
||||
if (!err)
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
if (err)
|
||||
|
@ -885,7 +885,7 @@ dirmngr_runtime_change (int killflag)
|
|||
log_assert (i < DIM(argv));
|
||||
|
||||
if (!err)
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, &proc);
|
||||
if (!err)
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
if (err)
|
||||
|
@ -919,7 +919,7 @@ keyboxd_runtime_change (int killflag)
|
|||
log_assert (i < DIM(argv));
|
||||
|
||||
if (!err)
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, &proc);
|
||||
if (!err)
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
if (err)
|
||||
|
@ -985,7 +985,7 @@ gc_component_launch (int component)
|
|||
argv[i] = NULL;
|
||||
log_assert (i < DIM(argv));
|
||||
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, 0, NULL, &proc);
|
||||
if (!err)
|
||||
err = gnupg_process_wait (proc, 1);
|
||||
if (err)
|
||||
|
@ -1369,9 +1369,8 @@ gc_component_check_options (int component, estream_t out, const char *conf_file)
|
|||
|
||||
result = 0;
|
||||
errlines = NULL;
|
||||
err = gnupg_process_spawn (pgmname, argv,
|
||||
GNUPG_PROCESS_STDERR_PIPE,
|
||||
NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, GNUPG_PROCESS_STDERR_PIPE,
|
||||
NULL, &proc);
|
||||
if (err)
|
||||
result |= 1; /* Program could not be run. */
|
||||
else
|
||||
|
@ -1763,9 +1762,8 @@ retrieve_options_from_program (gc_component_id_t component, int only_installed)
|
|||
/* First we need to read the option table from the program. */
|
||||
argv[0] = "--dump-option-table";
|
||||
argv[1] = NULL;
|
||||
err = gnupg_process_spawn (pgmname, argv,
|
||||
GNUPG_PROCESS_STDOUT_PIPE,
|
||||
NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, GNUPG_PROCESS_STDOUT_PIPE,
|
||||
NULL, &proc);
|
||||
if (err)
|
||||
{
|
||||
gc_error (1, 0, "could not gather option table from '%s': %s",
|
||||
|
@ -1952,9 +1950,8 @@ retrieve_options_from_program (gc_component_id_t component, int only_installed)
|
|||
/* Now read the default options. */
|
||||
argv[0] = "--gpgconf-list";
|
||||
argv[1] = NULL;
|
||||
err = gnupg_process_spawn (pgmname, argv,
|
||||
GNUPG_PROCESS_STDOUT_PIPE,
|
||||
NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, GNUPG_PROCESS_STDOUT_PIPE,
|
||||
NULL, &proc);
|
||||
if (err)
|
||||
{
|
||||
gc_error (1, 0, "could not gather active options from '%s': %s",
|
||||
|
|
|
@ -1311,9 +1311,8 @@ show_versions_via_dirmngr (estream_t fp)
|
|||
pgmname = gnupg_module_name (GNUPG_MODULE_NAME_DIRMNGR);
|
||||
argv[0] = "--gpgconf-versions";
|
||||
argv[1] = NULL;
|
||||
err = gnupg_process_spawn (pgmname, argv,
|
||||
GNUPG_PROCESS_STDOUT_PIPE,
|
||||
NULL, NULL, &proc);
|
||||
err = gnupg_process_spawn (pgmname, argv, GNUPG_PROCESS_STDOUT_PIPE,
|
||||
NULL, &proc);
|
||||
if (err)
|
||||
{
|
||||
log_error ("error spawning %s: %s", pgmname, gpg_strerror (err));
|
||||
|
|
|
@ -1234,6 +1234,7 @@ gpgtar_create (char **inpattern, const char *files_from, int null_names,
|
|||
int except[2] = { -1, -1 };
|
||||
#endif
|
||||
const char **argv;
|
||||
gnupg_spawn_actions_t act = NULL;
|
||||
|
||||
/* '--encrypt' may be combined with '--symmetric', but 'encrypt'
|
||||
* is set either way. Clear it if no recipients are specified.
|
||||
|
@ -1296,11 +1297,23 @@ gpgtar_create (char **inpattern, const char *files_from, int null_names,
|
|||
goto leave;
|
||||
}
|
||||
|
||||
err = gnupg_spawn_actions_new (&act);
|
||||
if (err)
|
||||
{
|
||||
xfree (argv);
|
||||
goto leave;
|
||||
}
|
||||
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
gnupg_spawn_actions_set_inherit_handles (act, except);
|
||||
#else
|
||||
gnupg_spawn_actions_set_inherit_fds (act, except);
|
||||
#endif
|
||||
err = gnupg_process_spawn (opt.gpg_program, argv,
|
||||
(GNUPG_PROCESS_STDIN_PIPE
|
||||
| GNUPG_PROCESS_STDOUT_KEEP
|
||||
| GNUPG_PROCESS_STDERR_KEEP),
|
||||
gnupg_spawn_helper, except, &proc);
|
||||
| GNUPG_PROCESS_STDERR_KEEP), act, &proc);
|
||||
gnupg_spawn_actions_release (act);
|
||||
xfree (argv);
|
||||
if (err)
|
||||
goto leave;
|
||||
|
|
|
@ -390,6 +390,7 @@ gpgtar_extract (const char *filename, int decrypt)
|
|||
int except[2] = { -1, -1 };
|
||||
#endif
|
||||
const char **argv;
|
||||
gnupg_spawn_actions_t act = NULL;
|
||||
|
||||
ccparray_init (&ccp, 0);
|
||||
if (opt.batch)
|
||||
|
@ -435,10 +436,22 @@ gpgtar_extract (const char *filename, int decrypt)
|
|||
goto leave;
|
||||
}
|
||||
|
||||
err = gnupg_spawn_actions_new (&act);
|
||||
if (err)
|
||||
{
|
||||
xfree (argv);
|
||||
goto leave;
|
||||
}
|
||||
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
gnupg_spawn_actions_set_inherit_handles (act, except);
|
||||
#else
|
||||
gnupg_spawn_actions_set_inherit_fds (act, except);
|
||||
#endif
|
||||
err = gnupg_process_spawn (opt.gpg_program, argv,
|
||||
((filename ? 0 : GNUPG_PROCESS_STDIN_KEEP)
|
||||
| GNUPG_PROCESS_STDOUT_PIPE),
|
||||
gnupg_spawn_helper, except, &proc);
|
||||
| GNUPG_PROCESS_STDOUT_PIPE), act, &proc);
|
||||
gnupg_spawn_actions_release (act);
|
||||
xfree (argv);
|
||||
if (err)
|
||||
goto leave;
|
||||
|
|
|
@ -474,6 +474,7 @@ gpgtar_list (const char *filename, int decrypt)
|
|||
int except[2] = { -1, -1 };
|
||||
#endif
|
||||
const char **argv;
|
||||
gnupg_spawn_actions_t act = NULL;
|
||||
|
||||
ccparray_init (&ccp, 0);
|
||||
if (opt.batch)
|
||||
|
@ -513,10 +514,22 @@ gpgtar_list (const char *filename, int decrypt)
|
|||
goto leave;
|
||||
}
|
||||
|
||||
err = gnupg_spawn_actions_new (&act);
|
||||
if (err)
|
||||
{
|
||||
xfree (argv);
|
||||
goto leave;
|
||||
}
|
||||
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
gnupg_spawn_actions_set_inherit_handles (act, except);
|
||||
#else
|
||||
gnupg_spawn_actions_set_inherit_fds (act, except);
|
||||
#endif
|
||||
err = gnupg_process_spawn (opt.gpg_program, argv,
|
||||
((filename ? 0 : GNUPG_PROCESS_STDIN_KEEP)
|
||||
| GNUPG_PROCESS_STDOUT_PIPE),
|
||||
gnupg_spawn_helper, except, &proc);
|
||||
| GNUPG_PROCESS_STDOUT_PIPE), act, &proc);
|
||||
gnupg_spawn_actions_release (act);
|
||||
xfree (argv);
|
||||
if (err)
|
||||
goto leave;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue