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: edfa581d3c
("Cygwin: lseek: implement SEEK_DATA and SEEK_HOLE for files")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
0e961f582a
commit
d5dcb484c7
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue