[git] Pinentry - branch, master, updated. pinentry-0.9.4-4-g302903f

by Neal H. Walfield cvs at cvs.gnupg.org
Tue Jun 16 12:12:34 CEST 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The standard pinentry collection".

The branch, master has been updated
       via  302903f76b8d62b1e07219a203f7219cb3aff7d8 (commit)
      from  5026d0b9ac08d8366c82beec6c4425fb7f7b11e5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 302903f76b8d62b1e07219a203f7219cb3aff7d8
Author: Neal H. Walfield <neal at gnu.org>
Date:   Sat Jun 13 21:43:33 2015 +0200

    Remove internal mini-libassuan implementation and link to libassuan.
    
    * assuan/ChangeLog-old: Remove file.
    * assuan/Makefile.am: Remove file.
    * assuan/README.1st: Remove file.
    * assuan/assuan-buffer.c: Remove file.
    * assuan/assuan-defs.h: Remove file.
    * assuan/assuan-handler.c: Remove file.
    * assuan/assuan-listen.c: Remove file.
    * assuan/assuan-pipe-server.c: Remove file.
    * assuan/assuan-util.c: Remove file.
    * assuan/assuan.h: Remove file.
    * assuan/mkerrors: Remove file.
    
    * configure.ac: Check for libgpg-error and libassuan.
    (COMMON_CFLAGS): Add $GPG_ERROR_CFLAGS and $LIBASSUAN_CFLAGS.
    (COMMAND_LIBS): Add $GPG_ERROR_LIBS and $LIBASSUAN_LIBS.
    (GPG_ERR_ENABLE_GETTEXT_MACROS): Define this macro.
    (GPG_ERR_ENABLE_ERRNO_MACROS): Likewise.
    (GNUPG_LIBASSUAN_VERSION): Likewise.
    (AC_CONFIG_FILES): Don't generate assuan/Makefile.
    (config.h): Define GPG_ERR_SOURCE_DEFAULT.
    * Makefile.am (SUBDIRS): Remove assuan.
    * curses/Makefile.am (LDADD): Remove ../assuan/libassuan.a.
    * gnome3/Makefile.am (AM_CPPFLAGS): Remove -I$(top_srcdir)/assuan.
    (LDADD): Remove ../assuan/libassuan.a.
    * gtk+-2/Makefile.am (LDADD): Remove ../assuan/libassuan.a.
    * pinentry/Makefile.am: Remove -I$(top_srcdir)/assuan.
    * qt4/Makefile.am (AM_CPPFLAGS): Remove -I$(top_srcdir)/assuan.
    (pinentry_qt4_LDADD): Remove $(top_builddir)/assuan/libassuan.a.
    * tty/Makefile.am (LDADD): Remove ../assuan/libassuan.a.
    
    * gnome3/pinentry-gnome3.c: Include <assuan.h>, not "assuan.h".
    Replace ASSUAN_General_Error, etc. with gpg_error or
    gpg_error_from_syserror.
    * pinentry/pinentry-curses.c: Likewise.
    * pinentry/pinentry.c: Likewise.
    (pinentry_assuan_reset_handler): Change return type to gpg_error_t.
    Change type of argument CTX from ASSUAN_CONTEXT to assuan_context_t.
    Return 0.
    (pinentry_inq_quality): Change variable CTX's type from ASSUAN_CONTEXT
    to assuan_context_t.
    (assuan_malloc_hooks): New variable.
    (pinentry_init): Call gpgrt_check_version.  Change use of
    assuan_set_malloc_hooks to match libassuan's semantics.
    (option_handler): Return a gpg_error_t, not an int.  Replace use of
    ASSUAN_Out_Of_Core, etc. with gpg_error or gpg_error_from_syserror.
    (cmd_setdesc): Return a gpg_error_t, not an int.  Change argument
    CTX's type from ASSUAN_CONTEXT to assuan_context_t.  Replace use of
    ASSUAN_Out_Of_Core, etc. with gpg_error or gpg_error_from_syserror.
    GPG_ERR_ENOMEM), etc.
    (cmd_setprompt): Likewise.
    (cmd_setkeyinfo): Likewise.
    (cmd_setrepeat): Likewise.
    (cmd_setrepeaterror): Likewise.
    (cmd_seterror): Likewise.
    (cmd_setok): Likewise.
    (cmd_setnotok): Likewise.
    (cmd_setcancel): Likewise.
    (cmd_settimeout): Likewise.
    (cmd_settitle): Likewise.
    (cmd_setqualitybar): Likewise.
    (cmd_setqualitybar_tt): Likewise.
    (cmd_getpin): Likewise.
    (cmd_confirm): Likewise.
    (cmd_message): Likewise.
    (cmd_getinfo): Likewise.
    (cmd_clear_passphrase): Likewise.
    (register_commands): Likewise.  Change use of assuan_register_command
    to match libassuan's semantics.
    (pinentry_loop2): Change variable RC's type from int to gpg_error_t.
    Change variable CTX's type from ASSUAN_CONTEXT to assuan_context_t.
    Use assuan_new to initialize CTX.  Change use of
    assuan_init_pipe_server to match libassuan's semantics.  Replace use
    of assuan_strerror with gpg_strerror.  Call assuan_release instead of
    assuan_deinit_server.

diff --git a/Makefile.am b/Makefile.am
index 177f37e..71f8541 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -64,7 +64,7 @@ else
 pinentry_w32 =
 endif
 
-SUBDIRS = assuan secmem pinentry ${pinentry_curses} ${pinentry_tty} \
+SUBDIRS = secmem pinentry ${pinentry_curses} ${pinentry_tty} \
 	${pinentry_gtk_2} ${pinentry_gnome_3} ${pinentry_qt4} \
 	${pinentry_w32} doc
 
