* assuan-handler.c (assuan_register_input_notify): New.
authorWerner Koch <wk@gnupg.org>
Tue, 27 Nov 2001 17:39:09 +0000 (17:39 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 27 Nov 2001 17:39:09 +0000 (17:39 +0000)
(assuan_register_output_notify): New.

assuan/ChangeLog
assuan/assuan-defs.h
assuan/assuan-handler.c
assuan/assuan.h

index d1cc560..dc7403a 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-27  Werner Koch  <wk@gnupg.org>
+
+       * assuan-handler.c (assuan_register_input_notify): New.
+       (assuan_register_output_notify): New.
+
 2001-11-26  Werner Koch  <wk@gnupg.org>
 
        * assuan.h: Added more status codes.
index 2bbc9b8..2b64bf1 100644 (file)
@@ -70,8 +70,10 @@ struct assuan_context_s {
   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);
+  void (*cancel_notify_fnc)(ASSUAN_CONTEXT);
+  void (*input_notify_fnc)(ASSUAN_CONTEXT, const char *);
+  void (*output_notify_fnc)(ASSUAN_CONTEXT, const char *);
 
 
   int input_fd;   /* set by INPUT command */
index 524a8cf..13f1f9d 100644 (file)
@@ -107,6 +107,8 @@ std_handler_input (ASSUAN_CONTEXT ctx, char *line)
   if (rc)
     return rc;
   ctx->input_fd = fd;
+  if (ctx->input_notify_fnc)
+    ctx->input_notify_fnc (ctx, line);
   return 0;
 }
 
@@ -120,6 +122,8 @@ std_handler_output (ASSUAN_CONTEXT ctx, char *line)
   if (rc)
     return rc;
   ctx->output_fd = fd;
+  if (ctx->output_notify_fnc)
+    ctx->output_notify_fnc (ctx, line);
   return 0;
 }
 
@@ -253,6 +257,26 @@ assuan_register_cancel_notify (ASSUAN_CONTEXT ctx, void (*fnc)(ASSUAN_CONTEXT))
   return 0;
 }
 
+int
+assuan_register_input_notify (ASSUAN_CONTEXT ctx,
+                              void (*fnc)(ASSUAN_CONTEXT, const char *))
+{
+  if (!ctx)
+    return ASSUAN_Invalid_Value;
+  ctx->input_notify_fnc = fnc;
+  return 0;
+}
+
+int
+assuan_register_output_notify (ASSUAN_CONTEXT ctx,
+                              void (*fnc)(ASSUAN_CONTEXT, const char *))
+{
+  if (!ctx)
+    return ASSUAN_Invalid_Value;
+  ctx->output_notify_fnc = fnc;
+  return 0;
+}
+
 
 /* Helper to register the standards commands */
 int
index 66f546a..10eb3a5 100644 (file)
@@ -104,6 +104,10 @@ 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_register_input_notify (ASSUAN_CONTEXT ctx,
+                                  void (*fnc)(ASSUAN_CONTEXT, const char *));
+int assuan_register_output_notify (ASSUAN_CONTEXT ctx,
+                                  void (*fnc)(ASSUAN_CONTEXT, const char *));
 int assuan_process (ASSUAN_CONTEXT ctx);
 int assuan_process_next (ASSUAN_CONTEXT ctx);
 int assuan_get_active_fds (ASSUAN_CONTEXT ctx, int what,