aboutsummaryrefslogtreecommitdiffstats
path: root/src/assuan-io.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2007-07-12 15:26:33 +0000
committerWerner Koch <[email protected]>2007-07-12 15:26:33 +0000
commit343ee20b72084f7fe4a9deea05dd511f68d768a1 (patch)
tree904700ea406d5a7f00a1d12d28d5d213fd802e01 /src/assuan-io.c
parentIntroduced new type for better support of W32 HADNLES vs. file descriptors. (diff)
downloadlibassuan-343ee20b72084f7fe4a9deea05dd511f68d768a1.tar.gz
libassuan-343ee20b72084f7fe4a9deea05dd511f68d768a1.zip
Better error code mapping.
Diffstat (limited to 'src/assuan-io.c')
-rw-r--r--src/assuan-io.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/assuan-io.c b/src/assuan-io.c
index 7ce43cb..a5e3816 100644
--- a/src/assuan-io.c
+++ b/src/assuan-io.c
@@ -63,7 +63,11 @@ _assuan_simple_read (assuan_context_t ctx, void *buffer, size_t size)
n = ReadFile (ctx->inbound.fd, buffer, size, &nread, NULL);
if (!n)
{
- errno = EIO; /* FIXME: We should have a proper mapping. */
+ switch (GetLastError())
+ {
+ case ERROR_BROKEN_PIPE: errno = EPIPE; break;
+ default: errno = EIO;
+ }
n = -1;
}
else
@@ -92,7 +96,12 @@ _assuan_simple_write (assuan_context_t ctx, const void *buffer, size_t size)
n = WriteFile (ctx->outbound.fd, buffer, size, &nwrite, NULL);
if (!n)
{
- errno = EIO; /* FIXME: We should have a proper mapping. */
+ switch (GetLastError ())
+ {
+ case ERROR_BROKEN_PIPE:
+ case ERROR_NO_DATA: errno = EPIPE; break;
+ default: errno = EIO; break;
+ }
n = -1;
}
else