#42027 [Asn->Csd]: is_file() / is_dir() matches file/dirnames with wildcard char or trailing slash

From: Date: Tue, 24 Jul 2007 09:08:35 +0000
Subject: #42027 [Asn->Csd]: is_file() / is_dir() matches file/dirnames with wildcard char or trailing slash
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-115367@lists.php.net to get a copy of this message
 ID:               42027
 Updated by:       dmitry@php.net
 Reported By:      mahesh dot vemula at in dot ibm dot com
-Status:           Assigned
+Status:           Closed
 Bug Type:         Filesystem function related
 Operating System: win32 only
 PHP Version:      5.2CVS-2007-07-23
 Assigned To:      dmitry
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2007-07-23 11:26:36] jani@php.net

GetFileAttributesEx accepts wildcards. There needs to be some check for
that and just simply return false for those on win32?

Assigned to Dmitry who added the win32 stuff into
TSRM/tsrm_virtual_cwd.c for this.

------------------------------------------------------------------------

[2007-07-23 08:35:48] tony2001@php.net

Windows behaviour is definitely wrong, "*.tmp" is not a file.

------------------------------------------------------------------------

[2007-07-18 15:37:02] jani@php.net

Obviously Windows side is doing it wrong. I expect wildcards in
filenames passed to is_file to return false.

------------------------------------------------------------------------

[2007-07-18 11:38:10] mahesh dot vemula at in dot ibm dot com

Description:
------------
is_file() matches for a file name given with wild-card
character/trailing slash on Windows, but not on Linux. When wild-card
char/trailing slash is given in the file name as input to the function,
the function returns false on Linux. 
In the same manner, is_dir() matches for a dir name given with
wild-card character on Windows, but not on Linux. When wild-card is
given in the dir name as input to the function, the function returns
false on Linux.  
A consistent behavior of the function is expected.


Environment:
Operating System: RHEL 4
PHP Version: PHP 5.2 
Configure Setup: ./configure


Reproduce code:
---------------
<?php
fclose( fopen("test.tmp", "w") );
var_dump( is_file("test.tmp") );
var_dump( is_file("test.tmp/") );
var_dump( is_file("*.tmp") );
unlink("test.tmp");

mkdir("temp");
var_dump( is_dir("temp") );
var_dump( is_dir("temp/") );
var_dump( is_dir("*mp") );
rmdir("temp");
?>


Expected result:
----------------
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)


Actual result:
--------------
bool(true)
bool(false)
bool(false)
bool(true)
bool(true)
bool(false)



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=42027&edit=1


Thread (5 messages)

« previous php.bugs (#115367) next »