* fhandler.cc (fhandler_base::open): Remove special DEV_FLOPPY_MAJOR
treatment. * fhandler_raw.cc (fhandler_dev_raw::open): Simplify write-only case. * fhandler_tape.cc (fhandler_dev_tape::raw_write): Add accidentally dropped condition.
This commit is contained in:
		| @@ -1,3 +1,11 @@ | ||||
| 2004-04-20  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* fhandler.cc (fhandler_base::open): Remove special DEV_FLOPPY_MAJOR | ||||
| 	treatment. | ||||
| 	* fhandler_raw.cc (fhandler_dev_raw::open): Simplify write-only case. | ||||
| 	* fhandler_tape.cc (fhandler_dev_tape::raw_write): Add accidentally | ||||
| 	dropped condition. | ||||
|  | ||||
| 2004-04-20  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* fhandler.cc (fhandler_base::open): Add FILE_READ_ATTRIBUTES when | ||||
|   | ||||
| @@ -607,11 +607,7 @@ fhandler_base::open (int flags, mode_t mode) | ||||
| 	  access = GENERIC_WRITE | FILE_READ_ATTRIBUTES; | ||||
| 	else | ||||
| 	  access = GENERIC_READ | GENERIC_WRITE; | ||||
| 	/* Allow reliable lseek on disk devices. */ | ||||
| 	if (get_major () == DEV_FLOPPY_MAJOR) | ||||
| 	  access |= GENERIC_READ; | ||||
| 	else if (get_major () != DEV_SERIAL_MAJOR | ||||
| 		 && get_major () != DEV_TAPE_MAJOR) | ||||
| 	if (get_major () != DEV_SERIAL_MAJOR && get_major () != DEV_TAPE_MAJOR) | ||||
| 	  { | ||||
| 	    create_options |= FILE_SYNCHRONOUS_IO_NONALERT; | ||||
| 	    access |= SYNCHRONIZE; | ||||
|   | ||||
| @@ -144,10 +144,9 @@ fhandler_dev_raw::open (int flags, mode_t) | ||||
|   flags &= ~(O_CREAT | O_TRUNC); | ||||
|   flags |= O_BINARY; | ||||
|  | ||||
|   if (get_major () == DEV_TAPE_MAJOR | ||||
|       || (flags & (O_RDONLY | O_WRONLY | O_RDWR)) == O_WRONLY | ||||
|       || (flags & (O_RDONLY | O_WRONLY | O_RDWR)) == O_RDWR) | ||||
|     flags = ((flags & ~(O_WRONLY | O_RDWR)) | O_RDWR); | ||||
|   /* Write-only doesn't work well with raw devices */ | ||||
|   if ((flags & (O_RDONLY | O_WRONLY | O_RDWR)) == O_WRONLY) | ||||
|     flags = ((flags & ~O_WRONLY) | O_RDWR); | ||||
|  | ||||
|   int res = fhandler_base::open (flags, 0); | ||||
|   if (res && devbufsiz > 1L) | ||||
|   | ||||
| @@ -1364,6 +1364,7 @@ fhandler_dev_tape::raw_write (const void *ptr, size_t len) | ||||
|   if (!mt_evt && !(mt_evt = CreateEvent (&sec_none, TRUE, FALSE, NULL))) | ||||
|     debug_printf ("Creating event failed: %E"); | ||||
|   int ret = mt->drive (driveno ())->write (get_handle (), mt_evt, ptr, len); | ||||
|   if (ret) | ||||
|     __seterrno_from_win_error (ret); | ||||
|   return unlock (len); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user