aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--gpgme/ChangeLog5
-rw-r--r--gpgme/engine-gpgsm.c24
2 files changed, 12 insertions, 17 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index a5bd6aeb..2f6b2f28 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,5 +1,10 @@
2001-12-05 Marcus Brinkmann <[email protected]>
+ * engine-gpgsm.c (gpgsm_status_handler): Make it work with current
+ version of assuan.
+
+2001-12-05 Marcus Brinkmann <[email protected]>
+
* engine-gpgsm.c (gpgsm_set_fd): Accept one more argument OPT.
(_gpgme_gpgsm_op_encrypt): Pass armor argument to gpgsm_set_fd for
output descriptor.
diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c
index 7cc68b10..04f32a08 100644
--- a/gpgme/engine-gpgsm.c
+++ b/gpgme/engine-gpgsm.c
@@ -476,24 +476,14 @@ gpgsm_status_handler (void *opaque, int pid, int fd)
ASSUAN_CONTEXT actx = gpgsm->assuan_ctx;
char *line;
int linelen;
- char *next_line;
- assert (fd == gpgsm->assuan_ctx->inbound.fd);
-
- err = _assuan_read_line (gpgsm->assuan_ctx);
-
- /* Assuan can currently return more than one line at once. */
- line = actx->inbound.line;
-
- while (line)
+ do
{
- next_line = strchr (line, '\n');
- if (next_line)
- *next_line++ = 0;
- linelen = strlen (line);
+ assert (fd == gpgsm->assuan_ctx->inbound.fd);
- if (line[0] == '#' || !linelen)
- return 0; /* FIXME */
+ err = _assuan_read_line (gpgsm->assuan_ctx);
+ line = actx->inbound.line;
+ linelen = strlen (line);
if ((linelen >= 2
&& line[0] == 'O' && line[1] == 'K'
@@ -533,9 +523,9 @@ gpgsm_status_handler (void *opaque, int pid, int fd)
else
fprintf (stderr, "[UNKNOWN STATUS]%s %s", t.name, rest);
}
- line = next_line;
}
-
+ while (gpgsm->assuan_ctx->inbound.attic.linelen);
+
return 0;
}