2009-11-05 Marcus Brinkmann <marcus@g10code.de>
* priv-io.h (IOSPAWN_FLAG_NOCLOSE): New flag. * w32-io.c (_gpgme_io_spawn): Implement this flag. * posix-io.c (_gpgme_io_spawn): Likewise. * w32-glib-io.c (_gpgme_io_spawn): Likewise. * assuan-support.c (my_spawn): Set this flag.
This commit is contained in:
parent
65ecec1abe
commit
59dc98545a
@ -1,5 +1,11 @@
|
|||||||
2009-11-05 Marcus Brinkmann <marcus@g10code.de>
|
2009-11-05 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* priv-io.h (IOSPAWN_FLAG_NOCLOSE): New flag.
|
||||||
|
* w32-io.c (_gpgme_io_spawn): Implement this flag.
|
||||||
|
* posix-io.c (_gpgme_io_spawn): Likewise.
|
||||||
|
* w32-glib-io.c (_gpgme_io_spawn): Likewise.
|
||||||
|
* assuan-support.c (my_spawn): Set this flag.
|
||||||
|
|
||||||
* decrypt.c (gpgme_op_decrypt_start): Fix use of debug macro.
|
* decrypt.c (gpgme_op_decrypt_start): Fix use of debug macro.
|
||||||
* decrypt-verify.c (gpgme_op_decrypt_verify_start): Likewise.
|
* decrypt-verify.c (gpgme_op_decrypt_verify_start): Likewise.
|
||||||
* delete.c (gpgme_op_delete_start): Likewise.
|
* delete.c (gpgme_op_delete_start): Likewise.
|
||||||
|
@ -152,7 +152,7 @@ my_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
|
|||||||
fd_items[i].fd = -1;
|
fd_items[i].fd = -1;
|
||||||
fd_items[i].dup_to = -1;
|
fd_items[i].dup_to = -1;
|
||||||
|
|
||||||
err = _gpgme_io_spawn (name, argv, 0, fd_items, r_pid);
|
err = _gpgme_io_spawn (name, argv, IOSPAWN_FLAG_NOCLOSE, fd_items, r_pid);
|
||||||
if (! err)
|
if (! err)
|
||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
|
@ -454,7 +454,8 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
|
|||||||
|
|
||||||
for (i = 0; fd_list[i].fd != -1; i++)
|
for (i = 0; fd_list[i].fd != -1; i++)
|
||||||
{
|
{
|
||||||
_gpgme_io_close (fd_list[i].fd);
|
if (! (flags & IOSPAWN_FLAG_NOCLOSE))
|
||||||
|
_gpgme_io_close (fd_list[i].fd);
|
||||||
/* No handle translation. */
|
/* No handle translation. */
|
||||||
fd_list[i].peer_name = fd_list[i].fd;
|
fd_list[i].peer_name = fd_list[i].fd;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,8 @@ int _gpgme_io_set_nonblocking (int fd);
|
|||||||
/* A flag to tell the spawn function to allow the child process to set
|
/* A flag to tell the spawn function to allow the child process to set
|
||||||
the foreground window. */
|
the foreground window. */
|
||||||
#define IOSPAWN_FLAG_ALLOW_SET_FG 1
|
#define IOSPAWN_FLAG_ALLOW_SET_FG 1
|
||||||
|
/* Don't close any child FDs. */
|
||||||
|
#define IOSPAWN_FLAG_NOCLOSE 2
|
||||||
|
|
||||||
/* Spawn the executable PATH with ARGV as arguments. After forking
|
/* Spawn the executable PATH with ARGV as arguments. After forking
|
||||||
close all fds except for those in FD_LIST in the child, then
|
close all fds except for those in FD_LIST in the child, then
|
||||||
|
@ -777,8 +777,11 @@ _gpgme_io_spawn (const char *path, char * const argv[], unsigned int flags,
|
|||||||
TRACE_LOG1 ("CloseHandle of process failed: ec=%d",
|
TRACE_LOG1 ("CloseHandle of process failed: ec=%d",
|
||||||
(int) GetLastError ());
|
(int) GetLastError ());
|
||||||
|
|
||||||
for (i = 0; fd_list[i].fd != -1; i++)
|
if (! (flags & IOSPAWN_FLAG_NOCLOSE))
|
||||||
_gpgme_io_close (fd_list[i].fd);
|
{
|
||||||
|
for (i = 0; fd_list[i].fd != -1; i++)
|
||||||
|
_gpgme_io_close (fd_list[i].fd);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; fd_list[i].fd != -1; i++)
|
for (i = 0; fd_list[i].fd != -1; i++)
|
||||||
if (fd_list[i].dup_to == -1)
|
if (fd_list[i].dup_to == -1)
|
||||||
|
@ -1234,8 +1234,11 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
|
|||||||
TRACE_LOG1 ("CloseHandle of process failed: ec=%d",
|
TRACE_LOG1 ("CloseHandle of process failed: ec=%d",
|
||||||
(int) GetLastError ());
|
(int) GetLastError ());
|
||||||
|
|
||||||
for (i = 0; fd_list[i].fd != -1; i++)
|
if (! (flags & IOSPAWN_FLAG_NOCLOSE))
|
||||||
_gpgme_io_close (fd_list[i].fd);
|
{
|
||||||
|
for (i = 0; fd_list[i].fd != -1; i++)
|
||||||
|
_gpgme_io_close (fd_list[i].fd);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; fd_list[i].fd != -1; i++)
|
for (i = 0; fd_list[i].fd != -1; i++)
|
||||||
if (fd_list[i].dup_to == -1)
|
if (fd_list[i].dup_to == -1)
|
||||||
|
Loading…
Reference in New Issue
Block a user