From 343ee20b72084f7fe4a9deea05dd511f68d768a1 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 12 Jul 2007 15:26:33 +0000 Subject: Better error code mapping. --- src/assuan-io.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/assuan-io.c') 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 -- cgit v1.2.3