aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--gpgme/ChangeLog7
-rw-r--r--gpgme/engine-gpgsm.c18
2 files changed, 14 insertions, 11 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 31051c03..a122a7e9 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,5 +1,12 @@
2003-02-01 Marcus Brinkmann <[email protected]>
+ * engine-gpgsm.c (start): Handle all errors, not only most of
+ them.
+ (xtoi_1, xtoi_2): Remove macro.
+ (status_handler): Replace use of xtoi_2 with _gpgme_hextobyte.
+
+2003-02-01 Marcus Brinkmann <[email protected]>
+
* engine-gpgsm.c (map_assuan_error): Replace
ASSUAN_Bad_Certificate_Path with ASSUAN_Bad_Certificate_Chain.
(gpgsm_new): Use assuan_pipe_connect instead assuan_pipe_connect2.
diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c
index da420fa5..3f78ef90 100644
--- a/gpgme/engine-gpgsm.c
+++ b/gpgme/engine-gpgsm.c
@@ -43,12 +43,7 @@
#include "engine-backend.h"
-
-#define xtoi_1(p) (*(p) <= '9'? (*(p)- '0'): \
- *(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10))
-#define xtoi_2(p) ((xtoi_1(p) * 16) + xtoi_1((p)+1))
-
-
+
typedef struct
{
int fd; /* FD we talk about. */
@@ -120,7 +115,7 @@ gpgsm_get_req_version (void)
return NEED_GPGSM_VERSION;
}
-
+
static void
close_notify_handler (int fd, void *opaque)
{
@@ -746,7 +741,7 @@ status_handler (void *opaque, int fd)
{
/* Handle escaped characters. */
++src;
- *dst = xtoi_2 (src);
+ *dst = (unsigned char) _gpgme_hextobyte (src);
(*alinelen)++;
src += 2;
}
@@ -828,10 +823,10 @@ add_io_cb (GpgsmObject gpgsm, iocb_data_t *iocbd, GpgmeIOCb handler)
static GpgmeError
start (GpgsmObject gpgsm, const char *command)
{
- GpgmeError err = 0;
+ GpgmeError err;
err = add_io_cb (gpgsm, &gpgsm->status_cb, status_handler);
- if (gpgsm->input_cb.fd != -1)
+ if (!err && gpgsm->input_cb.fd != -1)
err = add_io_cb (gpgsm, &gpgsm->input_cb, _gpgme_data_outbound_handler);
if (!err && gpgsm->output_cb.fd != -1)
err = add_io_cb (gpgsm, &gpgsm->output_cb, _gpgme_data_inbound_handler);
@@ -841,7 +836,8 @@ start (GpgsmObject gpgsm, const char *command)
if (!err)
err = assuan_write_line (gpgsm->assuan_ctx, command);
- (*gpgsm->io_cbs.event) (gpgsm->io_cbs.event_priv, GPGME_EVENT_START, NULL);
+ if (!err)
+ (*gpgsm->io_cbs.event) (gpgsm->io_cbs.event_priv, GPGME_EVENT_START, NULL);
return err;
}