diff options
author | Anatol Belski <ab@php.net> | 2018-07-15 09:33:14 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2018-08-26 22:30:06 +0200 |
commit | e42e8b1051a8abeaa8e6053653a4ff43438766e2 (patch) | |
tree | 75b7a444f90fd4ecc64e6956acd262e69193c957 /Zend/zend_stream.h | |
parent | 2dbd21c12f656663cdbcae9e64b76a7316566c18 (diff) | |
download | php-git-e42e8b1051a8abeaa8e6053653a4ff43438766e2.tar.gz |
Refactor stat implementation
- move relevant parts into win32
- general cleanup
- use Windows API and fallback to POSIX
- improve filetime to timestamp conversion
- improve stat/fsat
- handle ino by using file index
- handle st_dev by using volume serial number
The inode implementation is based on file indexes from NTFS. On 32-bit,
fake inodes are shown, that may lead to unexpeted results. 64-bit
implementation is most reliable.
Diffstat (limited to 'Zend/zend_stream.h')
-rw-r--r-- | Zend/zend_stream.h | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Zend/zend_stream.h b/Zend/zend_stream.h index 8279d69c4d..976afb979f 100644 --- a/Zend/zend_stream.h +++ b/Zend/zend_stream.h @@ -79,20 +79,27 @@ ZEND_API void zend_file_handle_dtor(zend_file_handle *fh); ZEND_API int zend_compare_file_handles(zend_file_handle *fh1, zend_file_handle *fh2); END_EXTERN_C() +#ifdef ZEND_WIN32 +# include "win32/ioutil.h" +typedef php_win32_ioutil_stat_t zend_stat_t; #ifdef _WIN64 -# define zend_fseek _fseeki64 -# define zend_ftell _ftelli64 -# define zend_lseek _lseeki64 -# define zend_fstat _fstat64 -# define zend_stat _stat64 -typedef struct __stat64 zend_stat_t; +# define zend_fseek _fseeki64 +# define zend_ftell _ftelli64 +# define zend_lseek _lseeki64 +# else +# define zend_fseek fseek +# define zend_ftell ftell +# define zend_lseek lseek +# endif +# define zend_fstat php_win32_ioutil_fstat +# define zend_stat php_win32_ioutil_stat #else +typedef struct stat zend_stat_t; # define zend_fseek fseek # define zend_ftell ftell # define zend_lseek lseek # define zend_fstat fstat # define zend_stat stat -typedef struct stat zend_stat_t; #endif #endif |