wez Sat Oct 22 13:26:16 2005 EDT Modified files: /php-src/main/streams php_stream_plain_wrapper.h /php-src/ext/standard filestat.c Log: merge VCWD_ACCESS bugfix to head. Test suite is unusable in HEAD, so I guess it works here too. http://cvs.php.net/diff.php/php-src/main/streams/php_stream_plain_wrapper.h?r1=1.7&r2=1.8&ty=u Index: php-src/main/streams/php_stream_plain_wrapper.h diff -u php-src/main/streams/php_stream_plain_wrapper.h:1.7 php-src/main/streams/php_stream_plain_wrapper.h:1.8 --- php-src/main/streams/php_stream_plain_wrapper.h:1.7 Wed Aug 3 10:08:42 2005 +++ php-src/main/streams/php_stream_plain_wrapper.h Sat Oct 22 13:26:16 2005 @@ -16,12 +16,13 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_stream_plain_wrapper.h,v 1.7 2005/08/03 14:08:42 sniper Exp $ */ +/* $Id: php_stream_plain_wrapper.h,v 1.8 2005/10/22 17:26:16 wez Exp $ */ /* definitions for the plain files wrapper */ /* operations for a plain file; use the php_stream_fopen_XXX funcs below */ PHPAPI extern php_stream_ops php_stream_stdio_ops; +PHPAPI extern php_stream_wrapper php_plain_files_wrapper; BEGIN_EXTERN_C() http://cvs.php.net/diff.php/php-src/ext/standard/filestat.c?r1=1.137&r2=1.138&ty=u Index: php-src/ext/standard/filestat.c diff -u php-src/ext/standard/filestat.c:1.137 php-src/ext/standard/filestat.c:1.138 --- php-src/ext/standard/filestat.c:1.137 Tue Aug 23 08:53:23 2005 +++ php-src/ext/standard/filestat.c Sat Oct 22 13:26:16 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filestat.c,v 1.137 2005/08/23 12:53:23 dmitry Exp $ */ +/* $Id: filestat.c,v 1.138 2005/10/22 17:26:16 wez Exp $ */ #include "php.h" #include "safe_mode.h" @@ -543,6 +543,7 @@ #define IS_LINK_OPERATION(__t) ((__t) == FS_TYPE || (__t) == FS_IS_LINK || (__t) == FS_LSTAT) #define IS_EXISTS_CHECK(__t) ((__t) == FS_EXISTS || (__t) == FS_IS_W || (__t) == FS_IS_R || (__t) == FS_IS_X || (__t) == FS_IS_FILE || (__t) == FS_IS_DIR || (__t) == FS_IS_LINK) #define IS_ABLE_CHECK(__t) ((__t) == FS_IS_R || (__t) == FS_IS_W || (__t) == FS_IS_X) +#define IS_ACCESS_CHECK(__t) (IS_ABLE_CHECK(type) || (__t) == FS_EXISTS) /* {{{ php_stat */ @@ -560,6 +561,35 @@ RETURN_FALSE; } + if (IS_ACCESS_CHECK(type)) { + char *local; + + if (php_stream_locate_url_wrapper(filename, &local, 0 TSRMLS_CC) == &php_plain_files_wrapper) { + switch (type) { +#ifdef F_OK + case FS_EXISTS: + RETURN_BOOL(VCWD_ACCESS(local, F_OK) == 0); + break; +#endif +#ifdef W_OK + case FS_IS_W: + RETURN_BOOL(VCWD_ACCESS(local, W_OK) == 0); + break; +#endif +#ifdef R_OK + case FS_IS_R: + RETURN_BOOL(VCWD_ACCESS(local, R_OK) == 0); + break; +#endif +#ifdef X_OK + case FS_IS_X: + RETURN_BOOL(VCWD_ACCESS(local, X_OK) == 0); + break; +#endif + } + } + } + if (IS_LINK_OPERATION(type)) { flags |= PHP_STREAM_URL_STAT_LINK; } @@ -617,7 +647,7 @@ php_stream_wrapper *wrapper; wrapper = php_stream_locate_url_wrapper(filename, NULL, 0 TSRMLS_CC); - if (wrapper && wrapper->wops && wrapper->wops->label && strcmp(wrapper->wops->label, "plainfile") == 0) { + if (wrapper == &php_plain_files_wrapper) { if (type == FS_IS_X) { xmask = S_IXROOT; } else {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php