aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBen Kibbey <[email protected]>2015-04-17 00:23:38 +0000
committerBen Kibbey <[email protected]>2015-08-15 22:19:27 +0000
commit4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9 (patch)
tree6bdfc09dfc56f20e8c0298eadd51d6aee051d5eb /src
parentMake use of user passphrase handler during genkey. (diff)
downloadgpgme-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.h4
-rw-r--r--src/gpgme.c31
-rw-r--r--src/gpgme.def3
-rw-r--r--src/gpgme.h.in15
-rw-r--r--src/libgpgme.vers3
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;
};