From ae9b22c69b7374129d872cde66290c925a0c9857 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 5 Feb 2001 16:10:06 +0000 Subject: * fhandler.cc (fhandler_base::open): Always add GENERIC_READ access when opening raw disk devices. * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Implement bytewise access. * fhandler_raw.cc (fhandler_dev_raw::open): Always open raw disk device binary. (fhandler_dev_raw::raw_write): Don't drop read buffer content when writing after read. --- winsup/cygwin/fhandler_raw.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'winsup/cygwin/fhandler_raw.cc') diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc index 70cf8284c..d8ecf61ea 100644 --- a/winsup/cygwin/fhandler_raw.cc +++ b/winsup/cygwin/fhandler_raw.cc @@ -135,8 +135,10 @@ fhandler_dev_raw::open (const char *path, int flags, mode_t) set_name (path, real_path.get_win32 ()); - /* Always open a raw device existing */ - ret = fhandler_base::open (path, flags & ~(O_CREAT | O_TRUNC)); + /* Always open a raw device existing and binary. */ + flags &= ~(O_CREAT | O_TRUNC); + flags |= O_BINARY; + ret = fhandler_base::open (path, flags); if (ret) { if (devbufsiz > 1L) @@ -334,7 +336,10 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len) } if (!is_writing) - devbufstart = devbufend = 0; + { + devbufend = devbufstart; + devbufstart = 0; + } is_writing = 1; if (devbuf) -- cgit v1.2.3