diff --git a/assuan/ChangeLog-old b/assuan/ChangeLog-old
deleted file mode 100644
index 077831d..0000000
--- a/assuan/ChangeLog-old
+++ /dev/null
@@ -1,254 +0,0 @@
-2012-08-08  Werner Koch  <wk at gnupg.org>
-
-	NB: ChangeLog files are no longer manually maintained.  Starting
-	on August 8, 2012 we put change information only in the GIT commit
-	log, and generate a top-level ChangeLog file from logs at "make
-	dist".  See doc/HACKING for details.
-
-2008-02-14  Werner Koch  <wk at g10code.com>
-
-	* assuan.h (ASSUAN_Parameter_Error): Add new alias.
-
-2008-01-10  Marcus Brinkmann  <marcus at g10code.de>
-
-	* assuan-handler.c (dispatch_command): Use Syntax_Error instead of
-	Invalid_Command.
-	* assuan.h (assuan_error_t): Change all error codes to gpg-error
-	codes.
-
-2004-12-22  Werner Koch  <wk at g10code.com>
-
-	* assuan.h (assuan_error_t, assuan_context_t): New aliases.
-	* assuan-buffer.c (readline): Renamed EOF to ISEOF to avoid
-	compiler warnings.
-
-2004-04-20  Werner Koch  <wk at gnupg.org>
-
-	* mkerrors: Add missing last LF.
-
-2004-01-30  Werner Koch  <wk at gnupg.org>
-
-	* assuan-inquire.c, assuan-connect.c, assuan-client.c
-	* assuan-socket-server.c, assuan-pipe-connect.c
-	* assuan-socket-connect.c: Removed.
-	* assuan-handler.c (assuan_get_data_fp): Removed.
-
-2003-12-23  Werner Koch  <wk at gnupg.org>
-
-	* Makefile.am (EXTRA_DIST): Added Manifest.
-	* Manifest: Added.
-
-2003-12-22  Werner Koch  <wk at gnupg.org>
-
-	* assuan.h (ASSUAN_Locale_Problem): Added.
-
-2002-04-04  Werner Koch  <wk at gnupg.org>
-
-	* assuan-buffer.c (my_log_prefix): New.  Use it for all i/o debug
-	output.
-
-2002-03-06  Werner Koch  <wk at gnupg.org>
-
-	* assuan-client.c (_assuan_read_from_server): Detect END.
-	(assuan_transact): Pass it to the data callback.
-
-2002-02-27  Werner Koch  <wk at gnupg.org>
-
-	* assuan-client.c (assuan_transact): Add 2 more arguments to
-	support status lines. Passing NULL yields the old behaviour.
-
-	* assuan-handler.c (process_request): Flush data lines send
-	without using the data fp.
-
-2002-02-14  Werner Koch  <wk at gnupg.org>
-
-	* assuan-inquire.c (assuan_inquire): Check for a cancel command
-	and return ASSUAN_Canceled.  Allow for non-data inquiry.
-
-	* assuan.h: Add a few token specific error codes.
-
-2002-02-13  Werner Koch  <wk at gnupg.org>
-
-	* assuan-defs.h (assuan_context_s): New var CLIENT_PID.
-	* assuan-pipe-server.c (_assuan_new_context): set default value.
-	* assuan-socket-server.c (accept_connection): get the actual pid.
-
-2002-02-12  Werner Koch  <wk at gnupg.org>
-
-	* assuan-buffer.c (writen,readline) [USE_GNU_PT]: Use pth_read/write.
-	* assuan-socket-server.c (accept_connection) [USE_GNU_PTH]: Ditto.
-
-2002-02-01  Marcus Brinkmann  <marcus at g10code.de>
-
-	* Makefile.am (MOSTLYCLEANFILES): New variable.
-
-2002-01-23  Werner Koch  <wk at gnupg.org>
-
-	* assuan-socket-connect.c (LOGERRORX): and removed typo.
-
-2002-01-22  Marcus Brinkmann  <marcus at g10code.de>
-
-	* assuan-socket-connect.c (LOGERRORX): Reverse arguments to fputs.
-
-2002-01-21  Werner Koch  <wk at gnupg.org>
-
-	* assuan-connect.c: Move all except assuan_get_pid to...
-	* assuan-pipe-connect.c: this.
-	(assuan_pipe_disconnect): Removed.
-	(do_finish, do_deinit): New
-	(assuan_pipe_connect): and set them into the context.
-	* assuan-socket-connect.c: New.
-
-	* assuan-util.c (_assuan_log_sanitized_string): New.
-
-	* assuan-pipe-server.c (assuan_init_pipe_server): Factored most
-	code out to ...
-	(_assuan_new_context): new func.
-	(_assuan_release_context): New
-	* assuan-connect.c (assuan_pipe_connect): Use the new functions.
-
-2002-01-20  Werner Koch  <wk at gnupg.org>
-
-	* assuan.h: Added Invalid Option error code.
-
-	* assuan-handler.c (std_handler_option): New.
-	(std_cmd_tbl): Add OPTION as standard command.
-	(assuan_register_option_handler): New.
-	(dispatch_command): Use case insensitive matching as a fallback.
-	(my_strcasecmp): New.
-
-2002-01-19  Werner Koch  <wk at gnupg.org>
-
-	* assuan-buffer.c (_assuan_read_line): Add output logging.
-	(assuan_write_line): Ditto.
-	(_assuan_cookie_write_data): Ditto.
-	(_assuan_cookie_write_flush): Ditto.
-	* assuan-util.c (_assuan_log_print_buffer): New.
-	(assuan_set_log_stream): New.
-	(assuan_begin_confidential): New.
-	(assuan_end_confidential): New.
-
-	* assuan-defs.h: Add a few handler variables.
-	* assuan-pipe-server.c (assuan_deinit_pipe_server): Removed.
-	(deinit_pipe_server): New.
-	(assuan_deinit_server): New.  Changed all callers to use this.
-	* assuan-listen.c (assuan_accept): Use the accept handler.
-	* assuan-handler.c (process_request): Use the close Handler.
-	* assuan-socket-server.c: New.
-
-2002-01-14  Werner Koch  <wk at gnupg.org>
-
-	* assuan-client.c (_assuan_read_from_server): Skip spaces after
-	the keyword.
-
-2002-01-03  Werner Koch  <wk at gnupg.org>
-
-	* assuan-handler.c (assuan_set_okay_line): New.
-	(process_request): And use it here.
-
-2002-01-02  Werner Koch  <wk at gnupg.org>
-
-	* assuan-inquire.c (init_membuf,put_membuf,get_membuf): Apply a
-	hidden 0 behind the buffer so that the buffer can be used as a
-	string in certain contexts.
-
-2001-12-14  Marcus Brinkmann  <marcus at g10code.de>
-
-	* assuan-connect.c (assuan_pipe_connect): New argument
-	FD_CHILD_LIST.  Don't close those fds.
-	* assuan.h: Likewise for prototype.
-
-2001-12-14  Werner Koch  <wk at gnupg.org>
-
-	* assuan-listen.c (assuan_close_input_fd): New.
-	(assuan_close_output_fd): New.
-	* assuan-handler.c (std_handler_reset): Always close them after a
-	reset command.
-	(std_handler_bye): Likewise.
-
-2001-12-14  Marcus Brinkmann  <marcus at g10code.de>
-
-	* assuan-buffer.c (_assuan_read_line): New variable ATTICLEN, use
-	it to save the length of the attic line.
-	Rediddle the code a bit to make it more clear what happens.
-
-2001-12-14  Marcus Brinkmann  <marcus at g10code.de>
-
-	* assuan-defs.h (LINELENGTH): Define as ASSUAN_LINELENGTH.
-	assuan.h: Define ASSUAN_LINELENGTH.
-
-2001-12-13  Marcus Brinkmann  <marcus at g10code.de>
-
-	* assuan-buffer.c (assuan_read_line): Fix order of execution to
-	get correct return values.
-
-2001-12-13  Werner Koch  <wk at gnupg.org>
-
-	* assuan-handler.c (assuan_get_active_fds): Fixed silly bug,
-	pretty obvious that nobody ever tested this function.
-
-2001-12-12  Werner Koch  <wk at gnupg.org>
-
-	* assuan-connect.c (assuan_pipe_connect): Implemented the inital
-	handshake.
-	* assuan-client.c (read_from_server): Renamed to
-	(_assuan_read_from_server): this and made external.
-
-	* assuan-listen.c (assuan_set_hello_line): New.
-	(assuan_accept): Use a custom hello line is available.
-
-	* assuan-buffer.c (assuan_read_line): New.
-	(assuan_pending_line): New.
-	(_assuan_write_line): Renamed to ..
-	(assuan_write_line): this, made public and changed all callers.
-
-2001-12-04  Werner Koch  <wk at gnupg.org>
-
-	* assuan-connect.c (assuan_pipe_connect): Add more error reporting.
-	* assuan-client.c: New.
-
-	* assuan-inquire.c: New.
-	* assuan-handler.c (process_request): Check for nested invocations.
-
-2001-11-27  Werner Koch  <wk at gnupg.org>
-
-	* assuan-handler.c (assuan_register_input_notify): New.
-	(assuan_register_output_notify): New.
-
-2001-11-26  Werner Koch  <wk at gnupg.org>
-
-	* assuan.h: Added more status codes.
-
-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.
-	(assuan_process): Moved bulk of function to ..
-	(process_request): .. new.
-	(assuan_process_next): One shot version of above.
-	(assuan_get_active_fds): New.
-
-2001-11-24  Werner Koch  <wk at gnupg.org>
-
-	* assuan-connect.c (assuan_get_pid): New.
-
-	* assuan-buffer.c (_assuan_read_line): Deal with reads of more
-	than a line.
-	* assuan-defs.h: Add space in the context for this.
-
-
-     ************************************************************
-     * Please note that this is a stripped down Assuan version. *
-     ************************************************************
-
- Copyright 2001, 2002, 2004 Free Software Foundation, Inc.
-
- This file is free software; as a special exception the author gives
- unlimited permission to copy and/or distribute it, with or without
- modifications, as long as this notice is preserved.
-
- This file is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/assuan/Makefile.am b/assuan/Makefile.am
deleted file mode 100644
index 2553f3e..0000000
--- a/assuan/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-# Assuan Makefile for test purposes
-# Copyright (C) 2001 Free Software Foundation, Inc.
-#
-# This file is part of GnuPG.
-#
-# GnuPG is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GnuPG is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-## Process this file with automake to produce Makefile.in
-
-EXTRA_DIST = mkerrors ChangeLog-old
-AM_CPPFLAGS = -I.. -I$(top_srcdir)/include
-BUILT_SOURCES = assuan-errors.c
-MOSTLYCLEANFILES = assuan-errors.c
-
-noinst_LIBRARIES = libassuan.a
-
-
-#libassuan_a_LDFLAGS =
-libassuan_a_SOURCES = \
-	assuan.h \
-	assuan-defs.h \
-	assuan-util.c \
-	assuan-errors.c \
-	assuan-buffer.c \
-	assuan-handler.c \
-	assuan-listen.c \
-	assuan-pipe-server.c
-
-
-assuan-errors.c : assuan.h
-	$(srcdir)/mkerrors < $(srcdir)/assuan.h > assuan-errors.c
diff --git a/assuan/README.1st b/assuan/README.1st
deleted file mode 100644
index bb52959..0000000
--- a/assuan/README.1st
+++ /dev/null
@@ -1 +0,0 @@
-Please don't modify it here but in the copy which comes with GnuPG.
\ No newline at end of file
diff --git a/assuan/assuan-buffer.c b/assuan/assuan-buffer.c
deleted file mode 100644
index 363d6cf..0000000
--- a/assuan/assuan-buffer.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/* assuan-buffer.c - read and send data
- *	Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#ifndef HAVE_W32CE_SYSTEM
-# include <errno.h>
-#endif
-#include <unistd.h>
-#include <assert.h>
-#ifdef USE_GNU_PTH
-# include <pth.h>
-#endif
-#ifdef HAVE_W32CE_SYSTEM
-# include <windows.h>
-#endif
-
-#include "assuan-defs.h"
-
-#ifdef HAVE_JNLIB_LOGGING
-#include "../jnlib/logging.h"
-#endif
-
-#ifdef HAVE_W32CE_SYSTEM
-const char *
-strerror (int e)
-{
-  return "error";
-}
-static int errno;
-#endif
-
-
-static const char *
-my_log_prefix (void)
-{
-#ifdef HAVE_JNLIB_LOGGING
-  return log_get_prefix (NULL);
-#else
-  return "";
-#endif
-}
-
-
-static int
-writen ( int fd, const char *buffer, size_t length )
-{
-  while (length)
-    {
-      int nwritten;
-#ifdef HAVE_W32CE_SYSTEM
-      do 
-        {
-          if (!WriteFile ((HANDLE)fd, buffer, length, &nwritten, NULL))
-            nwritten = -1;
-        }
-      while (nwritten == -1 && GetLastError () == ERROR_PIPE_NOT_CONNECTED);
-#elif defined(USE_GNU_PTH)
-      nwritten = pth_write (fd, buffer, length);
-#else
-      nwritten = write (fd, buffer, length);
-#endif
-      if (nwritten < 0)
-        {
-#ifndef HAVE_W32CE_SYSTEM
-          if (errno == EINTR)
-            continue;
-#endif
-          return -1; /* write error */
-        }
-      length -= nwritten;
-      buffer += nwritten;
-    }
-  return 0;  /* okay */
-}
-
-/* read an entire line */
-static int
-readline (int fd, char *buf, size_t buflen, int *r_nread, int *iseof)
-{
-  size_t nleft = buflen; char *p;
-
-  *iseof = 0;
-  *r_nread = 0;
-  while (nleft > 0)
-    {
-      int n;
-#ifdef HAVE_W32CE_SYSTEM
-      do
-        {
-          if (!ReadFile ((HANDLE)fd, buf, nleft, &n, NULL))
-            n = -1;
-        }
-      while (n == -1 && GetLastError () == ERROR_PIPE_NOT_CONNECTED);
-#elif defined(USE_GNU_PTH)
-      n = pth_read (fd, buf, nleft);
-#else
-      n = read (fd, buf, nleft);
-#endif
-      if (n < 0)
-        {
-#ifndef HAVE_W32CE_SYSTEM
-          if (errno == EINTR)
-            continue;
-#endif
-          return -1; /* read error */
-        }
-      else if (!n)
-        {
-          *iseof = 1;
-          break; /* allow incomplete lines */
-        }
-      p = buf;
-      nleft -= n;
-      buf += n;
-      *r_nread += n;
-      
-      for (; n && *p != '\n'; n--, p++)
-        ;
-      if (n)
-        break; /* at least one full line available - that's enough for now */
-    }
-
-  return 0;
-}
-
-
-int
-_assuan_read_line (ASSUAN_CONTEXT ctx)
-{
-  char *line = ctx->inbound.line;
-  int n, nread, atticlen;
-  int rc;
-
-  if (ctx->inbound.eof)
-    return -1;
-
-  atticlen = ctx->inbound.attic.linelen;
-  if (atticlen)
-    {
-      memcpy (line, ctx->inbound.attic.line, atticlen);
-      ctx->inbound.attic.linelen = 0;
-      for (n=0; n < atticlen && line[n] != '\n'; n++)
-        ;
-      if (n < atticlen)
-	{
-	  rc = 0; /* found another line in the attic */
-	  nread = atticlen;
-	  atticlen = 0;
-	}
-      else
-        { /* read the rest */
-          assert (atticlen < LINELENGTH);
-          rc = readline (ctx->inbound.fd, line + atticlen,
-			 LINELENGTH - atticlen, &nread, &ctx->inbound.eof);
-        }
-    }
-  else
-    rc = readline (ctx->inbound.fd, line, LINELENGTH,
-                   &nread, &ctx->inbound.eof);
-  if (rc)
-    {
-      if (ctx->log_fp)
-        fprintf (ctx->log_fp, "%s[%p] <- [Error: %s]\n",
-                 my_log_prefix (), ctx, strerror (errno)); 
-      return ASSUAN_Read_Error;
-    }
-  if (!nread)
-    {
-      assert (ctx->inbound.eof);
-      if (ctx->log_fp)
-        fprintf (ctx->log_fp, "%s[%p] <- [EOF]\n", my_log_prefix (),ctx); 
-      return -1; 
-    }
-
-  ctx->inbound.attic.pending = 0;
-  nread += atticlen;
-  for (n=0; n < nread; n++)
-    {
-      if (line[n] == '\n')
-        {
-          if (n+1 < nread)
-            {
-              char *s, *d;
-              int i;
-
-              n++;
-              /* we have to copy the rest because the handlers are
-                 allowed to modify the passed buffer */
-              for (d=ctx->inbound.attic.line, s=line+n, i=nread-n; i; i--)
-                {
-                  if (*s=='\n')
-                    ctx->inbound.attic.pending = 1;
-                  *d++ = *s++;
-                }
-              ctx->inbound.attic.linelen = nread-n;
-              n--;
-            }
-          if (n && line[n-1] == '\r')
-            n--;
-          line[n] = 0;
-          ctx->inbound.linelen = n;
-          if (ctx->log_fp)
-            {
-              fprintf (ctx->log_fp, "%s[%p] <- ", my_log_prefix (), ctx); 
-              if (ctx->confidential)
-                fputs ("[Confidential data not shown]", ctx->log_fp);
-              else
-                _assuan_log_print_buffer (ctx->log_fp, 
-                                          ctx->inbound.line,
-                                          ctx->inbound.linelen);
-              putc ('\n', ctx->log_fp);
-            }
-          return 0;
-        }
-    }
-
-  if (ctx->log_fp)
-    fprintf (ctx->log_fp, "%s[%p] <- [Invalid line]\n", my_log_prefix (), ctx);
-  *line = 0;
-  ctx->inbound.linelen = 0;
-  return ctx->inbound.eof? ASSUAN_Line_Not_Terminated : ASSUAN_Line_Too_Long;
-}
-
-
-/* Read the next line from the client or server and return a pointer
-   to a buffer with holding that line.  linelen returns the length of
-   the line.  This buffer is valid until another read operation is
-   done on this buffer.  The caller is allowed to modify this buffer.
-   He should only use the buffer if the function returns without an
-   error.
-
-   Returns: 0 on success or an assuan error code
-   See also: assuan_pending_line().
-*/
-AssuanError
-assuan_read_line (ASSUAN_CONTEXT ctx, char **line, size_t *linelen)
-{
-  AssuanError err;
-
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-
-  err = _assuan_read_line (ctx);
-  *line = ctx->inbound.line;
-  *linelen = ctx->inbound.linelen;
-  return err;
-}
-
-
-/* Return true when a full line is pending for a read, without the need
-   for actual IO */
-int
-assuan_pending_line (ASSUAN_CONTEXT ctx)
-{
-  return ctx && ctx->inbound.attic.pending;
-}
-
-
-AssuanError 
-assuan_write_line (ASSUAN_CONTEXT ctx, const char *line )
-{
-  int rc;
-  
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-
-  /* fixme: we should do some kind of line buffering */
-  if (ctx->log_fp)
-    {
-      fprintf (ctx->log_fp, "%s[%p] -> ", my_log_prefix (), ctx); 
-      if (ctx->confidential)
-        fputs ("[Confidential data not shown]", ctx->log_fp);
-      else
-        _assuan_log_print_buffer (ctx->log_fp, 
-                                  line, strlen (line));
-      putc ('\n', ctx->log_fp);
-    }
-
-  rc = writen (ctx->outbound.fd, line, strlen(line));
-  if (rc)
-    rc = ASSUAN_Write_Error;
-  if (!rc)
-    {
-      rc = writen (ctx->outbound.fd, "\n", 1);
-      if (rc)
-        rc = ASSUAN_Write_Error;
-    }
-
-  return rc;
-}
-
-
-

