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
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2023-11-25 20:07:10 +0300
committerCorinna Vinschen <corinna@vinschen.de>2023-11-25 20:07:23 +0300
commitd5dcb484c705a214b30826c82b9fd8bf83772093 (patch)
treebd2dbd11d6cbb91ebb8f4ee7e9f75683538b07cd /winsup
parent0e961f582a315fd6f13b8e924f58af6057558348 (diff)
Cygwin: lseek: check for file sparseness, not for mount point sparseness
The code introducing the lseek(2) code for the GNU extensions SEEK_DATA and SEEK_HOLE accidentally checks if the mount point has the "sparse" flag set and, if not, emulates SEEK_DATA/SEEK_HOLE per the Linux specs. However, the mount point "sparse" flag only determines whether files should be made sparse or not. Files may be sparse independently of that, obviously. Fix that by checking for the FILE_ATTRIBUTE_SPARSE_FILE attribute instead. Fixes: edfa581d3c5a ("Cygwin: lseek: implement SEEK_DATA and SEEK_HOLE for files") Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/fhandler/base.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc
index cdef01a2d..a57ffcb86 100644
--- a/winsup/cygwin/fhandler/base.cc
+++ b/winsup/cygwin/fhandler/base.cc
@@ -1140,7 +1140,7 @@ fhandler_base::lseek (off_t offset, int whence)
set_errno (ENXIO);
return -1;
}
- if (!pc.support_sparse ())
+ if (!has_attribute (FILE_ATTRIBUTE_SPARSE_FILE))
{
/* Default behaviour if sparse files are not supported:
SEEK_DATA: seek to offset