aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/edit.c15
-rw-r--r--src/engine-gpg.c4
-rw-r--r--src/engine-gpgsm.c8
-rw-r--r--src/engine-uiserver.c9
-rw-r--r--src/util.h5
5 files changed, 32 insertions, 9 deletions
diff --git a/src/edit.c b/src/edit.c
index 72fa4584..1be60c46 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -77,6 +77,8 @@ command_handler (void *priv, gpgme_status_code_t status, const char *args,
if (err)
return err;
}
+ else
+ err = 0;
if (!processed)
{
@@ -88,16 +90,15 @@ command_handler (void *priv, gpgme_status_code_t status, const char *args,
if (err)
return err;
- /* FIXME: We expect the user to handle _all_ status codes.
- Later, we may fix the callback interface to allow the user
- indicate if it processed the status code or not. */
- *processed_r = 1;
-
- return (*opd->fnc) (opd->fnc_value, status, args, fd);
+ err = (*opd->fnc) (opd->fnc_value, status, args, fd);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0;
+ else
+ processed = 1;
}
*processed_r = processed;
- return 0;
+ return err;
}
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 9a0dab0a..d2741cb1 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1102,6 +1102,8 @@ read_status (engine_gpg_t gpg)
char emptystring[1] = {0};
err = gpg->status.fnc (gpg->status.fnc_value,
GPGME_STATUS_EOF, emptystring);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0; /* Drop special error code. */
}
return err;
@@ -1169,6 +1171,8 @@ read_status (engine_gpg_t gpg)
{
err = gpg->status.fnc (gpg->status.fnc_value,
r, rest);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0; /* Drop special error code. */
if (err)
return err;
}
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c
index 5fcfbf16..49cf061d 100644
--- a/src/engine-gpgsm.c
+++ b/src/engine-gpgsm.c
@@ -827,6 +827,8 @@ status_handler (void *opaque, int fd)
char emptystring[1] = {0};
err = gpgsm->status.fnc (gpgsm->status.fnc_value,
GPGME_STATUS_EOF, emptystring);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0; /* Drop special error code. */
}
if (!err && gpgsm->colon.fnc && gpgsm->colon.any)
@@ -978,7 +980,11 @@ status_handler (void *opaque, int fd)
if (r >= 0)
{
if (gpgsm->status.fnc)
- err = gpgsm->status.fnc (gpgsm->status.fnc_value, r, rest);
+ {
+ err = gpgsm->status.fnc (gpgsm->status.fnc_value, r, rest);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0; /* Drop special error code. */
+ }
}
else
fprintf (stderr, "[UNKNOWN STATUS]%s %s", line + 2, rest);
diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c
index 318d32e3..d855c742 100644
--- a/src/engine-uiserver.c
+++ b/src/engine-uiserver.c
@@ -676,6 +676,8 @@ status_handler (void *opaque, int fd)
char emptystring[1] = {0};
err = uiserver->status.fnc (uiserver->status.fnc_value,
GPGME_STATUS_EOF, emptystring);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0; /* Drop special error code. */
}
if (!err && uiserver->colon.fnc && uiserver->colon.any)
@@ -827,7 +829,12 @@ status_handler (void *opaque, int fd)
if (r >= 0)
{
if (uiserver->status.fnc)
- err = uiserver->status.fnc (uiserver->status.fnc_value, r, rest);
+ {
+ err = uiserver->status.fnc (uiserver->status.fnc_value,
+ r, rest);
+ if (gpg_err_code (err) == GPG_ERR_FALSE)
+ err = 0; /* Drop special error code. */
+ }
}
else
fprintf (stderr, "[UNKNOWN STATUS]%s %s", line + 2, rest);
diff --git a/src/util.h b/src/util.h
index a3425f09..a59700f6 100644
--- a/src/util.h
+++ b/src/util.h
@@ -45,6 +45,11 @@
#define DIM(v) (sizeof(v)/sizeof((v)[0]))
+#if GPG_ERROR_VERSION_NUMBER < 0x011500 /* 1.21 */
+# define GPG_ERR_FALSE 256
+#endif
+
+
/*-- {posix,w32}-util.c --*/
int _gpgme_get_conf_int (const char *key, int *value);