-/* Write out the data in buffer as datalines with line wrapping and
-   percent escaping.  This fucntion is used for GNU's custom streams */
-int
-_assuan_cookie_write_data (void *cookie, const char *buffer, size_t size)
-{
-  ASSUAN_CONTEXT ctx = cookie;
-  char *line;
-  size_t linelen;
-
-  if (ctx->outbound.data.error)
-    return 0;
-
-  line = ctx->outbound.data.line;
-  linelen = ctx->outbound.data.linelen;
-  line += linelen;
-  while (size)
-    {
-      /* insert data line header */
-      if (!linelen)
-        {
-          *line++ = 'D';
-          *line++ = ' ';
-          linelen += 2;
-        }
-      
-      /* copy data, keep some space for the CRLF and to escape one character */
-      while (size && linelen < LINELENGTH-2-2)
-        {
-          if (*buffer == '%' || *buffer == '\r' || *buffer == '\n')
-            {
-              sprintf (line, "%%%02X", *(unsigned char*)buffer);
-              line += 3;
-              linelen += 3;
-              buffer++;
-            }
-          else
-            {
-              *line++ = *buffer++;
-              linelen++;
-            }
-          size--;
-        }
-      
-      if (linelen >= LINELENGTH-2-2)
-        {
-          if (ctx->log_fp)
-            {
-              fprintf (ctx->log_fp, "%s[%p] -> ", my_log_prefix (), ctx); 
-              if (ctx->confidential)
-                fputs ("[Confidential data not shown]", ctx->log_fp);
-              else 
-                _assuan_log_print_buffer (ctx->log_fp, 
-                                          ctx->outbound.data.line,
-                                          linelen);
-              putc ('\n', ctx->log_fp);
-            }
-          *line++ = '\n';
-          linelen++;
-          if (writen (ctx->outbound.fd, ctx->outbound.data.line, linelen))
-            {
-              ctx->outbound.data.error = ASSUAN_Write_Error;
-              return 0;
-            }
-          line = ctx->outbound.data.line;
-          linelen = 0;
-        }
-    }
-
-  ctx->outbound.data.linelen = linelen;
-  return 0;
-}
-
-
-/* Write out any buffered data 
-   This fucntion is used for GNU's custom streams */
-int
-_assuan_cookie_write_flush (void *cookie)
-{
-  ASSUAN_CONTEXT ctx = cookie;
-  char *line;
-  size_t linelen;
-
-  if (ctx->outbound.data.error)
-    return 0;
-
-  line = ctx->outbound.data.line;
-  linelen = ctx->outbound.data.linelen;
-  line += linelen;
-  if (linelen)
-    {
-      if (ctx->log_fp)
-        {
-          fprintf (ctx->log_fp, "%s[%p] -> ", my_log_prefix (), ctx); 
-          if (ctx->confidential)
-            fputs ("[Confidential data not shown]", ctx->log_fp);
-          else
-            _assuan_log_print_buffer (ctx->log_fp, 
-                                      ctx->outbound.data.line,
-                                      linelen);
-          putc ('\n', ctx->log_fp);
-            }
-      *line++ = '\n';
-      linelen++;
-      if (writen (ctx->outbound.fd, ctx->outbound.data.line, linelen))
-        {
-          ctx->outbound.data.error = ASSUAN_Write_Error;
-          return 0;
-        }
-      ctx->outbound.data.linelen = 0;
-    }
-  return 0;
-}
-
-
-/**
- * assuan_send_data:
- * @ctx: An assuan context
- * @buffer: Data to send or NULL to flush
- * @length: length of the data to send/
- * 
- * This function may be used by the server or the client to send data
- * lines.  The data will be escaped as required by the Assuan protocol
- * and may get buffered until a line is full.  To force sending the
- * data out @buffer may be passed as NULL (in which case @length must
- * also be 0); however when used by a client this flush operation does
- * also send the terminating "END" command to terminate the reponse on
- * a INQUIRE response.  However, when assuan_transact() is used, this
- * function takes care of sending END itself.
- * 
- * Return value: 0 on success or an error code
- **/
-

