diff options
author | Ben Kibbey <[email protected]> | 2011-02-25 01:54:04 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2011-02-28 08:18:34 +0000 |
commit | 65078fa2e4b3a4404c8eec012783aaeb7925c685 (patch) | |
tree | fba58cd3a1dd1f702becc943cfbf6aa532d207fd | |
parent | Add ChangeLog entry for last patch (diff) | |
download | libassuan-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/ChangeLog | 6 | ||||
-rw-r--r-- | src/assuan-defs.h | 12 | ||||
-rw-r--r-- | src/assuan-handler.c | 6 | ||||
-rw-r--r-- | src/assuan.h.in | 11 |
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)); |