Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-04-10 00:39:19 +0400
committerCorinna Vinschen <corinna@vinschen.de>2004-04-10 00:39:19 +0400
commitff0843433a4597a55a31bad84f82886ce9943612 (patch)
tree0a7c30e18e8414f19b15082e403f3a0b49f4858a /winsup/cygwin/fhandler_raw.cc
parent535309a6e303db4a6bf38eb202eee08136efb2cf (diff)
* fhandler.h (class fhandler_dev_raw): Move status bits into protected
bitfield struct type status_flags. Drop unused has_written bit. Add accessor methods. (fhandler_dev_raw::clear): Remove. (fhandler_dev_raw::reset_devbuf): Remove. * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Use accessor method for is_writing. * fhandler_raw.cc: Use status accessor methods throughout. (fhandler_dev_raw::clear): Remove. (fhandler_dev_raw::fhandler_dev_raw): Drop clear call. (fhandler_dev_raw::~fhandler_dev_raw): Ditto. * fhandler_tape.cc: Use mtinfo::status accessor methods throughout. (mtinfo_drive::close): Fix conditional to enable BSD semantics correctly. (mtinfo_drive::get_status): Rename from mtinfo_drive::status. * mtinfo.h (class mtinfo_drive): Move status bits into private bitfield struct type status_flags. Add accessor methods. Rename status method to get_status.
Diffstat (limited to 'winsup/cygwin/fhandler_raw.cc')
-rw-r--r--winsup/cygwin/fhandler_raw.cc69
1 files changed, 24 insertions, 45 deletions
diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc
index c54ca5c53..ca012aa6a 100644
--- a/winsup/cygwin/fhandler_raw.cc
+++ b/winsup/cygwin/fhandler_raw.cc
@@ -27,18 +27,6 @@
/**********************************************************************/
/* fhandler_dev_raw */
-void
-fhandler_dev_raw::clear (void)
-{
- devbuf = NULL;
- devbufsiz = 0;
- devbufstart = 0;
- devbufend = 0;
- eom_detected = 0;
- eof_detected = 0;
- lastblk_to_read = 0;
-}
-
int
fhandler_dev_raw::is_eom (int win_error)
{
@@ -88,7 +76,7 @@ fhandler_dev_raw::writebuf (void)
DWORD written;
int ret = 0;
- if (is_writing && devbuf && devbufend)
+ if (is_writing () && devbuf && devbufend)
{
DWORD to_write;
int ret = 0;
@@ -97,19 +85,16 @@ fhandler_dev_raw::writebuf (void)
to_write = ((devbufend - 1) / 512 + 1) * 512;
if (!write_file (devbuf, to_write, &written, &ret)
&& is_eom (ret))
- eom_detected = 1;
- if (written)
- has_written = 1;
+ eom_detected (true);
devbufstart = devbufend = 0;
}
- is_writing = 0;
+ is_writing (false);
return ret;
}
fhandler_dev_raw::fhandler_dev_raw ()
- : fhandler_base ()
+ : fhandler_base (), status ()
{
- clear ();
set_need_fork_fixup ();
}
@@ -117,7 +102,6 @@ fhandler_dev_raw::~fhandler_dev_raw (void)
{
if (devbufsiz > 1L)
delete [] devbuf;
- clear ();
}
int __stdcall
@@ -226,15 +210,15 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen)
}
/* Checking a previous end of file */
- if (eof_detected && !lastblk_to_read)
+ if (eof_detected () && !lastblk_to_read ())
{
- eof_detected = 0;
+ eof_detected (false);
ulen = 0;
return;
}
/* Checking a previous end of media */
- if (eom_detected && !lastblk_to_read)
+ if (eom_detected () && !lastblk_to_read ())
{
set_errno (ENOSPC);
goto err;
@@ -256,9 +240,9 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen)
bytes_read += bytes_to_read;
devbufstart += bytes_to_read;
- if (lastblk_to_read)
+ if (lastblk_to_read ())
{
- lastblk_to_read = 0;
+ lastblk_to_read (false);
break;
}
}
@@ -286,9 +270,9 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen)
}
if (is_eof (ret))
- eof_detected = 1;
+ eof_detected (true);
else
- eom_detected = 1;
+ eom_detected (true);
if (!read2)
{
@@ -300,7 +284,7 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen)
}
break;
}
- lastblk_to_read = 1;
+ lastblk_to_read (true);
}
if (!read2)
break;
@@ -328,9 +312,9 @@ fhandler_dev_raw::raw_read (void *ptr, size_t& ulen)
if (bytes_read)
{
if (is_eof (ret))
- eof_detected = 1;
+ eof_detected (true);
else
- eom_detected = 1;
+ eom_detected (true);
}
else if (is_eom (ret))
{
@@ -359,15 +343,15 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len)
int ret;
/* Checking a previous end of media on tape */
- if (eom_detected)
+ if (eom_detected ())
{
set_errno (ENOSPC);
return -1;
}
- if (!is_writing)
+ if (!is_writing ())
devbufstart = devbufend = 0;
- is_writing = 1;
+ is_writing (true);
if (devbuf)
{
@@ -397,8 +381,6 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len)
ret = 0;
write_file (tgt, bytes_to_write, &written, &ret);
- if (written)
- has_written = 1;
if (ret)
{
@@ -408,7 +390,7 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len)
return -1;
}
- eom_detected = 1;
+ eom_detected (true);
if (!written && !bytes_written)
{
@@ -441,21 +423,18 @@ fhandler_dev_raw::raw_write (const void *ptr, size_t len)
{
if (!write_file (p, len, &bytes_written, &ret))
{
- if (bytes_written)
- has_written = 1;
if (!is_eom (ret))
{
__seterrno ();
return -1;
}
- eom_detected = 1;
+ eom_detected (true);
if (!bytes_written)
{
set_errno (ENOSPC);
return -1;
}
}
- has_written = 1;
}
return bytes_written;
}
@@ -474,9 +453,9 @@ fhandler_dev_raw::dup (fhandler_base *child)
fhc->devbuf = new char [devbufsiz];
fhc->devbufstart = 0;
fhc->devbufend = 0;
- fhc->eom_detected = eom_detected;
- fhc->eof_detected = eof_detected;
- fhc->lastblk_to_read = 0;
+ fhc->eom_detected (eom_detected ());
+ fhc->eof_detected (eof_detected ());
+ fhc->lastblk_to_read (false);
}
return ret;
}
@@ -486,7 +465,7 @@ fhandler_dev_raw::fixup_after_fork (HANDLE)
{
devbufstart = 0;
devbufend = 0;
- lastblk_to_read = 0;
+ lastblk_to_read (false);
}
void
@@ -496,7 +475,7 @@ fhandler_dev_raw::fixup_after_exec ()
devbuf = new char [devbufsiz];
devbufstart = 0;
devbufend = 0;
- lastblk_to_read = 0;
+ lastblk_to_read (false);
}
int