From 22d82f9f46f2edd819a1b328883a7330ca7e1508 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 17 Aug 2003 17:12:18 +0000 Subject: * errno.cc (errmap): Map ERROR_INVALID_BLOCK_LENGTH to EIO. * fhandler_raw.cc (fhandler_dev_raw::raw_read): Set more accurate errnos instead of EACCES. (fhandler_dev_raw::raw_write): Ditto. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/errno.cc | 1 + winsup/cygwin/fhandler_raw.cc | 13 +++++++------ 3 files changed, 15 insertions(+), 6 deletions(-) (limited to 'winsup/cygwin') diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 6debe68a4..b8eca83c3 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2003-08-17 Corinna Vinschen + + * errno.cc (errmap): Map ERROR_INVALID_BLOCK_LENGTH to EIO. + * fhandler_raw.cc (fhandler_dev_raw::raw_read): Set more accurate + errnos instead of EACCES. + (fhandler_dev_raw::raw_write): Ditto. + 2003-08-17 Christopher Faylor * path.cc (special_name): Accommodate all special names with diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc index 127eff9d3..cbe31d04a 100644 --- a/winsup/cygwin/errno.cc +++ b/winsup/cygwin/errno.cc @@ -112,6 +112,7 @@ static NO_COPY struct X (NOACCESS, EFAULT), X (FILE_INVALID, ENXIO), X (INVALID_ADDRESS, EOVERFLOW), + X (INVALID_BLOCK_LENGTH, EIO), { 0, NULL, 0} }; diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc index ebd8ef0cc..42f84073d 100644 --- a/winsup/cygwin/fhandler_raw.cc +++ b/winsup/cygwin/fhandler_raw.cc @@ -202,7 +202,10 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen) ret = writebuf (); if (ret) { - set_errno (is_eom (ret) ? ENOSPC : EACCES); + if (is_eom (ret)) + set_errno (ENOSPC); + else + __seterrno (); goto err; } @@ -267,8 +270,7 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen) { if (!is_eof (ret) && !is_eom (ret)) { - debug_printf ("return -1, set errno to EACCES"); - set_errno (EACCES); + __seterrno (); goto err; } @@ -309,8 +311,7 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen) { if (!is_eof (ret) && !is_eom (ret)) { - debug_printf ("return -1, set errno to EACCES"); - set_errno (EACCES); + __seterrno (); goto err; } if (bytes_read) @@ -442,7 +443,7 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len) has_written = 1; if (!is_eom (ret)) { - set_errno (EACCES); + __seterrno (); return -1; } eom_detected = 1; -- cgit v1.2.3