[Pkg-gnupg-commit] [libassuan] 258/437: 2009-11-02 Marcus Brinkmann <marcus at g10code.de>

Eric Dorland eric at moszumanska.debian.org
Fri May 22 05:33:51 UTC 2015


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository libassuan.

commit f342672465427384c706ccd4476d603fc04df1de
Author: Marcus Brinkmann <mb at g10code.com>
Date:   Mon Nov 2 17:33:53 2009 +0000

    2009-11-02  Marcus Brinkmann  <marcus at g10code.de>
    
    	* assuan.h (assuan_handler_t): New type.
    	(assuan_register_bye_notify, assuan_register_reset_notify)
    	(assuan_register_cancel_notify, assuan_register_input_notify)
    	(assuan_register_output_notify, assuan_register_command): Use it.
    	* assuan-handler.c (std_handler_cancel, std_handler_bye): Pass
    	LINE argument to user handler.
    	(std_handler_reset): Likewise, and also abort RESET if error is
    	returned from user handler.
    	(std_handler_input, std_handler_output): Check return value from
    	user handler before assigning FD.
    	* assuan-defs.h (struct cmdtbl_s): Change type of member HANDLER
    	to assuan_handler_t.
    	(struct assuan_context_s): Change type of members
    	RESET_NOTIFY_FNC, CANCEL_NOTIFY_FNC, BYE_NOTIFY_FNC,
    	INPUT_NOTIFY_FNC and OUTPUT_NOTIFY_FNC to assuan_handler_t.
---
 NEWS                 |  6 ++++++
 src/ChangeLog        | 18 +++++++++++++++++
 src/assuan-defs.h    | 12 ++++++------
 src/assuan-handler.c | 55 +++++++++++++++++++++++++++-------------------------
 src/assuan.h         | 14 +++++++------
 5 files changed, 67 insertions(+), 38 deletions(-)

diff --git a/NEWS b/NEWS
index 32b79e8..5fba70c 100644
--- a/NEWS
+++ b/NEWS
@@ -67,6 +67,12 @@ ASSUAN_SYSTEM_PTH_DECL         NEW
 ASSUAN_SYSTEM_PTH              NEW
 assuan_sock_init               NEW
 assuan_sock_deinit             NEW
+assuan_handler_t	       NEW
+assuan_register_bye_notify     CHANGED: Handler gets line and returns err now.
+assuan_register_reset_notify   CHANGED: Handler gets line and returns err now.
+assuan_register_cancel_notify  CHANGED: Handler gets line and returns err now.
+assuan_register_input_notify   CHANGED: Handler returns error now.
+assuan_register_output_notify   CHANGED: Handler returns error now.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
diff --git a/src/ChangeLog b/src/ChangeLog
index a6ceaca..4b41e33 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,21 @@
+2009-11-02  Marcus Brinkmann  <marcus at g10code.de>
+
+	* assuan.h (assuan_handler_t): New type.
+	(assuan_register_bye_notify, assuan_register_reset_notify)
+	(assuan_register_cancel_notify, assuan_register_input_notify)
+	(assuan_register_output_notify, assuan_register_command): Use it.
+	* assuan-handler.c (std_handler_cancel, std_handler_bye): Pass
+	LINE argument to user handler.
+	(std_handler_reset): Likewise, and also abort RESET if error is
+	returned from user handler.
+	(std_handler_input, std_handler_output): Check return value from
+	user handler before assigning FD.
+	* assuan-defs.h (struct cmdtbl_s): Change type of member HANDLER
+	to assuan_handler_t.
+	(struct assuan_context_s): Change type of members
+	RESET_NOTIFY_FNC, CANCEL_NOTIFY_FNC, BYE_NOTIFY_FNC,
+	INPUT_NOTIFY_FNC and OUTPUT_NOTIFY_FNC to assuan_handler_t.
+
 2009-10-30  Marcus Brinkmann  <marcus at g10code.de>
 
 	* system.c (_assuan_spawn): Check fd_child_list before dumping it.
diff --git a/src/assuan-defs.h b/src/assuan-defs.h
index 38f51ed..56867a6 100644
--- a/src/assuan-defs.h
+++ b/src/assuan-defs.h
@@ -52,7 +52,7 @@
 struct cmdtbl_s
 {
   const char *name;
-  gpg_error_t (*handler)(assuan_context_t, char *line);
+  assuan_handler_t handler;
 };
 
 
