diff options
author | Christopher Faylor <me@cgf.cx> | 2002-05-09 22:55:08 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-05-09 22:55:08 +0000 |
commit | f561f644e97894f6d4f07d43ae46f84dc0c4d7a4 (patch) | |
tree | feb3b3b070997e8a9c52887dbcb9eed76428298b | |
parent | 62ae6f36e2968bdc2da87073bb03c35830a9f183 (diff) | |
download | newlib-f561f644e97894f6d4f07d43ae46f84dc0c4d7a4.zip newlib-f561f644e97894f6d4f07d43ae46f84dc0c4d7a4.tar.gz newlib-f561f644e97894f6d4f07d43ae46f84dc0c4d7a4.tar.bz2 |
* syscalls.cc (_write): Change error to EBADF if attempt to write to a
non-writable fd.
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e33b5bd..7584ed1 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2002-05-09 Christopher Faylor <cgf@redhat.com> + + * syscalls.cc (_write): Change error to EBADF if attempt to write to a + non-writable fd. + 2002-05-08 Corinna Vinschen <corinna@vinschen.de> * cygheap.h (class cygheap_user): Add member `orig_psid'. diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index b549f95..0be393a 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -384,6 +384,9 @@ _write (int fd, const void *ptr, size_t len) myself->process_state |= PID_TTYOU; res = cfd->write (ptr, len); myself->process_state &= ~PID_TTYOU; + if (res && get_errno () == EACCES && + !(cfd->get_flags () & (O_WRONLY | O_RDWR))) + set_errno (EBADF); } done: |