* fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with high

order part of 64 bit address on OS's which do not support that kind of
operation.  Otherwise Windows 95 will become confused.
This commit is contained in:
Christopher Faylor 2002-05-17 19:30:52 +00:00
parent c7ba2cc096
commit b05b7d84d6
2 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2002-05-17 Christopher Faylor <cgf@redhat.com>
* fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with
high order part of 64 bit address on OS's which do not support that
kind of operation. Otherwise Windows 95 will become confused.
2002-05-16 Pierre Humblet <pierre.humblet@ieee.org> 2002-05-16 Pierre Humblet <pierre.humblet@ieee.org>
* fhandler_raw.cc (fhandler_dev_raw::open): Replace set_errno() * fhandler_raw.cc (fhandler_dev_raw::open): Replace set_errno()

View File

@ -732,9 +732,17 @@ fhandler_base::lseek (__off64_t offset, int whence)
: (whence == SEEK_CUR ? FILE_CURRENT : FILE_END); : (whence == SEEK_CUR ? FILE_CURRENT : FILE_END);
LONG off_low = offset & 0xffffffff; LONG off_low = offset & 0xffffffff;
LONG off_high = wincap.has_64bit_file_access () ? offset >> 32 : 0; LONG *poff_high, off_high;
if (!wincap.has_64bit_file_access ())
poff_high = NULL;
else
{
off_high = offset >> 32;
poff_high = &off_high;
}
res = SetFilePointer (get_handle(), off_low, &off_high, win32_whence); debug_printf ("setting file pointer to %u (high), %u (low)", off_high, off_low);
res = SetFilePointer (get_handle(), off_low, poff_high, win32_whence);
if (res == INVALID_SET_FILE_POINTER && GetLastError ()) if (res == INVALID_SET_FILE_POINTER && GetLastError ())
{ {
__seterrno (); __seterrno ();