mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-12 22:11:29 +02:00
common,w32: Communicate with child in non-blocking mode.
* common/exechelp-w32.c (gnupg_spawn_process): Open streams in non-blocking mode if requested. Fixes-commit: 83811e3f1f0c615b2b63bafdb49a35a0fc198088 Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
parent
f2d39a6d05
commit
05a1e41233
@ -418,6 +418,7 @@ gnupg_spawn_process (const char *pgmname, const char *argv[],
|
|||||||
int i;
|
int i;
|
||||||
es_syshd_t syshd;
|
es_syshd_t syshd;
|
||||||
gpg_err_source_t errsource = default_errsource;
|
gpg_err_source_t errsource = default_errsource;
|
||||||
|
int nonblock = !!(flags & GNUPG_SPAWN_NONBLOCK);
|
||||||
|
|
||||||
(void)except; /* Not yet used. */
|
(void)except; /* Not yet used. */
|
||||||
|
|
||||||
@ -440,7 +441,7 @@ gnupg_spawn_process (const char *pgmname, const char *argv[],
|
|||||||
|
|
||||||
syshd.type = ES_SYSHD_HANDLE;
|
syshd.type = ES_SYSHD_HANDLE;
|
||||||
syshd.u.handle = inpipe[1];
|
syshd.u.handle = inpipe[1];
|
||||||
infp = es_sysopen (&syshd, "w");
|
infp = es_sysopen (&syshd, nonblock? "w,nonblock" : "w");
|
||||||
if (!infp)
|
if (!infp)
|
||||||
{
|
{
|
||||||
err = gpg_err_make (errsource, gpg_err_code_from_syserror ());
|
err = gpg_err_make (errsource, gpg_err_code_from_syserror ());
|
||||||
@ -464,7 +465,7 @@ gnupg_spawn_process (const char *pgmname, const char *argv[],
|
|||||||
|
|
||||||
syshd.type = ES_SYSHD_HANDLE;
|
syshd.type = ES_SYSHD_HANDLE;
|
||||||
syshd.u.handle = outpipe[0];
|
syshd.u.handle = outpipe[0];
|
||||||
outfp = es_sysopen (&syshd, "r");
|
outfp = es_sysopen (&syshd, nonblock? "r,nonblock" : "r");
|
||||||
if (!outfp)
|
if (!outfp)
|
||||||
{
|
{
|
||||||
err = gpg_err_make (errsource, gpg_err_code_from_syserror ());
|
err = gpg_err_make (errsource, gpg_err_code_from_syserror ());
|
||||||
@ -494,7 +495,7 @@ gnupg_spawn_process (const char *pgmname, const char *argv[],
|
|||||||
|
|
||||||
syshd.type = ES_SYSHD_HANDLE;
|
syshd.type = ES_SYSHD_HANDLE;
|
||||||
syshd.u.handle = errpipe[0];
|
syshd.u.handle = errpipe[0];
|
||||||
errfp = es_sysopen (&syshd, "r");
|
errfp = es_sysopen (&syshd, nonblock? "r,nonblock" : "r");
|
||||||
if (!errfp)
|
if (!errfp)
|
||||||
{
|
{
|
||||||
err = gpg_err_make (errsource, gpg_err_code_from_syserror ());
|
err = gpg_err_make (errsource, gpg_err_code_from_syserror ());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user