diff options
Diffstat (limited to '')
| -rw-r--r-- | src/context.h | 4 | ||||
| -rw-r--r-- | src/gpgme.c | 31 | ||||
| -rw-r--r-- | src/gpgme.def | 3 | ||||
| -rw-r--r-- | src/gpgme.h.in | 15 | ||||
| -rw-r--r-- | src/libgpgme.vers | 3 | 
5 files changed, 56 insertions, 0 deletions
| diff --git a/src/context.h b/src/context.h index 745ffa89..a2977fc8 100644 --- a/src/context.h +++ b/src/context.h @@ -132,6 +132,10 @@ struct gpgme_context    gpgme_progress_cb_t progress_cb;    void *progress_cb_value; +  /* The user provided status callback and its hook value.  */ +  gpgme_status_cb_t status_cb; +  void *status_cb_value; +    /* A list of file descriptors in active use by the current       operation.  */    struct fd_table fdt; diff --git a/src/gpgme.c b/src/gpgme.c index 628cdaee..ac2c95e1 100644 --- a/src/gpgme.c +++ b/src/gpgme.c @@ -632,6 +632,37 @@ gpgme_get_progress_cb (gpgme_ctx_t ctx, gpgme_progress_cb_t *r_cb,  } +/* This function sets a callback function to be used as a status +   message forwarder.  */ +void +gpgme_set_status_cb (gpgme_ctx_t ctx, gpgme_status_cb_t cb, void *cb_value) +{ +  TRACE2 (DEBUG_CTX, "gpgme_set_status_cb", ctx, "status_cb=%p/%p", +	  cb, cb_value); + +  if (!ctx) +    return; + +  ctx->status_cb = cb; +  ctx->status_cb_value = cb_value; +} + + +/* This function returns the callback function to be used as a +   status message forwarder.  */ +void +gpgme_get_status_cb (gpgme_ctx_t ctx, gpgme_status_cb_t *r_cb, +		       void **r_cb_value) +{ +  TRACE2 (DEBUG_CTX, "gpgme_get_status_cb", ctx, "ctx->status_cb=%p/%p", +	  ctx->status_cb, ctx->status_cb_value); +  if (r_cb) +    *r_cb = ctx->status_cb; +  if (r_cb_value) +    *r_cb_value = ctx->status_cb_value; +} + +  /* Set the I/O callback functions for CTX to IO_CBS.  */  void  gpgme_set_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs) diff --git a/src/gpgme.def b/src/gpgme.def index dc189484..ab1f6432 100644 --- a/src/gpgme.def +++ b/src/gpgme.def @@ -217,5 +217,8 @@ EXPORTS      gpgme_op_spawn_start                  @163      gpgme_op_spawn                        @164 + +    gpgme_set_status_cb                   @165 +    gpgme_get_status_cb                   @166  ; END diff --git a/src/gpgme.h.in b/src/gpgme.h.in index 15ed8037..55bc568a 100644 --- a/src/gpgme.h.in +++ b/src/gpgme.h.in @@ -839,6 +839,11 @@ typedef gpgme_error_t (*gpgme_passphrase_cb_t) (void *hook,  typedef void (*gpgme_progress_cb_t) (void *opaque, const char *what,  				     int type, int current, int total); +/* Status messages from gpg. */ +typedef gpgme_error_t (*gpgme_status_cb_t) (void *opaque, const char *keyword, +                                            const char *args); + +  /* Interact with the user about an edit operation.  */  typedef gpgme_error_t (*gpgme_edit_cb_t) (void *opaque,  					  gpgme_status_code_t status, @@ -930,6 +935,16 @@ void gpgme_set_progress_cb (gpgme_ctx_t c, gpgme_progress_cb_t cb,  void gpgme_get_progress_cb (gpgme_ctx_t ctx, gpgme_progress_cb_t *cb,  			    void **hook_value); +/* Set the status callback function in CTX to CB.  HOOK_VALUE is +   passed as first argument to thes status callback function.  */ +void gpgme_set_status_cb (gpgme_ctx_t c, gpgme_status_cb_t cb, +                          void *hook_value); + +/* Get the current status callback function in *CB and the current +   hook value in *HOOK_VALUE.  */ +void gpgme_get_status_cb (gpgme_ctx_t ctx, gpgme_status_cb_t *cb, +                          void **hook_value); +  /* This function sets the locale for the context CTX, or the default     locale if CTX is a null pointer.  */  gpgme_error_t gpgme_set_locale (gpgme_ctx_t ctx, int category, diff --git a/src/libgpgme.vers b/src/libgpgme.vers index 39663c1c..decfc8a3 100644 --- a/src/libgpgme.vers +++ b/src/libgpgme.vers @@ -92,6 +92,9 @@ GPGME_1.1 {      gpgme_op_spawn_start;      gpgme_op_spawn; + +    gpgme_set_status_cb; +    gpgme_get_status_cb;  }; | 
