[Pkg-gnupg-commit] [libassuan] 15/437: * assuan-handler.c (assuan_register_bye_notify) (assuan_register_reset_notify) (assuan_register_cancel_notify): New and call them from the standard handlers.

Eric Dorland eric at moszumanska.debian.org
Fri May 22 05:33:16 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 e78360c0844e9463547043e971b78bd61ddc2a3d
Author: Werner Koch <wk at gnupg.org>
Date:   Sun Nov 25 14:53:39 2001 +0000

    * assuan-handler.c (assuan_register_bye_notify)
    (assuan_register_reset_notify)
    (assuan_register_cancel_notify): New and call them from the
    standard handlers.
---
 src/ChangeLog        |  7 +++++++
 src/assuan-defs.h    |  4 ++++
 src/assuan-handler.c | 38 ++++++++++++++++++++++++++++++++++++--
 src/assuan.h         |  8 ++++++++
 4 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index e514506..6f7f59e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2001-11-25  Werner Koch  <wk at gnupg.org>
+
+	* assuan-handler.c (assuan_register_bye_notify)
+	(assuan_register_reset_notify)
+	(assuan_register_cancel_notify): New and call them from the
+	standard handlers.
+
 2001-11-24  Werner Koch  <wk at gnupg.org>
 
 	* assuan-connect.c (assuan_get_pid): New.
diff --git a/src/assuan-defs.h b/src/assuan-defs.h
index 05e548c..2bbc9b8 100644
--- a/src/assuan-defs.h
+++ b/src/assuan-defs.h
@@ -69,6 +69,10 @@ struct assuan_context_s {
   size_t cmdtbl_used; /* used entries */
   size_t cmdtbl_size; /* allocated size of table */
 
+  void (*bye_notify_fnc)(ASSUAN_CONTEXT);
+  void (*cancel_notify_fnc)(ASSUAN_CONTEXT);
+  void (*reset_notify_fnc)(ASSUAN_CONTEXT);
+
 
   int input_fd;   /* set by INPUT command */
   int output_fd;  /* set by OUTPUT command */
diff --git a/src/assuan-handler.c b/src/assuan-handler.c
index 472206b..d4de852 100644
--- a/src/assuan-handler.c
+++ b/src/assuan-handler.c
@@ -44,12 +44,16 @@ std_handler_nop (ASSUAN_CONTEXT ctx, char *line)
 static int
 std_handler_cancel (ASSUAN_CONTEXT ctx, char *line)
 {
+  if (ctx->cancel_notify_fnc)
+    ctx->cancel_notify_fnc (ctx);
   return set_error (ctx, Not_Implemented, NULL); 
 }
   
 static int
 std_handler_bye (ASSUAN_CONTEXT ctx, char *line)
 {
+  if (ctx->bye_notify_fnc)
+    ctx->bye_notify_fnc (ctx);
   return -1; /* pretty simple :-) */
 }
   
@@ -62,7 +66,9 @@ std_handler_auth (ASSUAN_CONTEXT ctx, char *line)
 static int
 std_handler_reset (ASSUAN_CONTEXT ctx, char *line)
 {
-  return set_error (ctx, Not_Implemented, NULL); 
+  if (ctx->reset_notify_fnc)
+    ctx->reset_notify_fnc (ctx);
+  return 0;
 }
   
 static int
@@ -128,7 +134,7 @@ static struct {
   const char *name;
   int cmd_id;
   int (*handler)(ASSUAN_CONTEXT, char *line);
-  int always; /* always initializethis command */
+  int always; /* always initialize this command */
 } std_cmd_table[] = {
   { "NOP",    ASSUAN_CMD_NOP,    std_handler_nop, 1 },
   { "CANCEL", ASSUAN_CMD_CANCEL, std_handler_cancel, 1 },
@@ -220,6 +226,34 @@ assuan_register_command (ASSUAN_CONTEXT ctx,
   return 0;
 }
 
+int
+assuan_register_bye_notify (ASSUAN_CONTEXT ctx, void (*fnc)(ASSUAN_CONTEXT))
+{
+  if (!ctx)
+    return ASSUAN_Invalid_Value;
+  ctx->bye_notify_fnc = fnc;
+  return 0;
+}
+
+int
+assuan_register_reset_notify (ASSUAN_CONTEXT ctx, void (*fnc)(ASSUAN_CONTEXT))
+{
+  if (!ctx)
+    return ASSUAN_Invalid_Value;
+  ctx->reset_notify_fnc = fnc;
+  return 0;
+}
+
+int
+assuan_register_cancel_notify (ASSUAN_CONTEXT ctx, void (*fnc)(ASSUAN_CONTEXT))
+{
+  if (!ctx)
+    return ASSUAN_Invalid_Value;
+  ctx->cancel_notify_fnc = fnc;
+  return 0;
+}
+
+
 /* Helper to register the standards commands */
 int
 _assuan_register_std_commands (ASSUAN_CONTEXT ctx)
diff --git a/src/assuan.h b/src/assuan.h
index a5ae8ae..a858dc7 100644
--- a/src/assuan.h
+++ b/src/assuan.h
@@ -39,6 +39,7 @@ typedef enum {
   ASSUAN_Timeout = 4,  
   ASSUAN_Read_Error = 5,
   ASSUAN_Write_Error = 6,
+  ASSUAN_Problem_Starting_Server = 7,
 
   /* error codes above 99 are meant as status codes */
   ASSUAN_Not_Implemented = 100,
@@ -53,6 +54,7 @@ typedef enum {
   ASSUAN_No_Input = 109,
   ASSUAN_No_Output = 110,
   ASSUAN_Canceled = 111,
+  ASSUAN_Unsupported_Algorithm = 112,
 
   ASSUAN_Cert_Revoked = 301,
   ASSUAN_No_CRL_For_Cert = 302,
@@ -83,6 +85,12 @@ typedef struct assuan_context_s *ASSUAN_CONTEXT;
 int assuan_register_command (ASSUAN_CONTEXT ctx,
                              int cmd_id, const char *cmd_string,
                              int (*handler)(ASSUAN_CONTEXT, char *));
+int assuan_register_bye_notify (ASSUAN_CONTEXT ctx,
+                                void (*fnc)(ASSUAN_CONTEXT));
+int assuan_register_reset_notify (ASSUAN_CONTEXT ctx,
+                                  void (*fnc)(ASSUAN_CONTEXT));
+int assuan_register_cancel_notify (ASSUAN_CONTEXT ctx,
+                                   void (*fnc)(ASSUAN_CONTEXT));
 int assuan_process (ASSUAN_CONTEXT ctx);
 FILE *assuan_get_data_fp (ASSUAN_CONTEXT ctx);
 void assuan_write_status (ASSUAN_CONTEXT ctx,

-- 
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