2008-11-22 Moritz <moritz@gnu.org>
authorMoritz Schulte <mo@g10code.com>
Sat, 22 Nov 2008 16:42:23 +0000 (16:42 +0000)
committerMoritz Schulte <mo@g10code.com>
Sat, 22 Nov 2008 16:42:23 +0000 (16:42 +0000)
* Makefile.am: Updated libassuan copy.

src/assuan/ChangeLog
src/assuan/Makefile.am
src/assuan/README
src/assuan/assuan-handler.c
src/assuan/assuan-io.c
src/assuan/assuan-logging.c
src/assuan/assuan-socket-connect.c
src/assuan/assuan-socket-server.c
src/assuan/assuan.h
src/assuan/funopen.c

index cf15f28..384abbb 100644 (file)
@@ -1,3 +1,7 @@
+2008-11-22  Moritz  <moritz@gnu.org>
+
+       * Makefile.am: Updated libassuan copy.
+
 2008-06-14  Moritz  <moritz@gnu.org>
 
        * Makefile.am: Added mkerrors file to EXTRA_DIST.
index 304739b..56e2eed 100644 (file)
 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES = -I.. -I$(top_srcdir)/include
+# Modified for Poldi. Based von libassuans Makefile.am.
 
+EXTRA_DIST = mkerrors
+INCLUDES = -I.. -I$(top_srcdir)/include
 BUILT_SOURCES = assuan-errors.c
 MOSTLYCLEANFILES = assuan-errors.c
 
@@ -43,13 +45,10 @@ common_sources = \
        assuan-logging.c \
        assuan-socket.c
 
-AM_CFLAGS = -fPIC
-
 libassuan_a_SOURCES = $(common_sources) assuan-io.c
-libassuan_a_CFLAGS = -Wall -fPIC
 libassuan_a_LIBADD = @LIBOBJS@
 
-EXTRA_DIST = mkerrors
+AM_CFLAGS = -Wall -fPIC
 
 assuan-errors.c : assuan.h mkerrors
        $(srcdir)/mkerrors < $(srcdir)/assuan.h > assuan-errors.c
index 2676826..995eed1 100644 (file)
@@ -1,2 +1,3 @@
 This directory contains a copy of libassuan. The only Poldi-related
-changes are encapsulated in assuan.h.
+changes are encapsulated in assuan.h and Makefile.am. The latter is a
+basically a stripped version of the original file.
index 2a80596..b940bfd 100644 (file)
@@ -141,7 +141,7 @@ std_handler_reset (assuan_context_t ctx, char *line)
 static int
 std_handler_help (assuan_context_t ctx, char *line)
 {
-  int i;
+  unsigned int i;
   char buf[ASSUAN_LINELENGTH];
 
   for (i = 0; i < ctx->cmdtbl_used; i++)
@@ -251,10 +251,10 @@ static struct {
   { "END",    std_handler_end, 1 },
   { "HELP",   std_handler_help, 1 },
               
-  { "INPUT",  std_handler_input },
-  { "OUTPUT", std_handler_output },
+  { "INPUT",  std_handler_input, 0 },
+  { "OUTPUT", std_handler_output, 0 },
   { "OPTION", std_handler_option, 1 },
-  { NULL }
+  { NULL, NULL, 0 }
 };
 
 
index 17e8b46..647237d 100644 (file)
@@ -21,6 +21,7 @@
 #include <config.h>
 #endif
 
+#include <time.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #ifdef HAVE_SYS_SOCKET_H
@@ -218,20 +219,27 @@ _assuan_simple_recvmsg (assuan_context_t ctx, struct msghdr *msg)
 void
 _assuan_usleep (unsigned int usec)
 {
-#ifdef HAVE_W32_SYSTEM
-  /* FIXME.  */
-  Sleep (usec / 1000);
+  if (usec)
+    {
+#ifdef HAVE_NANOSLEEP
+      struct timespec req;
+      struct timespec rem;
+      
+      req.tv_sec = 0;
+      req.tv_nsec = usec * 1000;
+      
+      while (nanosleep (&req, &rem) < 0 && errno == EINTR)
+        req = rem;
+
+#elif defined(HAVE_W32_SYSTEM)
+      Sleep (usec / 1000);
 #else
-  struct timespec req;
-  struct timespec rem;
-
-  if (usec == 0)
-    return;
+      struct timeval tv;
 
-  req.tv_sec = 0;
-  req.tv_nsec = usec * 1000;
-  
-  while (nanosleep (&req, &rem) < 0 && errno == EINTR)
-    req = rem;
+      tv.tv_sec  = usec / 1000000;
+      tv.tv_usec = usec % 1000000;
+      select (0, NULL, NULL, NULL, &tv);
 #endif
+    }
 }
+
index fd40dcc..2ebd667 100644 (file)
@@ -112,6 +112,11 @@ _assuan_log_printf (const char *format, ...)
   va_start (arg_ptr, format);
   vfprintf (fp, format, arg_ptr );
   va_end (arg_ptr);
+  /* If the log stream is a file, the output would be buffered.  This
+     is bad for debugging, thus we flush the stream if FORMAT ends
+     with a LF.  */ 
+  if (format && *format && format[strlen(format)-1] == '\n')
+    fflush (fp);
   errno = save_errno;
 }
 
