2003-02-01 Marcus Brinkmann <marcus@g10code.de>

* assuan/: Update files to 2002-11-10 version of assuan.

gpgme/
2003-02-01  Marcus Brinkmann  <marcus@g10code.de>

	* engine-gpgsm.c (map_assuan_error): Replace
	ASSUAN_Bad_Certificate_Path with ASSUAN_Bad_Certificate_Chain.
	(gpgsm_new): Use assuan_pipe_connect instead assuan_pipe_connect2.

	* util.h (DIMof): Remove macro.

	* ops.h (_gpgme_op_event_cb, _gpgme_op_event_cb_user,
	_gpgme_data_unread): Prototypes removed.
This commit is contained in:
Marcus Brinkmann 2003-02-01 18:53:06 +00:00
parent 83d3b3f449
commit 90beb50551
22 changed files with 564 additions and 362 deletions

View File

@ -1,3 +1,7 @@
2003-02-01 Marcus Brinkmann <marcus@g10code.de>
* assuan/: Update files to 2002-11-10 version of assuan.
2003-01-29 Marcus Brinkmann <marcus@g10code.de> 2003-01-29 Marcus Brinkmann <marcus@g10code.de>
* bonobo/gpgme.c, bonobo/main.c, bonobo/main.h, bonobo/Makefile, * bonobo/gpgme.c, bonobo/main.c, bonobo/main.h, bonobo/Makefile,

View File

@ -1,12 +1,74 @@
2002-05-03 Werner Koch <wk@gnupg.org> 2002-11-10 Werner Koch <wk@gnupg.org>
* assuan-pipe-connect.c (assuan_pipe_connect2): New to extend * assuan-pipe-connect.c (assuan_pipe_connect): Changed the order
assuan_pipe_connect with some flags. Implemented a bitbucket for of the dups to handle cases where we have already used fd 2 for
stderr. other things.
2002-04-26 Werner Koch <wk@gnupg.org> 2002-10-31 Neal H. Walfield <neal@g10code.de>
* Makefile.am: Create libtool libraries * assuan-util.c: Include <ctype.h>.
(_assuan_log_print_buffer): Elide the magic numbers preferring the
standard isfoo functions. Use putc_unlocked where possible.
(_assuan_log_sanitized_string): Rewrite to use putc_unlocked and
the isfoo functions.
2002-09-05 Neal H. Walfield <neal@g10code.de>
* assuan-defs.h (_assuan_read_wrapper): Depreciated.
* assuan-util.c (_assuan_read_wrapper): Removed.
* assuan-defs.h (_assuan_write_wrapper): Depreciated.
* assuan-util.c (_assuan_write_wrapper): Removed.
* assuan.h (assuan_set_io_fun): Depreciated.
* assuan-util.c (assuan_set_io_fun): Removed.
* assuan-defs.h (_assuan_read): New function.
(_assuan_write): Likewise.
* assuan-io.c: New file.
* assuan-buffer.c (writen): Use _assuan_write rather than doing
the work here.
(readline): Likewise for _assuan_read.
* Makefile.am (libassuan_a_SOURCES): Add assuan-io.c.
2002-08-16 Werner Koch <wk@gnupg.org>
* assuan.h: Renamed Bad_Certificate_Path to Bad_Certificate_Chain.
2002-07-30 Werner Koch <wk@gnupg.org>
Changed the license from GPL to LGPL.
2002-07-23 Werner Koch <wk@gnupg.org>
* assuan-handler.c (_IO_cookie_io_functions_t): Define it here if
it does not exists.
2002-06-27 Werner Koch <wk@gnupg.org>
* assuan-pipe-connect.c (assuan_pipe_connect): No special handling
for the log_fd and stderr. Connect stderr to /dev/null if it
should not be retained.
2002-06-26 Werner Koch <wk@gnupg.org>
* assuan-buffer.c (assuan_write_line): Make sure we never
accidently print an extra LF.
2002-05-23 Werner Koch <wk@gnupg.org>
* assuan-util.c (assuan_set_io_func): New.
* assuan-buffer.c (writen, readline): Use the new functions
instead of pth.
* assuan-socket-server.c (accept_connection): Don't use the
pth_accept - using the assuan included accept code would be a bad
idea within Pth so we don't need a replacement function.
2002-05-22 Werner Koch <wk@gnupg.org>
* assuan-socket-server.c (assuan_init_connected_socket_server): New.
(accept_connection): Factored most code out to..
(accept_connection_bottom): .. new function.
2002-04-04 Werner Koch <wk@gnupg.org> 2002-04-04 Werner Koch <wk@gnupg.org>

View File

