Commit graph

67 commits

Author SHA1 Message Date
Christoph M. Becker
f6ae728f56 Remove unused variable 2020-05-14 17:55:31 +02:00
Nikita Popov
169805777c Merge branch 'PHP-7.4'
* PHP-7.4:
  Apply tidy formatting
2020-02-03 13:42:08 +01:00
Nikita Popov
58b17906f5 Apply tidy formatting
Mostly reindent PHP scripts to spaces.
2020-02-03 13:41:31 +01:00
Christoph M. Becker
cfefba6ddd Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #79008: General performance regression with PHP 7.4 on Windows
2019-12-20 16:29:39 +01:00
Christoph M. Becker
6ec4056928 Fix #79008: General performance regression with PHP 7.4 on Windows
We no longer try to retrieve the filename of a given stream when
fstat'ing, because this is very slow.  Since we neither didn't do that
in PHP 7.3 and earlier, we regard this as sensible trade-off.
2019-12-20 16:28:11 +01:00
Christoph M. Becker
b07c76059d Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #78296: is_file fails to detect file
2019-12-02 11:30:23 +01:00
Christoph M. Becker
a9e45bc0fb Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #78296: is_file fails to detect file
2019-12-02 11:29:58 +01:00
Christoph M. Becker
bb735c9e9e Fix #78296: is_file fails to detect file
If we're constructing extended-length paths (i.e. paths prefixed with
`\\?\`), we have to replace all forward slashes with backward slashes,
because the former are not supported by Windows for extended-length
paths.

The more efficient and likely cleaner alternative solution would be to
cater to this in `php_win32_ioutil_normalize_path_w()` by always
replacing forward slashes, but that might break existing code.  It
might be sensible to change that for `master`, though.
2019-12-02 11:29:10 +01:00
Gabriel Caruso
5d6e923d46
Remove mention of PHP major version in Copyright headers
Closes GH-4732.
2019-09-25 14:51:43 +02:00
Christoph M. Becker
c03114e55c Fix #78386: fstat mode has unexpected value on PHP 7.4
We must not assume that any file which is not a directory is a regular
file.  Therefore we employ `GetFileType()` in this case to properly
distinguish between character special, FIFO special and regular files.
2019-08-20 16:04:14 +02:00
Christoph M. Becker
f5b44c7e8a Fix bug #78094: File Search Problem Excessive Time
Instead of checking GetBinaryType() for each file, we do a much cheaper
pre-check whether the filename extension matches .exe or .com, and call
GetBinaryType() only in this case.  For BC we also report .bat and .cmd
files as executables again.

The patch has been provided by @weltling.
2019-06-06 15:55:46 +02:00
Christoph M. Becker
6710929c04 Fix parameter order
The parameter order of `php_sys_link()` should be identical on Windows
and POSIX, bug commit c9861bd[1] got that wrong.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=c9861bd7a974ef1555395b879c1035a0bbc12ef1>
2019-04-22 12:38:24 +02:00
Anatol Belski
d207c9a78a Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Ensure double slashes are replaced by the path normalization
2019-04-10 15:47:36 +02:00
Anatol Belski
ce72bc6b65 Ensure double slashes are replaced by the path normalization 2019-04-10 15:20:36 +02:00
johnstevenson
b37a6aafce Fix bc break in Windows readlink
GetFinalPathNameByHandleW is given a file handle to a symbolic link,
rather than one to the target, and therefore returns an incorrect path.

Fix symlink with relative path and add test
2019-03-10 15:48:31 +01:00
Peter Kokot
92ac598aab Remove local variables
This patch removes the so called local variables defined per
file basis for certain editors to properly show tab width, and
similar settings. These are mainly used by Vim and Emacs editors
yet with recent changes the once working definitions don't work
anymore in Vim without custom plugins or additional configuration.
Neither are these settings synced across the PHP code base.

A simpler and better approach is EditorConfig and fixing code
using some code style fixing tools in the future instead.

This patch also removes the so called modelines for Vim. Modelines
allow Vim editor specifically to set some editor configuration such as
syntax highlighting, indentation style and tab width to be set in the
first line or the last 5 lines per file basis. Since the php test
files have syntax highlighting already set in most editors properly and
EditorConfig takes care of the indentation settings, this patch removes
these as well for the Vim 6.0 and newer versions.

With the removal of local variables for certain editors such as
Emacs and Vim, the footer is also probably not needed anymore when
creating extensions using ext_skel.php script.

Additionally, Vim modelines for setting php syntax and some editor
settings has been removed from some *.phpt files.  All these are
mostly not relevant for phpt files neither work properly in the
middle of the file.
2019-02-03 21:03:00 +01:00
Zeev Suraski
0cf7de1c70 Remove yearly range from copyright notice 2019-01-30 11:03:12 +02:00
Anatol Belski
40979277c0 Ensure target is \0 terminated 2018-10-04 19:17:58 +02:00
Anatol Belski
14628f1c5d Add compatibility bit
readlink in PHP doesn't error on regular files.
2018-10-03 21:17:52 +02:00
Anatol Belski
91c905e83c Refactor php_sys_readlink
Also move the implementation into win32 where it belongs
2018-10-03 18:56:55 +02:00
Anatol Belski
e42e8b1051 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.
2018-08-26 22:30:06 +02:00
Christoph M. Becker
c9861bd7a9 Create and expose php_sys_symlink() and php_sys_link()
These macros are supposed to behave like POSIX's symlink() and link(),
respectively, on POSIX compliant systems and on Windows.

Future scope: merge link.c and link_win32.c
2018-08-02 14:08:30 +02:00
Anatol Belski
871d0aa5cd Merge branch 'PHP-7.2'
* PHP-7.2:
  Fix condition
2018-07-11 13:16:04 +02:00
Anatol Belski
cc266045a5 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fix condition
2018-07-11 13:13:56 +02:00
Anatol Belski
98102648cb Fix condition
It looks like the real length limit is 247 bytes, not 248 as documented.
2018-07-11 13:09:20 +02:00
Anatol Belski
b2a200188f Remove inappropriate FreeLibrary calls 2018-06-11 13:53:17 +02:00
Anatol Belski
42022bc943 Constify readonly var 2018-02-27 20:50:37 +01:00
Anatol Belski
668a6d329c Reduce var scope 2018-02-19 17:43:48 +01:00
Gabriel Caruso
6400264856 Trailing whitespaces
Signed-off-by: Gabriel Caruso <carusogabriel34@gmail.com>
2018-01-03 14:38:00 +01:00
Xinchen Hui
a6519d0514 year++ 2018-01-02 12:57:58 +08:00
Xinchen Hui
7a7ec01a49 year++ 2018-01-02 12:55:14 +08:00
Xinchen Hui
ccd4716ec7 year++ 2018-01-02 12:53:31 +08:00
Anatol Belski
9baf84e513 Drop unused code 2017-12-15 15:00:20 +01:00
Anatol Belski
f3f6cd24e9 Modernize realpath and integrate quick variant into virtual_file_ex
The slower I/O as a traditional bottleneck on Windows which is
the target of this patch. The recursive path resolution, while being
an allround solution, is expensive when it comes to the common case.
Files with proper ACLs set can be resolved in one go by usage of specific
API. Those are available since Vista, so actually can be called old. Those
simpler api is used for the cases where no CWD_EXPAND is requested. For
the cases where ACLs are improper, the existing solution based on
FindFirstFile still does good job also partially providing quirks. Cases
involing reparse tags and other non local filesystems are also partially
server by new APIs.

The approach uses both APIs - the quick one for the common case still
integrating realpath cache, and the existing one as a fallback. The tests
show the I/O load drop on the realpath resolution part due to less
system calls for the sub part resolution of paths. In most case it is
justified, as the sub parts were otherwise cached or unused as well. The
realpath() implementation in ioutil is also closer to the POSIX.
2017-12-15 13:23:34 +01:00
Anatol Belski
331019c548 Use cheaper ascii conversion for mode 2017-12-09 12:38:19 +01:00
Anatol Belski
f3fd860e24 Revamp fopen implementation, rely on open 2017-12-09 11:58:17 +01:00
Anatol Belski
94f16f1961 Rework mkdir impl and expose wide char variant 2017-12-09 00:11:33 +01:00
Anatol Belski
6bd18c0f0b Remove dead code 2017-12-08 22:59:00 +01:00
Anatol Belski
a9a49b8250 Improve ioutil access impl and refactor tsrm_win32_access 2017-12-08 20:58:19 +01:00
Anatol Belski
2fbdaec03c Revamp unlink() implementation and improve error handling 2017-12-08 19:23:18 +01:00
Anatol Belski
17d621e7d3 Allow delete-sharing mode for CreateFile by default
This effectively allows a UNIX like semantics for deleting files
with an open handle. Some OS related limitations still persist,
but the Windows 95 times can be considered as definitely over.
2017-12-08 18:14:20 +01:00
Anatol Belski
5a14b4424c Merge branch 'PHP-7.2'
* PHP-7.2:
  Fix normalized path length calculation and error handling
2017-11-27 12:33:54 +01:00
Anatol Belski
155b244c12 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fix normalized path length calculation and error handling
2017-11-27 12:33:23 +01:00
Anatol Belski
34b19387c2 Fix normalized path length calculation and error handling 2017-11-27 12:32:19 +01:00
Anatol Belski
eca3bc59b2 Merge branch 'PHP-7.2'
* PHP-7.2:
  Fix mkdir() special case for path length < 260 and > 248
2017-09-28 13:20:09 +02:00
Anatol Belski
4f63024206 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fix mkdir() special case for path length < 260 and > 248
2017-09-28 13:19:48 +02:00
Anatol Belski
72c008f945 Fix mkdir() special case for path length < 260 and > 248 2017-09-28 13:18:31 +02:00
Kalle Sommer Nielsen
07e8bdd8c2 Free the HMODULE handle after use 2017-07-21 22:24:14 +02:00
Anatol Belski
e24a8012a0 fix uninitialized var 2017-07-09 17:54:46 +02:00
Anatol Belski
a51cb393b1 fix comparison warning 2017-07-09 16:28:17 +02:00