summaryrefslogtreecommitdiff
path: root/Zend/zend_stream.h
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2018-07-15 09:33:14 +0200
committerAnatol Belski <ab@php.net>2018-08-26 22:30:06 +0200
commite42e8b1051a8abeaa8e6053653a4ff43438766e2 (patch)
tree75b7a444f90fd4ecc64e6956acd262e69193c957 /Zend/zend_stream.h
parent2dbd21c12f656663cdbcae9e64b76a7316566c18 (diff)
downloadphp-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.h21
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