-AssuanError
-assuan_send_data (ASSUAN_CONTEXT ctx, const void *buffer, size_t length)
-{
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-  if (!buffer && length)
-    return ASSUAN_Invalid_Value;
-
-  if (!buffer)
-    { /* flush what we have */
-      _assuan_cookie_write_flush (ctx);
-      if (ctx->outbound.data.error)
-        return ctx->outbound.data.error;
-      if (!ctx->is_server)
-        return assuan_write_line (ctx, "END");
-    }
-  else
-    {
-      _assuan_cookie_write_data (ctx, buffer, length);
-      if (ctx->outbound.data.error)
-        return ctx->outbound.data.error;
-    }
-
-  return 0;
-}
-
-
-
-
diff --git a/assuan/assuan-defs.h b/assuan/assuan-defs.h
deleted file mode 100644
index 6c502bf..0000000
--- a/assuan/assuan-defs.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/* assuan-defs.c - Internal definitions to Assuan
- *	Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#ifndef ASSUAN_DEFS_H
-#define ASSUAN_DEFS_H
-
-#include <sys/types.h>
-#include "assuan.h"
-
-#define LINELENGTH ASSUAN_LINELENGTH
-
-struct cmdtbl_s {
-  const char *name;
-  int cmd_id;
-  int (*handler)(ASSUAN_CONTEXT, char *line);
-};
-
-struct assuan_context_s {
-  AssuanError err_no;
-  const char *err_str;
-  int os_errno;  /* last system error number used with certain error codes*/
-
-  int confidential;
-  int is_server;  /* set if this is context belongs to a server */
-  int in_inquire;
-  char *hello_line;
-  char *okay_line; /* see assan_set_okay_line() */
-  
-  void *user_pointer;  /* for assuan_[gs]et_pointer () */
-
-  FILE *log_fp;
-
-  struct {
-    int fd;
-    int eof;
-    char line[LINELENGTH];
-    int linelen;  /* w/o CR, LF - might not be the same as
-                     strlen(line) due to embedded nuls. However a nul
-                     is always written at this pos */
-    struct {
-      char line[LINELENGTH];
-      int linelen ;
-      int pending; /* i.e. at least one line is available in the attic */
-    } attic;
-  } inbound;
-
-  struct {
-    int fd;
-    struct {
-      FILE *fp;
-      char line[LINELENGTH];
-      int linelen; 
-      int error;
-    } data; 
-  } outbound;
-
-  int pipe_mode;  /* We are in pipe mode, i.e. we can handle just one
-                     connection and must terminate then */
-  pid_t pid;	  /* In pipe mode, the pid of the child server process.  
-                     In socket mode, the pid of the server */
-  int listen_fd;  /* The fd we are listening on (used by socket servers) */
-
-  pid_t client_pid; /* for a socket server the PID of the client or -1
-                       if not available */
-
-  void (*deinit_handler)(ASSUAN_CONTEXT);  
-  int (*accept_handler)(ASSUAN_CONTEXT);
-  int (*finish_handler)(ASSUAN_CONTEXT);
-
-  struct cmdtbl_s *cmdtbl;
-  size_t cmdtbl_used; /* used entries */
-  size_t cmdtbl_size; /* allocated size of table */
-
-  void (*bye_notify_fnc)(ASSUAN_CONTEXT);
-  void (*reset_notify_fnc)(ASSUAN_CONTEXT);
-  void (*cancel_notify_fnc)(ASSUAN_CONTEXT);
-  int  (*option_handler_fnc)(ASSUAN_CONTEXT,const char*, const char*);
-  void (*input_notify_fnc)(ASSUAN_CONTEXT, const char *);
-  void (*output_notify_fnc)(ASSUAN_CONTEXT, const char *);
-
-  int input_fd;   /* set by INPUT command */
-  int output_fd;  /* set by OUTPUT command */
-
-};
-
-
-/*-- assuan-pipe-server.c --*/
-int _assuan_new_context (ASSUAN_CONTEXT *r_ctx);
-void _assuan_release_context (ASSUAN_CONTEXT ctx);
-
-
-/*-- assuan-handler.c --*/
-int _assuan_register_std_commands (ASSUAN_CONTEXT ctx);
-
-/*-- assuan-buffer.c --*/
-int _assuan_read_line (ASSUAN_CONTEXT ctx);
-int _assuan_cookie_write_data (void *cookie, const char *buffer, size_t size);
-int _assuan_cookie_write_flush (void *cookie);
-
-/*-- assuan-client.c --*/
-AssuanError _assuan_read_from_server (ASSUAN_CONTEXT ctx, int *okay, int *off);
-
-
-/*-- assuan-util.c --*/
-void *_assuan_malloc (size_t n);
-void *_assuan_calloc (size_t n, size_t m);
-void *_assuan_realloc (void *p, size_t n);
-void  _assuan_free (void *p);
-
-#define xtrymalloc(a)    _assuan_malloc ((a))
-#define xtrycalloc(a,b)  _assuan_calloc ((a),(b))
-#define xtryrealloc(a,b) _assuan_realloc((a),(b))
-#define xfree(a)         _assuan_free ((a))
-
-#define set_error(c,e,t) assuan_set_error ((c), ASSUAN_ ## e, (t))
-
-void _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t  length);
-void _assuan_log_sanitized_string (const char *string);
-
-
-#endif /*ASSUAN_DEFS_H*/
-
diff --git a/assuan/assuan-handler.c b/assuan/assuan-handler.c
deleted file mode 100644
index aadad21..0000000
--- a/assuan/assuan-handler.c
+++ /dev/null
@@ -1,672 +0,0 @@
-/* assuan-handler.c - dispatch commands
- *	Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "assuan-defs.h"
-
-#define spacep(p)  (*(p) == ' ' || *(p) == '\t')
-#define digitp(a) ((a) >= '0' && (a) <= '9')
-
-
-static int
-dummy_handler (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)line;
-  return set_error (ctx, Server_Fault, "no handler registered");
-}
-
-
-static int
-std_handler_nop (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)ctx;
-  (void)line;
-  return 0; /* okay */
-}
-
-static int
-std_handler_cancel (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)line;
-  if (ctx->cancel_notify_fnc)
-    ctx->cancel_notify_fnc (ctx);
-  return set_error (ctx, Not_Implemented, NULL);
-}
-
-static int
-std_handler_option (ASSUAN_CONTEXT ctx, char *line)
-{
-  char *key, *value, *p;
-
-  for (key=line; spacep (key); key++)
-    ;
-  if (!*key)
-    return set_error (ctx, Syntax_Error, "argument required");
-  if (*key == '=')
-    return set_error (ctx, Syntax_Error, "no option name given");
-  for (value=key; *value && !spacep (value) && *value != '='; value++)
-    ;
-  if (*value)
-    {
-      if (spacep (value))
-        *value++ = 0; /* terminate key */
-      for (; spacep (value); value++)
-        ;
-      if (*value == '=')
-        {
-          *value++ = 0; /* terminate key */
-          for (; spacep (value); value++)
-            ;
-          if (!*value)
-            return set_error (ctx, Syntax_Error, "option argument expected");
-        }
-      if (*value)
-        {
-          for (p = value + strlen(value) - 1; p > value && spacep (p); p--)
-            ;
-          if (p > value)
-            *++p = 0; /* strip trailing spaces */
-        }
-    }
-
-  if (*key == '-' && key[1] == '-' && key[2])
-    key += 2; /* the double dashes are optional */
-  if (*key == '-')
-    return set_error (ctx, Syntax_Error,
-                      "option should not begin with one dash");
-
-  if (ctx->option_handler_fnc)
-    return ctx->option_handler_fnc (ctx, key, value);
-  return 0;
-}
-
-static int
-std_handler_bye (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)line;
-  if (ctx->bye_notify_fnc)
-    ctx->bye_notify_fnc (ctx);
-  assuan_close_input_fd (ctx);
-  assuan_close_output_fd (ctx);
-  return -1; /* pretty simple :-) */
-}
-
-static int
-std_handler_auth (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)line;
-  return set_error (ctx, Not_Implemented, NULL);
-}
-
-static int
-std_handler_reset (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)line;
-  if (ctx->reset_notify_fnc)
-    ctx->reset_notify_fnc (ctx);
-  assuan_close_input_fd (ctx);
-  assuan_close_output_fd (ctx);
-  return 0;
-}
-
-static int
-std_handler_end (ASSUAN_CONTEXT ctx, char *line)
-{
-  (void)line;
-  return set_error (ctx, Not_Implemented, NULL);
-}
-
-static int
-parse_cmd_input_output (ASSUAN_CONTEXT ctx, char *line, int *rfd)
-{
-  char *endp;
-
-  if (strncmp (line, "FD=", 3))
-    return set_error (ctx, Syntax_Error, "FD=<n> expected");
-  line += 3;
-  if (!digitp (*line))
-    return set_error (ctx, Syntax_Error, "number required");
-  *rfd = strtoul (line, &endp, 10);
-  /* remove that argument so that a notify handler won't see it */
-  memset (line, ' ', endp? (endp-line):strlen(line));
-
-  if (*rfd == ctx->inbound.fd)
-    return set_error (ctx, Parameter_Conflict, "fd same as inbound fd");
-  if (*rfd == ctx->outbound.fd)
-    return set_error (ctx, Parameter_Conflict, "fd same as outbound fd");
-  return 0;
-}
-
-/* Format is INPUT FD=<n> */
-static int
-std_handler_input (ASSUAN_CONTEXT ctx, char *line)
-{
-  int rc, fd;
-
-  rc = parse_cmd_input_output (ctx, line, &fd);
-  if (rc)
-    return rc;
-  ctx->input_fd = fd;
-  if (ctx->input_notify_fnc)
-    ctx->input_notify_fnc (ctx, line);
-  return 0;
-}
-
-/* Format is OUTPUT FD=<n> */
-static int
-std_handler_output (ASSUAN_CONTEXT ctx, char *line)
-{
-  int rc, fd;
-
-  rc = parse_cmd_input_output (ctx, line, &fd);
-  if (rc)
-    return rc;
-  ctx->output_fd = fd;
-  if (ctx->output_notify_fnc)
-    ctx->output_notify_fnc (ctx, line);
-  return 0;
-}
-
-
-
-
-
-/* This is a table with the standard commands and handler for them.
-   The table is used to initialize a new context and assuciate strings
-   and handlers with cmd_ids */
-static struct {
-  const char *name;
-  int cmd_id;
-  int (*handler)(ASSUAN_CONTEXT, char *line);
-  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 },
-  { "OPTION", ASSUAN_CMD_OPTION, std_handler_option, 1 },
-  { "BYE",    ASSUAN_CMD_BYE,    std_handler_bye, 1 },
-  { "AUTH",   ASSUAN_CMD_AUTH,   std_handler_auth, 1 },
-  { "RESET",  ASSUAN_CMD_RESET,  std_handler_reset, 1 },
-  { "END",    ASSUAN_CMD_END,    std_handler_end, 1 },
-
-  { "INPUT",  ASSUAN_CMD_INPUT,  std_handler_input },
-  { "OUTPUT", ASSUAN_CMD_OUTPUT, std_handler_output },
-  { "OPTION", ASSUAN_CMD_OPTION, std_handler_option, 1 },
-  { NULL }
-};
-
-
-/**
- * assuan_register_command:
- * @ctx: the server context
- * @cmd_id: An ID value for the command
- * @cmd_name: A string with the command name
- * @handler: The handler function to be called
- *
- * Register a handler to be used for a given command.
- *
- * The @cmd_name must be %NULL or an empty string for all @cmd_ids
- * below %ASSUAN_CMD_USER because predefined values are used.
- *
- * Return value:
- **/
-int
-assuan_register_command (ASSUAN_CONTEXT ctx,
-                         int cmd_id, const char *cmd_name,
-                         int (*handler)(ASSUAN_CONTEXT, char *))
-{
-  int i;
-
-  if (cmd_name && !*cmd_name)
-    cmd_name = NULL;
-
-  if (cmd_id < ASSUAN_CMD_USER)
-    {
-      if (cmd_name)
-        return ASSUAN_Invalid_Value; /* must be NULL for these values*/
-
-      for (i=0; std_cmd_table[i].name; i++)
-        {
-          if (std_cmd_table[i].cmd_id == cmd_id)
-            {
-              cmd_name = std_cmd_table[i].name;
-              if (!handler)
-                handler = std_cmd_table[i].handler;
-              break;
-            }
-        }
-      if (!std_cmd_table[i].name)
-        return ASSUAN_Invalid_Value; /* not a pre-registered one */
-    }
-
-  if (!handler)
-    handler = dummy_handler;
-
-  if (!cmd_name)
-    return ASSUAN_Invalid_Value;
-
-/*    fprintf (stderr, "DBG-assuan: registering %d as `%s'\n", cmd_id, cmd_name); */
-
-  if (!ctx->cmdtbl)
-    {
-      ctx->cmdtbl_size = 50;
-      ctx->cmdtbl = xtrycalloc ( ctx->cmdtbl_size, sizeof *ctx->cmdtbl);
-      if (!ctx->cmdtbl)
-        return ASSUAN_Out_Of_Core;
-      ctx->cmdtbl_used = 0;
-    }
-  else if (ctx->cmdtbl_used >= ctx->cmdtbl_size)
-    {
-      struct cmdtbl_s *x;
-
-      x = xtryrealloc ( ctx->cmdtbl, (ctx->cmdtbl_size+10) * sizeof *x);
-      if (!x)
-        return ASSUAN_Out_Of_Core;
-      ctx->cmdtbl = x;
-      ctx->cmdtbl_size += 50;
-    }
-
-  ctx->cmdtbl[ctx->cmdtbl_used].name = cmd_name;
-  ctx->cmdtbl[ctx->cmdtbl_used].cmd_id = cmd_id;
-  ctx->cmdtbl[ctx->cmdtbl_used].handler = handler;
-  ctx->cmdtbl_used++;
-  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;
-}
-
-int
-assuan_register_option_handler (ASSUAN_CONTEXT ctx,
-                               int (*fnc)(ASSUAN_CONTEXT,
-                                          const char*, const char*))
-{
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-  ctx->option_handler_fnc = fnc;
-  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
-_assuan_register_std_commands (ASSUAN_CONTEXT ctx)
-{
-  int i, rc;
-
-  for (i=0; std_cmd_table[i].name; i++)
-    {
-      if (std_cmd_table[i].always)
-        {
-          rc = assuan_register_command (ctx, std_cmd_table[i].cmd_id,
-                                        NULL, NULL);
-          if (rc)
-            return rc;
-        }
-    }
-  return 0;
-}
-
-
-

-/* Process the special data lines.  The "D " has already been removed
-   from the line.  As all handlers this function may modify the line.  */
-static int
-handle_data_line (ASSUAN_CONTEXT ctx, char *line, int linelen)
-{
-  (void)line;
-  (void)linelen;
-  return set_error (ctx, Not_Implemented, NULL);
-}
-
-/* like ascii_strcasecmp but assume that B is already uppercase */
-static int
-my_strcasecmp (const char *a, const char *b)
-{
-    if (a == b)
-        return 0;
-
-    for (; *a && *b; a++, b++)
-      {
-	if (((*a >= 'a' && *a <= 'z')? (*a&~0x20):*a) != *b)
-	    break;
-      }
-    return *a == *b? 0 : (((*a >= 'a' && *a <= 'z')? (*a&~0x20):*a) - *b);
-}
-
-/* Parse the line, break out the command, find it in the command
-   table, remove leading and white spaces from the arguments, all the
-   handler with the argument line and return the error */
-static int
-dispatch_command (ASSUAN_CONTEXT ctx, char *line, int linelen)
-{
-  char *p;
-  const char *s;
-  int shift, i;
-
-  if (*line == 'D' && line[1] == ' ') /* divert to special handler */
-    return handle_data_line (ctx, line+2, linelen-2);
-
-  for (p=line; *p && *p != ' ' && *p != '\t'; p++)
-    ;
-  if (p==line)
-    return set_error (ctx, Syntax_Error, "leading white-space");
-  if (*p)
-    { /* Skip over leading WS after the keyword */
-      *p++ = 0;
-      while ( *p == ' ' || *p == '\t')
-        p++;
-    }
-  shift = p - line;
-
-  for (i=0; (s=ctx->cmdtbl[i].name); i++)
-    {
-      if (!strcmp (line, s))
-        break;
-    }
-  if (!s)
-    { /* and try case insensitive */
-      for (i=0; (s=ctx->cmdtbl[i].name); i++)
-        {
-          if (!my_strcasecmp (line, s))
-            break;
-        }
-    }
-  if (!s)
-    return set_error (ctx, Unknown_Command, NULL);
-  line += shift;
-  linelen -= shift;
-
-/*    fprintf (stderr, "DBG-assuan: processing %s `%s'\n", s, line); */
-  return ctx->cmdtbl[i].handler (ctx, line);
-}
-
-
-
-

-static int
-process_request (ASSUAN_CONTEXT ctx)
-{
-  int rc;
-
-  if (ctx->in_inquire)
-    return ASSUAN_Nested_Commands;
-
-  rc = _assuan_read_line (ctx);
-  if (rc)
-    return rc;
-  if (*ctx->inbound.line == '#' || !ctx->inbound.linelen)
-    return 0; /* comment line - ignore */
-
-  ctx->outbound.data.error = 0;
-  ctx->outbound.data.linelen = 0;
-  /* dispatch command and return reply */
-  rc = dispatch_command (ctx, ctx->inbound.line, ctx->inbound.linelen);
-  /* check from data write errors */
-  if (ctx->outbound.data.fp)
-    { /* Flush the data lines */
-      fclose (ctx->outbound.data.fp);
-      ctx->outbound.data.fp = NULL;
-      if (!rc && ctx->outbound.data.error)
-        rc = ctx->outbound.data.error;
-    }
-  else /* flush any data send w/o using the data fp */
-    {
-      assuan_send_data (ctx, NULL, 0);
-      if (!rc && ctx->outbound.data.error)
-        rc = ctx->outbound.data.error;
-    }
-  /* Error handling */
-  if (!rc)
-    {
-      rc = assuan_write_line (ctx, ctx->okay_line? ctx->okay_line : "OK");
-    }
-  else if (rc == -1)
-    { /* No error checking because the peer may have already disconnect */
-      assuan_write_line (ctx, "OK closing connection");
-      ctx->finish_handler (ctx);
-    }
-  else
-    {
-      char errline[256];
-
-      if (rc < 100)
-        sprintf (errline, "ERR %d server fault (%.50s)",
-                 ASSUAN_Server_Fault, assuan_strerror (rc));
-      else
-        {
-          const char *text = ctx->err_no == rc? ctx->err_str:NULL;
-
-          sprintf (errline, "ERR %d %.50s%s%.100s",
-                   rc, assuan_strerror (rc), text? " - ":"", text?text:"");
-        }
-      rc = assuan_write_line (ctx, errline);
-    }
-
-  ctx->confidential = 0;
-  if (ctx->okay_line)
-    {
-      xfree (ctx->okay_line);
-      ctx->okay_line = NULL;
-    }
-  return rc;
-}
-
-/**
- * assuan_process:
- * @ctx: assuan context
- *
- * This fucntion is used to handle the assuan protocol after a
- * connection has been established using assuan_accept().  This is the
- * main protocol handler.
- *
- * Return value: 0 on success or an error code if the assuan operation
- * failed.  Note, that no error is returned for operational errors.
- **/
-int
-assuan_process (ASSUAN_CONTEXT ctx)
-{
-  int rc;
-
-  do {
-    rc = process_request (ctx);
-  } while (!rc);
-
-  if (rc == -1)
-    rc = 0;
-
-  return rc;
-}
-
-
-/**
- * assuan_process_next:
- * @ctx: Assuan context
- *
- * Same as assuan_process() but the user has to provide the outer
- * loop.  He should loop as long as the return code is zero and stop
- * otherwise; -1 is regular end.
- *
- * See also: assuan_get_active_fds()
- * Return value: -1 for end of server, 0 on success or an error code
- **/
-int
-assuan_process_next (ASSUAN_CONTEXT ctx)
-{
-  return process_request (ctx);
-}
-
-
-/**
- * assuan_get_active_fds:
- * @ctx: Assuan context
- * @what: 0 for read fds, 1 for write fds
- * @fdarray: Caller supplied array to store the FDs
- * @fdarraysize: size of that array
- *
- * Return all active filedescriptors for the given context.  This
- * function can be used to select on the fds and call
- * assuan_process_next() if there is an active one.  The first fd in
- * the array is the one used for the command connection.
- *
- * Note, that write FDs are not yet supported.
- *
- * Return value: number of FDs active and put into @fdarray or -1 on
- * error which is most likely a too small fdarray.
- **/
-int
-assuan_get_active_fds (ASSUAN_CONTEXT ctx, int what,
-                       int *fdarray, int fdarraysize)
-{
-  int n = 0;
-
-  if (!ctx || fdarraysize < 2 || what < 0 || what > 1)
-    return -1;
-
-  if (!what)
-    {
-      if (ctx->inbound.fd != -1)
-        fdarray[n++] = ctx->inbound.fd;
-    }
-  else
-    {
-      if (ctx->outbound.fd != -1)
-        fdarray[n++] = ctx->outbound.fd;
-      if (ctx->outbound.data.fp)
-        fdarray[n++] = fileno (ctx->outbound.data.fp);
-    }
-
-  return n;
-}
-
-
-/* Set the text used for the next OK reponse.  This string is
-   automatically reset to NULL after the next command. */
-AssuanError
-assuan_set_okay_line (ASSUAN_CONTEXT ctx, const char *line)
-{
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-  if (!line)
-    {
-      xfree (ctx->okay_line);
-      ctx->okay_line = NULL;
-    }
-  else
-    {
-      /* FIXME: we need to use gcry_is_secure() to test whether
-         we should allocate the entire line in secure memory */
-      char *buf = xtrymalloc (3+strlen(line)+1);
-      if (!buf)
-        return ASSUAN_Out_Of_Core;
-      strcpy (buf, "OK ");
-      strcpy (buf+3, line);
-      xfree (ctx->okay_line);
-      ctx->okay_line = buf;
-    }
-  return 0;
-}
-
-
-
-void
-assuan_write_status (ASSUAN_CONTEXT ctx, const char *keyword, const char *text)
-{
-  char buffer[256];
-  char *helpbuf;
-  size_t n;
-
-  if ( !ctx || !keyword)
-    return;
-  if (!text)
-    text = "";
-
-  n = 2 + strlen (keyword) + 1 + strlen (text) + 1;
-  if (n < sizeof (buffer))
-    {
-      strcpy (buffer, "S ");
-      strcat (buffer, keyword);
-      if (*text)
-        {
-          strcat (buffer, " ");
-          strcat (buffer, text);
-        }
-      assuan_write_line (ctx, buffer);
-    }
-  else if ( (helpbuf = xtrymalloc (n)) )
-    {
-      strcpy (helpbuf, "S ");
-      strcat (helpbuf, keyword);
-      if (*text)
-        {
-          strcat (helpbuf, " ");
-          strcat (helpbuf, text);
-        }
-      assuan_write_line (ctx, helpbuf);
-      xfree (helpbuf);
-    }
-}
diff --git a/assuan/assuan-listen.c b/assuan/assuan-listen.c
deleted file mode 100644
index db63ad2..0000000
--- a/assuan/assuan-listen.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* assuan-listen.c - Wait for a connection (server) 
- *	Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "assuan-defs.h"
-
-AssuanError
-assuan_set_hello_line (ASSUAN_CONTEXT ctx, const char *line)
-{
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-  if (!line)
-    {
-      xfree (ctx->hello_line);
-      ctx->hello_line = NULL;
-    }
-  else
-    {
-      char *buf = xtrymalloc (3+strlen(line)+1);
-      if (!buf)
-        return ASSUAN_Out_Of_Core;
-      strcpy (buf, "OK ");
-      strcpy (buf+3, line);
-      xfree (ctx->hello_line);
-      ctx->hello_line = buf;
-    }
-  return 0;
-}
-
-
-/**
- * assuan_accept:
- * @ctx: context
- * 
- * Cancel any existing connectiion and wait for a connection from a
- * client.  The initial handshake is performed which may include an
- * initial authentication or encryption negotiation.
- * 
- * Return value: 0 on success or an error if the connection could for
- * some reason not be established.
- **/
-AssuanError
-assuan_accept (ASSUAN_CONTEXT ctx)
-{
-  int rc;
-
-  if (!ctx)
-    return ASSUAN_Invalid_Value;
-
-  if (ctx->pipe_mode > 1)
-    return -1; /* second invocation for pipemode -> terminate */
-  ctx->finish_handler (ctx);
-
-  rc = ctx->accept_handler (ctx);
-  if (rc)
-    return rc;
-
-  /* send the hello */
-  rc = assuan_write_line (ctx, ctx->hello_line? ctx->hello_line
-                                              : "OK Your orders please");
-  if (rc)
-    return rc;
-  
-  if (ctx->pipe_mode)
-    ctx->pipe_mode = 2;
-  
-  return 0;
-}
-
-
-
-int
-assuan_get_input_fd (ASSUAN_CONTEXT ctx)
-{
-  return ctx? ctx->input_fd : -1;
-}
-
-
-int
-assuan_get_output_fd (ASSUAN_CONTEXT ctx)
-{
-  return ctx? ctx->output_fd : -1;
-}
-
-
-/* Close the fd descriptor set by the command INPUT FD=n.  We handle
-   this fd inside assuan so that we can do some initial checks */
-AssuanError
-assuan_close_input_fd (ASSUAN_CONTEXT ctx)
-{
-  if (!ctx || ctx->input_fd == -1)
-    return ASSUAN_Invalid_Value;
-  close (ctx->input_fd);
-  ctx->input_fd = -1;
-  return 0;
-}
-
-/* Close the fd descriptor set by the command OUTPUT FD=n.  We handle
-   this fd inside assuan so that we can do some initial checks */
-AssuanError
-assuan_close_output_fd (ASSUAN_CONTEXT ctx)
-{
-  if (!ctx || ctx->output_fd == -1)
-    return ASSUAN_Invalid_Value;
-
-  close (ctx->output_fd);
-  ctx->output_fd = -1;
-  return 0;
-}
-
diff --git a/assuan/assuan-pipe-server.c b/assuan/assuan-pipe-server.c
deleted file mode 100644
index c0d464f..0000000
--- a/assuan/assuan-pipe-server.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* assuan-pipe-server.c - Assuan server working over a pipe
- *	Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "assuan-defs.h"
-
-static void
-deinit_pipe_server (ASSUAN_CONTEXT ctx)
-{
-  (void)ctx;
-  /* nothing to do for this simple server */
-}
-
-static int
-accept_connection (ASSUAN_CONTEXT ctx)
-{
-  (void)ctx;
-  /* This is a NOP for a pipe server */
-  return 0;
-}
-
-static int
-finish_connection (ASSUAN_CONTEXT ctx)
-{
-  (void)ctx;
-  /* This is a NOP for a pipe server */
-  return 0;
-}
-
-
-/* Create a new context.  Note that the handlers are set up for a pipe
-   server/client - this way we don't need extra dummy functions */
-int
-_assuan_new_context (ASSUAN_CONTEXT *r_ctx)
-{
-  ASSUAN_CONTEXT ctx;
-  int rc;
-
-  *r_ctx = NULL;
-  ctx = xtrycalloc (1, sizeof *ctx);
-  if (!ctx)
-    return ASSUAN_Out_Of_Core;
-  ctx->input_fd = -1;
-  ctx->output_fd = -1;
-
-  ctx->inbound.fd = -1;
-  ctx->outbound.fd = -1;
-
-  ctx->listen_fd = -1;
-  ctx->client_pid = (pid_t)-1;
-  /* use the pipe server handler as a default */
-  ctx->deinit_handler = deinit_pipe_server;
-  ctx->accept_handler = accept_connection;
-  ctx->finish_handler = finish_connection;
-
-  rc = _assuan_register_std_commands (ctx);
-  if (rc)
-    xfree (ctx);
-  else
-    *r_ctx = ctx;
-  return rc;
-}
-
-
-
-int
-assuan_init_pipe_server (ASSUAN_CONTEXT *r_ctx, int filedes[2])
-{
-  int rc;
-
-  rc = _assuan_new_context (r_ctx);
-  if (!rc)
-    {
-      ASSUAN_CONTEXT ctx = *r_ctx;
-
-      ctx->is_server = 1;
-      ctx->inbound.fd = filedes[0];
-      ctx->outbound.fd = filedes[1];
-      ctx->pipe_mode = 1;
-    }
-  return rc;
-}
-
-
-void
-_assuan_release_context (ASSUAN_CONTEXT ctx)
-{
-  if (ctx)
-    {
-      xfree (ctx->hello_line);
-      xfree (ctx->okay_line);
-      xfree (ctx);
-    }
-}
-
-void
-assuan_deinit_server (ASSUAN_CONTEXT ctx)
-{
-  if (ctx)
-    {
-      /* We use this function pointer to avoid linking other server
-         when not needed but still allow for a generic deinit function */
-      ctx->deinit_handler (ctx);
-      ctx->deinit_handler = NULL;
-      _assuan_release_context (ctx);
-    }
-}
diff --git a/assuan/assuan-util.c b/assuan/assuan-util.c
deleted file mode 100644
index c2c899f..0000000
--- a/assuan/assuan-util.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* assuan-util.c - Utility functions for Assuan 
- *	Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "assuan-defs.h"
-
-#ifdef HAVE_JNLIB_LOGGING
-#include "../jnlib/logging.h"
-#endif
-
-
-static void *(*alloc_func)(size_t n) = malloc;
-static void *(*realloc_func)(void *p, size_t n) = realloc;
-static void (*free_func)(void*) = free;
-
-
-
-void
-assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
-                          void *(*new_realloc_func)(void *p, size_t n),
-                          void (*new_free_func)(void*) )
-{
-  alloc_func	    = new_alloc_func;
-  realloc_func      = new_realloc_func;
-  free_func	    = new_free_func;
-}
-
-void *
-_assuan_malloc (size_t n)
-{
-  return alloc_func (n);
-}
-
-void *
-_assuan_realloc (void *a, size_t n)
-{
-  return realloc_func (a, n);
-}
-
-void *
-_assuan_calloc (size_t n, size_t m)
-{
-  void *p = _assuan_malloc (n*m);
-  if (p)
-    memset (p, 0, n* m);
-  return p;
-}
-
-void
-_assuan_free (void *p)
-{
-  if (p)
-    free_func (p);
-}
-
-
-

