* 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.
This commit is contained in:
parent
f9a1d51756
commit
57add1098d
@ -1,3 +1,12 @@
|
||||
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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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. */
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user