rhaco
今後rhacoを使おうと思って触ってみる
Windowsだとフォルダ作成でエラーが出てしまう(無条件に頭にスラッシュが付いてしまうので、Windowsだとエラーになってしまうのです。)のでパッチを作ってみました。バージョンは1.1.0です。
ま、Windowsでやるな・・・という話しもありますが。
ソースはPEARのSystem::mkDirからパクりました・・・
@@ -288,22 +288,19 @@ $source = FileUtil::parseFilename($source); if(!FileUtil::isDir($source)){ - $paths = array(); - $cur = ""; - foreach(explode("/",$source) as $path){ - $cur = (!empty($path)) ? $cur."/".$path : $cur; - if(!empty($cur)) $paths[$cur] = $cur; - } - ksort($paths); - foreach($paths as $path){ - if(!is_dir($path)){ - $bool = (empty($permission)) ? mkdir($path) : mkdir($path,eval(sprintf("return %04d;",$permission))); - if($bool === false){ - ExceptionTrigger::raise(new PermissionException($path)); - return false; - } - } - } + $path = $source; + $dirstack = array(); + while (!@is_dir($path) && $path != DIRECTORY_SEPARATOR) { + array_unshift($dirstack, $path); + $path = dirname($path); + } + while ($path = array_shift($dirstack)) { + $bool = (empty($permission)) ? mkdir($path) : mkdir($path,eval(sprintf("return %04d;",$permission))); + if($bool === false){ + ExceptionTrigger::raise(new PermissionException($path)); + return false; + } + } } if(!empty($permission)) FileUtil::chmod($source,$permission); return true;