-/* Store the error in the context so that the error sending function
-  can take out a descriptive text.  Inside the assuan code, use the
-  macro set_error instead of this function. */
-int
-assuan_set_error (ASSUAN_CONTEXT ctx, int err, const char *text)
-{
-  ctx->err_no = err;
-  ctx->err_str = text;
-  return err;
-}
-
-void
-assuan_set_pointer (ASSUAN_CONTEXT ctx, void *pointer)
-{
-  if (ctx)
-    ctx->user_pointer = pointer;
-}
-
-void *
-assuan_get_pointer (ASSUAN_CONTEXT ctx)
-{
-  return ctx? ctx->user_pointer : NULL;
-}
-
-
-void
-assuan_set_log_stream (ASSUAN_CONTEXT ctx, FILE *fp)
-{
-  if (ctx)
-    {
-      if (ctx->log_fp)
-        fflush (ctx->log_fp);
-      ctx->log_fp = fp;
-    }
-}
-
-
-void
-assuan_begin_confidential (ASSUAN_CONTEXT ctx)
-{
-  if (ctx)
-    {
-      ctx->confidential = 1;
-    }
-}
-
-void
-assuan_end_confidential (ASSUAN_CONTEXT ctx)
-{
-  if (ctx)
-    {
-      ctx->confidential = 0;
-    }
-}
-
-void
-_assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length)
-{
-  const unsigned char *s;
-  int n;
-
-  for (n=length,s=buffer; n; n--, s++)
-    {
-      if (*s < ' ' || (*s >= 0x7f && *s <= 0xa0))
-        break;
-    }
-  s = buffer;
-  if (!n && *s != '[')
-    fwrite (buffer, length, 1, fp);
-  else
-    {
-      putc ('[', fp);
-      for (n=0; n < length; n++, s++)
-          fprintf (fp, " %02x", *s);
-      putc (' ', fp);
-      putc (']', fp);
-    }
-}
-
-
-/* print a user supplied string after filtering out potential bad
-   characters*/
-void
-_assuan_log_sanitized_string (const char *string)
-{
-  const unsigned char *s = (const unsigned char*)string;
-#ifdef HAVE_JNLIB_LOGGING
-  FILE *fp = log_get_stream ();
-#else
-  FILE *fp = stderr;
-#endif
-
-  for (; *s; s++)
-    {
-      if (*s < 0x20 || (*s >= 0x7f && *s <= 0xa0))
-        {
-          putc ('\\', fp);
-          if (*s == '\n')
-            putc ('n', fp);
-          else if (*s == '\r')
-            putc ('r', fp);
-          else if (*s == '\f')
-            putc ('f', fp);
-          else if (*s == '\v')
-            putc ('v', fp);
-          else if (*s == '\b')
-            putc ('b', fp);
-          else if (!*s)
-            putc ('0', fp);
-          else
-            fprintf (fp, "x%02x", *s );
-	}
-      else
-        putc (*s, fp);
-    }
-}
-
-
diff --git a/assuan/assuan.h b/assuan/assuan.h
deleted file mode 100644
index 7087d7b..0000000
--- a/assuan/assuan.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/* assuan.c - Definitions for the Assuna protocol
- *	Copyright (C) 2001, 2002 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#ifndef ASSUAN_H
-#define ASSUAN_H
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
- }
-#endif
-#endif
-
-/* 5 is pinentry.  */
-#define ASSUAN_ERROR(code) ((5 << 24)  | code)
-
-typedef enum {
-  ASSUAN_No_Error = 0,
-  ASSUAN_General_Error = ASSUAN_ERROR (257),
-  ASSUAN_Out_Of_Core = ASSUAN_ERROR (86 | (1 << 15)),
-  ASSUAN_Invalid_Value = ASSUAN_ERROR (261),
-  ASSUAN_Timeout = ASSUAN_ERROR (62),
-  ASSUAN_Read_Error = ASSUAN_ERROR (270),  /* Not 100%, but sufficient here. */
-  ASSUAN_Write_Error = ASSUAN_ERROR (271), /* Not 100%, but sufficient here. */
-  ASSUAN_Problem_Starting_Server = ASSUAN_ERROR (269),
-  ASSUAN_Not_A_Server = ASSUAN_ERROR (267),
-  ASSUAN_Not_A_Client = ASSUAN_ERROR (268),
-  ASSUAN_Nested_Commands = ASSUAN_ERROR (264),
-  ASSUAN_Invalid_Response = ASSUAN_ERROR (260),
-  ASSUAN_No_Data_Callback = ASSUAN_ERROR (265),
-  ASSUAN_No_Inquire_Callback = ASSUAN_ERROR (266),
-  ASSUAN_Connect_Failed = ASSUAN_ERROR (259),
-  ASSUAN_Accept_Failed = ASSUAN_ERROR (258),
-
-  /* error codes above 99 are meant as status codes */
-  ASSUAN_Not_Implemented = ASSUAN_ERROR (69),
-  ASSUAN_Server_Fault    = ASSUAN_ERROR (80),
-  ASSUAN_Unknown_Command = ASSUAN_ERROR (275),
-  ASSUAN_Syntax_Error    = ASSUAN_ERROR (276),
-  ASSUAN_Parameter_Conflict = ASSUAN_ERROR (280),
-  ASSUAN_Line_Too_Long = ASSUAN_ERROR (263),
-  ASSUAN_Line_Not_Terminated = ASSUAN_ERROR (262),
-  ASSUAN_Canceled = ASSUAN_ERROR (99),
-  ASSUAN_Invalid_Option = ASSUAN_ERROR (174), /* GPG_ERR_UNKNOWN_OPTION */
-  ASSUAN_Locale_Problem = ASSUAN_ERROR (166),
-  ASSUAN_Not_Confirmed = ASSUAN_ERROR (114),
-  ASSUAN_Too_Short = ASSUAN_ERROR (66),
-  ASSUAN_ENOENT    = ASSUAN_ERROR (81 | (1 << 15)),
-  ASSUAN_ENOTTY    = ASSUAN_ERROR (102 | (1 << 15)),
-
-} assuan_error_t;
-
-#define ASSUAN_Parameter_Error ASSUAN_Parameter_Conflict
-
-
-typedef assuan_error_t AssuanError; /* Deprecated. */
-
-/* This is a list of pre-registered ASSUAN commands */
-typedef enum {
-  ASSUAN_CMD_NOP = 0,
-  ASSUAN_CMD_CANCEL,    /* cancel the current request */
-  ASSUAN_CMD_BYE,
-  ASSUAN_CMD_AUTH,
-  ASSUAN_CMD_RESET,
-  ASSUAN_CMD_OPTION,
-  ASSUAN_CMD_DATA,
-  ASSUAN_CMD_END,
-  ASSUAN_CMD_INPUT,
-  ASSUAN_CMD_OUTPUT,
-
-  ASSUAN_CMD_USER = 256  /* Other commands should be used with this offset*/
-} AssuanCommand;
-
-#define ASSUAN_LINELENGTH 1002 /* 1000 + [CR,]LF */
-
-struct assuan_context_s;
-typedef struct assuan_context_s *assuan_context_t;
-typedef struct assuan_context_s *ASSUAN_CONTEXT; /* Deprecated.  */
-
-/*-- assuan-handler.c --*/
-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_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_register_option_handler (ASSUAN_CONTEXT ctx,
-                                    int (*fnc)(ASSUAN_CONTEXT,
-                                               const char*, 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,
-                           int *fdarray, int fdarraysize);
-
-
-AssuanError assuan_set_okay_line (ASSUAN_CONTEXT ctx, const char *line);
-void assuan_write_status (ASSUAN_CONTEXT ctx,
-                          const char *keyword, const char *text);
-
-
-/*-- assuan-listen.c --*/
-AssuanError assuan_set_hello_line (ASSUAN_CONTEXT ctx, const char *line);
-AssuanError assuan_accept (ASSUAN_CONTEXT ctx);
-int assuan_get_input_fd (ASSUAN_CONTEXT ctx);
-int assuan_get_output_fd (ASSUAN_CONTEXT ctx);
-AssuanError assuan_close_input_fd (ASSUAN_CONTEXT ctx);
-AssuanError assuan_close_output_fd (ASSUAN_CONTEXT ctx);
-
-
-/*-- assuan-pipe-server.c --*/
-int assuan_init_pipe_server (ASSUAN_CONTEXT *r_ctx, int filedes[2]);
-void assuan_deinit_server (ASSUAN_CONTEXT ctx);
-
-/*-- assuan-socket-server.c --*/
-int assuan_init_socket_server (ASSUAN_CONTEXT *r_ctx, int listen_fd);
-
-
-/*-- assuan-pipe-connect.c --*/
-AssuanError assuan_pipe_connect (ASSUAN_CONTEXT *ctx, const char *name,
-                                 char *const argv[], int *fd_child_list);
-/*-- assuan-socket-connect.c --*/
-AssuanError assuan_socket_connect (ASSUAN_CONTEXT *ctx, const char *name,
-                                   pid_t server_pid);
-
-/*-- assuan-connect.c --*/
-void assuan_disconnect (ASSUAN_CONTEXT ctx);
-pid_t assuan_get_pid (ASSUAN_CONTEXT ctx);
-
-/*-- assuan-client.c --*/
-AssuanError
-assuan_transact (ASSUAN_CONTEXT ctx,
-                 const char *command,
-                 AssuanError (*data_cb)(void *, const void *, size_t),
-                 void *data_cb_arg,
-                 AssuanError (*inquire_cb)(void*, const char *),
-                 void *inquire_cb_arg,
-                 AssuanError (*status_cb)(void*, const char *),
-                 void *status_cb_arg);
-
-
-/*-- assuan-inquire.c --*/
-AssuanError assuan_inquire (ASSUAN_CONTEXT ctx, const char *keyword,
-                            char **r_buffer, size_t *r_length, size_t maxlen);
-
-/*-- assuan-buffer.c --*/
-AssuanError assuan_read_line (ASSUAN_CONTEXT ctx,
-                              char **line, size_t *linelen);
-int assuan_pending_line (ASSUAN_CONTEXT ctx);
-AssuanError assuan_write_line (ASSUAN_CONTEXT ctx, const char *line );
-AssuanError assuan_send_data (ASSUAN_CONTEXT ctx,
-                              const void *buffer, size_t length);
-
-
-/*-- assuan-util.c --*/
-void assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
-                               void *(*new_realloc_func)(void *p, size_t n),
-                               void (*new_free_func)(void*) );
-void assuan_set_log_stream (ASSUAN_CONTEXT ctx, FILE *fp);
-int assuan_set_error (ASSUAN_CONTEXT ctx, int err, const char *text);
-void assuan_set_pointer (ASSUAN_CONTEXT ctx, void *pointer);
-void *assuan_get_pointer (ASSUAN_CONTEXT ctx);
-
-void assuan_begin_confidential (ASSUAN_CONTEXT ctx);
-void assuan_end_confidential (ASSUAN_CONTEXT ctx);
-
-/*-- assuan-errors.c (built) --*/
-const char *assuan_strerror (AssuanError err);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /*ASSUAN_H*/
diff --git a/assuan/mkerrors b/assuan/mkerrors
deleted file mode 100755
index 91902bf..0000000
--- a/assuan/mkerrors
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-# mkerrors - Extract error strings from assuan.h
-#            and create C source for assuan_strerror
-#	Copyright (C) 2001 Free Software Foundation, Inc.
-#
-# This file is part of GnuPG.
-#
-# GnuPG is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GnuPG is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-cat <<EOF
-/* Generated automatically by mkerrors */
-/* Do not edit! */
-
-#include <stdio.h>
-#include "assuan.h"
-
-/**
- * assuan_strerror:
- * @err:  Error code 
- * 
- * This function returns a textual representaion of the given
- * errorcode. If this is an unknown value, a string with the value
- * is returned (Beware: it is hold in a static buffer).
- * 
- * Return value: String with the error description.
- **/
-const char *
-assuan_strerror (AssuanError err)
-{
-  const char *s;
-  static char buf[25];
-
-  switch (err)
-    {
-EOF
-
-awk '
-/ASSUAN_No_Error/    { okay=1 }
-!okay              {next}
-/}/                { exit 0 }
-/ASSUAN_[A-Za-z_]*/ { print_code($1) }
-
-
-function print_code( s )
-{
-printf "    case %s: s=\"", s ;
-gsub(/_/, " ", s );
-printf "%s\"; break;\n", tolower(substr(s,8));
-}
-'
-
-cat <<EOF
-    default:  sprintf (buf, "ec=%d", err ); s=buf; break;
-    }
-
-  return s;
-}
-
-EOF
diff --git a/configure.ac b/configure.ac
index 084a160..e5343c0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -229,8 +229,42 @@ COMMON_LIBS=
 AC_SUBST(COMMON_CFLAGS)
 AC_SUBST(COMMON_LIBS)
 