@@ -206,12 +206,12 @@ struct assuan_context_s
      handler.  */
   const char *current_cmd_name;
 
-  void (*bye_notify_fnc)(assuan_context_t);
-  void (*reset_notify_fnc)(assuan_context_t);
-  void (*cancel_notify_fnc)(assuan_context_t);
+  assuan_handler_t bye_notify_fnc;
+  assuan_handler_t reset_notify_fnc;
+  assuan_handler_t cancel_notify_fnc;
   gpg_error_t  (*option_handler_fnc)(assuan_context_t,const char*, const char*);
-  void (*input_notify_fnc)(assuan_context_t, const char *);
-  void (*output_notify_fnc)(assuan_context_t, const char *);
+  assuan_handler_t input_notify_fnc;
+  assuan_handler_t output_notify_fnc;
 
   /* 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 7291acd..a39c006 100644
--- a/src/assuan-handler.c
+++ b/src/assuan-handler.c
@@ -58,7 +58,8 @@ static gpg_error_t
 std_handler_cancel (assuan_context_t ctx, char *line)
 {
   if (ctx->cancel_notify_fnc)
-    ctx->cancel_notify_fnc (ctx);
+    /* Return value ignored.  */
+    ctx->cancel_notify_fnc (ctx, line);
   return PROCESS_DONE (ctx, set_error (ctx, GPG_ERR_NOT_IMPLEMENTED, NULL));
 }
 
@@ -119,7 +120,8 @@ static gpg_error_t
 std_handler_bye (assuan_context_t ctx, char *line)
 {
   if (ctx->bye_notify_fnc)
-    ctx->bye_notify_fnc (ctx);
+    /* Return value ignored.  */
+    ctx->bye_notify_fnc (ctx, line);
   assuan_close_input_fd (ctx);
   assuan_close_output_fd (ctx);
   /* pretty simple :-) */
@@ -135,12 +137,17 @@ std_handler_auth (assuan_context_t ctx, char *line)
 static gpg_error_t
 std_handler_reset (assuan_context_t ctx, char *line)
 {
+  gpg_error_t err = 0;
+
   if (ctx->reset_notify_fnc)
-    ctx->reset_notify_fnc (ctx);
-  assuan_close_input_fd (ctx);
-  assuan_close_output_fd (ctx);
-  _assuan_uds_close_fds (ctx);
-  return PROCESS_DONE (ctx, 0);
+    err = ctx->reset_notify_fnc (ctx, line);
+  if (! err)
+    {
+      assuan_close_input_fd (ctx);
+      assuan_close_output_fd (ctx);
+      _assuan_uds_close_fds (ctx);
+    }
+  return PROCESS_DONE (ctx, err);
 }
   
 static gpg_error_t
@@ -213,10 +220,11 @@ std_handler_input (assuan_context_t ctx, char *line)
   rc = assuan_command_parse_fd (ctx, line, &fd);
   if (rc)
     return PROCESS_DONE (ctx, rc);
-  ctx->input_fd = fd;
   if (ctx->input_notify_fnc)
-    ctx->input_notify_fnc (ctx, line);
-  return PROCESS_DONE (ctx, 0);
+    rc = ctx->input_notify_fnc (ctx, line);
+  if (! rc)
+    ctx->input_fd = fd;
+  return PROCESS_DONE (ctx, rc);
 }
 
 
@@ -230,10 +238,11 @@ std_handler_output (assuan_context_t ctx, char *line)
   rc = assuan_command_parse_fd (ctx, line, &fd);
   if (rc)
     return PROCESS_DONE (ctx, rc);
-  ctx->output_fd = fd;
   if (ctx->output_notify_fnc)
-    ctx->output_notify_fnc (ctx, line);
-  return PROCESS_DONE (ctx, 0);
+    rc = ctx->output_notify_fnc (ctx, line);
+  if (!rc)
+    ctx->output_fd = fd;
+  return PROCESS_DONE (ctx, rc);
 }
 
 
