Chnages to supporta pinnetry notification
[gpgme.git] / assuan / assuan.h
index 0f36cdd..6df0166 100644 (file)
@@ -1,5 +1,5 @@
-/* assuan.c - Definitions for the Assuan IPC library
- * Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+/* assuan.h - Definitions for the Assuan IPC library
+ * Copyright (C) 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
  *
  * This file is part of Assuan.
  *
 #define _ASSUAN_USE_DOUBLE_FORK
 
 #ifdef _ASSUAN_IN_GPGME_BUILD_ASSUAN
+#include <ath.h>
+
+int _gpgme_io_close (int fd);
 int _gpgme_io_read (int fd, void *buffer, size_t count);
 int _gpgme_io_write (int fd, const void *buffer, size_t count);
-ssize_t _gpgme_ath_waitpid (pid_t pid, int *status, int options);
-#ifdef HAVE_W32_SYSTEM
-int _gpgme_ath_accept (int s, void *addr, int *length_ptr);
-#else /*!HAVE_W32_SYSTEM*/
-struct sockaddr;
-struct msghdr;
-ssize_t _gpgme_ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
-                           struct timeval *timeout);
-int _gpgme_ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr);
-int _gpgme_ath_connect (int s, struct sockaddr *addr, socklen_t length);
-int _gpgme_ath_sendmsg (int s, const struct msghdr *msg, int flags);
-int _gpgme_ath_recvmsg (int s, struct msghdr *msg, int flags);
-#endif /*!HAVE_W32_SYSTEM*/
+int _gpgme_io_sendmsg (int sock, const struct msghdr *msg, int flags);
+int _gpgme_io_recvmsg (int sock, struct msghdr *msg, int flags);
 
+#define close         _gpgme_io_close
 #define read          _gpgme_io_read
 #define write         _gpgme_io_write
 #define waitpid              _gpgme_ath_waitpid
 #define select       _gpgme_ath_select
 #define accept        _gpgme_ath_accept
 #define connect       _gpgme_ath_connect
-#define sendmsg              _gpgme_ath_sendmsg
-#define recvmsg       _gpgme_ath_recvmsg
+#define sendmsg              _gpgme_io_sendmsg
+#define recvmsg       _gpgme_io_recvmsg
 #endif /*_ASSUAN_IN_GPGME_BUILD_ASSUAN*/
 /**** End GPGME specific modifications. ******/
 
@@ -95,6 +88,8 @@ int _gpgme_ath_recvmsg (int s, struct msghdr *msg, int flags);
 #define _ASSUAN_PREFIX(x) _ASSUAN_PREFIX2(_ASSUAN_EXT_SYM_PREFIX,x)
 #define assuan_ _ASSUAN_PREFIX(assuan_)
 #define assuan_register_command _ASSUAN_PREFIX(assuan_register_command)
+#define assuan_register_post_cmd_notify \
+  _ASSUAN_PREFIX(assuan_register_post_cmd_notify)
 #define assuan_register_bye_notify _ASSUAN_PREFIX(assuan_register_bye_notify)
 #define assuan_register_reset_notify \
   _ASSUAN_PREFIX(assuan_register_reset_notify)
@@ -142,10 +137,12 @@ int _gpgme_ath_recvmsg (int s, struct msghdr *msg, int flags);
 #define assuan_sendfd _ASSUAN_PREFIX(assuan_sendfd)
 #define assuan_receivefd _ASSUAN_PREFIX(assuan_receivefd)
 #define assuan_set_malloc_hooks _ASSUAN_PREFIX(assuan_set_malloc_hooks)
+#define assuan_set_assuan_log_level _ASSUAN_PREFIX(assuan_set_assuan_log_level)
 #define assuan_set_log_stream _ASSUAN_PREFIX(assuan_set_log_stream)
 #define assuan_set_error _ASSUAN_PREFIX(assuan_set_error)
 #define assuan_set_pointer _ASSUAN_PREFIX(assuan_set_pointer)
 #define assuan_get_pointer _ASSUAN_PREFIX(assuan_get_pointer)
+#define assuan_set_io_monitor _ASSUAN_PREFIX(assuan_set_io_monitor)
 #define assuan_begin_confidential _ASSUAN_PREFIX(assuan_begin_confidential)
 #define assuan_end_confidential _ASSUAN_PREFIX(assuan_end_confidential)
 #define assuan_strerror _ASSUAN_PREFIX(assuan_strerror)
@@ -159,6 +156,9 @@ int _gpgme_ath_recvmsg (int s, struct msghdr *msg, int flags);
   _ASSUAN_PREFIX(assuan_get_assuan_log_prefix)
 #define assuan_set_flag _ASSUAN_PREFIX(assuan_set_flag)
 #define assuan_get_flag _ASSUAN_PREFIX(assuan_get_flag)
+#define assuan_pipe_connect2 _ASSUAN_PREFIX(assuan_pipe_connect2)
+#define assuan_set_assuan_log_prefix \
+  _ASSUAN_PREFIX(assuan_set_assuan_log_prefix)
 
 /* And now the internal functions, argh...  */
 #define _assuan_read_line _ASSUAN_PREFIX(_assuan_read_line)