+dnl Checks for libgpg-error
+#
+# libgpg-error is a library with error codes shared between GnuPG
+# related projects.
+#
+NEED_GPG_ERROR_VERSION=1.16
+have_gpg_error=no
+
+AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
+                  have_gpg_error=yes,have_gpg_error=no)
+COMMON_CFLAGS="$GPG_ERROR_CFLAGS $COMMON_CFLAGS"
+COMMON_LIBS="$GPG_ERROR_LIBS $COMMON_LIBS"
+
+AC_DEFINE_UNQUOTED(GPG_ERR_ENABLE_GETTEXT_MACROS, 1,
+                   [Under Windows we use the gettext code from libgpg-error])
+
+AC_DEFINE_UNQUOTED(GPG_ERR_ENABLE_ERRNO_MACROS, 1,
+                   [Under WindowsCE we use the strerror replacement from libgpg-error.])
+
+
 dnl Checks for libassuan.
-dnl -> None required because we use a stripped down version of libassuan.
+#
+# libassuan is used for IPC
+#
+NEED_LIBASSUAN_API=2
+NEED_LIBASSUAN_VERSION=2.1.0
+have_libassuan=no
+AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
+                  have_libassuan=yes,have_libassuan=no)
+if test "$have_libassuan" = "yes"; then
+  AC_DEFINE_UNQUOTED(GNUPG_LIBASSUAN_VERSION, "$libassuan_version",
+                     [version of the libassuan library])
+fi
+
+COMMON_CFLAGS="$LIBASSUAN_CFLAGS $COMMON_CFLAGS"
+COMMON_LIBS="$LIBASSUAN_LIBS $COMMON_LIBS"
 
 
 dnl Checks for libsecmem.
@@ -442,8 +476,8 @@ if test "$libsecret" = "yes"; then
   AC_DEFINE(HAVE_LIBSECRET, 1,
     [The pinentries should optionally cache the passphrase using libsecret.])
 
-  COMMON_CFLAGS="$COMMON_CFLAGS $LIBSECRET_CFLAGS"
-  COMMON_LIBS="$COMMON_LIBS $LIBSECRET_LIBS"
+  COMMON_CFLAGS="$LIBSECRET_CFLAGS $COMMON_CFLAGS"
+  COMMON_LIBS="$LIBSECRET_LIBS $COMMON_LIBS"
 fi
 
 dnl
@@ -561,9 +595,66 @@ else
 fi
 AC_SUBST(PINENTRY_DEFAULT)
 
