* 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.
This commit is contained in:
Corinna Vinschen
2004-04-09 20:39:19 +00:00
parent 535309a6e3
commit ff0843433a
6 changed files with 131 additions and 110 deletions

View File

@ -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