@ -1,21 +1,21 @@
# Assuan Makefile for test purposes # Assuan Makefile
# Copyright (C) 2001 Free Software Foundation, Inc. # Copyright (C) 2001, 2002 Free Software Foundation, Inc.
# #
# This file is part of GnuPG. # This file is part of Assuan.
# #
# GnuPG is free software; you can redistribute it and/or modify # Assuan is free software; you can redistribute it and/or modify it
# it under the terms of the GNU General Public License as published by # under the terms of the GNU Lesser General Public License as
# the Free Software Foundation; either version 2 of the License, or # published by the Free Software Foundation; either version 2.1 of
# (at your option) any later version. # the License, or (at your option) any later version.
# #
# GnuPG is distributed in the hope that it will be useful, # Assuan is distributed in the hope that it will be useful, but
# but WITHOUT ANY WARRANTY; without even the implied warranty of # WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# GNU General Public License for more details. # Lesser General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU Lesser General Public
# along with this program; if not, write to the Free Software # License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
@ -27,7 +27,7 @@ MOSTLYCLEANFILES = assuan-errors.c
noinst_LTLIBRARIES = libassuan.la noinst_LTLIBRARIES = libassuan.la
#libassuan_a_LDFLAGS = #libassuan_la_LDFLAGS =
libassuan_la_SOURCES = \ libassuan_la_SOURCES = \
assuan.h \ assuan.h \
assuan-defs.h \ assuan-defs.h \
@ -42,7 +42,8 @@ libassuan_la_SOURCES = \
assuan-pipe-server.c \ assuan-pipe-server.c \
assuan-socket-server.c \ assuan-socket-server.c \
assuan-pipe-connect.c \ assuan-pipe-connect.c \
assuan-socket-connect.c assuan-socket-connect.c \
assuan-io.c
assuan-errors.c : assuan.h assuan-errors.c : assuan.h

View File

@ -1,21 +1,21 @@
/* assuan-buffer.c - read and send data /* assuan-buffer.c - read and send data
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>
@ -25,9 +25,6 @@
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>
#include <assert.h> #include <assert.h>
#ifdef USE_GNU_PTH
# include <pth.h>
#endif
#include "assuan-defs.h" #include "assuan-defs.h"
#ifdef HAVE_JNLIB_LOGGING #ifdef HAVE_JNLIB_LOGGING
@ -51,11 +48,7 @@ writen ( int fd, const char *buffer, size_t length )
{ {
while (length) while (length)
{ {
#ifdef USE_GNU_PTH ssize_t nwritten = _assuan_write (fd, buffer, length);
int nwritten = pth_write (fd, buffer, length);
#else
int nwritten = write (fd, buffer, length);
#endif
if (nwritten < 0) if (nwritten < 0)
{ {
@ -80,11 +73,8 @@ readline (int fd, char *buf, size_t buflen, int *r_nread, int *eof)
*r_nread = 0; *r_nread = 0;
while (nleft > 0) while (nleft > 0)
{ {
#ifdef USE_GNU_PTH ssize_t n = _assuan_read (fd, buf, nleft);
int n = pth_read (fd, buf, nleft);
#else
int n = read (fd, buf, nleft);
#endif
if (n < 0) if (n < 0)
{ {
if (errno == EINTR) if (errno == EINTR)
@ -210,13 +200,12 @@ _assuan_read_line (ASSUAN_CONTEXT ctx)
/* Read the next line from the client or server and return a pointer /* 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 in *LINE to a buffer holding the line. LINELEN is the length of
the line. This buffer is valid until another read operation is *LINE. The buffer is valid until the next read operation on it.
done on this buffer. The caller is allowed to modify this buffer. The caller may modify the buffer. The buffer is invalid (i.e. must
He should only use the buffer if the function returns without an not be used) if an error is returned.
error.
Returns: 0 on success or an assuan error code Returns 0 on success or an assuan error code.
See also: assuan_pending_line(). See also: assuan_pending_line().
*/ */
AssuanError AssuanError
@ -234,8 +223,8 @@ assuan_read_line (ASSUAN_CONTEXT ctx, char **line, size_t *linelen)
} }
/* Return true when a full line is pending for a read, without the need /* Return true if a full line is buffered (i.e. an entire line may be
for actual IO */ read without any I/O). */
int int
assuan_pending_line (ASSUAN_CONTEXT ctx) assuan_pending_line (ASSUAN_CONTEXT ctx)
{ {
@ -247,23 +236,31 @@ AssuanError
assuan_write_line (ASSUAN_CONTEXT ctx, const char *line ) assuan_write_line (ASSUAN_CONTEXT ctx, const char *line )
{ {
int rc; int rc;
size_t len;
const char *s;
if (!ctx) if (!ctx)
return ASSUAN_Invalid_Value; return ASSUAN_Invalid_Value;
/* fixme: we should do some kind of line buffering */ /* Make sure that we never take a LF from the user - this might
violate the protocol. */
s = strchr (line, '\n');
len = s? (s-line) : strlen (line);
/* fixme: we should do some kind of line buffering. */
if (ctx->log_fp) if (ctx->log_fp)
{ {
fprintf (ctx->log_fp, "%s[%p] -> ", my_log_prefix (), ctx); fprintf (ctx->log_fp, "%s[%p] -> ", my_log_prefix (), ctx);
if (s)
fputs ("[supplied line contained a LF]", ctx->log_fp);
if (ctx->confidential) if (ctx->confidential)
fputs ("[Confidential data not shown]", ctx->log_fp); fputs ("[Confidential data not shown]", ctx->log_fp);
else else
_assuan_log_print_buffer (ctx->log_fp, _assuan_log_print_buffer (ctx->log_fp, line, len);
line, strlen (line));
putc ('\n', ctx->log_fp); putc ('\n', ctx->log_fp);
} }
rc = writen (ctx->outbound.fd, line, strlen(line)); rc = writen (ctx->outbound.fd, line, len);
if (rc) if (rc)
rc = ASSUAN_Write_Error; rc = ASSUAN_Write_Error;
if (!rc) if (!rc)
@ -435,7 +432,3 @@ assuan_send_data (ASSUAN_CONTEXT ctx, const void *buffer, size_t length)
return 0; return 0;
} }

View File

@ -1,21 +1,21 @@
/* assuan-client.c - client functions /* assuan-client.c - client functions
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>

View File

@ -1,21 +1,21 @@
/* assuan-connect.c - Establish a connection (client) /* assuan-connect.c - Establish a connection (client)
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H

View File

@ -1,21 +1,21 @@
/* assuan-defs.c - Internal definitions to Assuan /* assuan-defs.c - Internal definitions to Assuan
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifndef ASSUAN_DEFS_H #ifndef ASSUAN_DEFS_H
@ -76,6 +76,7 @@ struct assuan_context_s {
pid_t pid; /* In pipe mode, the pid of the child server process. pid_t pid; /* In pipe mode, the pid of the child server process.
In socket mode, the pid of the server */ In socket mode, the pid of the server */
int listen_fd; /* The fd we are listening on (used by socket servers) */ int listen_fd; /* The fd we are listening on (used by socket servers) */
int connected_fd; /* helper */
pid_t client_pid; /* for a socket server the PID of the client or -1 pid_t client_pid; /* for a socket server the PID of the client or -1
if not available */ if not available */
@ -101,6 +102,7 @@ struct assuan_context_s {
}; };
/*-- assuan-pipe-server.c --*/ /*-- assuan-pipe-server.c --*/
int _assuan_new_context (ASSUAN_CONTEXT *r_ctx); int _assuan_new_context (ASSUAN_CONTEXT *r_ctx);
void _assuan_release_context (ASSUAN_CONTEXT ctx); void _assuan_release_context (ASSUAN_CONTEXT ctx);
@ -134,6 +136,12 @@ void _assuan_free (void *p);
void _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length); void _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length);
void _assuan_log_sanitized_string (const char *string); void _assuan_log_sanitized_string (const char *string);
/*-- assuan-io.c --*/
/* Wraps the standard read and write functions to do the Right
Thing depending on our linkage. */
ssize_t _assuan_read (int fd, void *buffer, size_t size);
ssize_t _assuan_write (int fd, const void *buffer, size_t size);
#endif /*ASSUAN_DEFS_H*/ #endif /*ASSUAN_DEFS_H*/

