mirror of
git://git.gnupg.org/gnupg.git
synced 2025-02-01 16:33:02 +01:00
Replace pipe+gnupg_spawn_process_fd by gnupg_process_spawn.
-- Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
f5eb3710b4
commit
2227411d77
@ -594,34 +594,37 @@ run_with_pipe (struct spawn_info *info, const void *image, u32 len)
|
|||||||
" external programs\n"));
|
" external programs\n"));
|
||||||
return;
|
return;
|
||||||
#else /* !EXEC_TEMPFILE_ONLY */
|
#else /* !EXEC_TEMPFILE_ONLY */
|
||||||
int to[2];
|
|
||||||
pid_t pid;
|
|
||||||
gpg_error_t err;
|
gpg_error_t err;
|
||||||
const char *argv[4];
|
const char *argv[4];
|
||||||
|
gnupg_process_t proc;
|
||||||
err = gnupg_create_pipe (to);
|
|
||||||
if (err)
|
|
||||||
return;
|
|
||||||
|
|
||||||
fill_command_argv (argv, info->command);
|
fill_command_argv (argv, info->command);
|
||||||
err = gnupg_spawn_process_fd (argv[0], argv+1, to[0], -1, -1, &pid);
|
err = gnupg_process_spawn (argv[0], argv+1,
|
||||||
|
(GNUPG_PROCESS_STDIN_PIPE | GNUPG_PROCESS_STDOUT_NULL
|
||||||
close (to[0]);
|
| GNUPG_PROCESS_STDERR_NULL),
|
||||||
|
NULL, NULL, &proc);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
log_error (_("unable to execute shell '%s': %s\n"),
|
||||||
log_error (_("unable to execute shell '%s': %s\n"),
|
argv[0], gpg_strerror (err));
|
||||||
argv[0], gpg_strerror (err));
|
|
||||||
close (to[1]);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
write (to[1], image, len);
|
int fd_in;
|
||||||
close (to[1]);
|
|
||||||
|
|
||||||
err = gnupg_wait_process (argv[0], pid, 1, NULL);
|
err = gnupg_process_get_fds (proc, 0, &fd_in, NULL, NULL);
|
||||||
|
if (err)
|
||||||
|
log_error ("unable to get pipe connection '%s': %s\n",
|
||||||
|
argv[2], gpg_strerror (err));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
write (fd_in, image, len);
|
||||||
|
close (fd_in);
|
||||||
|
}
|
||||||
|
|
||||||
|
err = gnupg_process_wait (proc, 1);
|
||||||
if (err)
|
if (err)
|
||||||
log_error (_("unnatural exit of external program\n"));
|
log_error (_("unnatural exit of external program\n"));
|
||||||
|
|
||||||
|
gnupg_process_release (proc);
|
||||||
}
|
}
|
||||||
#endif /* !EXEC_TEMPFILE_ONLY */
|
#endif /* !EXEC_TEMPFILE_ONLY */
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user