@@ -185,12 +185,22 @@ int _gpgme_ath_recvmsg (int s, struct msghdr *msg, int flags);
 #define _assuan_set_default_log_stream \
   _ASSUAN_PREFIX(_assuan_set_default_log_stream)
 #define _assuan_w32_strerror _ASSUAN_PREFIX(_assuan_w32_strerror)
+#define _assuan_gpg_strerror_r _ASSUAN_PREFIX(_assuan_gpg_strerror_r)
+#define _assuan_gpg_strsource  _ASSUAN_PREFIX(_assuan_gpg_strsource)
 #define _assuan_write_line _ASSUAN_PREFIX(_assuan_write_line)
 #define _assuan_close _ASSUAN_PREFIX(_assuan_close)   
 #define _assuan_sock_new _ASSUAN_PREFIX(_assuan_sock_new)  
 #define _assuan_sock_bind _ASSUAN_PREFIX(_assuan_sock_bind)
 #define _assuan_sock_connect _ASSUAN_PREFIX(_assuan_sock_connect)
-
+#define _assuan_error _ASSUAN_PREFIX(_assuan_error)
+#define _assuan_init_uds_io _ASSUAN_PREFIX(_assuan_init_uds_io)
+#define _assuan_uds_close_fds _ASSUAN_PREFIX(_assuan_uds_close_fds)
+#define _assuan_uds_deinit _ASSUAN_PREFIX(_assuan_uds_deinit)
+#define _assuan_simple_recvmsg _ASSUAN_PREFIX(_assuan_simple_recvmsg)
+#define _assuan_simple_sendmsg _ASSUAN_PREFIX(_assuan_simple_sendmsg)
+#define _assuan_waitpid _ASSUAN_PREFIX(_assuan_waitpid)
+
+#define _assuan_funopen _gpgme_funopen
 #endif /*_ASSUAN_EXT_SYM_PREFIX*/
 
 
@@ -282,9 +292,11 @@ extern "C"
 #define  ASSUAN_Unexpected_Data 125
 #define  ASSUAN_Invalid_Status 126
 #define  ASSUAN_Locale_Problem 127
+#endif
 #define  ASSUAN_Not_Confirmed 128
 
   /* Warning: Don't use the Error codes, below they are deprecated. */
+#ifndef _ASSUAN_IN_LIBASSUAN
 #define  ASSUAN_Bad_Certificate 201
 #define  ASSUAN_Bad_Certificate_Chain 202
 #define  ASSUAN_Missing_Certificate 203
@@ -367,6 +379,8 @@ typedef struct assuan_context_s *ASSUAN_CONTEXT _ASSUAN_DEPRECATED;
 int assuan_register_command (assuan_context_t ctx,
                              const char *cmd_string,
                              int (*handler)(assuan_context_t, char *));
+int assuan_register_post_cmd_notify (assuan_context_t ctx,
+                                     void (*fnc)(assuan_context_t, int));
 int assuan_register_bye_notify (assuan_context_t ctx,
                                 void (*fnc)(assuan_context_t));
 int assuan_register_reset_notify (assuan_context_t ctx,
@@ -451,8 +465,10 @@ assuan_error_t assuan_socket_connect_ext (assuan_context_t *ctx,
 /*-- assuan-connect.c --*/
 void assuan_disconnect (assuan_context_t ctx);
 pid_t assuan_get_pid (assuan_context_t ctx);
+#ifndef HAVE_W32_SYSTEM
 assuan_error_t assuan_get_peercred (assuan_context_t ctx,
                                     pid_t *pid, uid_t *uid, gid_t *gid);
+#endif
 
 /*-- assuan-client.c --*/
 assuan_error_t 
@@ -497,6 +513,12 @@ void *assuan_get_pointer (assuan_context_t ctx);
 void assuan_begin_confidential (assuan_context_t ctx);
 void assuan_end_confidential (assuan_context_t ctx);
 
+void assuan_set_io_monitor (assuan_context_t ctx,
+                            unsigned int (*monitor)(assuan_context_t ctx,
+                                                    int direction,
+                                                    const char *line,
+                                                    size_t linelen));
+
 /* For context CTX, set the flag FLAG to VALUE.  Values for flags
    are usually 1 or 0 but certain flags might allow for other values;
    see the description of the type assuan_flag_t for details. */
@@ -523,6 +545,14 @@ void assuan_set_assuan_err_source (int errsource);
 
 /*-- assuan-logging.c --*/
 
+/* Set the log level for general assuan commands.  0 is no logging at
+   all, 1 is the standard logging and the default. Higher leveles may
+   be defined in the future.  Passing a level of -1 will not change
+   the current log level.  Returns previous log level.  Note, that
+   this function is not thread-safe and should in general be used
+   right at startup. */
+int assuan_set_assuan_log_level (int level);
+
 /* Set the stream to which assuan should log message not associated
    with a context.  By default, this is stderr.  The default value
    will be changed when the first log stream is associated with a