diff options
Diffstat (limited to 'winsup/cygwin/fhandler_raw.cc')
-rw-r--r-- | winsup/cygwin/fhandler_raw.cc | 41 |
1 files changed, 3 insertions, 38 deletions
diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc index 2de7f3d..4ce444c 100644 --- a/winsup/cygwin/fhandler_raw.cc +++ b/winsup/cygwin/fhandler_raw.cc @@ -40,8 +40,7 @@ fhandler_dev_raw::is_eof (int) } -/* Wrapper functions to allow fhandler_dev_tape to detect and care for - media changes and bus resets. */ +/* Wrapper functions to simplify error handling. */ BOOL fhandler_dev_raw::write_file (const void *buf, DWORD to_write, @@ -70,28 +69,6 @@ fhandler_dev_raw::read_file (void *buf, DWORD to_read, DWORD *read, int *err) return ret; } -int -fhandler_dev_raw::writebuf (void) -{ - DWORD written; - int ret = 0; - - if (is_writing () && devbuf && devbufend) - { - DWORD to_write; - int ret = 0; - - memset (devbuf + devbufend, 0, devbufsiz - devbufend); - to_write = ((devbufend - 1) / 512 + 1) * 512; - if (!write_file (devbuf, to_write, &written, &ret) - && is_eom (ret)) - eom_detected (true); - devbufstart = devbufend = 0; - } - is_writing (false); - return ret; -} - fhandler_dev_raw::fhandler_dev_raw () : fhandler_base (), status () { @@ -172,17 +149,6 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen) char *tgt; char *p = (char *) ptr; - /* In mode O_RDWR the buffer has to be written to device first */ - ret = writebuf (); - if (ret) - { - if (is_eom (ret)) - set_errno (ENOSPC); - else - __seterrno (); - goto err; - } - /* Checking a previous end of file */ if (eof_detected () && !lastblk_to_read ()) { @@ -320,9 +286,8 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len) return -1; } - if (!is_writing ()) - devbufstart = devbufend = 0; - is_writing (true); + /* Invalidate buffer. */ + devbufstart = devbufend = 0; if (len > 0) { |