@@ -274,9 +283,8 @@ static struct {
  * Return value: 0 on success or an error code
  **/
 gpg_error_t
-assuan_register_command (assuan_context_t ctx,
-                         const char *cmd_name,
-                         gpg_error_t (*handler)(assuan_context_t, char *))
+assuan_register_command (assuan_context_t ctx, const char *cmd_name,
+                         assuan_handler_t handler)
 {
   int i;
   const char *s;
@@ -349,8 +357,7 @@ assuan_register_post_cmd_notify (assuan_context_t ctx,
 }
 
 gpg_error_t
-assuan_register_bye_notify (assuan_context_t ctx,
-                            void (*fnc)(assuan_context_t))
+assuan_register_bye_notify (assuan_context_t ctx, assuan_handler_t fnc)
 {
   if (!ctx)
     return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
@@ -359,8 +366,7 @@ assuan_register_bye_notify (assuan_context_t ctx,
 }
 
 gpg_error_t
-assuan_register_reset_notify (assuan_context_t ctx,
-                              void (*fnc)(assuan_context_t))
+assuan_register_reset_notify (assuan_context_t ctx, assuan_handler_t fnc)
 {
   if (!ctx)
     return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
@@ -369,8 +375,7 @@ assuan_register_reset_notify (assuan_context_t ctx,
 }
 
 gpg_error_t
-assuan_register_cancel_notify (assuan_context_t ctx,
-                               void (*fnc)(assuan_context_t))
+assuan_register_cancel_notify (assuan_context_t ctx, assuan_handler_t fnc)
 {
   if (!ctx)
     return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
@@ -390,8 +395,7 @@ assuan_register_option_handler (assuan_context_t ctx,
 }
 
 gpg_error_t
-assuan_register_input_notify (assuan_context_t ctx,
-                              void (*fnc)(assuan_context_t, const char *))
+assuan_register_input_notify (assuan_context_t ctx, assuan_handler_t fnc)
 {
   if (!ctx)
     return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
@@ -400,8 +404,7 @@ assuan_register_input_notify (assuan_context_t ctx,
 }
 
 gpg_error_t
-assuan_register_output_notify (assuan_context_t ctx,
-                              void (*fnc)(assuan_context_t, const char *))
+assuan_register_output_notify (assuan_context_t ctx, assuan_handler_t fnc)
 {
   if (!ctx)
     return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
diff --git a/src/assuan.h b/src/assuan.h
index da83730..935ec00 100644
--- a/src/assuan.h
+++ b/src/assuan.h
@@ -300,22 +300,24 @@ const char *assuan_get_assuan_log_prefix (void);
 void assuan_set_log_stream (assuan_context_t ctx, FILE *fp);
 
 

+typedef gpg_error_t (*assuan_handler_t) (assuan_context_t, char *);
+
 /*-- assuan-handler.c --*/
 gpg_error_t assuan_register_command (assuan_context_t ctx,
 				     const char *cmd_string,
-				     gpg_error_t (*handler)(assuan_context_t, char *));
+				     assuan_handler_t handler);
 gpg_error_t assuan_register_post_cmd_notify (assuan_context_t ctx,
 					     void (*fnc)(assuan_context_t, gpg_error_t));
 gpg_error_t assuan_register_bye_notify (assuan_context_t ctx,
-					void (*fnc)(assuan_context_t));
+					assuan_handler_t handler);
 gpg_error_t assuan_register_reset_notify (assuan_context_t ctx,
-					  void (*fnc)(assuan_context_t));
+					  assuan_handler_t handler);
 gpg_error_t assuan_register_cancel_notify (assuan_context_t ctx,
-					   void (*fnc)(assuan_context_t));
+					   assuan_handler_t handler);
 gpg_error_t assuan_register_input_notify (assuan_context_t ctx,
-					  void (*fnc)(assuan_context_t, const char *));
+					  assuan_handler_t handler);
 gpg_error_t assuan_register_output_notify (assuan_context_t ctx,
-					   void (*fnc)(assuan_context_t, const char *));
+					   assuan_handler_t handler);
 
 gpg_error_t assuan_register_option_handler (assuan_context_t ctx,
 					    gpg_error_t (*fnc)(assuan_context_t,

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/libassuan.git



More information about the Pkg-gnupg-commit mailing list