aboutsummaryrefslogtreecommitdiffstats
path: root/src/assuan-io.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2007-10-01 14:44:46 +0000
committerWerner Koch <[email protected]>2007-10-01 14:44:46 +0000
commit88fa870976dfef9403532ee07ff901535645c578 (patch)
treea8877d852adfeb8ad7d328144ed8866714973d5d /src/assuan-io.c
parentFixed a name clash in internal symbols used only under W32. (diff)
downloadlibassuan-88fa870976dfef9403532ee07ff901535645c578.tar.gz
libassuan-88fa870976dfef9403532ee07ff901535645c578.zip
Add socket wrapper API.
Changed the ABI ofthe W32 socket emulation.
Diffstat (limited to 'src/assuan-io.c')
-rw-r--r--src/assuan-io.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/assuan-io.c b/src/assuan-io.c
index 9c2ef91..df5fe57 100644
--- a/src/assuan-io.c
+++ b/src/assuan-io.c
@@ -47,7 +47,7 @@ _assuan_waitpid (pid_t pid, int *status, int options)
ssize_t
-_assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size)
+_assuan_io_read (assuan_fd_t fd, void *buffer, size_t size)
{
#ifdef HAVE_W32_SYSTEM
/* Due to the peculiarities of the W32 API we can't use read for a
@@ -55,12 +55,12 @@ _assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size)
read if recv detects that it is not a network socket. */
int n;
- n = recv (HANDLE2SOCKET(ctx->inbound.fd), buffer, size, 0);
+ n = recv (HANDLE2SOCKET(fd), buffer, size, 0);
if (n == -1 && WSAGetLastError () == WSAENOTSOCK)
{
DWORD nread = 0;
- n = ReadFile (ctx->inbound.fd, buffer, size, &nread, NULL);
+ n = ReadFile (fd, buffer, size, &nread, NULL);
if (!n)
{
switch (GetLastError())
@@ -75,12 +75,20 @@ _assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size)
}
return n;
#else /*!HAVE_W32_SYSTEM*/
- return read (ctx->inbound.fd, buffer, size);
+ return read (fd, buffer, size);
#endif /*!HAVE_W32_SYSTEM*/
}
+
ssize_t
-_assuan_simple_write (assuan_context_t ctx, const void *buffer, size_t size)
+_assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size)
+{
+ return _assuan_io_read (ctx->inbound.fd, buffer, size);
+}
+
+
+ssize_t
+_assuan_io_write (assuan_fd_t fd, 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
@@ -88,12 +96,12 @@ _assuan_simple_write (assuan_context_t ctx, const void *buffer, size_t size)
write if send detects that it is not a network socket. */
int n;
- n = send (HANDLE2SOCKET(ctx->outbound.fd), buffer, size, 0);
+ n = send (HANDLE2SOCKET(fd), buffer, size, 0);
if (n == -1 && WSAGetLastError () == WSAENOTSOCK)
{
DWORD nwrite;
- n = WriteFile (ctx->outbound.fd, buffer, size, &nwrite, NULL);
+ n = WriteFile (fd, buffer, size, &nwrite, NULL);
if (!n)
{
switch (GetLastError ())
@@ -109,11 +117,18 @@ _assuan_simple_write (assuan_context_t ctx, const void *buffer, size_t size)
}
return n;
#else /*!HAVE_W32_SYSTEM*/
- return write (ctx->outbound.fd, buffer, size);
+ return write (fd, buffer, size);
#endif /*!HAVE_W32_SYSTEM*/
}
+ssize_t
+_assuan_simple_write (assuan_context_t ctx, const void *buffer, size_t size)
+{
+ return _assuan_io_write (ctx->outbound.fd, buffer, size);
+}
+
+
#ifdef HAVE_W32_SYSTEM
int
_assuan_simple_sendmsg (assuan_context_t ctx, void *msg)