* autoload.cc: Add load statement for `NtOpenFile'.

* fhandler.h (fhandler_dev_raw::get_unit): New method.
	(fhandler_dev_tape::norewind): Eliminate.
	(fhandler_dev_tape::is_rewind_device): New method.
	* fhandler_raw.cc (fhandler_dev_raw::open): Open new
	fixed device name devices using NT internal method.
	Keep calling fhandler_base::open() for old mount table
	device mapping compatibility devices.
	(fhandler_dev_raw::fstat): Eliminate.  Settings are done
	by fhandler_base::fstat() already.
	* fhandler_tape.cc: Remove `norewind' usage throughout.
	* ntdll.h: Define FILE_SYNCHRONOUS_IO_NONALERT.
	Define struct _IO_STATUS_BLOCK.
	Declare NtOpenFile().
	* path.cc (get_raw_device_number): Add new approach for
	using fixed device names.
	(win32_device_name): Ditto.
	(get_device_number): Ditto.  Require POSIX path to begin
	with "/dev/".
	(mount_info::conv_to_win32_path): Call win32_device_name()
	instead of get_device_number() after evaluating mount points
	to allow changing the win32 destination path again.
	* security.cc (str2buf2uni): Remove `static' to be able to
	call function from fhandler_dev_raw::open().
	* wincap.cc: Set flag has_raw_devices appropriately.
	* wincap.h: Add flag has_raw_devices.
This commit is contained in:
Corinna Vinschen
2001-10-16 14:53:26 +00:00
parent 2ac3bab68d
commit 990690655c
10 changed files with 253 additions and 60 deletions

View File

@@ -29,7 +29,6 @@ details. */
void
fhandler_dev_tape::clear (void)
{
norewind = 0;
lasterr = 0;
fhandler_dev_raw::clear ();
}
@@ -66,7 +65,6 @@ fhandler_dev_tape::open (path_conv *real_path, int flags, mode_t)
{
int ret;
norewind = (real_path->get_unitn () >= 128);
devbufsiz = 1L;
ret = fhandler_dev_raw::open (real_path, flags);
@@ -132,7 +130,7 @@ fhandler_dev_tape::close (void)
// To protected reads on signaling (e.g. Ctrl-C)
eof_detected = 1;
if (! norewind)
if (is_rewind_device ())
{
debug_printf ("rewinding\n");
op.mt_op = MTREW;
@@ -153,7 +151,7 @@ fhandler_dev_tape::fstat (struct stat *buf, path_conv *pc)
{
int ret;
if (!(ret = fhandler_dev_raw::fstat (buf, pc)))
if (!(ret = fhandler_base::fstat (buf, pc)))
{
struct mtget get;
@@ -227,7 +225,6 @@ fhandler_dev_tape::dup (fhandler_base *child)
{
fhandler_dev_tape *fhc = (fhandler_dev_tape *) child;
fhc->norewind = norewind;
fhc->lasterr = lasterr;
return fhandler_dev_raw::dup (child);
}