diff options
author | Steve Dower <steve.dower@microsoft.com> | 2015-02-21 16:44:05 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2015-02-21 16:44:05 (GMT) |
commit | f2f373f5931be48efc3f6fa2c2faa1cca79dce75 (patch) | |
tree | 87facdec6423b6282ad5c4e2cf30e124d4a5de40 /Include | |
parent | 18d1924987d75ef43a429fe4b6f05df2c308ec2a (diff) | |
download | cpython-f2f373f5931be48efc3f6fa2c2faa1cca79dce75.zip cpython-f2f373f5931be48efc3f6fa2c2faa1cca79dce75.tar.gz cpython-f2f373f5931be48efc3f6fa2c2faa1cca79dce75.tar.bz2 |
Issue #23152: Implement _Py_fstat() to support files larger than 2 GB on Windows.
fstat() may fail with EOVERFLOW on files larger than 2 GB because the file size type is an signed 32-bit integer.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/fileutils.h | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/Include/fileutils.h b/Include/fileutils.h index c5eebc5..6effd88 100644 --- a/Include/fileutils.h +++ b/Include/fileutils.h @@ -21,11 +21,40 @@ PyAPI_FUNC(int) _Py_wstat( struct stat *buf); #endif +#if defined(HAVE_FSTAT) || defined(MS_WINDOWS) + +#ifdef MS_WINDOWS +struct _Py_stat_struct { + unsigned long st_dev; + __int64 st_ino; + unsigned short st_mode; + int st_nlink; + int st_uid; + int st_gid; + unsigned long st_rdev; + __int64 st_size; + time_t st_atime; + int st_atime_nsec; + time_t st_mtime; + int st_mtime_nsec; + time_t st_ctime; + int st_ctime_nsec; + unsigned long st_file_attributes; +}; +#else +# define _Py_stat_struct stat +#endif + +PyAPI_FUNC(int) _Py_fstat( + int fd, + struct _Py_stat_struct *stat); +#endif /* HAVE_FSTAT || MS_WINDOWS */ + #ifdef HAVE_STAT PyAPI_FUNC(int) _Py_stat( PyObject *path, struct stat *statbuf); -#endif +#endif /* HAVE_STAT */ #ifndef Py_LIMITED_API PyAPI_FUNC(int) _Py_open( |