diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2004-07-15 14:56:05 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2004-07-15 14:56:05 +0000 |
commit | 4243412aa5a9443a696cba6198a0daac3100ef3c (patch) | |
tree | d288baf81ad0ce74af97e257684d6538c78ae3d8 /winsup/cygwin | |
parent | fcedcf9488de0113b50d22fca94d6a72ed59d576 (diff) | |
download | newlib-4243412aa5a9443a696cba6198a0daac3100ef3c.zip newlib-4243412aa5a9443a696cba6198a0daac3100ef3c.tar.gz newlib-4243412aa5a9443a696cba6198a0daac3100ef3c.tar.bz2 |
* fhandler.h (class fhandler_dev_raw): Remove is_writing flag.
Remove declaration of writebuf.
(class fhandler_dev_floppy): Remove declaration of close.
* fhandler_floppy.cc (fhandler_dev_floppy::close): Delete.
(fhandler_dev_floppy::lseek): Remove calls to writebuf. Set
eom_detected to false after successful seek.
* fhandler_raw.cc (fhandler_dev_raw::writebuf): Delete.
(fhandler_dev_raw::raw_read): Remove calls to writebuf.
(fhandler_dev_raw::raw_write): Always invalidate buffer.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 12 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.h | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_floppy.cc | 24 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_raw.cc | 41 |
4 files changed, 19 insertions, 64 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 7c382e3..80e8af1 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,17 @@ 2004-07-15 Corinna Vinschen <corinna@vinschen.de> + * fhandler.h (class fhandler_dev_raw): Remove is_writing flag. + Remove declaration of writebuf. + (class fhandler_dev_floppy): Remove declaration of close. + * fhandler_floppy.cc (fhandler_dev_floppy::close): Delete. + (fhandler_dev_floppy::lseek): Remove calls to writebuf. Set + eom_detected to false after successful seek. + * fhandler_raw.cc (fhandler_dev_raw::writebuf): Delete. + (fhandler_dev_raw::raw_read): Remove calls to writebuf. + (fhandler_dev_raw::raw_write): Always invalidate buffer. + +2004-07-15 Corinna Vinschen <corinna@vinschen.de> + * mmap.cc (class mmap_record): Fix return type of get_offset. (mmap_record::fixup_page_map): Fix off by one error. (list::search_record): Use long as type of "start" argument in both, diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index c5f99f0..3b7e6b4 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -482,22 +482,19 @@ class fhandler_dev_raw: public fhandler_base unsigned eom_detected : 1; unsigned eof_detected : 1; unsigned lastblk_to_read : 1; - unsigned is_writing : 1; public: status_flags () : - eom_detected (0), eof_detected (0), lastblk_to_read (0), is_writing (0) + eom_detected (0), eof_detected (0), lastblk_to_read (0) {} } status; IMPLEMENT_STATUS_FLAG (bool, eom_detected) IMPLEMENT_STATUS_FLAG (bool, eof_detected) IMPLEMENT_STATUS_FLAG (bool, lastblk_to_read) - IMPLEMENT_STATUS_FLAG (bool, is_writing) virtual BOOL write_file (const void *buf, DWORD to_write, DWORD *written, int *err); virtual BOOL read_file (void *buf, DWORD to_read, DWORD *read, int *err); - virtual int writebuf (void); /* returns not null, if `win_error' determines an end of media condition */ virtual int is_eom(int win_error); @@ -535,7 +532,6 @@ class fhandler_dev_floppy: public fhandler_dev_raw fhandler_dev_floppy (); virtual int open (int flags, mode_t mode = 0); - virtual int close (void); virtual _off64_t lseek (_off64_t offset, int whence); diff --git a/winsup/cygwin/fhandler_floppy.cc b/winsup/cygwin/fhandler_floppy.cc index 2d17d99..88204db 100644 --- a/winsup/cygwin/fhandler_floppy.cc +++ b/winsup/cygwin/fhandler_floppy.cc @@ -66,20 +66,6 @@ fhandler_dev_floppy::open (int flags, mode_t) return fhandler_dev_raw::open (flags); } -int -fhandler_dev_floppy::close (void) -{ - int ret; - - ret = writebuf (); - if (ret) - { - fhandler_dev_raw::close (); - return ret; - } - return fhandler_dev_raw::close (); -} - _off64_t fhandler_dev_floppy::lseek (_off64_t offset, int whence) { @@ -144,10 +130,8 @@ fhandler_dev_floppy::lseek (_off64_t offset, int whence) return -1; } current_position = low + ((_off64_t) high << 32); - if (is_writing ()) - current_position += devbufend - devbufstart; - else - current_position -= devbufend - devbufstart; + /* devbufend and devbufstart are always 0 when writing. */ + current_position -= devbufend - devbufstart; lloffset += current_position; whence = SEEK_SET; @@ -167,9 +151,6 @@ fhandler_dev_floppy::lseek (_off64_t offset, int whence) if (whence == SEEK_SET) { /* Invalidate buffer. */ - ret = writebuf (); - if (ret) - return ret; devbufstart = devbufend = 0; low = sector_aligned_offset & UINT32_MAX; @@ -181,6 +162,7 @@ fhandler_dev_floppy::lseek (_off64_t offset, int whence) return -1; } + eom_detected (false); size_t len = bytes_left; raw_read (buf, len); return sector_aligned_offset + bytes_left; 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) { |