ID: 33140
Updated by: [EMAIL PROTECTED]
Reported By: cbelin at free dot fr
Status: Verified
Bug Type: Directory function related
Operating System: *
PHP Version: 5CVS-2005-05-26
New Comment:
When the top directory doesn't exist, the code tries to create
directory with empty name because on the previous step we changed first
"/" to '\0'.
IMO the simplest way is to check if the first character is 0 and change
it to DEFAULT_SLASH.
Not sure how it would work on Windows though.
Index: main/streams/plain_wrapper.c
===================================================================
RCS file: /repository/php-src/main/streams/plain_wrapper.c,v
retrieving revision 1.47
diff -u -p -d -r1.47 plain_wrapper.c
--- main/streams/plain_wrapper.c 20 Jun 2005 15:59:12 -0000
1.47
+++ main/streams/plain_wrapper.c 23 Jun 2005 20:06:47 -0000
@@ -1091,6 +1091,9 @@ static int php_plain_files_mkdir(php_str
break;
}
}
+ if (*buf == 0) {
+ *buf = DEFAULT_SLASH;
+ }
if (p == buf) {
ret = php_mkdir(dir, mode TSRMLS_CC);
} else if (!(ret = php_mkdir(buf, mode TSRMLS_CC))) {
Previous Comments:
------------------------------------------------------------------------
[2005-05-25 19:54:31] cbelin at free dot fr
Note :
this bug doesn't appear when you specify a drive letter.
<?php
mkdir('C:\toto\tata\titi', 0777, true);
?>
------------------------------------------------------------------------
[2005-05-25 18:02:41] cbelin at free dot fr
Description:
------------
Recursive 'mkdir' (with PHP 5.0.4 and Windows) doesn't function
correctly when the path includes a non-existent root folder.
Reproduce code:
---------------
<?php
mkdir('\toto\tata\titi', 0777, true);
?>
Expected result:
----------------
The following structure of directories should have been created :
\toto\tata\titi
Actual result:
--------------
No directory being created ! The function 'mkdir' fails if directory
'\toto' doesn't already exists.
Instead, it outputs :
Warning: mkdir() [function.mkdir]: No such file or directory in xxx.php
on line xxx
So I must use this code :
<?php
mkdir('\toto');
mkdir('\toto\tata\titi', 0777, true);
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33140&edit=1