View File

@ -1,21 +1,21 @@
/* assuan-handler.c - dispatch commands /* assuan-handler.c - dispatch commands
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>
@ -29,6 +29,26 @@
#define digitp(a) ((a) >= '0' && (a) <= '9') #define digitp(a) ((a) >= '0' && (a) <= '9')
#if !HAVE_FOPENCOOKIE
/* Provide structure for our dummy replacement function. Usually this
is defined in ../common/util.h but assuan should be self
contained. */
/* Fixme: Remove fopencoookie :-(( */
typedef struct
{
ssize_t (*read)(void*,char*,size_t);
ssize_t (*write)(void*,const char*,size_t);
int (*seek)(void*,off_t*,int);
int (*close)(void*);
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;
FILE *fopencookie (void *cookie, const char *opentype,
cookie_io_functions_t funclist);
#endif /*!HAVE_FOPENCOOKIE*/
static int static int
dummy_handler (ASSUAN_CONTEXT ctx, char *line) dummy_handler (ASSUAN_CONTEXT ctx, char *line)
{ {

View File

@ -1,21 +1,21 @@
/* assuan-inquire.c - handle inquire stuff /* assuan-inquire.c - handle inquire stuff
* Copyright (C) 2001, 2002 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>

60
assuan/assuan-io.c Normal file
View File

@ -0,0 +1,60 @@
/* assuan-buffer.c - Wraps the read and write functions.
* Copyright (C) 2002 Free Software Foundation, Inc.
*
* This file is part of Assuan.
*
* Assuan is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* Assuan 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser 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 <sys/types.h>
#include <unistd.h>
extern ssize_t pth_read (int fd, void *buffer, size_t size);
extern ssize_t pth_write (int fd, const void *buffer, size_t size);
#pragma weak pth_read
#pragma weak pth_write
ssize_t
_assuan_read (int fd, void *buffer, size_t size)
{
static ssize_t (*reader) (int, void *, size_t);
if (! reader)
{
if (pth_read)
reader = pth_read;
else
reader = read;
}
return reader (fd, buffer, size);
}
ssize_t
_assuan_write (int fd, const void *buffer, size_t size)
{
static ssize_t (*writer) (int, const void *, size_t);
if (! writer)
{
if (pth_write)
writer = pth_write;
else
writer = write;
}
return writer (fd, buffer, size);
}

View File

@ -1,21 +1,21 @@
/* assuan-listen.c - Wait for a connection (server) /* assuan-listen.c - Wait for a connection (server)
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>

View File

@ -1,21 +1,21 @@
/* assuan-pipe-connect.c - Establish a pipe connection (client) /* assuan-pipe-connect.c - Establish a pipe connection (client)
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -28,10 +28,9 @@
#include <signal.h> #include <signal.h>
#include <unistd.h> #include <unistd.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "assuan-defs.h" #include "assuan-defs.h"
@ -104,9 +103,8 @@ do_deinit (ASSUAN_CONTEXT ctx)
vector in ARGV. FD_CHILD_LIST is a -1 terminated list of file vector in ARGV. FD_CHILD_LIST is a -1 terminated list of file
descriptors not to close in the child. */ descriptors not to close in the child. */
AssuanError AssuanError
assuan_pipe_connect2 (ASSUAN_CONTEXT *ctx, const char *name, assuan_pipe_connect (ASSUAN_CONTEXT *ctx, const char *name, char *const argv[],
char *const argv[], int *fd_child_list, int *fd_child_list)
unsigned int connect_flags)
{ {
static int fixed_signals = 0; static int fixed_signals = 0;
AssuanError err; AssuanError err;
@ -172,35 +170,9 @@ assuan_pipe_connect2 (ASSUAN_CONTEXT *ctx, const char *name,
{ {
int i, n; int i, n;
char errbuf[512]; char errbuf[512];
#ifdef HAVE_JNLIB_LOGGING int *fdp;
int log_fd = log_get_fd ();
#endif
/* close all files which will not be duped but keep stderr
and log_stream for now */
n = sysconf (_SC_OPEN_MAX);
if (n < 0)
n = MAX_OPEN_FDS;
for (i=0; i < n; i++)
{
int *fdp = fd_child_list;
if (fdp) /* Dup handles to stdin/stdout. */
{
while (*fdp != -1 && *fdp != i)
fdp++;
}
if (!(fdp && *fdp != -1)
&& i != fileno (stderr)
#ifdef HAVE_JNLIB_LOGGING
&& i != log_fd
#endif
&& i != rp[1] && i != wp[0])
close(i);
}
errno = 0;
/* Dup handles and to stdin/stdout and exec */
if (rp[1] != STDOUT_FILENO) if (rp[1] != STDOUT_FILENO)
{ {
if (dup2 (rp[1], STDOUT_FILENO) == -1) if (dup2 (rp[1], STDOUT_FILENO) == -1)
@ -208,7 +180,6 @@ assuan_pipe_connect2 (ASSUAN_CONTEXT *ctx, const char *name,
LOGERROR1 ("dup2 failed in child: %s\n", strerror (errno)); LOGERROR1 ("dup2 failed in child: %s\n", strerror (errno));
_exit (4); _exit (4);
} }
close (rp[1]);
} }
if (wp[0] != STDIN_FILENO) if (wp[0] != STDIN_FILENO)
{ {
@ -217,26 +188,53 @@ assuan_pipe_connect2 (ASSUAN_CONTEXT *ctx, const char *name,
LOGERROR1 ("dup2 failed in child: %s\n", strerror (errno)); LOGERROR1 ("dup2 failed in child: %s\n", strerror (errno));
_exit (4); _exit (4);
} }
close (wp[0]);
} }
if ((connect_flags & 1)) /* Dup stderr to /dev/null unless it is in the list of FDs to be
{ /* dup stderr to /dev/null so that the application output passed to the child. */
won't get clobbered with output from the backend */ fdp = fd_child_list;
int fdzero = open ("/dev/null", O_WRONLY); if (fdp)
if (fdzero == -1) {
{ for (; *fdp != -1 && *fdp != STDERR_FILENO; fdp++)
LOGERROR1 ("can't open `/dev/null': %s\n", strerror (errno)); ;
_exit (4); }
if (!fdp || *fdp == -1)
{
int fd = open ("/dev/null", O_WRONLY);
if (fd == -1)
{
LOGERROR1 ("can't open `/dev/null': %s\n", strerror (errno));
_exit (4);
} }
if (dup2 (fdzero, 2) == -1) if (dup2 (fd, STDERR_FILENO) == -1)
{ {
LOGERROR1 ("dup2(dev/null, 2) failed: %s\n", strerror (errno)); LOGERROR1 ("dup2(dev/null, 2) failed: %s\n", strerror (errno));
_exit (4); _exit (4);
} }
close (fdzero);
} }
/* Close all files which will not be duped and are not in the
fd_child_list. */
n = sysconf (_SC_OPEN_MAX);
if (n < 0)
n = MAX_OPEN_FDS;
for (i=0; i < n; i++)
{
if ( i == STDIN_FILENO || i == STDOUT_FILENO || i == STDERR_FILENO)
continue;
fdp = fd_child_list;
if (fdp)
{
while (*fdp != -1 && *fdp != i)
fdp++;
}
if (!(fdp && *fdp != -1))
close(i);
}
errno = 0;
execv (name, argv); execv (name, argv);
/* oops - use the pipe to tell the parent about it */ /* oops - use the pipe to tell the parent about it */
snprintf (errbuf, sizeof(errbuf)-1, "ERR %d can't exec `%s': %.50s\n", snprintf (errbuf, sizeof(errbuf)-1, "ERR %d can't exec `%s': %.50s\n",
@ -274,15 +272,6 @@ assuan_pipe_connect2 (ASSUAN_CONTEXT *ctx, const char *name,
return err; return err;
} }
AssuanError
assuan_pipe_connect (ASSUAN_CONTEXT *ctx, const char *name, char *const argv[],
int *fd_child_list)
{
return assuan_pipe_connect2 (ctx, name, argv, fd_child_list, 0);
}

View File

@ -1,21 +1,21 @@
/* assuan-pipe-server.c - Assuan server working over a pipe /* assuan-pipe-server.c - Assuan server working over a pipe
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>
@ -46,7 +46,7 @@ finish_connection (ASSUAN_CONTEXT ctx)
/* Create a new context. Note that the handlers are set up for a pipe /* Create a new context. Note that the handlers are set up for a pipe
server/client - this wau we don't need extra dummy functions */ server/client - this way we don't need extra dummy functions */
int int
_assuan_new_context (ASSUAN_CONTEXT *r_ctx) _assuan_new_context (ASSUAN_CONTEXT *r_ctx)
{ {

View File

@ -1,21 +1,21 @@
/* assuan-socket-connect.c - Assuan socket based client /* assuan-socket-connect.c - Assuan socket based client
* Copyright (C) 2002 Free Software Foundation, Inc. * Copyright (C) 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>
@ -66,7 +66,7 @@ do_deinit (ASSUAN_CONTEXT ctx)
/* Make a connection to the Unix domain socket NAME and return a new /* Make a connection to the Unix domain socket NAME and return a new
Assuan context in CTX. SERVER_PID is currently not used but may Assuan context in CTX. SERVER_PID is currently not used but may
becode handy in future. */ become handy in the future. */
AssuanError AssuanError
assuan_socket_connect (ASSUAN_CONTEXT *r_ctx, assuan_socket_connect (ASSUAN_CONTEXT *r_ctx,
const char *name, pid_t server_pid) const char *name, pid_t server_pid)

View File

@ -1,21 +1,21 @@
/* assuan-socket-server.c - Assuan socket based server /* assuan-socket-server.c - Assuan socket based server
* Copyright (C) 2002 Free Software Foundation, Inc. * Copyright (C) 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>
@ -25,31 +25,15 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/un.h> #include <sys/un.h>
#include <unistd.h> #include <unistd.h>
#ifdef USE_GNU_PTH
# include <pth.h>
#endif
#include "assuan-defs.h" #include "assuan-defs.h"
static int static int
accept_connection (ASSUAN_CONTEXT ctx) accept_connection_bottom (ASSUAN_CONTEXT ctx)
{ {
int fd; int fd = ctx->connected_fd;
struct sockaddr_un clnt_addr;
size_t len = sizeof clnt_addr;
ctx->client_pid = (pid_t)-1; ctx->client_pid = (pid_t)-1;
#ifdef USE_GNU_PTH
fd = pth_accept (ctx->listen_fd, (struct sockaddr*)&clnt_addr, &len );
#else
fd = accept (ctx->listen_fd, (struct sockaddr*)&clnt_addr, &len );
#endif
if (fd == -1)
{
ctx->os_errno = errno;
return ASSUAN_Accept_Failed;
}
#ifdef HAVE_SO_PEERCRED #ifdef HAVE_SO_PEERCRED
{ {
struct ucred cr; struct ucred cr;
@ -75,6 +59,26 @@ accept_connection (ASSUAN_CONTEXT ctx)
return 0; return 0;
} }
static int
accept_connection (ASSUAN_CONTEXT ctx)
{
int fd;
struct sockaddr_un clnt_addr;
size_t len = sizeof clnt_addr;
ctx->client_pid = (pid_t)-1;
fd = accept (ctx->listen_fd, (struct sockaddr*)&clnt_addr, &len );
if (fd == -1)
{
ctx->os_errno = errno;
return ASSUAN_Accept_Failed;
}
ctx->connected_fd = fd;
return accept_connection_bottom (ctx);
}
static int static int
finish_connection (ASSUAN_CONTEXT ctx) finish_connection (ASSUAN_CONTEXT ctx)
{ {
@ -116,6 +120,7 @@ assuan_init_socket_server (ASSUAN_CONTEXT *r_ctx, int listen_fd)
ctx->outbound.fd = -1; ctx->outbound.fd = -1;
ctx->listen_fd = listen_fd; ctx->listen_fd = listen_fd;
ctx->connected_fd = -1;
ctx->deinit_handler = deinit_socket_server; ctx->deinit_handler = deinit_socket_server;
ctx->accept_handler = accept_connection; ctx->accept_handler = accept_connection;
ctx->finish_handler = finish_connection; ctx->finish_handler = finish_connection;
@ -128,12 +133,37 @@ assuan_init_socket_server (ASSUAN_CONTEXT *r_ctx, int listen_fd)
return rc; return rc;
} }
/* Initialize a server using the already accepted socket FD. */
int
assuan_init_connected_socket_server (ASSUAN_CONTEXT *r_ctx, int fd)
{
ASSUAN_CONTEXT ctx;
int rc;
*r_ctx = NULL;
ctx = xtrycalloc (1, sizeof *ctx);
if (!ctx)
return ASSUAN_Out_Of_Core;
ctx->is_server = 1;
ctx->pipe_mode = 1; /* we wan't a second accept to indicate EOF */
ctx->input_fd = -1;
ctx->output_fd = -1;
ctx->inbound.fd = -1;
ctx->outbound.fd = -1;
ctx->listen_fd = -1;
ctx->connected_fd = fd;
ctx->deinit_handler = deinit_socket_server;
ctx->accept_handler = accept_connection_bottom;
ctx->finish_handler = finish_connection;
rc = _assuan_register_std_commands (ctx);
if (rc)
xfree (ctx);
else
*r_ctx = ctx;
return rc;
}

View File

@ -1,27 +1,28 @@
/* assuan-util.c - Utility functions for Assuan /* assuan-util.c - Utility functions for Assuan
* Copyright (C) 2001 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#include <config.h> #include <config.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <ctype.h>
#include "assuan-defs.h" #include "assuan-defs.h"
@ -29,13 +30,10 @@
#include "../jnlib/logging.h" #include "../jnlib/logging.h"
#endif #endif
static void *(*alloc_func)(size_t n) = malloc; static void *(*alloc_func)(size_t n) = malloc;
static void *(*realloc_func)(void *p, size_t n) = realloc; static void *(*realloc_func)(void *p, size_t n) = realloc;
static void (*free_func)(void*) = free; static void (*free_func)(void*) = free;
void void
assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n), assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
void *(*new_realloc_func)(void *p, size_t n), void *(*new_realloc_func)(void *p, size_t n),
@ -74,7 +72,6 @@ _assuan_free (void *p)
free_func (p); free_func (p);
} }
/* Store the error in the context so that the error sending function /* Store the error in the context so that the error sending function
can take out a descriptive text. Inside the assuan code, use the can take out a descriptive text. Inside the assuan code, use the
@ -131,6 +128,8 @@ assuan_end_confidential (ASSUAN_CONTEXT ctx)
} }
} }
/* Dump a possibly binary string (used for debugging). Distinguish
ascii text from binary and print it accordingly. */
void void
_assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length) _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length)
{ {
@ -138,26 +137,31 @@ _assuan_log_print_buffer (FILE *fp, const void *buffer, size_t length)
int n; int n;
for (n=length,s=buffer; n; n--, s++) for (n=length,s=buffer; n; n--, s++)
{ if (!isascii (*s) || iscntrl (*s) || !isprint (*s))
if (*s < ' ' || (*s >= 0x7f && *s <= 0xa0)) break;
break;
}
s = buffer; s = buffer;
if (!n && *s != '[') if (!n && *s != '[')
fwrite (buffer, length, 1, fp); fwrite (buffer, length, 1, fp);
else else
{ {
putc ('[', fp); #ifdef HAVE_FLOCKFILE
flockfile (fp);
#endif
putc_unlocked ('[', fp);
for (n=0; n < length; n++, s++) for (n=0; n < length; n++, s++)
fprintf (fp, " %02x", *s); fprintf (fp, " %02x", *s);
putc (' ', fp); putc_unlocked (' ', fp);
putc (']', fp); putc_unlocked (']', fp);
#ifdef HAVE_FUNLOCKFILE
funlockfile (fp);
#endif
} }
} }
/* print a user supplied string after filtering out potential bad /* Log a user supplied string. Escapes non-printable before
characters*/ printing. */
void void
_assuan_log_sanitized_string (const char *string) _assuan_log_sanitized_string (const char *string)
{ {
@ -168,29 +172,59 @@ _assuan_log_sanitized_string (const char *string)
FILE *fp = stderr; FILE *fp = stderr;
#endif #endif
if (! *s)
return;
#ifdef HAVE_FLOCKFILE
flockfile (fp);
#endif
for (; *s; s++) for (; *s; s++)
{ {
if (*s < 0x20 || (*s >= 0x7f && *s <= 0xa0)) int c = 0;
{
putc ('\\', fp); switch (*s)
if (*s == '\n') {
putc ('n', fp); case '\r':
else if (*s == '\r') c = 'r';
putc ('r', fp); break;
else if (*s == '\f')
putc ('f', fp); case '\n':
else if (*s == '\v') c = 'n';
putc ('v', fp); break;
else if (*s == '\b')
putc ('b', fp); case '\f':
else if (!*s) c = 'f';
putc ('0', fp); break;
else
fprintf (fp, "x%02x", *s ); case '\v':
c = 'v';
break;
case '\b':
c = 'b';
break;
default:
if (isascii (*s) && isprint (*s))
putc_unlocked (*s, fp);
else
{
putc_unlocked ('\\', fp);
fprintf (fp, "x%02x", *s);
}
}
if (c)
{
putc_unlocked ('\\', fp);
putc_unlocked (c, fp);
} }
else
putc (*s, fp);
} }
#ifdef HAVE_FUNLOCKFILE
funlockfile (fp);
#endif
} }

View File

@ -1,21 +1,21 @@
/* assuan.c - Definitions for the Assuna protocol /* assuan.c - Definitions for the Assuan protocol
* Copyright (C) 2001, 2002 Free Software Foundation, Inc. * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of Assuan.
* *
* GnuPG is free software; you can redistribute it and/or modify * Assuan is free software; you can redistribute it and/or modify it
* it under the terms of the GNU General Public License as published by * under the terms of the GNU Lesser General Public License as
* the Free Software Foundation; either version 2 of the License, or * published by the Free Software Foundation; either version 2.1 of
* (at your option) any later version. * the License, or (at your option) any later version.
* *
* GnuPG is distributed in the hope that it will be useful, * Assuan is distributed in the hope that it will be useful, but
* but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* GNU General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU Lesser General Public
* along with this program; if not, write to the Free Software * License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifndef ASSUAN_H #ifndef ASSUAN_H
@ -23,6 +23,7 @@
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> /* for ssize_t */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -81,7 +82,7 @@ typedef enum {
ASSUAN_Not_Confirmed = 128, ASSUAN_Not_Confirmed = 128,
ASSUAN_Bad_Certificate = 201, ASSUAN_Bad_Certificate = 201,
ASSUAN_Bad_Certificate_Path = 202, ASSUAN_Bad_Certificate_Chain = 202,
ASSUAN_Missing_Certificate = 203, ASSUAN_Missing_Certificate = 203,
ASSUAN_Bad_Signature = 204, ASSUAN_Bad_Signature = 204,
ASSUAN_No_Agent = 205, ASSUAN_No_Agent = 205,
@ -170,15 +171,12 @@ void assuan_deinit_server (ASSUAN_CONTEXT ctx);
/*-- assuan-socket-server.c --*/ /*-- assuan-socket-server.c --*/
int assuan_init_socket_server (ASSUAN_CONTEXT *r_ctx, int listen_fd); int assuan_init_socket_server (ASSUAN_CONTEXT *r_ctx, int listen_fd);
int assuan_init_connected_socket_server (ASSUAN_CONTEXT *r_ctx, int fd);
/*-- assuan-pipe-connect.c --*/ /*-- assuan-pipe-connect.c --*/
AssuanError assuan_pipe_connect (ASSUAN_CONTEXT *ctx, const char *name, AssuanError assuan_pipe_connect (ASSUAN_CONTEXT *ctx, const char *name,
char *const argv[], int *fd_child_list); char *const argv[], int *fd_child_list);
AssuanError assuan_pipe_connect2 (ASSUAN_CONTEXT *ctx, const char *name,
char *const argv[], int *fd_child_list,
unsigned int connect_flags);
/*-- assuan-socket-connect.c --*/ /*-- assuan-socket-connect.c --*/
AssuanError assuan_socket_connect (ASSUAN_CONTEXT *ctx, const char *name, AssuanError assuan_socket_connect (ASSUAN_CONTEXT *ctx, const char *name,
pid_t server_pid); pid_t server_pid);

View File

@ -1,23 +1,23 @@
#!/bin/sh #!/bin/sh
# mkerrors - Extract error strings from assuan.h # mkerrors - Extract error strings from assuan.h
# and create C source for assuan_strerror # and create C source for assuan_strerror
# Copyright (C) 2001 Free Software Foundation, Inc. # Copyright (C) 2001, 2002 Free Software Foundation, Inc.
# #
# This file is part of GnuPG. # This file is part of Assuan.
# #
# GnuPG is free software; you can redistribute it and/or modify # Assuan is free software; you can redistribute it and/or modify it
# it under the terms of the GNU General Public License as published by # under the terms of the GNU Lesser General Public License as
# the Free Software Foundation; either version 2 of the License, or # published by the Free Software Foundation; either version 2.1 of
# (at your option) any later version. # the License, or (at your option) any later version.
# #
# GnuPG is distributed in the hope that it will be useful, # Assuan is distributed in the hope that it will be useful, but
# but WITHOUT ANY WARRANTY; without even the implied warranty of # WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# GNU General Public License for more details. # Lesser General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU Lesser General Public
# along with this program; if not, write to the Free Software # License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
cat <<EOF cat <<EOF
/* Generated automatically by mkerrors */ /* Generated automatically by mkerrors */

View File

@ -1,3 +1,14 @@
2003-02-01 Marcus Brinkmann <marcus@g10code.de>
* engine-gpgsm.c (map_assuan_error): Replace
ASSUAN_Bad_Certificate_Path with ASSUAN_Bad_Certificate_Chain.
(gpgsm_new): Use assuan_pipe_connect instead assuan_pipe_connect2.
* util.h (DIMof): Remove macro.
* ops.h (_gpgme_op_event_cb, _gpgme_op_event_cb_user,
_gpgme_data_unread): Prototypes removed.
2003-01-30 Marcus Brinkmann <marcus@g10code.de> 2003-01-30 Marcus Brinkmann <marcus@g10code.de>
* types.h: File removed. * types.h: File removed.

View File

@ -228,7 +228,7 @@ map_assuan_error (AssuanError err)
return GPGME_Invalid_Engine; /* XXX: Need something more useful. */ return GPGME_Invalid_Engine; /* XXX: Need something more useful. */
case ASSUAN_Bad_Certificate: case ASSUAN_Bad_Certificate:
case ASSUAN_Bad_Certificate_Path: case ASSUAN_Bad_Certificate_Chain:
case ASSUAN_Missing_Certificate: case ASSUAN_Missing_Certificate:
case ASSUAN_No_Public_Key: case ASSUAN_No_Public_Key:
case ASSUAN_No_Secret_Key: case ASSUAN_No_Secret_Key:
@ -365,9 +365,8 @@ gpgsm_new (void **engine)
argv[1] = "--server"; argv[1] = "--server";
argv[2] = NULL; argv[2] = NULL;
err = assuan_pipe_connect2 (&gpgsm->assuan_ctx, err = assuan_pipe_connect (&gpgsm->assuan_ctx,
_gpgme_get_gpgsm_path (), argv, child_fds, _gpgme_get_gpgsm_path (), argv, child_fds);
1 /* dup stderr to /dev/null */);
/* We need to know the fd used by assuan for reads. We do this by /* We need to know the fd used by assuan for reads. We do this by
using the assumption that the first returned fd from using the assumption that the first returned fd from

View File

@ -28,9 +28,6 @@
void _gpgme_release_result (GpgmeCtx ctx); void _gpgme_release_result (GpgmeCtx ctx);
void _gpgme_set_op_info (GpgmeCtx c, GpgmeData info); void _gpgme_set_op_info (GpgmeCtx c, GpgmeData info);
void _gpgme_op_event_cb (void *data, GpgmeEventIO type, void *type_data);
void _gpgme_op_event_cb_user (void *data, GpgmeEventIO type, void *type_data);
/*-- wait.c --*/ /*-- wait.c --*/
GpgmeError _gpgme_wait_one (GpgmeCtx ctx); GpgmeError _gpgme_wait_one (GpgmeCtx ctx);
GpgmeError _gpgme_wait_on_condition (GpgmeCtx ctx, volatile int *cond); GpgmeError _gpgme_wait_on_condition (GpgmeCtx ctx, volatile int *cond);
@ -53,9 +50,6 @@ GpgmeError _gpgme_data_append_for_xml ( GpgmeData dh,
GpgmeError _gpgme_data_append_percentstring_for_xml ( GpgmeData dh, GpgmeError _gpgme_data_append_percentstring_for_xml ( GpgmeData dh,
const char *string ); const char *string );
GpgmeError _gpgme_data_unread (GpgmeData dh,
const char *buffer, size_t length );
GpgmeError _gpgme_data_inbound_handler (void *opaque, int fd); GpgmeError _gpgme_data_inbound_handler (void *opaque, int fd);
GpgmeError _gpgme_data_outbound_handler (void *opaque, int fd); GpgmeError _gpgme_data_outbound_handler (void *opaque, int fd);

View File

@ -25,7 +25,6 @@
#define DIM(v) (sizeof(v)/sizeof((v)[0])) #define DIM(v) (sizeof(v)/sizeof((v)[0]))
#define DIMof(type,member) DIM(((type *)0)->member)
/*-- {posix,w32}-util.c --*/ /*-- {posix,w32}-util.c --*/