mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
- fix #49047, touch may fail on directory
This commit is contained in:
parent
4c85f48c89
commit
056f0aea30
5 changed files with 26 additions and 3 deletions
|
@ -1193,7 +1193,7 @@ static void UnixTimeToFileTime(time_t t, LPFILETIME pft) /* {{{ */
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
static int win32_utime(const char *filename, struct utimbuf *buf) /* {{{ */
|
||||
TSRM_API int win32_utime(const char *filename, struct utimbuf *buf) /* {{{ */
|
||||
{
|
||||
FILETIME mtime, atime;
|
||||
HANDLE hFile;
|
||||
|
|
|
@ -311,8 +311,13 @@ CWD_API realpath_cache_bucket* realpath_cache_lookup(const char *path, int path_
|
|||
#define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path TSRMLS_CC)
|
||||
|
||||
#if HAVE_UTIME
|
||||
#define VCWD_UTIME(path, time) utime(path, time)
|
||||
# ifdef TSRM_WIN32
|
||||
# define VCWD_UTIME(path, time) win32_utime(path, time)
|
||||
# else
|
||||
# define VCWD_UTIME(path, time) utime(path, time)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define VCWD_CHMOD(path, mode) chmod(path, mode)
|
||||
#if !defined(TSRM_WIN32) && !defined(NETWARE)
|
||||
#define VCWD_CHOWN(path, owner, group) chown(path, owner, group)
|
||||
|
|
|
@ -170,7 +170,7 @@ TSRM_API int tsrm_win32_access(const char *pathname, int mode)
|
|||
fAccess = bucket->is_readable;
|
||||
goto Finished;
|
||||
}
|
||||
desired_access = FILE_GENERIC_READ;
|
||||
desired_access = FILE_GENERIC_READ|FILE_FLAG_BACKUP_SEMANTICS;
|
||||
} else { // if(mode <= 6)
|
||||
if(bucket != NULL && bucket->is_rvalid && bucket->is_wvalid) {
|
||||
fAccess = bucket->is_readable & bucket->is_writable;
|
||||
|
|
|
@ -97,6 +97,7 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
|
|||
TSRM_API FILE *popen(const char *command, const char *type);
|
||||
TSRM_API int pclose(FILE *stream);
|
||||
TSRM_API int tsrm_win32_access(const char *pathname, int mode);
|
||||
TSRM_API int win32_utime(const char *filename, struct utimbuf *buf);
|
||||
|
||||
TSRM_API int shmget(int key, int size, int flags);
|
||||
TSRM_API void *shmat(int key, const void *shmaddr, int flags);
|
||||
|
|
17
ext/standard/tests/file/bug49047.phpt
Normal file
17
ext/standard/tests/file/bug49047.phpt
Normal file
|
@ -0,0 +1,17 @@
|
|||
--TEST--
|
||||
Test fopen() function : variation: interesting paths, no use include path
|
||||
--FILE--
|
||||
<?php
|
||||
// fopen with interesting windows paths.
|
||||
$testdir = __DIR__ . '/bug47177.tmpdir';
|
||||
mkdir($testdir);
|
||||
$t = time() - 3600;
|
||||
touch($testdir, $t);
|
||||
clearstatcache();
|
||||
$t2 = filemtime($testdir);
|
||||
if ($t2 != $t) echo "failed (got $t2, expecting $t)\n";
|
||||
rmdir($testdir);
|
||||
echo "Ok.";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Ok.
|
Loading…
Add table
Add a link
Reference in a new issue