+#
+# Print errors here so that they are visible all
+# together and the user can acquire them all together.
+#
+die=no
+if test "$have_gpg_error" = "no"; then
+   die=yes
+   AC_MSG_NOTICE([[
+***
+*** You need libgpg-error to build this program.
+**  This library is for example available at
+***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
+*** (at least version $NEED_GPG_ERROR_VERSION is required.)
+***]])
+fi
+
+if test "$have_libassuan" = "no"; then
+   die=yes
+   AC_MSG_NOTICE([[
+***
+*** You need libassuan to build this program.
+*** This library is for example available at
+***   ftp://ftp.gnupg.org/gcrypt/libassuan/
+*** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
+***]])
+fi
+
+if test "$die" = "yes"; then
+    AC_MSG_ERROR([[
+***
+*** Required libraries not found. Please consult the above messages
+*** and install them before running configure again.
+***]])
+fi
+
+
+
+#
+# To avoid double inclusion of config.h which might happen at some
+# places, we add the usual double inclusion protection at the top of
+# config.h.
+#
+AH_TOP([
+#ifndef GNUPG_CONFIG_H_INCLUDED
+#define GNUPG_CONFIG_H_INCLUDED
+])
+
+#
+# Stuff which goes at the bottom of config.h.
+#
+AH_BOTTOM([
+#ifdef GPG_ERR_SOURCE_DEFAULT
+# error GPG_ERR_SOURCE_DEFAULT already defined
+#endif
+#define GPG_ERR_SOURCE_DEFAULT  GPG_ERR_SOURCE_PINENTRY
+#endif /*GNUPG_CONFIG_H_INCLUDED*/
+])
+
 
 AC_CONFIG_FILES([
-assuan/Makefile
 secmem/Makefile
 pinentry/Makefile
 curses/Makefile
diff --git a/curses/Makefile.am b/curses/Makefile.am
index 4d764c7..915f8a8 100644
--- a/curses/Makefile.am
+++ b/curses/Makefile.am
@@ -23,7 +23,6 @@ bin_PROGRAMS = pinentry-curses
 
 AM_CPPFLAGS = $(COMMON_CFLAGS) $(NCURSES_INCLUDE) -I$(top_srcdir)/pinentry
 LDADD = ../pinentry/libpinentry.a ../pinentry/libpinentry-curses.a \
-	../assuan/libassuan.a ../secmem/libsecmem.a \
-	$(COMMON_LIBS) $(LIBCAP) $(LIBCURSES) $(LIBICONV)
+	../secmem/libsecmem.a $(COMMON_LIBS) $(LIBCAP) $(LIBCURSES) $(LIBICONV)
 
 pinentry_curses_SOURCES = pinentry-curses.c
diff --git a/gnome3/Makefile.am b/gnome3/Makefile.am
index 46639de..71c0732 100644
--- a/gnome3/Makefile.am
+++ b/gnome3/Makefile.am
@@ -30,9 +30,8 @@ libcurses =
 endif
 
 AM_CPPFLAGS = $(COMMON_CFLAGS) $(GNOME3CFLAGS) \
-	$(ncurses_include) -I$(top_srcdir)/assuan \
-	-I$(top_srcdir)/secmem -I$(top_srcdir)/pinentry
-LDADD = ../pinentry/libpinentry.a ../assuan/libassuan.a ../secmem/libsecmem.a \
+	$(ncurses_include) -I$(top_srcdir)/secmem -I$(top_srcdir)/pinentry
+LDADD = ../pinentry/libpinentry.a ../secmem/libsecmem.a \
 	$(COMMON_LIBS) $(LIBCAP) $(GNOME3LIBS) $(libcurses)
 
 pinentry_gnome3_SOURCES = pinentry-gnome3.c
diff --git a/gnome3/pinentry-gnome3.c b/gnome3/pinentry-gnome3.c
index 0fea8f0..2799904 100644
--- a/gnome3/pinentry-gnome3.c
+++ b/gnome3/pinentry-gnome3.c
@@ -27,7 +27,7 @@
 
 #include <string.h>
 
-#include "assuan.h"
+#include <assuan.h>
 
 #include "memory.h"
 
@@ -189,7 +189,7 @@ gnome3_cmd_handler (pinentry_t pe)
       if (error)
 	/* Error.  */
 	{
-	  pe->specific_err = ASSUAN_General_Error;
+	  pe->specific_err = gpg_error (GPG_ERR_ASS_GENERAL);
 	  g_error_free (error);
 	  ret = -1;
 	}
@@ -231,7 +231,7 @@ gnome3_cmd_handler (pinentry_t pe)
       reply = gcr_prompt_confirm_run (prompt, NULL, &error);
       if (error)
 	{
-	  pe->specific_err = ASSUAN_General_Error;
+	  pe->specific_err = gpg_error (GPG_ERR_ASS_GENERAL);
 	  ret = 0;
 	}
       else if (reply == GCR_PROMPT_REPLY_CONTINUE
diff --git a/gtk+-2/Makefile.am b/gtk+-2/Makefile.am
index 7e37469..88f245e 100644
--- a/gtk+-2/Makefile.am
+++ b/gtk+-2/Makefile.am
@@ -31,7 +31,7 @@ endif
 
 AM_CPPFLAGS = $(COMMON_CFLAGS) $(GTK2CFLAGS) $(ncurses_include) \
 	-I$(top_srcdir)/secmem -I$(top_srcdir)/pinentry
-LDADD = ../pinentry/libpinentry.a ../assuan/libassuan.a ../secmem/libsecmem.a \
+LDADD = ../pinentry/libpinentry.a ../secmem/libsecmem.a \
 	$(COMMON_LIBS) $(LIBCAP) $(GTK2LIBS) $(libcurses)
 
 pinentry_gtk_2_SOURCES = pinentry-gtk-2.c \
diff --git a/pinentry/Makefile.am b/pinentry/Makefile.am
index 7fbbab6..d24581b 100644
--- a/pinentry/Makefile.am
+++ b/pinentry/Makefile.am
@@ -30,7 +30,7 @@ endif
 noinst_LIBRARIES = libpinentry.a $(pinentry_curses)
 
 LDADD = $(COMMON_LIBS)
-AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(top_srcdir)/assuan -I$(top_srcdir)/secmem
+AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(top_srcdir)/secmem
 
 libpinentry_a_SOURCES = pinentry.h pinentry.c argparse.c argparse.h \
 	password-cache.h password-cache.c
diff --git a/pinentry/pinentry-curses.c b/pinentry/pinentry-curses.c
index d25ab2e..235435a 100644
--- a/pinentry/pinentry-curses.c
+++ b/pinentry/pinentry-curses.c
@@ -50,8 +50,9 @@
 #include <wchar.h>
 #endif /*HAVE_WCHAR_H*/
 
+#include <assuan.h>
+
 #include "pinentry.h"
-#include "assuan.h"
 
 /* FIXME: We should allow configuration of these button labels and in
    any case use the default_ok, default_cancel values if available.
@@ -250,7 +251,7 @@ dialog_create (pinentry_t pinentry, dialog_t dialog)
         if (!what)							\
 	  {								\
 	    err = 1;							\
-            pinentry->specific_err = ASSUAN_Locale_Problem;             \
+            pinentry->specific_err = gpg_error (GPG_ERR_LOCALE_PROBLEM); \
 	    goto out;							\
 	  }								\
       }									\
@@ -282,7 +283,7 @@ dialog_create (pinentry_t pinentry, dialog_t dialog)
 	  if (!new)							\
 	    {								\
 	      err = 1;							\
-              pinentry->specific_err = ASSUAN_Out_Of_Core;              \
+              pinentry->specific_err = gpg_error_from_syserror ();	\
 	      goto out;							\
 	    }								\
 									\
@@ -307,7 +308,7 @@ dialog_create (pinentry_t pinentry, dialog_t dialog)
       if (!dialog->which)						\
         {								\
 	  err = 1;							\
-          pinentry->specific_err = ASSUAN_Locale_Problem;               \
+          pinentry->specific_err = gpg_error (GPG_ERR_LOCALE_PROBLEM);	\
 	  goto out;							\
 	}								\
     }									\
@@ -373,7 +374,7 @@ dialog_create (pinentry_t pinentry, dialog_t dialog)
   if (y > size_y)
     {
       err = 1;
-      pinentry->specific_err = ASSUAN_Too_Short;
+      pinentry->specific_err = gpg_error (GPG_ERR_ASS_LINE_TOO_LONG);
       goto out;
     }
 
@@ -428,7 +429,7 @@ dialog_create (pinentry_t pinentry, dialog_t dialog)
   if (x > size_x)
     {
       err = 1;
-      pinentry->specific_err = ASSUAN_Too_Short;
+      pinentry->specific_err = gpg_error (GPG_ERR_ASS_LINE_TOO_LONG);
       goto out;
     }
 
@@ -833,7 +834,7 @@ dialog_run (pinentry_t pinentry, const char *tty_name, const char *tty_type)
       ttyfi = fopen (tty_name, "r");
       if (!ttyfi)
         {
-          pinentry->specific_err = ASSUAN_ENOENT;
+          pinentry->specific_err = gpg_error_from_syserror ();
           return -1;
         }
       ttyfo = fopen (tty_name, "w");
@@ -842,7 +843,7 @@ dialog_run (pinentry_t pinentry, const char *tty_name, const char *tty_type)
 	  int err = errno;
 	  fclose (ttyfi);
 	  errno = err;
-          pinentry->specific_err = ASSUAN_ENOENT;
+          pinentry->specific_err = gpg_error_from_syserror ();
 	  return -1;
 	}
       screen = newterm (tty_type, ttyfo, ttyfi);
@@ -855,7 +856,7 @@ dialog_run (pinentry_t pinentry, const char *tty_name, const char *tty_type)
           if (!(isatty(fileno(stdin)) && isatty(fileno(stdout))))
             {
               errno = ENOTTY;
-              pinentry->specific_err = ASSUAN_ENOTTY;
+              pinentry->specific_err = gpg_error_from_syserror ();
               return -1;
             }
 	  init_screen = 1;
diff --git a/pinentry/pinentry.c b/pinentry/pinentry.c
index 6f7a62c..47d9b06 100644
--- a/pinentry/pinentry.c
+++ b/pinentry/pinentry.c
@@ -43,7 +43,8 @@
 #include <iconv.h>
 #endif
 
-#include "assuan.h"
+#include <assuan.h>
+
 #include "memory.h"
 #include "secmem-util.h"
 #include "argparse.h"
@@ -165,11 +166,15 @@ pinentry_reset (int use_defaults)
     }
 }
 
-static void
-pinentry_assuan_reset_handler (ASSUAN_CONTEXT ctx)
+static gpg_error_t
+pinentry_assuan_reset_handler (assuan_context_t ctx, char *line)
 {
   (void)ctx;
+  (void)line;
+
   pinentry_reset (0);
+
+  return 0;
 }
 
 
@@ -356,7 +361,7 @@ copy_and_escape (char *buffer, const void *text, size_t textlen)
 int
 pinentry_inq_quality (pinentry_t pin, const char *passphrase, size_t length)
 {
-  ASSUAN_CONTEXT ctx = pin->ctx_assuan;
+  assuan_context_t ctx = pin->ctx_assuan;
   const char prefix[] = "INQUIRE QUALITY ";
   char *command;
   char *line;
@@ -500,6 +505,10 @@ pinentry_setbuffer_use (pinentry_t pin, char *passphrase, int len)
   pin->pin_len = len;
 }
 
+static struct assuan_malloc_hooks assuan_malloc_hooks = {
+  secmem_malloc, secmem_realloc, secmem_free
+};
+
 /* Initialize the secure memory subsystem, drop privileges and return.
    Must be called early. */
 void
@@ -510,6 +519,8 @@ pinentry_init (const char *pgmname)
     abort ();
   strcpy (this_pgmname, pgmname);
 
+  gpgrt_check_version (NULL);
+
   /* Initialize secure memory.  1 is too small, so the default size
      will be used.  */
   secmem_init (1);
@@ -521,7 +532,7 @@ pinentry_init (const char *pgmname)
       /* FIXME: Could not register at-exit function, bail out.  */
     }
 
-  assuan_set_malloc_hooks (secmem_malloc, secmem_realloc, secmem_free);
+  assuan_set_malloc_hooks (&assuan_malloc_hooks);
 }
 
 /* Simple test to check whether DISPLAY is set or the option --display
@@ -755,8 +766,8 @@ pinentry_parse_opts (int argc, char *argv[])
 }
 
 

-static int
-option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
+static gpg_error_t
+option_handler (assuan_context_t ctx, const char *key, const char *value)
 {
   (void)ctx;
 
@@ -779,7 +790,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
 	free (pinentry.display);
       pinentry.display = strdup (value);
       if (!pinentry.display)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "ttyname"))
     {
@@ -787,7 +798,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
 	free (pinentry.ttyname);
       pinentry.ttyname = strdup (value);
       if (!pinentry.ttyname)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "ttytype"))
     {
@@ -795,7 +806,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
 	free (pinentry.ttytype);
       pinentry.ttytype = strdup (value);
       if (!pinentry.ttytype)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "lc-ctype"))
     {
@@ -803,7 +814,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
 	free (pinentry.lc_ctype);
       pinentry.lc_ctype = strdup (value);
       if (!pinentry.lc_ctype)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "lc-messages"))
     {
@@ -811,7 +822,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
 	free (pinentry.lc_messages);
       pinentry.lc_messages = strdup (value);
       if (!pinentry.lc_messages)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "parent-wid"))
     {
@@ -824,31 +835,31 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
         free (pinentry.touch_file);
       pinentry.touch_file = strdup (value);
       if (!pinentry.touch_file)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "default-ok"))
     {
       pinentry.default_ok = strdup (value);
       if (!pinentry.default_ok)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "default-cancel"))
     {
       pinentry.default_cancel = strdup (value);
       if (!pinentry.default_cancel)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "default-prompt"))
     {
       pinentry.default_prompt = strdup (value);
       if (!pinentry.default_prompt)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "default-pwmngr"))
     {
       pinentry.default_pwmngr = strdup (value);
       if (!pinentry.default_pwmngr)
-	return ASSUAN_Out_Of_Core;
+	return gpg_error_from_syserror ();
     }
   else if (!strcmp (key, "allow-external-password-cache") && !*value)
     {
@@ -856,7 +867,7 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
       pinentry.tried_password_cache = 0;
     }
   else
-    return ASSUAN_Invalid_Option;
+    return gpg_error (GPG_ERR_UNKNOWN_OPTION);
   return 0;
 }
 
@@ -881,8 +892,8 @@ strcpy_escaped (char *d, const char *s)
 }
 
 
-static int
-cmd_setdesc (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setdesc (assuan_context_t ctx, char *line)
 {
   char *newd;
 
@@ -890,7 +901,7 @@ cmd_setdesc (ASSUAN_CONTEXT ctx, char *line)
 
   newd = malloc (strlen (line) + 1);
   if (!newd)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newd, line);
   if (pinentry.description)
@@ -900,8 +911,8 @@ cmd_setdesc (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_setprompt (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setprompt (assuan_context_t ctx, char *line)
 {
   char *newp;
 
@@ -909,7 +920,7 @@ cmd_setprompt (ASSUAN_CONTEXT ctx, char *line)
 
   newp = malloc (strlen (line) + 1);
   if (!newp)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newp, line);
   if (pinentry.prompt)
@@ -923,8 +934,8 @@ cmd_setprompt (ASSUAN_CONTEXT ctx, char *line)
    to identify a key for caching strategies of its own.  The empty
    string and --clear mean that the key does not have a stable
    identifier.  */
-static int
-cmd_setkeyinfo (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setkeyinfo (assuan_context_t ctx, char *line)
 {
   (void)ctx;
 
@@ -940,8 +951,8 @@ cmd_setkeyinfo (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_setrepeat (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setrepeat (assuan_context_t ctx, char *line)
 {
   char *p;
 
@@ -949,7 +960,7 @@ cmd_setrepeat (ASSUAN_CONTEXT ctx, char *line)
 
   p = malloc (strlen (line) + 1);
   if (!p)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (p, line);
   free (pinentry.repeat_passphrase);
@@ -958,8 +969,8 @@ cmd_setrepeat (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_setrepeaterror (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setrepeaterror (assuan_context_t ctx, char *line)
 {
   char *p;
 
@@ -967,7 +978,7 @@ cmd_setrepeaterror (ASSUAN_CONTEXT ctx, char *line)
 
   p = malloc (strlen (line) + 1);
   if (!p)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (p, line);
   free (pinentry.repeat_error_string);
@@ -976,8 +987,8 @@ cmd_setrepeaterror (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_seterror (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_seterror (assuan_context_t ctx, char *line)
 {
   char *newe;
 
@@ -985,7 +996,7 @@ cmd_seterror (ASSUAN_CONTEXT ctx, char *line)
 
   newe = malloc (strlen (line) + 1);
   if (!newe)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newe, line);
   if (pinentry.error)
@@ -995,8 +1006,8 @@ cmd_seterror (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_setok (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setok (assuan_context_t ctx, char *line)
 {
   char *newo;
 
@@ -1004,7 +1015,7 @@ cmd_setok (ASSUAN_CONTEXT ctx, char *line)
 
   newo = malloc (strlen (line) + 1);
   if (!newo)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newo, line);
   if (pinentry.ok)
@@ -1014,8 +1025,8 @@ cmd_setok (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_setnotok (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setnotok (assuan_context_t ctx, char *line)
 {
   char *newo;
 
@@ -1023,7 +1034,7 @@ cmd_setnotok (ASSUAN_CONTEXT ctx, char *line)
 
   newo = malloc (strlen (line) + 1);
   if (!newo)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newo, line);
   if (pinentry.notok)
@@ -1033,8 +1044,8 @@ cmd_setnotok (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_setcancel (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setcancel (assuan_context_t ctx, char *line)
 {
   char *newc;
 
@@ -1042,7 +1053,7 @@ cmd_setcancel (ASSUAN_CONTEXT ctx, char *line)
 
   newc = malloc (strlen (line) + 1);
   if (!newc)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newc, line);
   if (pinentry.cancel)
@@ -1052,8 +1063,8 @@ cmd_setcancel (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_settimeout (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_settimeout (assuan_context_t ctx, char *line)
 {
   (void)ctx;
 
@@ -1063,8 +1074,8 @@ cmd_settimeout (ASSUAN_CONTEXT ctx, char *line)
   return 0;
 }
 
-static int
-cmd_settitle (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_settitle (assuan_context_t ctx, char *line)
 {
   char *newt;
 
@@ -1072,7 +1083,7 @@ cmd_settitle (ASSUAN_CONTEXT ctx, char *line)
 
   newt = malloc (strlen (line) + 1);
   if (!newt)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newt, line);
   if (pinentry.title)
@@ -1081,8 +1092,8 @@ cmd_settitle (ASSUAN_CONTEXT ctx, char *line)
   return 0;
 }
 
-static int
-cmd_setqualitybar (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setqualitybar (assuan_context_t ctx, char *line)
 {
   char *newval;
 
@@ -1093,7 +1104,7 @@ cmd_setqualitybar (ASSUAN_CONTEXT ctx, char *line)
 
   newval = malloc (strlen (line) + 1);
   if (!newval)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error_from_syserror ();
 
   strcpy_escaped (newval, line);
   if (pinentry.quality_bar)
@@ -1103,8 +1114,8 @@ cmd_setqualitybar (ASSUAN_CONTEXT ctx, char *line)
 }
 
 /* Set the tooltip to be used for a quality bar.  */
-static int
-cmd_setqualitybar_tt (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_setqualitybar_tt (assuan_context_t ctx, char *line)
 {
   char *newval;
 
@@ -1114,7 +1125,7 @@ cmd_setqualitybar_tt (ASSUAN_CONTEXT ctx, char *line)
     {
       newval = malloc (strlen (line) + 1);
       if (!newval)
-        return ASSUAN_Out_Of_Core;
+        return gpg_error_from_syserror ();
 
       strcpy_escaped (newval, line);
     }
@@ -1127,8 +1138,8 @@ cmd_setqualitybar_tt (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
-static int
-cmd_getpin (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_getpin (assuan_context_t ctx, char *line)
 {
   int result;
   int set_prompt = 0;
@@ -1138,7 +1149,7 @@ cmd_getpin (ASSUAN_CONTEXT ctx, char *line)
 
   pinentry_setbuffer_init (&pinentry);
   if (!pinentry.pin)
-    return ASSUAN_Out_Of_Core;
+    return gpg_error (GPG_ERR_ENOMEM);
 
   /* Try reading from the password cache.  */
   if (/* If repeat passphrase is set, then we don't want to read from
@@ -1224,7 +1235,9 @@ cmd_getpin (ASSUAN_CONTEXT ctx, char *line)
       pinentry_setbuffer_clear (&pinentry);
       if (pinentry.specific_err)
         return pinentry.specific_err;
-      return pinentry.locale_err? ASSUAN_Locale_Problem: ASSUAN_Canceled;
+      return (pinentry.locale_err
+	      ? gpg_error (GPG_ERR_LOCALE_PROBLEM)
+	      : gpg_error (GPG_ERR_CANCELED));
     }
 
  out:
@@ -1259,8 +1272,8 @@ cmd_getpin (ASSUAN_CONTEXT ctx, char *line)
    update pinentry or to have the caller test for the message
    command.  New applications which are free to require an updated
    pinentry should use MESSAGE instead. */
-static int
-cmd_confirm (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_confirm (assuan_context_t ctx, char *line)
 {
   int result;
 
@@ -1288,19 +1301,19 @@ cmd_confirm (ASSUAN_CONTEXT ctx, char *line)
     return pinentry.specific_err;
 
   if (pinentry.locale_err)
-    return ASSUAN_Locale_Problem;
+    return gpg_error (GPG_ERR_LOCALE_PROBLEM);
 
   if (pinentry.one_button)
     return 0;
 
   if (pinentry.canceled)
-    return ASSUAN_Canceled;
-  return ASSUAN_Not_Confirmed;
+    return gpg_error (GPG_ERR_CANCELED);
+  return gpg_error (GPG_ERR_NOT_CONFIRMED);
 }
 
 
-static int
-cmd_message (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_message (assuan_context_t ctx, char *line)
 {
   (void)line;
 
@@ -1315,7 +1328,7 @@ cmd_message (ASSUAN_CONTEXT ctx, char *line)
      version     - Return the version of the program.
      pid         - Return the process id of the server.
  */
-static int
+static gpg_error_t
 cmd_getinfo (assuan_context_t ctx, char *line)
 {
   int rc;
@@ -1333,7 +1346,7 @@ cmd_getinfo (assuan_context_t ctx, char *line)
       rc = assuan_send_data (ctx, numbuf, strlen (numbuf));
     }
   else
-    rc = ASSUAN_Parameter_Error;
+    rc = gpg_error (GPG_ERR_ASS_PARAMETER);
   return rc;
 }
 
@@ -1342,13 +1355,13 @@ cmd_getinfo (assuan_context_t ctx, char *line)
    Clear the cache passphrase associated with the key identified by
    cacheid.
  */
-static int
-cmd_clear_passphrase (ASSUAN_CONTEXT ctx, char *line)
+static gpg_error_t
+cmd_clear_passphrase (assuan_context_t ctx, char *line)
 {
   (void)ctx;
 
   if (! line)
-    return ASSUAN_Invalid_Value;
+    return gpg_error (GPG_ERR_ASS_INV_VALUE);
 
   /* Remove leading and trailing white space.  */
   while (*line == ' ')
@@ -1359,50 +1372,47 @@ cmd_clear_passphrase (ASSUAN_CONTEXT ctx, char *line)
   switch (password_cache_clear (line))
     {
     case 1: return 0;
-    case 0: return ASSUAN_Invalid_Value;
-    default: return ASSUAN_General_Error;
+    case 0: return gpg_error (GPG_ERR_ASS_INV_VALUE);
+    default: return gpg_error (GPG_ERR_ASS_GENERAL);
     }
 }
 
 /* Tell the assuan library about our commands.  */
-static int
-register_commands (ASSUAN_CONTEXT ctx)
+static gpg_error_t
+register_commands (assuan_context_t ctx)
 {
   static struct
   {
     const char *name;
-    int cmd_id;
-    int (*handler) (ASSUAN_CONTEXT, char *line);
+    gpg_error_t (*handler) (assuan_context_t, char *line);
   } table[] =
     {
-      { "SETDESC",    0,  cmd_setdesc },
-      { "SETPROMPT",  0,  cmd_setprompt },
-      { "SETKEYINFO", 0,  cmd_setkeyinfo },
-      { "SETREPEAT",  0,  cmd_setrepeat },
-      { "SETREPEATERROR",0, cmd_setrepeaterror },
-      { "SETERROR",   0,  cmd_seterror },
-      { "SETOK",      0,  cmd_setok },
-      { "SETNOTOK",   0,  cmd_setnotok },
-      { "SETCANCEL",  0,  cmd_setcancel },
-      { "GETPIN",     0,  cmd_getpin },
-      { "CONFIRM",    0,  cmd_confirm },
-      { "MESSAGE",    0,  cmd_message },
-      { "SETQUALITYBAR", 0,  cmd_setqualitybar },
-      { "SETQUALITYBAR_TT", 0,  cmd_setqualitybar_tt },
-      { "GETINFO",    0,  cmd_getinfo },
-      { "SETTITLE",   0,  cmd_settitle },
-      { "SETTIMEOUT",   0,  cmd_settimeout },
-      { "CLEARPASSPHRASE", 0, cmd_clear_passphrase },
+      { "SETDESC",    cmd_setdesc },
+      { "SETPROMPT",  cmd_setprompt },
+      { "SETKEYINFO", cmd_setkeyinfo },
+      { "SETREPEAT",  cmd_setrepeat },
+      { "SETREPEATERROR", cmd_setrepeaterror },
+      { "SETERROR",   cmd_seterror },
+      { "SETOK",      cmd_setok },
+      { "SETNOTOK",   cmd_setnotok },
+      { "SETCANCEL",  cmd_setcancel },
+      { "GETPIN",     cmd_getpin },
+      { "CONFIRM",    cmd_confirm },
+      { "MESSAGE",    cmd_message },
+      { "SETQUALITYBAR", cmd_setqualitybar },
+      { "SETQUALITYBAR_TT", cmd_setqualitybar_tt },
+      { "GETINFO",    cmd_getinfo },
+      { "SETTITLE",   cmd_settitle },
+      { "SETTIMEOUT", cmd_settimeout },
+      { "CLEARPASSPHRASE", cmd_clear_passphrase },
       { NULL }
     };
-  int i, j, rc;
+  int i, j;
+  gpg_error_t rc;
 
   for (i = j = 0; table[i].name; i++)
     {
-      rc = assuan_register_command (ctx,
-                                    table[i].cmd_id ? table[i].cmd_id
-                                                   : (ASSUAN_CMD_USER + j++),
-                                    table[i].name, table[i].handler);
+      rc = assuan_register_command (ctx, table[i].name, table[i].handler, NULL);
       if (rc)
         return rc;
     }
@@ -1413,9 +1423,9 @@ register_commands (ASSUAN_CONTEXT ctx)
 int
 pinentry_loop2 (int infd, int outfd)
 {
-  int rc;
+  gpg_error_t rc;
   int filedes[2];
-  ASSUAN_CONTEXT ctx;
+  assuan_context_t ctx;
 
   /* Extra check to make sure we have dropped privs. */
 #ifndef HAVE_DOSISH_SYSTEM
@@ -1423,23 +1433,31 @@ pinentry_loop2 (int infd, int outfd)
     abort ();
 #endif
 
+  rc = assuan_new (&ctx);
+  if (rc)
+    {
+      fprintf (stderr, "server context creation failed: %s\n",
+	       gpg_strerror (rc));
+      return -1;
+    }
+
   /* For now we use a simple pipe based server so that we can work
      from scripts.  We will later add options to run as a daemon and
      wait for requests on a Unix domain socket.  */
   filedes[0] = infd;
   filedes[1] = outfd;
-  rc = assuan_init_pipe_server (&ctx, filedes);
+  rc = assuan_init_pipe_server (ctx, filedes);
   if (rc)
     {
       fprintf (stderr, "%s: failed to initialize the server: %s\n",
-               this_pgmname, assuan_strerror(rc));
+               this_pgmname, gpg_strerror (rc));
       return -1;
     }
   rc = register_commands (ctx);
   if (rc)
     {
       fprintf (stderr, "%s: failed to the register commands with Assuan: %s\n",
-               this_pgmname, assuan_strerror(rc));
+               this_pgmname, gpg_strerror (rc));
       return -1;
     }
 
@@ -1457,7 +1475,7 @@ pinentry_loop2 (int infd, int outfd)
       else if (rc)
         {
           fprintf (stderr, "%s: Assuan accept problem: %s\n",
-                   this_pgmname, assuan_strerror (rc));
+                   this_pgmname, gpg_strerror (rc));
           break;
         }
 
@@ -1465,12 +1483,12 @@ pinentry_loop2 (int infd, int outfd)
       if (rc)
         {
           fprintf (stderr, "%s: Assuan processing failed: %s\n",
-                   this_pgmname, assuan_strerror (rc));
+                   this_pgmname, gpg_strerror (rc));
           continue;
         }
     }
 
-  assuan_deinit_server (ctx);
+  assuan_release (ctx);
   return 0;
 }
 
diff --git a/qt4/Makefile.am b/qt4/Makefile.am
index 816aade..e2014e3 100644
--- a/qt4/Makefile.am
+++ b/qt4/Makefile.am
@@ -35,12 +35,11 @@ endif
 
 
 AM_CPPFLAGS = $(COMMON_CFLAGS) \
-	-I$(top_srcdir) -I$(top_srcdir)/assuan -I$(top_srcdir)/secmem \
+	-I$(top_srcdir) -I$(top_srcdir)/secmem \
 	$(ncurses_include) -I$(top_srcdir)/pinentry
 AM_CXXFLAGS = $(QT4_CORE_CFLAGS) $(QT4_GUI_CFLAGS)
 pinentry_qt4_LDADD = \
-	../pinentry/libpinentry.a $(top_builddir)/assuan/libassuan.a \
-	$(top_builddir)/secmem/libsecmem.a \
+	../pinentry/libpinentry.a $(top_builddir)/secmem/libsecmem.a \
 	$(COMMON_LIBS) $(QT4_CORE_LIBS) $(QT4_GUI_LIBS) $(libcurses) $(LIBCAP)
 
 BUILT_SOURCES = \
diff --git a/tty/Makefile.am b/tty/Makefile.am
index ca6406f..e232473 100644
--- a/tty/Makefile.am
+++ b/tty/Makefile.am
@@ -21,8 +21,7 @@
 bin_PROGRAMS = pinentry-tty
 
 AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(top_srcdir)/secmem -I$(top_srcdir)/pinentry
-LDADD = ../pinentry/libpinentry.a \
-	../assuan/libassuan.a ../secmem/libsecmem.a \
+LDADD = ../pinentry/libpinentry.a ../secmem/libsecmem.a \
 	$(COMMON_LIBS) $(LIBCAP) $(LIBICONV)
 
 pinentry_tty_SOURCES = pinentry-tty.c

-----------------------------------------------------------------------

Summary of changes:
 Makefile.am                 |   2 +-
 assuan/ChangeLog-old        | 254 -----------------
 assuan/Makefile.am          |  43 ---
 assuan/README.1st           |   1 -
 assuan/assuan-buffer.c      | 474 -------------------------------
 assuan/assuan-defs.h        | 139 ---------
 assuan/assuan-handler.c     | 672 --------------------------------------------
 assuan/assuan-listen.c      | 132 ---------
 assuan/assuan-pipe-server.c | 127 ---------
 assuan/assuan-util.c        | 196 -------------
 assuan/assuan.h             | 202 -------------
 assuan/mkerrors             |  71 -----
 configure.ac                |  99 ++++++-
 curses/Makefile.am          |   3 +-
 gnome3/Makefile.am          |   5 +-
 gnome3/pinentry-gnome3.c    |   6 +-
 gtk+-2/Makefile.am          |   2 +-
 pinentry/Makefile.am        |   2 +-
 pinentry/pinentry-curses.c  |  19 +-
 pinentry/pinentry.c         | 234 ++++++++-------
 qt4/Makefile.am             |   5 +-
 tty/Makefile.am             |   3 +-
 22 files changed, 243 insertions(+), 2448 deletions(-)
 delete mode 100644 assuan/ChangeLog-old
 delete mode 100644 assuan/Makefile.am
 delete mode 100644 assuan/README.1st
 delete mode 100644 assuan/assuan-buffer.c
 delete mode 100644 assuan/assuan-defs.h
 delete mode 100644 assuan/assuan-handler.c
 delete mode 100644 assuan/assuan-listen.c
 delete mode 100644 assuan/assuan-pipe-server.c
 delete mode 100644 assuan/assuan-util.c
 delete mode 100644 assuan/assuan.h
 delete mode 100755 assuan/mkerrors


hooks/post-receive
-- 
The standard pinentry collection
http://git.gnupg.org




More information about the Gnupg-commits mailing list