diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/edit.c | 15 | ||||
| -rw-r--r-- | src/engine-gpg.c | 4 | ||||
| -rw-r--r-- | src/engine-gpgsm.c | 8 | ||||
| -rw-r--r-- | src/engine-uiserver.c | 9 | ||||
| -rw-r--r-- | src/util.h | 5 | 
5 files changed, 32 insertions, 9 deletions
| @@ -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); @@ -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); | 
