+2002-09-30 Werner Koch <wk@gnupg.org>
+
+ * 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 <marcus@g10code.de>
* conversion.c (_gpgme_hextobyte): Prevent superfluous
int linesize;
int linelen;
} attic;
+ int any; /* any data line seen */
} colon;
struct GpgmeIOCbs io_cbs;
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;
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)
/* 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';
gpgsm->colon.fnc = fnc;
gpgsm->colon.fnc_value = fnc_value;
+ gpgsm->colon.any = 0;
}
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. */
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)