Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-02-23 12:49:49 +0300
committerCorinna Vinschen <corinna@vinschen.de>2007-02-23 12:49:49 +0300
commit0ed760d75e34775d5de25ac52cbcc5b5dd18ed15 (patch)
treeb28206f3a4cfd82f998fb1779c891845b487dc5b /winsup/cygwin/fhandler.cc
parent8e17bd8685fce1a0fc52bdd0765a60e14216b503 (diff)
* 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.
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r--winsup/cygwin/fhandler.cc28
1 files changed, 4 insertions, 24 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index 6558e5625..348ee0164 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -1031,18 +1031,6 @@ fhandler_base::lseek (_off64_t offset, int whence)
{
_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
right place. */
@@ -1059,17 +1047,10 @@ fhandler_base::lseek (_off64_t offset, int whence)
: (whence == SEEK_CUR ? FILE_CURRENT : FILE_END);
LONG off_low = ((__uint64_t) offset) & UINT32_MAX;
- LONG *poff_high, off_high;
- if (!wincap.has_64bit_file_access ())
- poff_high = NULL;
- else
- {
- off_high = ((__uint64_t) offset) >> 32LL;
- poff_high = &off_high;
- }
+ LONG off_high = ((__uint64_t) offset) >> 32LL;
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 ())
{
__seterrno ();
@@ -1077,11 +1058,10 @@ fhandler_base::lseek (_off64_t offset, int whence)
}
else
{
- if (poff_high)
- res += (_off64_t) *poff_high << 32;
+ res += (_off64_t) off_high << 32;
/* 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);
/* If this was a SEEK_CUR with offset 0, we still might have