diff options
| author | Ben Kibbey <[email protected]> | 2015-04-17 00:23:38 +0000 | 
|---|---|---|
| committer | Ben Kibbey <[email protected]> | 2015-08-15 22:19:27 +0000 | 
| commit | 4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9 (patch) | |
| tree | 6bdfc09dfc56f20e8c0298eadd51d6aee051d5eb /src | |
| parent | Make use of user passphrase handler during genkey. (diff) | |
| download | gpgme-4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9.tar.gz gpgme-4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9.zip | |
Add gpgme_set/get_status_cb().
* src/gpgme.h.in (gpgme_set_status_cb): New.
(gpgme_get_status_cb): New.
(gpgme_status_cb_t): New.
* src/gpgme.c (gpgme_set_status_cb): New.
(gpgme_get_status_cb): New.
* src/context.h (status_cb): New.
(status_cb_value): New.
* src/gpgme.def: Export new symbols.
* src/libgpgme.vers: Ditto.
* doc/gpgme.texi: Document these new functions.
--
This callback function is used to forward status messages from gpg back
to the client.
Diffstat (limited to 'src')
| -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 8cd86e9c..757d9b42 100644 --- a/src/context.h +++ b/src/context.h @@ -135,6 +135,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 c24b6200..9c09827e 100644 --- a/src/gpgme.c +++ b/src/gpgme.c @@ -656,6 +656,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 cf167b4f..a3f5fb4a 100644 --- a/src/gpgme.def +++ b/src/gpgme.def @@ -220,5 +220,8 @@ EXPORTS      gpgme_set_offline                     @165      gpgme_get_offline                     @166 + +    gpgme_set_status_cb                   @167 +    gpgme_get_status_cb                   @168  ; END diff --git a/src/gpgme.h.in b/src/gpgme.h.in index 099cc8a5..ffcc7bac 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, @@ -936,6 +941,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 fc2920f8..6687571f 100644 --- a/src/libgpgme.vers +++ b/src/libgpgme.vers @@ -95,6 +95,9 @@ GPGME_1.1 {      gpgme_set_offline;      gpgme_get_offline; + +    gpgme_set_status_cb; +    gpgme_get_status_cb;  }; | 
