diff options
Diffstat (limited to '')
-rw-r--r-- | gpgme/rungpg.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c index dc3e2388..02de0046 100644 --- a/gpgme/rungpg.c +++ b/gpgme/rungpg.c @@ -845,19 +845,23 @@ _gpgme_gpg_spawn( GpgObject gpg, void *opaque ) static int -gpg_status_handler ( void *opaque, int pid, int fd ) +gpg_status_handler (void *opaque, int pid, int fd) { - GpgObject gpg = opaque; - int rc = 0; + GpgObject gpg = opaque; + int err; - assert ( fd == gpg->status.fd[0] ); - rc = read_status ( gpg ); - if ( rc ) { - DEBUG1 ("gpg_handler: read_status problem %d\n - stop", rc); - return 1; + assert (fd == gpg->status.fd[0]); + err = read_status (gpg); + if (err) + { + /* XXX Horrible kludge. We really must not make use of + fnc_value. */ + GpgmeCtx ctx = (GpgmeCtx) gpg->status.fnc_value; + ctx->error = err; + DEBUG1 ("gpg_handler: read_status problem %d\n - stop", err); + return 1; } - - return gpg->status.eof; + return gpg->status.eof; } |