cvs: php4 /ext/standard filestat.c /ext/standard/tests/file 003.inc 003.phpt

From: Date: Thu, 16 May 2002 01:07:21 +0000
Subject: cvs: php4 /ext/standard filestat.c /ext/standard/tests/file 003.inc 003.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-11945@lists.php.net to get a copy of this message
sniper Wed May 15 21:07:21 2002 EDT Modified files: /php4/ext/standard filestat.c /php4/ext/standard/tests/file 003.inc 003.phpt Log: - Made all is_*() functions to return only boolean values. - Killed the "file not found" error for is_link(). (finally..) Index: php4/ext/standard/filestat.c diff -u php4/ext/standard/filestat.c:1.91 php4/ext/standard/filestat.c:1.92 --- php4/ext/standard/filestat.c:1.91 Mon May 13 14:11:27 2002 +++ php4/ext/standard/filestat.c Wed May 15 21:07:21 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filestat.c,v 1.91 2002/05/13 18:11:27 rasmus Exp $ */ +/* $Id: filestat.c,v 1.92 2002/05/16 01:07:21 sniper Exp $ */ #include "php.h" #include "safe_mode.h" @@ -539,7 +539,7 @@ } /* }}} */ -#define IS_LINK_OPERATION() (type == 8 /* filetype */ || type == 14 /* is_link */ || type == 16 /* lstat */) +#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) /* {{{ php_stat @@ -569,22 +569,24 @@ BG(lsb).st_mode = 0; /* mark lstat buf invalid */ #endif if (VCWD_STAT(BG(CurrentStatFile), &BG(sb)) == -1) { - if (!IS_LINK_OPERATION() && (!IS_EXISTS_CHECK(type) || errno != ENOENT)) { /* fileexists() test must print no error */ + if (!IS_LINK_OPERATION(type) && (!IS_EXISTS_CHECK(type) || errno != ENOENT)) { /* fileexists() test must print no error */ php_error(E_WARNING, "stat failed for %s (errno=%d - %s)", BG(CurrentStatFile), errno, strerror(errno)); } efree(BG(CurrentStatFile)); BG(CurrentStatFile) = NULL; - if (!IS_LINK_OPERATION()) { /* Don't require success for link operation */ + if (!IS_LINK_OPERATION(type)) { /* Don't require success for link operation */ RETURN_FALSE; } } } #if HAVE_SYMLINK - if (IS_LINK_OPERATION() && !BG(lsb).st_mode) { + if (IS_LINK_OPERATION(type) && !BG(lsb).st_mode) { /* do lstat if the buffer is empty */ if (VCWD_LSTAT(filename, &BG(lsb)) == -1) { - php_error(E_WARNING, "lstat failed for %s (errno=%d - %s)", filename, errno, strerror(errno)); + if (!IS_EXISTS_CHECK(type) || errno != ENOENT) { /* fileexists() test must print no error */ + php_error(E_WARNING, "lstat failed for %s (errno=%d - %s)", BG(CurrentStatFile), errno, strerror(errno)); + } RETURN_FALSE; } } @@ -658,26 +660,26 @@ RETURN_STRING("unknown", 1); case FS_IS_W: if (getuid()==0) { - RETURN_LONG(1); /* root */ + RETURN_TRUE; /* root */ } - RETURN_LONG((BG(sb).st_mode & wmask) != 0); + RETURN_BOOL((BG(sb).st_mode & wmask) != 0); case FS_IS_R: if (getuid()==0) { - RETURN_LONG(1); /* root */ + RETURN_TRUE; /* root */ } - RETURN_LONG((BG(sb).st_mode&rmask)!=0); + RETURN_BOOL((BG(sb).st_mode&rmask)!=0); case FS_IS_X: if (getuid()==0) { xmask = S_IXROOT; /* root */ } - RETURN_LONG((BG(sb).st_mode&xmask)!=0 && !S_ISDIR(BG(sb).st_mode)); + RETURN_BOOL((BG(sb).st_mode&xmask)!=0 && !S_ISDIR(BG(sb).st_mode)); case FS_IS_FILE: - RETURN_LONG(S_ISREG(BG(sb).st_mode)); + RETURN_BOOL(S_ISREG(BG(sb).st_mode)); case FS_IS_DIR: - RETURN_LONG(S_ISDIR(BG(sb).st_mode)); + RETURN_BOOL(S_ISDIR(BG(sb).st_mode)); case FS_IS_LINK: #if HAVE_SYMLINK - RETURN_LONG(S_ISLNK(BG(lsb).st_mode)); + RETURN_BOOL(S_ISLNK(BG(lsb).st_mode)); #else RETURN_FALSE; #endif @@ -812,32 +814,32 @@ FileFunction(PHP_FN(filetype), FS_TYPE) /* }}} */ -/* {{{ proto int is_writable(string filename) +/* {{{ proto bool is_writable(string filename) Returns true if file can be written */ FileFunction(PHP_FN(is_writable), FS_IS_W) /* }}} */ -/* {{{ proto int is_readable(string filename) +/* {{{ proto bool is_readable(string filename) Returns true if file can be read */ FileFunction(PHP_FN(is_readable), FS_IS_R) /* }}} */ -/* {{{ proto int is_executable(string filename) +/* {{{ proto bool is_executable(string filename) Returns true if file is executable */ FileFunction(PHP_FN(is_executable), FS_IS_X) /* }}} */ -/* {{{ proto int is_file(string filename) +/* {{{ proto bool is_file(string filename) Returns true if file is a regular file */ FileFunction(PHP_FN(is_file), FS_IS_FILE) /* }}} */ -/* {{{ proto int is_dir(string filename) +/* {{{ proto bool is_dir(string filename) Returns true if file is directory */ FileFunction(PHP_FN(is_dir), FS_IS_DIR) /* }}} */ -/* {{{ proto int is_link(string filename) +/* {{{ proto bool is_link(string filename) Returns true if file is symbolic link */ FileFunction(PHP_FN(is_link), FS_IS_LINK) /* }}} */ Index: php4/ext/standard/tests/file/003.inc diff -u php4/ext/standard/tests/file/003.inc:1.1 php4/ext/standard/tests/file/003.inc:1.2 --- php4/ext/standard/tests/file/003.inc:1.1 Sat Apr 27 20:05:41 2002 +++ php4/ext/standard/tests/file/003.inc Wed May 15 21:07:21 2002 @@ -1,19 +1,27 @@ <?php -$filename=""; - -$bb = is_file($filename); -var_dump($bb); +$funcs = array( + 'is_writable', + 'is_readable', + 'is_executable', + 'is_file', + 'file_exists', +); -$aa = file_exists($filename); -var_dump($aa); +$filename=""; -$filename="php.ini-dist"; +foreach ($funcs as $test) { + $bb = $test($filename); + var_dump($bb); + clearstatcache(); +} -$bb = is_file($filename); -var_dump($bb); +$filename="run-tests.php"; -$aa = file_exists($filename); -var_dump($aa); +foreach ($funcs as $test) { + $bb = $test($filename); + var_dump($bb); + clearstatcache(); +} ?> Index: php4/ext/standard/tests/file/003.phpt diff -u php4/ext/standard/tests/file/003.phpt:1.3 php4/ext/standard/tests/file/003.phpt:1.4 --- php4/ext/standard/tests/file/003.phpt:1.3 Tue Apr 30 06:38:06 2002 +++ php4/ext/standard/tests/file/003.phpt Wed May 15 21:07:21 2002 @@ -1,5 +1,5 @@ --TEST-- -is_file/file_exist +is_*() and file_exists() return values are boolean. --POST-- --GET-- --FILE-- @@ -7,5 +7,11 @@ --EXPECT-- bool(false) bool(false) +bool(false) +bool(false) +bool(false) +bool(true) +bool(true) +bool(true) bool(true) bool(true)

« previous php.cvs (#11945) next »