2007-07-04 Marcus Brinkmann <marcus@g10code.de>
* assuan/: Update files to 2007-07-04 version of assuan.
This commit is contained in:
parent
1639030a88
commit
a63c5c0137
@ -1,5 +1,7 @@
|
||||
2007-07-04 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* assuan/: Update files to 2007-07-04 version of assuan.
|
||||
|
||||
* autogen.sh: Use = not == in test.
|
||||
|
||||
2007-03-05 Werner Koch <wk@g10code.com>
|
||||
|
162
assuan/ChangeLog
162
assuan/ChangeLog
@ -1,3 +1,71 @@
|
||||
2007-07-04 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
Change _WIN32 to HAVE_W32_SYSTEM for consistency.
|
||||
|
||||
* assuan-defs.h (struct assuan_context_s): Have full peercred
|
||||
structure even if not HAVE_SO_PEERCRED, but not if
|
||||
HAVE_W32_SYSTEM.
|
||||
|
||||
2007-06-18 Werner Koch <wk@g10code.com>
|
||||
|
||||
* assuan-logging.c (load_libgpg_error, _assuan_gpg_strerror_r)
|
||||
(_assuan_gpg_strsource): New.
|
||||
* assuan-handler.c (process_request) [W32]: Use these new
|
||||
functions for human understable error codes.
|
||||
|
||||
2007-06-12 Werner Koch <wk@g10code.com>
|
||||
|
||||
* assuan-io.c (_assuan_simple_read): Hack to allow reading from a
|
||||
socket.
|
||||
(_assuan_simple_write): Likewise.
|
||||
|
||||
2007-06-11 Werner Koch <wk@g10code.com>
|
||||
|
||||
* assuan-io-pth.c (_assuan_simple_read, _assuan_simple_write): Use
|
||||
pth versions also for W32.
|
||||
|
||||
2007-05-29 Werner Koch <wk@g10code.com>
|
||||
|
||||
* assuan-io-pth.c: Include sys/socket.h only if available. Remove
|
||||
double inclusion of sys/wait.h
|
||||
|
||||
* assuan-pipe-connect.c (build_w32_commandline): Make ARGV const.
|
||||
|
||||
* assuan-pipe-server.c (is_valid_socket) [W32]: Do not define.
|
||||
|
||||
* assuan-socket-server.c [W32]: Include ws2tcpip.h to define
|
||||
socklen_t.
|
||||
* assuan-defs.h (struct assuan_context_s): Define most peercred
|
||||
members only if we can really set them.
|
||||
(_assuan_simple_sendmsg, _assuan_simple_recvmsg) [W32]: Use a
|
||||
different prototype.
|
||||
* assuan.h (assuan_get_peercred) [W32]: Do not define.
|
||||
* assuan-io.c (_assuan_simple_sendmsg, _assuan_simple_recvmsg)
|
||||
[w32]: Use another prototype.
|
||||
|
||||
2007-05-09 Werner Koch <wk@g10code.com>
|
||||
|
||||
* libassuan.m4: Print found version on success.
|
||||
|
||||
2007-05-01 Werner Koch <wk@g10code.com>
|
||||
|
||||
* assuan-uds.c (uds_reader): Cast void ptr for arithmetics.
|
||||
Reported by Peter O'Gorman.
|
||||
|
||||
2006-12-03 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* assuan-handler.c (assuan_command_parse_fd): Also allow white
|
||||
space after FD.
|
||||
|
||||
2006-12-02 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* assuan-uds.c (uds_reader): Return 0 if recvmsg returns 0.
|
||||
|
||||
2006-12-01 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* assuan-client.c (assuan_transact): Also translate some of the
|
||||
legacy error codes.
|
||||
|
||||
2006-11-22 Werner Koch <wk@g10code.com>
|
||||
|
||||
* assuan-handler.c (fun1_cookie_write, fun2_cookie_write): New.
|
||||
@ -328,20 +396,106 @@
|
||||
* assuan-buffer.c (assuan_write_line): If the line is longer than
|
||||
the maximum line length, bail out early.
|
||||
|
||||
2004-04-21 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-socket-server.c (accept_connection_bottom): Save the pid
|
||||
of the peer if it is available.
|
||||
* assuan-socket-connect.c (assuan_socket_connect): Do not save the
|
||||
dummy SERVED_PID arg.
|
||||
* assuan-pipe-connect.c (do_finish): Don't wait if the pid is 0.
|
||||
(assuan_pipe_connect2): Store the parents pid in the environment
|
||||
of the child.
|
||||
* assuan-pipe-server.c (assuan_init_pipe_server): Initialize the
|
||||
peer's pid from the environment.
|
||||
* assuan-connect.c (assuan_get_pid): Do not return 0 as a PID.
|
||||
|
||||
2004-04-19 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-socket-connect.c: Include sys/types.h
|
||||
* assuan-socket-server.c: Ditto
|
||||
* assuan-socket-server.c, assuan-socket-connect.c: Includes
|
||||
sys/types.h. Reported by Michael Nottebrock.
|
||||
* assuan-domain-connect.c: Ditto.
|
||||
|
||||
2004-04-13 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-util.c (_assuan_log_print_buffer): Relaxed quoting.
|
||||
(_assuan_log_sanitized_string): Ditto.
|
||||
|
||||
2004-03-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-handler.c: Include <errno.h>. Reported by Bernd Kuhls.
|
||||
|
||||
2004-02-18 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* libassuan-config.in: Ignore setting of --prefix.
|
||||
|
||||
* assuan-handler.c (assuan_get_data_fp): Fail with ENOSYS if we
|
||||
can't implement this.
|
||||
|
||||
2004-02-15 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* memrchr.c (memrchr): Fixed implementation. Taken from gpgme.
|
||||
|
||||
2004-02-13 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-domain-connect.c: Removed the unneeded alloca.h
|
||||
* assuan-domain-connect.c: Removed the unneeded alloca.h.
|
||||
|
||||
2004-01-24 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-pipe-connect.c (assuan_pipe_connect2): New as an
|
||||
extension of assuan_pipe_connect. Made the latter call this one.
|
||||
|
||||
2004-01-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-buffer.c (_assuan_cookie_write_data): Return the
|
||||
requested size to indicate successful operation. Fixes a spurious
|
||||
bug we previously fixed using fflush().
|
||||
|
||||
2003-12-22 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan.h (ASSUAN_Locale_Problem): Added.
|
||||
* assuan-errors.c (assuan_strerror): Ditto.
|
||||
|
||||
2003-12-18 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan.h (AssuanCommand): Clarified that these are now
|
||||
deprecated and actually useless.
|
||||
(assuan_error_t): Clarified and added ASSUAN_USER_ERROR_FIRST,
|
||||
ASSUAN_USER_ERROR_LAST.
|
||||
|
||||
2003-12-16 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-buffer.c: Changed formatting of the debug output prefix.
|
||||
* assuan-util.c (assuan_set_log_stream): Set global log stream if
|
||||
it has not been done yet.
|
||||
* assuan-logging.c (_assuan_set_default_log_stream): New.
|
||||
(assuan_set_assuan_log_prefix): New.
|
||||
|
||||
2003-12-11 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* funopen.c (_assuan_funopen): Renamed from funopen, to keep the
|
||||
name space clean and avoid duplicate definitions if another
|
||||
library uses the same replacement.
|
||||
* assuan-defs.h (funopen): Renamed prototype and add a macro.
|
||||
|
||||
2003-12-08 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* TODO: Removed.
|
||||
|
||||
2003-11-12 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan-handler.c (process_request): Kludge to print better error
|
||||
messages for gpg-error enabled programs.
|
||||
|
||||
2003-11-06 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* assuan.h (assuan_context_t): New. Should be used in favor of
|
||||
ASSUAN_CONTEXT.
|
||||
(assuan_error_t): New. To be used instead of AssuanError.
|
||||
|
||||
2003-11-11 Moritz Schulte <mo@g10code.com>
|
||||
|
||||
* assuan-socket-connect.c (assuan_socket_connect): Fix computation
|
||||
of socket address length.
|
||||
|
||||
2003-08-13 Werner Koch <wk@gnupg.org>
|
||||
|
||||
@ -818,7 +972,7 @@
|
||||
* assuan-defs.h: Add space in the context for this.
|
||||
|
||||
|
||||
Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright 2001, 2002, 2006 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
|
||||
|
@ -23,6 +23,9 @@ updating this directory, are:
|
||||
namespace. It also wraps all system functions that are wrapped by
|
||||
GNU Pth to _gpgme wrappers.
|
||||
|
||||
* assuan-io-pth.c
|
||||
We don't need this file as GPGME doesn't use sendmsg and recvmsg.
|
||||
If it would, we would need to pick up the W32 implementation.
|
||||
|
||||
Copyright 2004 g10 Code GmbH
|
||||
|
||||
|
@ -164,7 +164,7 @@ assuan_transact (assuan_context_t ctx,
|
||||
rc = atoi (line);
|
||||
if (rc > 0 && rc < 100)
|
||||
rc = _assuan_error (ASSUAN_Server_Fault);
|
||||
else if (rc > 0 && rc <= 128)
|
||||
else if (rc > 0 && rc <= 405)
|
||||
rc = _assuan_error (rc);
|
||||
}
|
||||
else if (okay == 2)
|
||||
|
@ -62,6 +62,7 @@ assuan_get_pid (assuan_context_t ctx)
|
||||
/* Return user credentials. PID, UID and GID amy be gived as NULL if
|
||||
you are not interested in this value. For getting the pid of the
|
||||
peer the assuan_get_pid is usually better suited. */
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
assuan_error_t
|
||||
assuan_get_peercred (assuan_context_t ctx, pid_t *pid, uid_t *uid, gid_t *gid)
|
||||
{
|
||||
@ -77,3 +78,4 @@ assuan_get_peercred (assuan_context_t ctx, pid_t *pid, uid_t *uid, gid_t *gid)
|
||||
*gid = ctx->peercred.gid;
|
||||
return 0;
|
||||
}
|
||||
#endif /* HAVE_W32_SYSTEM */
|
||||
|
@ -140,12 +140,14 @@ struct assuan_context_s
|
||||
int listen_fd; /* The fd we are listening on (used by socket servers) */
|
||||
int connected_fd; /* helper */
|
||||
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
struct {
|
||||
int valid; /* Whether this structure has valid information. */
|
||||
int valid; /* Whether this structure has valid information. */
|
||||
pid_t pid; /* The pid of the peer. */
|
||||
uid_t uid; /* The uid of the peer. */
|
||||
gid_t gid; /* The gid of the peer. */
|
||||
} peercred;
|
||||
#endif /* HAVE_W32_SYSTEM */
|
||||
|
||||
/* Used for Unix domain sockets. */
|
||||
struct sockaddr_un myaddr;
|
||||
@ -259,6 +261,8 @@ void _assuan_free (void *p);
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
const char *_assuan_w32_strerror (int ec);
|
||||
#define w32_strerror(e) _assuan_w32_strerror ((e))
|
||||
int _assuan_gpg_strerror_r (unsigned int err, char *buf, size_t buflen);
|
||||
const char *_assuan_gpg_strsource (unsigned int err);
|
||||
#endif /*HAVE_W32_SYSTEM*/
|
||||
|
||||
|
||||
@ -280,8 +284,13 @@ pid_t _assuan_waitpid (pid_t pid, int *status, int options);
|
||||
ssize_t _assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size);
|
||||
ssize_t _assuan_simple_write (assuan_context_t ctx, const void *buffer,
|
||||
size_t size);
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
int _assuan_simple_sendmsg (assuan_context_t ctx, void *msg);
|
||||
int _assuan_simple_recvmsg (assuan_context_t ctx, void *msg);
|
||||
#else
|
||||
ssize_t _assuan_simple_sendmsg (assuan_context_t ctx, struct msghdr *msg);
|
||||
ssize_t _assuan_simple_recvmsg (assuan_context_t ctx, struct msghdr *msg);
|
||||
#endif
|
||||
|
||||
/*-- assuan-socket.c --*/
|
||||
int _assuan_close (int fd);
|
||||
|
@ -142,8 +142,8 @@ assuan_command_parse_fd (assuan_context_t ctx, char *line, int *rfd)
|
||||
{
|
||||
char *endp;
|
||||
|
||||
if ( (strncmp (line, "FD", 2) && strncmp (line, "fd", 2))
|
||||
|| (line[2] != '=' && line[2] != '\0'))
|
||||
if ((strncmp (line, "FD", 2) && strncmp (line, "fd", 2))
|
||||
|| (line[2] != '=' && line[2] != '\0' && !spacep(&line[2])))
|
||||
return set_error (ctx, Syntax_Error, "FD[=<n>] expected");
|
||||
line += 2;
|
||||
if (*line == '=')
|
||||
@ -509,7 +509,24 @@ process_request (assuan_context_t ctx)
|
||||
{
|
||||
const char *text = ctx->err_no == rc? ctx->err_str:NULL;
|
||||
|
||||
#if defined(__GNUC__) && defined(__ELF__)
|
||||
#if defined(HAVE_W32_SYSTEM)
|
||||
unsigned int source, code;
|
||||
char ebuf[50];
|
||||
const char *esrc;
|
||||
|
||||
source = ((rc >> 24) & 0xff);
|
||||
code = (rc & 0x00ffffff);
|
||||
if (source
|
||||
&& !_assuan_gpg_strerror_r (rc, ebuf, sizeof ebuf)
|
||||
&& (esrc=_assuan_gpg_strsource (rc)))
|
||||
{
|
||||
/* Assume this is an libgpg-error. */
|
||||
sprintf (errline, "ERR %d %.50s <%.30s>%s%.100s",
|
||||
rc, ebuf, esrc,
|
||||
text? " - ":"", text?text:"");
|
||||
}
|
||||
else
|
||||
#elif defined(__GNUC__) && defined(__ELF__)
|
||||
/* If we have weak symbol support we try to use the error
|
||||
strings from libgpg-error without creating a dependency.
|
||||
They are used for debugging purposes only, so there is no
|
||||
@ -526,7 +543,7 @@ process_request (assuan_context_t ctx)
|
||||
__attribute__ ((weak));
|
||||
const char *gpg_strsource (unsigned int err)
|
||||
__attribute__ ((weak));
|
||||
#if !defined(HAVE_W32_SYSTEM) && __GNUC__ < 3
|
||||
#if __GNUC__ < 3
|
||||
#pragma weak gpg_strerror_r
|
||||
#pragma weak gpg_strsource
|
||||
#endif
|
||||
|
@ -25,7 +25,9 @@
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
@ -49,18 +51,69 @@ _assuan_waitpid (pid_t pid, int *status, int options)
|
||||
ssize_t
|
||||
_assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size)
|
||||
{
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
/* Due to the peculiarities of the W32 API we can't use read for a
|
||||
network socket and thus we try to use recv first and fallback to
|
||||
read if recv detects that it is not a network socket. */
|
||||
int n;
|
||||
|
||||
n = recv (ctx->inbound.fd, buffer, size, 0);
|
||||
if (n == -1 && WSAGetLastError () == WSAENOTSOCK)
|
||||
{
|
||||
DWORD nread = 0;
|
||||
|
||||
n = ReadFile ((HANDLE)ctx->inbound.fd, buffer, size, &nread, NULL);
|
||||
if (!n)
|
||||
{
|
||||
errno = EIO; /* FIXME: We should have a proper mapping. */
|
||||
n = -1;
|
||||
}
|
||||
else
|
||||
n = (int)nread;
|
||||
}
|
||||
return n;
|
||||
#else /*!HAVE_W32_SYSTEM*/
|
||||
return read (ctx->inbound.fd, buffer, size);
|
||||
#endif /*!HAVE_W32_SYSTEM*/
|
||||
}
|
||||
|
||||
ssize_t
|
||||
_assuan_simple_write (assuan_context_t ctx, const void *buffer, size_t size)
|
||||
{
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
/* Due to the peculiarities of the W32 API we can't use write for a
|
||||
network socket and thus we try to use send first and fallback to
|
||||
write if send detects that it is not a network socket. */
|
||||
int n;
|
||||
|
||||
n = send (ctx->outbound.fd, buffer, size, 0);
|
||||
if (n == -1 && WSAGetLastError () == WSAENOTSOCK)
|
||||
{
|
||||
DWORD nwrite;
|
||||
|
||||
n = WriteFile ((HANDLE)ctx->outbound.fd, buffer, size, &nwrite, NULL);
|
||||
if (!n)
|
||||
{
|
||||
errno = EIO; /* FIXME: We should have a proper mapping. */
|
||||
n = -1;
|
||||
}
|
||||
else
|
||||
n = (int)nwrite;
|
||||
}
|
||||
return n;
|
||||
#else /*!HAVE_W32_SYSTEM*/
|
||||
return write (ctx->outbound.fd, buffer, size);
|
||||
#endif /*!HAVE_W32_SYSTEM*/
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
int
|
||||
_assuan_simple_sendmsg (assuan_context_t ctx, void *msg)
|
||||
#else
|
||||
ssize_t
|
||||
_assuan_simple_sendmsg (assuan_context_t ctx, struct msghdr *msg)
|
||||
#endif
|
||||
{
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return _assuan_error (ASSUAN_Not_Implemented);
|
||||
@ -73,8 +126,13 @@ _assuan_simple_sendmsg (assuan_context_t ctx, struct msghdr *msg)
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
int
|
||||
_assuan_simple_recvmsg (assuan_context_t ctx, void *msg)
|
||||
#else
|
||||
ssize_t
|
||||
_assuan_simple_recvmsg (assuan_context_t ctx, struct msghdr *msg)
|
||||
#endif
|
||||
{
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return _assuan_error (ASSUAN_Not_Implemented);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* assuan-logging.c - Default logging function.
|
||||
* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of Assuan.
|
||||
*
|
||||
@ -238,4 +238,51 @@ _assuan_w32_strerror (int ec)
|
||||
strerr, sizeof (strerr)-1, NULL);
|
||||
return strerr;
|
||||
}
|
||||
|
||||
static int (*my_strerror_r) (unsigned int err, char *buf, size_t buflen);
|
||||
static const char * (*my_strsource) (unsigned int err);
|
||||
|
||||
static int
|
||||
load_libgpg_error (void)
|
||||
{
|
||||
/* This code is not race free but suitable for our purpose. */
|
||||
static volatile int initialized;
|
||||
void *handle;
|
||||
|
||||
if (initialized)
|
||||
return (my_strerror_r && my_strsource)? 0:-1;
|
||||
handle = LoadLibrary ("libgpg-error-0.dll");
|
||||
if (handle)
|
||||
{
|
||||
void *foo, *bar;
|
||||
foo = GetProcAddress (handle, "gpg_strerror_r");
|
||||
bar = GetProcAddress (handle, "gpg_strsource");
|
||||
if (foo && bar)
|
||||
{
|
||||
my_strerror_r = foo;
|
||||
my_strsource = bar;
|
||||
}
|
||||
else
|
||||
CloseHandle (handle);
|
||||
}
|
||||
initialized = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
_assuan_gpg_strerror_r (unsigned int err, char *buf, size_t buflen)
|
||||
{
|
||||
if (load_libgpg_error ())
|
||||
return -1;
|
||||
return my_strerror_r (err, buf, buflen);
|
||||
}
|
||||
|
||||
|
||||
const char *
|
||||
_assuan_gpg_strsource (unsigned int err)
|
||||
{
|
||||
if (load_libgpg_error ())
|
||||
return NULL;
|
||||
return my_strsource (err);
|
||||
}
|
||||
#endif /*HAVE_W32_SYSTEM*/
|
||||
|
@ -554,7 +554,7 @@ socketpair_connect (assuan_context_t *ctx,
|
||||
/* Build a command line for use with W32's CreateProcess. On success
|
||||
CMDLINE gets the address of a newly allocated string. */
|
||||
static int
|
||||
build_w32_commandline (char * const *argv, char **cmdline)
|
||||
build_w32_commandline (const char * const *argv, char **cmdline)
|
||||
{
|
||||
int i, n;
|
||||
const char *s;
|
||||
|
@ -92,6 +92,7 @@ _assuan_new_context (assuan_context_t *r_ctx)
|
||||
|
||||
|
||||
/* Returns true if atoi(S) denotes a valid socket. */
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
static int
|
||||
is_valid_socket (const char *s)
|
||||
{
|
||||
@ -101,6 +102,7 @@ is_valid_socket (const char *s)
|
||||
return 0;
|
||||
return S_ISSOCK (buf.st_mode);
|
||||
}
|
||||
#endif /*!HAVE_W32_SYSTEM*/
|
||||
|
||||
|
||||
int
|
||||
|
@ -25,13 +25,19 @@
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
# include <windows.h>
|
||||
# if HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
# elif HAVE_WS2TCPIP_H
|
||||
# include <ws2tcpip.h>
|
||||
# endif
|
||||
#else
|
||||
#include <windows.h>
|
||||
# include <sys/socket.h>
|
||||
# include <sys/un.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "assuan-defs.h"
|
||||
|
||||
static struct assuan_io io = { _assuan_simple_read,
|
||||
|
@ -111,6 +111,8 @@ uds_reader (assuan_context_t ctx, void *buf, size_t buflen)
|
||||
len = _assuan_simple_recvmsg (ctx, &msg);
|
||||
if (len < 0)
|
||||
return -1;
|
||||
if (len == 0)
|
||||
return 0;
|
||||
|
||||
ctx->uds.buffersize = len;
|
||||
ctx->uds.bufferoffset = 0;
|
||||
@ -150,7 +152,7 @@ uds_reader (assuan_context_t ctx, void *buf, size_t buflen)
|
||||
if (len > buflen) /* We have more than the user requested. */
|
||||
len = buflen;
|
||||
|
||||
memcpy (buf, ctx->uds.buffer + ctx->uds.bufferoffset, len);
|
||||
memcpy (buf, (char*)ctx->uds.buffer + ctx->uds.bufferoffset, len);
|
||||
ctx->uds.buffersize -= len;
|
||||
assert (ctx->uds.buffersize >= 0);
|
||||
ctx->uds.bufferoffset += len;
|
||||
|
@ -460,8 +460,10 @@ assuan_error_t assuan_socket_connect_ext (assuan_context_t *ctx,
|
||||
/*-- assuan-connect.c --*/
|
||||
void assuan_disconnect (assuan_context_t ctx);
|
||||
pid_t assuan_get_pid (assuan_context_t ctx);
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
assuan_error_t assuan_get_peercred (assuan_context_t ctx,
|
||||
pid_t *pid, uid_t *uid, gid_t *gid);
|
||||
#endif
|
||||
|
||||
/*-- assuan-client.c --*/
|
||||
assuan_error_t
|
||||
|
@ -31,7 +31,7 @@ check_version () {
|
||||
|
||||
DIE=no
|
||||
FORCE=
|
||||
if test "$1" == "--force"; then
|
||||
if test "$1" = "--force"; then
|
||||
FORCE=" --force"
|
||||
shift
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user