aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2002-09-30 08:03:27 +0000
committerWerner Koch <[email protected]>2002-09-30 08:03:27 +0000
commit57add1098d7a6f1a7be74c71621a61a4d3cb6eda (patch)
treeefd3a87cea49800b1d133ec47034b9b9733a44c6
parentApplying Ingo's patch: Makes signatureCertificateDaysLeftToExpiry() and recei... (diff)
downloadgpgme-57add1098d7a6f1a7be74c71621a61a4d3cb6eda.tar.gz
gpgme-57add1098d7a6f1a7be74c71621a61a4d3cb6eda.zip
* keylist.c (keylist_colon_handler): Take care when printing a
NULL with the DEBUG. * engine-gpgsm.c (struct gpgsm_object_s): New member ANY. (gpgsm_status_handler): Run the colon function to indicate. (_gpgme_gpgsm_set_colon_line_handler): Better reset ANY here.
-rw-r--r--gpgme/ChangeLog9
-rw-r--r--gpgme/engine-gpgsm.c14
-rw-r--r--gpgme/gpgme.h2
-rw-r--r--gpgme/keylist.c3
4 files changed, 26 insertions, 2 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index a2cd2469..cf0fd0e9 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,3 +1,12 @@
+2002-09-30 Werner Koch <[email protected]>
+
+ * keylist.c (keylist_colon_handler): Take care when printing a
+ NULL with the DEBUG.
+
+ * engine-gpgsm.c (struct gpgsm_object_s): New member ANY.
+ (gpgsm_status_handler): Run the colon function to indicate.
+ (_gpgme_gpgsm_set_colon_line_handler): Better reset ANY here.
+
2002-09-28 Marcus Brinkmann <[email protected]>
* conversion.c (_gpgme_hextobyte): Prevent superfluous
diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c
index 0e2a7ce4..6d98a9d5 100644
--- a/gpgme/engine-gpgsm.c
+++ b/gpgme/engine-gpgsm.c
@@ -102,6 +102,7 @@ struct gpgsm_object_s
int linesize;
int linelen;
} attic;
+ int any; /* any data line seen */
} colon;
struct GpgmeIOCbs io_cbs;
@@ -326,6 +327,7 @@ _gpgme_gpgsm_new (GpgsmObject *r_gpgsm)
gpgsm->colon.attic.line = 0;
gpgsm->colon.attic.linesize = 0;
gpgsm->colon.attic.linelen = 0;
+ gpgsm->colon.any = 0;
gpgsm->io_cbs.add = NULL;
gpgsm->io_cbs.add_priv = NULL;
@@ -1244,6 +1246,16 @@ gpgsm_status_handler (void *opaque, int fd)
if (gpgsm->status.fnc)
gpgsm->status.fnc (gpgsm->status.fnc_value, GPGME_STATUS_EOF, "");
+ if (gpgsm->colon.fnc && gpgsm->colon.any )
+ {
+ /* We must tell a colon fucntion about the EOF. We do
+ this only when we have seen any data lines. Note
+ that this inlined use of colon data lines will
+ eventually be changed into using a regular data
+ channel. */
+ gpgsm->colon.any = 0;
+ gpgsm->colon.fnc (gpgsm->colon.fnc_value, NULL);
+ }
/* XXX: Try our best to terminate the connection. */
if (err)
@@ -1306,6 +1318,7 @@ gpgsm_status_handler (void *opaque, int fd)
/* Terminate the pending line, pass it to the colon
handler and reset it. */
+ gpgsm->colon.any = 1;
if (*alinelen > 1 && *(dst - 1) == '\r')
dst--;
*dst = '\0';
@@ -1365,6 +1378,7 @@ _gpgme_gpgsm_set_colon_line_handler (GpgsmObject gpgsm,
gpgsm->colon.fnc = fnc;
gpgsm->colon.fnc_value = fnc_value;
+ gpgsm->colon.any = 0;
}
diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h
index cf130e43..08261fe3 100644
--- a/gpgme/gpgme.h
+++ b/gpgme/gpgme.h
@@ -43,7 +43,7 @@ extern "C" {
AM_PATH_GPGME macro) check that this header matches the installed
library. Warning: Do not edit the next line. configure will do
that for you! */
-#define GPGME_VERSION "0.3.11"
+#define GPGME_VERSION "0.3.12"
/* The opaque data types used by GPGME. */
diff --git a/gpgme/keylist.c b/gpgme/keylist.c
index 044fb757..e7c211e5 100644
--- a/gpgme/keylist.c
+++ b/gpgme/keylist.c
@@ -255,7 +255,8 @@ keylist_colon_handler (GpgmeCtx ctx, char *line)
const char *trust_info = NULL;
struct subkey_s *sk = NULL;
- DEBUG3 ("keylist_colon_handler ctx=%p, key=%p, line=%s\n", ctx, key, line);
+ DEBUG3 ("keylist_colon_handler ctx=%p, key=%p, line=%s\n", ctx, key,
+ line? line: "(null)");
if (ctx->error)
return;
if (!line)