@@ -124,14 +129,14 @@ void
 _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length)
 {
   const unsigned char *s;
-  int n;
+  unsigned int n;
 
-  for (n=length,s=buffer; n; n--, s++)
-    if  ((!isascii (*s) || iscntrl (*s) || !isprint (*s)) && !(*s >= 0x80))
+  for (n = length, s = buffer; n; n--, s++)
+    if  ((! isascii (*s) || iscntrl (*s) || ! isprint (*s)) && !(*s >= 0x80))
       break;
 
   s = buffer;
-  if (!n && *s != '[')
+  if (! n && *s != '[')
     fwrite (buffer, length, 1, fp);
   else
     {
@@ -139,15 +144,15 @@ _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length)
       flockfile (fp);
 #endif
       putc_unlocked ('[', fp);
-      if ( length > 16 && !full_logging)
+      if (length > 16 && ! full_logging)
         {
-          for (n=0; n < 12; n++, s++)
+          for (n = 0; n < 12; n++, s++)
             fprintf (fp, " %02x", *s);
-          fprintf (fp, " ...(%d bytes skipped)", (int)length - 12);
+          fprintf (fp, " ...(%d bytes skipped)", (int) length - 12);
         }
       else
         {
-          for (n=0; n < length; n++, s++)
+          for (n = 0; n < length; n++, s++)
             fprintf (fp, " %02x", *s);
         }
       putc_unlocked (' ', fp);
index 0b9bdbb..8eb6d82 100644 (file)
@@ -91,9 +91,8 @@ assuan_socket_connect_ext (assuan_context_t *r_ctx,
                            const char *name, pid_t server_pid,
                            unsigned int flags)
 {
-  static struct assuan_io io = { _assuan_simple_read,
-                                _assuan_simple_write };
-
+  static struct assuan_io io = { _assuan_simple_read, _assuan_simple_write,
+                                NULL, NULL };
   assuan_error_t err;
   assuan_context_t ctx;
   assuan_fd_t fd;
@@ -107,7 +106,7 @@ assuan_socket_connect_ext (assuan_context_t *r_ctx,
 
   /* We require that the name starts with a slash, so that we
      eventually can reuse this function for other socket types.  To
-     make things easier we allow an optional dirver prefix.  */
+     make things easier we allow an optional driver prefix.  */
   s = name;
   if (*s && s[1] == ':')
     s += 2;
index b754b81..c536dba 100644 (file)
@@ -38,9 +38,8 @@
 
 #include "assuan-defs.h"
 
-static struct assuan_io io = { _assuan_simple_read,
-                              _assuan_simple_write };
-
+static struct assuan_io io = { _assuan_simple_read, _assuan_simple_write,
+                              NULL, NULL };
 
 static int
 accept_connection_bottom (assuan_context_t ctx)
index a4cdfff..74da863 100644 (file)
@@ -1,5 +1,6 @@
 /* assuan.h - Definitions for the Assuan IPC library
- * Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2005, 2007, 
+ *               2008 Free Software Foundation, Inc.
  *
  * This file is part of Assuan.
  *
@@ -63,7 +64,6 @@
        a pipe.
  */
 #define _ASSUAN_EXT_SYM_PREFIX poldi_
-//#define _ASSUAN_ONLY_GPG_ERRORS
 #define _ASSUAN_NO_PTH 
 #define _ASSUAN_NO_SOCKET_WRAPPER
 /* FIXME: is NO_FIXED_SIGNALS needed for Poldi? -mo */
@@ -351,7 +351,8 @@ typedef enum
 
 #else  /*!_ASSUAN_ONLY_GPG_ERRORS*/
 
-typedef int assuan_error_t;
+/* Choose a type compatible with gpg_error_t.  */
+typedef unsigned int assuan_error_t;
 
 #endif /*!_ASSUAN_ONLY_GPG_ERRORS*/
 
@@ -543,11 +544,11 @@ assuan_error_t assuan_get_peercred (assuan_context_t ctx,
 assuan_error_t 
 assuan_transact (assuan_context_t ctx,
                  const char *command,
-                 int (*data_cb)(void *, const void *, size_t),
+                 assuan_error_t (*data_cb)(void *, const void *, size_t),
                  void *data_cb_arg,
-                 int (*inquire_cb)(void*, const char *),
+                 assuan_error_t (*inquire_cb)(void*, const char *),
                  void *inquire_cb_arg,
-                 int (*status_cb)(void*, const char *),
+                 assuan_error_t (*status_cb)(void*, const char *),
                  void *status_cb_arg);
 
 
index 363aa59..fb87f96 100644 (file)
@@ -46,7 +46,7 @@ _assuan_funopen(void *cookie,
                 cookie_seek_function_t *seekfn,
                 cookie_close_function_t *closefn)
 {
-  cookie_io_functions_t io = { NULL };
+  cookie_io_functions_t io;
 
   io.read = readfn;
   io.write = writefn;