* fhandler.cc (fhandler_base::lseek): Drop 9x considerations.
* fhandler_disk_file.cc (fhandler_disk_file::lock): Ditto. * wincap.cc: Remove lock_file_highword and has_64bit_file_access throughout. * wincap.h: Ditto.
This commit is contained in:
parent
8e17bd8685
commit
0ed760d75e
|
@ -1,3 +1,11 @@
|
||||||
|
2007-02-23 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* fhandler.cc (fhandler_base::lseek): Drop 9x considerations.
|
||||||
|
* fhandler_disk_file.cc (fhandler_disk_file::lock): Ditto.
|
||||||
|
* wincap.cc: Remove lock_file_highword and has_64bit_file_access
|
||||||
|
throughout.
|
||||||
|
* wincap.h: Ditto.
|
||||||
|
|
||||||
2007-02-22 Corinna Vinschen <corinna@vinschen.de>
|
2007-02-22 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* cygheap.h (struct cwdstuff): Remove sync member and keep_in_sync
|
* cygheap.h (struct cwdstuff): Remove sync member and keep_in_sync
|
||||||
|
|
|
@ -1031,18 +1031,6 @@ fhandler_base::lseek (_off64_t offset, int whence)
|
||||||
{
|
{
|
||||||
_off64_t res;
|
_off64_t res;
|
||||||
|
|
||||||
/* 9x/Me doesn't support 64bit offsets. We trap that here and return
|
|
||||||
EINVAL. It doesn't make sense to simulate bigger offsets by a
|
|
||||||
SetFilePointer sequence since FAT and FAT32 don't support file
|
|
||||||
size >= 4GB anyway. */
|
|
||||||
if (!wincap.has_64bit_file_access ()
|
|
||||||
&& (offset < LONG_MIN || offset > LONG_MAX))
|
|
||||||
{
|
|
||||||
debug_printf ("Win9x, offset not 32 bit.");
|
|
||||||
set_errno (EINVAL);
|
|
||||||
return (_off64_t)-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Seeks on text files is tough, we rewind and read till we get to the
|
/* Seeks on text files is tough, we rewind and read till we get to the
|
||||||
right place. */
|
right place. */
|
||||||
|
|
||||||
|
@ -1059,17 +1047,10 @@ 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 = ((__uint64_t) offset) & UINT32_MAX;
|
LONG off_low = ((__uint64_t) offset) & UINT32_MAX;
|
||||||
LONG *poff_high, off_high;
|
LONG off_high = ((__uint64_t) offset) >> 32LL;
|
||||||
if (!wincap.has_64bit_file_access ())
|
|
||||||
poff_high = NULL;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
off_high = ((__uint64_t) offset) >> 32LL;
|
|
||||||
poff_high = &off_high;
|
|
||||||
}
|
|
||||||
|
|
||||||
debug_printf ("setting file pointer to %u (high), %u (low)", off_high, off_low);
|
debug_printf ("setting file pointer to %u (high), %u (low)", off_high, off_low);
|
||||||
res = SetFilePointer (get_handle (), off_low, poff_high, win32_whence);
|
res = SetFilePointer (get_handle (), off_low, &off_high, win32_whence);
|
||||||
if (res == INVALID_SET_FILE_POINTER && GetLastError ())
|
if (res == INVALID_SET_FILE_POINTER && GetLastError ())
|
||||||
{
|
{
|
||||||
__seterrno ();
|
__seterrno ();
|
||||||
|
@ -1077,11 +1058,10 @@ fhandler_base::lseek (_off64_t offset, int whence)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (poff_high)
|
res += (_off64_t) off_high << 32;
|
||||||
res += (_off64_t) *poff_high << 32;
|
|
||||||
|
|
||||||
/* When next we write(), we will check to see if *this* seek went beyond
|
/* When next we write(), we will check to see if *this* seek went beyond
|
||||||
the end of the file, and back-seek and fill with zeros if so - DJ */
|
the end of the file and if so, potentially sparsify the file. */
|
||||||
did_lseek (true);
|
did_lseek (true);
|
||||||
|
|
||||||
/* If this was a SEEK_CUR with offset 0, we still might have
|
/* If this was a SEEK_CUR with offset 0, we still might have
|
||||||
|
|
|
@ -1264,11 +1264,7 @@ fhandler_disk_file::lock (int cmd, struct __flock64 *fl)
|
||||||
{
|
{
|
||||||
/* Special case if len == 0 for POSIX means lock to the end of
|
/* Special case if len == 0 for POSIX means lock to the end of
|
||||||
the entire file (and all future extensions). */
|
the entire file (and all future extensions). */
|
||||||
/* CV, 2003-12-03: And yet another Win 9x bugginess. For some reason
|
len_low = len_high = UINT32_MAX;
|
||||||
offset + length must be <= 0x100000000. I'm using 0xffffffff as
|
|
||||||
upper border here, this should be sufficient. */
|
|
||||||
len_low = UINT32_MAX - (wincap.lock_file_highword () ? 0 : off_low);
|
|
||||||
len_high = wincap.lock_file_highword ();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,6 @@ details. */
|
||||||
|
|
||||||
/* Minimal set of capabilities which is equivalent to NT4. */
|
/* Minimal set of capabilities which is equivalent to NT4. */
|
||||||
static NO_COPY wincaps wincap_unknown = {
|
static NO_COPY wincaps wincap_unknown = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x0,
|
heapslop:0x0,
|
||||||
is_server:false,
|
is_server:false,
|
||||||
|
@ -25,7 +24,6 @@ static NO_COPY wincaps wincap_unknown = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:false,
|
has_process_io_counters:false,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
@ -52,7 +50,6 @@ static NO_COPY wincaps wincap_unknown = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static NO_COPY wincaps wincap_nt4 = {
|
static NO_COPY wincaps wincap_nt4 = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x0,
|
heapslop:0x0,
|
||||||
is_server:false,
|
is_server:false,
|
||||||
|
@ -64,7 +61,6 @@ static NO_COPY wincaps wincap_nt4 = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:false,
|
has_process_io_counters:false,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
@ -91,7 +87,6 @@ static NO_COPY wincaps wincap_nt4 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static NO_COPY wincaps wincap_nt4sp4 = {
|
static NO_COPY wincaps wincap_nt4sp4 = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x0,
|
heapslop:0x0,
|
||||||
is_server:false,
|
is_server:false,
|
||||||
|
@ -103,7 +98,6 @@ static NO_COPY wincaps wincap_nt4sp4 = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:false,
|
has_process_io_counters:false,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
@ -130,7 +124,6 @@ static NO_COPY wincaps wincap_nt4sp4 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static NO_COPY wincaps wincap_2000 = {
|
static NO_COPY wincaps wincap_2000 = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x0,
|
heapslop:0x0,
|
||||||
is_server:false,
|
is_server:false,
|
||||||
|
@ -142,7 +135,6 @@ static NO_COPY wincaps wincap_2000 = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:true,
|
has_process_io_counters:true,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
@ -169,7 +161,6 @@ static NO_COPY wincaps wincap_2000 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static NO_COPY wincaps wincap_xp = {
|
static NO_COPY wincaps wincap_xp = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x0,
|
heapslop:0x0,
|
||||||
is_server:false,
|
is_server:false,
|
||||||
|
@ -181,7 +172,6 @@ static NO_COPY wincaps wincap_xp = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:true,
|
has_process_io_counters:true,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
@ -208,7 +198,6 @@ static NO_COPY wincaps wincap_xp = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static NO_COPY wincaps wincap_2003 = {
|
static NO_COPY wincaps wincap_2003 = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x4,
|
heapslop:0x4,
|
||||||
is_server:true,
|
is_server:true,
|
||||||
|
@ -220,7 +209,6 @@ static NO_COPY wincaps wincap_2003 = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:true,
|
has_process_io_counters:true,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
@ -247,7 +235,6 @@ static NO_COPY wincaps wincap_2003 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static NO_COPY wincaps wincap_vista = {
|
static NO_COPY wincaps wincap_vista = {
|
||||||
lock_file_highword:UINT32_MAX,
|
|
||||||
chunksize:0,
|
chunksize:0,
|
||||||
heapslop:0x4,
|
heapslop:0x4,
|
||||||
is_server:false,
|
is_server:false,
|
||||||
|
@ -259,7 +246,6 @@ static NO_COPY wincaps wincap_vista = {
|
||||||
has_unreliable_pipes:false,
|
has_unreliable_pipes:false,
|
||||||
has_raw_devices:true,
|
has_raw_devices:true,
|
||||||
has_valid_processorlevel:true,
|
has_valid_processorlevel:true,
|
||||||
has_64bit_file_access:true,
|
|
||||||
has_process_io_counters:true,
|
has_process_io_counters:true,
|
||||||
supports_reading_modem_output_lines:true,
|
supports_reading_modem_output_lines:true,
|
||||||
needs_memory_protection:true,
|
needs_memory_protection:true,
|
||||||
|
|
|
@ -13,7 +13,6 @@ details. */
|
||||||
|
|
||||||
struct wincaps
|
struct wincaps
|
||||||
{
|
{
|
||||||
DWORD lock_file_highword;
|
|
||||||
DWORD chunksize;
|
DWORD chunksize;
|
||||||
DWORD heapslop;
|
DWORD heapslop;
|
||||||
unsigned is_server : 1;
|
unsigned is_server : 1;
|
||||||
|
@ -25,7 +24,6 @@ struct wincaps
|
||||||
unsigned has_unreliable_pipes : 1;
|
unsigned has_unreliable_pipes : 1;
|
||||||
unsigned has_raw_devices : 1;
|
unsigned has_raw_devices : 1;
|
||||||
unsigned has_valid_processorlevel : 1;
|
unsigned has_valid_processorlevel : 1;
|
||||||
unsigned has_64bit_file_access : 1;
|
|
||||||
unsigned has_process_io_counters : 1;
|
unsigned has_process_io_counters : 1;
|
||||||
unsigned supports_reading_modem_output_lines : 1;
|
unsigned supports_reading_modem_output_lines : 1;
|
||||||
unsigned needs_memory_protection : 1;
|
unsigned needs_memory_protection : 1;
|
||||||
|
@ -68,7 +66,6 @@ public:
|
||||||
|
|
||||||
#define IMPLEMENT(cap) cap() const { return ((wincaps *) this->caps)->cap; }
|
#define IMPLEMENT(cap) cap() const { return ((wincaps *) this->caps)->cap; }
|
||||||
|
|
||||||
DWORD IMPLEMENT (lock_file_highword)
|
|
||||||
DWORD IMPLEMENT (chunksize)
|
DWORD IMPLEMENT (chunksize)
|
||||||
DWORD IMPLEMENT (heapslop)
|
DWORD IMPLEMENT (heapslop)
|
||||||
bool IMPLEMENT (is_server)
|
bool IMPLEMENT (is_server)
|
||||||
|
@ -80,7 +77,6 @@ public:
|
||||||
bool IMPLEMENT (has_unreliable_pipes)
|
bool IMPLEMENT (has_unreliable_pipes)
|
||||||
bool IMPLEMENT (has_raw_devices)
|
bool IMPLEMENT (has_raw_devices)
|
||||||
bool IMPLEMENT (has_valid_processorlevel)
|
bool IMPLEMENT (has_valid_processorlevel)
|
||||||
bool IMPLEMENT (has_64bit_file_access)
|
|
||||||
bool IMPLEMENT (has_process_io_counters)
|
bool IMPLEMENT (has_process_io_counters)
|
||||||
bool IMPLEMENT (supports_reading_modem_output_lines)
|
bool IMPLEMENT (supports_reading_modem_output_lines)
|
||||||
bool IMPLEMENT (needs_memory_protection)
|
bool IMPLEMENT (needs_memory_protection)
|
||||||
|
|
Loading…
Reference in New Issue