aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Kibbey <[email protected]>2011-02-25 01:54:04 +0000
committerWerner Koch <[email protected]>2011-02-28 08:18:34 +0000
commit65078fa2e4b3a4404c8eec012783aaeb7925c685 (patch)
treefba58cd3a1dd1f702becc943cfbf6aa532d207fd
parentAdd ChangeLog entry for last patch (diff)
downloadlibassuan-65078fa2e4b3a4404c8eec012783aaeb7925c685.tar.gz
libassuan-65078fa2e4b3a4404c8eec012783aaeb7925c685.zip
Pass only the command name to the pre_cmd_notify() callback to keep ABI compatibility.
-rw-r--r--src/ChangeLog6
-rw-r--r--src/assuan-defs.h12
-rw-r--r--src/assuan-handler.c6
-rw-r--r--src/assuan.h.in11
4 files changed, 20 insertions, 15 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index c34af0c..fbb3797 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2011-02-28 Ben Kibbey <[email protected]>
+
+ * assuan-handler.c (assuan_register_pre_cmd_notify): Pass command
+ string as second argument.
+ * assuan.h (assuan_command_t): Move back to assuan-defs.h.
+
2011-02-24 Ben Kibbey <[email protected]>
* assuan-handler.c (assuan_register_pre_cmd_notify): New callback.
diff --git a/src/assuan-defs.h b/src/assuan-defs.h
index da2a9d7..8a3fcc2 100644
--- a/src/assuan-defs.h
+++ b/src/assuan-defs.h
@@ -58,6 +58,14 @@
#define _assuan_error(ctx, errcode) gpg_err_make ((ctx)->err_source, errcode)
+struct cmdtbl_s
+{
+ const char *name;
+ assuan_handler_t handler;
+ const char *helpstr;
+};
+
+
/* The context we use with most functions. */
struct assuan_context_s
@@ -188,7 +196,7 @@ struct assuan_context_s
gpg_error_t (*accept_handler)(assuan_context_t);
void (*finish_handler)(assuan_context_t);
- assuan_command_t cmdtbl;
+ struct cmdtbl_s *cmdtbl;
size_t cmdtbl_used; /* used entries */
size_t cmdtbl_size; /* allocated size of table */
@@ -205,7 +213,7 @@ struct assuan_context_s
assuan_handler_t output_notify_fnc;
/* This function is called right before a command handler is called. */
- gpg_error_t (*pre_cmd_notify_fnc)(assuan_context_t, assuan_command_t);
+ gpg_error_t (*pre_cmd_notify_fnc)(assuan_context_t, const char *cmd);
/* This function is called right after a command has been processed.
It may be used to command related cleanup. */
diff --git a/src/assuan-handler.c b/src/assuan-handler.c
index 5016fcb..cb271fa 100644
--- a/src/assuan-handler.c
+++ b/src/assuan-handler.c
@@ -400,7 +400,7 @@ assuan_register_command (assuan_context_t ctx, const char *cmd_name,
}
else if (ctx->cmdtbl_used >= ctx->cmdtbl_size)
{
- struct _assuan_command_s *x;
+ struct cmdtbl_s *x;
x = _assuan_realloc (ctx, ctx->cmdtbl, (ctx->cmdtbl_size+10) * sizeof *x);
if (!x)
@@ -429,7 +429,7 @@ assuan_get_command_name (assuan_context_t ctx)
gpg_error_t
assuan_register_pre_cmd_notify (assuan_context_t ctx,
gpg_error_t (*fnc)(assuan_context_t,
- assuan_command_t))
+ const char *cmd))
{
if (!ctx)
return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
@@ -602,7 +602,7 @@ dispatch_command (assuan_context_t ctx, char *line, int linelen)
linelen -= shift;
if (ctx->pre_cmd_notify_fnc) {
- err = ctx->pre_cmd_notify_fnc(ctx, &ctx->cmdtbl[i]);
+ err = ctx->pre_cmd_notify_fnc(ctx, ctx->cmdtbl[i].name);
if (err)
return PROCESS_DONE(ctx, err);
diff --git a/src/assuan.h.in b/src/assuan.h.in
index 630aefd..426fc4c 100644
--- a/src/assuan.h.in
+++ b/src/assuan.h.in
@@ -273,22 +273,13 @@ void assuan_set_log_stream (assuan_context_t ctx, FILE *fp);
typedef gpg_error_t (*assuan_handler_t) (assuan_context_t, char *);
-struct _assuan_command_s
-{
- const char *name;
- assuan_handler_t handler;
- const char *helpstr;
-};
-
-typedef struct _assuan_command_s *assuan_command_t;
-
/*-- assuan-handler.c --*/
gpg_error_t assuan_register_command (assuan_context_t ctx,
const char *cmd_string,
assuan_handler_t handler,
const char *help_string);
gpg_error_t assuan_register_pre_cmd_notify (assuan_context_t ctx,
- gpg_error_t (*fnc)(assuan_context_t, assuan_command_t));
+ gpg_error_t (*fnc)(assuan_context_t, const char *cmd));
gpg_error_t assuan_register_post_cmd_notify (assuan_context_t ctx,
void (*fnc)(assuan_context_t,
gpg_error_t));