diff --git a/files/index.php b/files/index.php index a29d3fb7e1..79261e495b 100644 --- a/files/index.php +++ b/files/index.php @@ -40,7 +40,7 @@ OC_App::setActiveNavigationEntry( "files_index" ); // Load the files $dir = isset( $_GET['dir'] ) ? stripslashes($_GET['dir']) : ''; // Redirect if directory does not exist -if(!OC_Filesystem::is_dir($dir)) { +if(!OC_Filesystem::is_dir($dir.'/')) { header("Location: ".$_SERVER['PHP_SELF'].""); } diff --git a/lib/filecache.php b/lib/filecache.php index 732160c216..e94ae49c73 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -323,10 +323,11 @@ class OC_FileCache{ $path=$params['path']; $fullPath=$view->getRoot().$path; $mimetype=$view->getMimeType($path); + $dir=$view->is_dir($path.'/'); //dont use self::get here, we don't want inifinte loops when a file has changed $cachedSize=self::getCachedSize($path,$root); $size=0; - if($mimetype=='httpd/unix-directory'){ + if($dir){ if(self::inCache($path,$root)){ $parent=self::getFileId($fullPath); $query=OC_DB::prepare('SELECT size FROM *PREFIX*fscache WHERE parent=?'); @@ -465,13 +466,13 @@ class OC_FileCache{ $view=new OC_FilesystemView(($root=='/')?'':$root); } self::scanFile($path,$root); - $dh=$view->opendir($path); + $dh=$view->opendir($path.'/'); $totalSize=0; if($dh){ while (($filename = readdir($dh)) !== false) { if($filename != '.' and $filename != '..'){ $file=$path.'/'.$filename; - if($view->is_dir($file)){ + if($view->is_dir($file.'/')){ if($eventSource){ $eventSource->send('scanning',array('file'=>$file,'count'=>$count)); } diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php index 8e07ce6025..750a1fb36d 100644 --- a/lib/filestorage/local.php +++ b/lib/filestorage/local.php @@ -21,7 +21,7 @@ class OC_Filestorage_Local extends OC_Filestorage{ return opendir($this->datadir.$path); } public function is_dir($path){ - return (is_dir($this->datadir.$path) or substr($path,-1)=='/'); + return @is_dir($this->datadir.$path); } public function is_file($path){ return is_file($this->datadir.$path); diff --git a/lib/filesystem.php b/lib/filesystem.php index 5013b3968c..12905d189f 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -146,20 +146,15 @@ class OC_Filesystem{ * @return string */ static public function getMountPoint($path){ + OC_Hook::emit(self::CLASSNAME,'get_mountpoint',array('path'=>$path)); if(!$path){ $path='/'; } if(substr($path,0,1)!=='/'){ $path='/'.$path; } - if(substr($path,-1)!=='/'){ - $path=$path.'/'; - } $foundMountPoint=''; foreach(OC_Filesystem::$mounts as $mountpoint=>$storage){ - if(substr($mountpoint,-1)!=='/'){ - $mountpoint=$mountpoint.'/'; - } if($mountpoint==$path){ return $mountpoint; } @@ -259,6 +254,9 @@ class OC_Filesystem{ * @param string mountpoint */ static public function mount($class,$arguments,$mountpoint){ + if(substr($mountpoint,-1)!=='/'){ + $mountpoint=$mountpoint.'/'; + } if(substr($mountpoint,0,1)!=='/'){ $mountpoint='/'.$mountpoint; } diff --git a/lib/filesystemview.php b/lib/filesystemview.php index 2d54a676c8..89e0385fe9 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -205,6 +205,7 @@ class OC_FilesystemView { $count=OC_Helper::streamCopy($data,$target); $storage1=$this->getStorage($path1); $storage1->unlink($this->getInternalPath($path1)); + $result=$count>0; } OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_rename, array( OC_Filesystem::signal_param_oldpath => $path1, OC_Filesystem::signal_param_newpath=>$path2)); return $result;