From cff1b6e69901c84aadbb7d9f9677756f4c813837 Mon Sep 17 00:00:00 2001
From: Bart Visscher <bartv@thisnet.nl>
Date: Fri, 8 Jun 2012 21:23:25 +0200
Subject: [PATCH] Don't use substr to get first char of string

---
 apps/files_archive/lib/storage.php |  2 +-
 apps/files_external/lib/ftp.php    |  2 +-
 apps/files_external/lib/swift.php  |  2 +-
 apps/files_external/lib/webdav.php |  4 ++--
 apps/user_ldap/lib_ldap.php        |  4 ++--
 lib/app.php                        |  2 +-
 lib/archive/tar.php                |  4 ++--
 lib/archive/zip.php                |  2 +-
 lib/filesystem.php                 | 10 +++++-----
 lib/filesystemview.php             |  2 +-
 lib/installer.php                  |  2 +-
 lib/user/database.php              |  2 +-
 tests/index.php                    |  2 +-
 13 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/apps/files_archive/lib/storage.php b/apps/files_archive/lib/storage.php
index b8f7d46838..8676166361 100644
--- a/apps/files_archive/lib/storage.php
+++ b/apps/files_archive/lib/storage.php
@@ -18,7 +18,7 @@ class OC_Filestorage_Archive extends OC_Filestorage_Common{
 	private static $rootView;
 	
 	private function stripPath($path){//files should never start with /
-		if(substr($path,0,1)=='/'){
+		if(!$path || $path[0]=='/'){
 			$path=substr($path,1);
 		}
 		return $path;
diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php
index 981eeab58b..c431070e24 100644
--- a/apps/files_external/lib/ftp.php
+++ b/apps/files_external/lib/ftp.php
@@ -21,7 +21,7 @@ class OC_FileStorage_FTP extends OC_Filestorage_Common{
 		$this->password=$params['password'];
 		$this->secure=isset($params['secure'])?(bool)$params['secure']:false;
 		$this->root=isset($params['root'])?$params['root']:'/';
-		if(substr($this->root,0,1)!='/'){
+		if(!$this->root || $this->root[0]!='/'){
 			$this->root='/'.$this->root;
 		}
 		
diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php
index e3ba9c240c..58b95a6ae0 100644
--- a/apps/files_external/lib/swift.php
+++ b/apps/files_external/lib/swift.php
@@ -269,7 +269,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
 		$this->user=$params['user'];
 		$this->root=isset($params['root'])?$params['root']:'/';
 		$this->secure=isset($params['secure'])?(bool)$params['secure']:true;
-		if(substr($this->root,0,1)!='/'){
+		if(!$this->root || $this->root[0]!='/'){
 			$this->root='/'.$this->root;
 		}
 		$this->auth = new CF_Authentication($this->user, $this->token, null, $this->host);
diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php
index 07c90d4878..d136f04f3e 100644
--- a/apps/files_external/lib/webdav.php
+++ b/apps/files_external/lib/webdav.php
@@ -25,7 +25,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
 		$this->password=$params['password'];
 		$this->secure=isset($params['secure'])?(bool)$params['secure']:false;
 		$this->root=isset($params['root'])?$params['root']:'/';
-		if(substr($this->root,0,1)!='/'){
+		if(!$this->root || $this->root[0]!='/'){
 			$this->root='/'.$this->root;
 		}
 		if(substr($this->root,-1,1)!='/'){
@@ -273,7 +273,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
 	}
 
 	private function cleanPath($path){
-		if(substr($path,0,1)=='/'){
+		if(!$path || $path[0]=='/'){
 			return substr($path,1);
 		}else{
 			return $path;
diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php
index 4adb70cfa0..d7d6e09c9b 100644
--- a/apps/user_ldap/lib_ldap.php
+++ b/apps/user_ldap/lib_ldap.php
@@ -606,7 +606,7 @@ class OC_LDAP {
 	static private function combineFilter($filters, $operator) {
 		$combinedFilter = '('.$operator;
 		foreach($filters as $filter) {
-		    if(substr($filter,0,1) != '(') {
+		    if($filter[0] != '(') {
 				$filter = '('.$filter.')';
 		    }
 		    $combinedFilter.=$filter;
@@ -722,4 +722,4 @@ class OC_LDAP {
 		return false;
 	}
 
- }
\ No newline at end of file
+ }
diff --git a/lib/app.php b/lib/app.php
index e4ec0fe588..1d046b3bb5 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -494,7 +494,7 @@ class OC_App{
 		$apps=array();
 		$dh=opendir(OC::$APPSROOT.'/apps');
 		while($file=readdir($dh)){
-			if(substr($file,0,1)!='.' and is_file(OC::$APPSROOT.'/apps/'.$file.'/appinfo/app.php')){
+			if($file[0]!='.' and is_file(OC::$APPSROOT.'/apps/'.$file.'/appinfo/app.php')){
 				$apps[]=$file;
 			}
 		}
diff --git a/lib/archive/tar.php b/lib/archive/tar.php
index 4ff7877983..944a0ac4ba 100644
--- a/lib/archive/tar.php
+++ b/lib/archive/tar.php
@@ -150,7 +150,7 @@ class OC_Archive_TAR extends OC_Archive{
 		$folderContent=array();
 		$pathLength=strlen($path);
 		foreach($files as $file){
-			if(substr($file,0,1)=='/'){
+			if($file[0]=='/'){
 				$file=substr($file,1);
 			}
 			if(substr($file,0,$pathLength)==$path and $file!=$path){
@@ -241,7 +241,7 @@ class OC_Archive_TAR extends OC_Archive{
 				}
 			}
 		}
-		if(substr($path,0,1)!='/'){//not all programs agree on the use of a leading /
+		if($path[0]!='/'){//not all programs agree on the use of a leading /
 			return $this->fileExists('/'.$path);
 		}else{
 			return false;
diff --git a/lib/archive/zip.php b/lib/archive/zip.php
index 22ab48937e..6631a649b1 100644
--- a/lib/archive/zip.php
+++ b/lib/archive/zip.php
@@ -191,7 +191,7 @@ class OC_Archive_ZIP extends OC_Archive{
 	}
 
 	private function stripPath($path){
-		if(substr($path,0,1)=='/'){
+		if(!$path || $path[0]=='/'){
 			return substr($path,1);
 		}else{
 			return $path;
diff --git a/lib/filesystem.php b/lib/filesystem.php
index 198f00873c..813590b00b 100644
--- a/lib/filesystem.php
+++ b/lib/filesystem.php
@@ -150,7 +150,7 @@ class OC_Filesystem{
 		if(!$path){
 			$path='/';
 		}
-		if(substr($path,0,1)!=='/'){
+		if($path[0]!=='/'){
 			$path='/'.$path;
 		}
 		$foundMountPoint='';
@@ -311,12 +311,12 @@ class OC_Filesystem{
 	* @param string mountpoint
 	*/
 	static public function mount($class,$arguments,$mountpoint){
+		if($mountpoint[0]!='/'){
+			$mountpoint='/'.$mountpoint;
+		}
 		if(substr($mountpoint,-1)!=='/'){
 			$mountpoint=$mountpoint.'/';
 		}
-		if(substr($mountpoint,0,1)!=='/'){
-			$mountpoint='/'.$mountpoint;
-		}
 		self::$mounts[$mountpoint]=array('class'=>$class,'arguments'=>$arguments);
 	}
 
@@ -361,7 +361,7 @@ class OC_Filesystem{
 	 * @return bool
 	 */
 	static public function isValidPath($path){
-		if(substr($path,0,1)!=='/'){
+		if(!$path || $path[0]!=='/'){
 			$path='/'.$path;
 		}
 		if(strstr($path,'/../') || strrchr($path, '/') === '/..' ){
diff --git a/lib/filesystemview.php b/lib/filesystemview.php
index 93fce38af4..d15f91be1e 100644
--- a/lib/filesystemview.php
+++ b/lib/filesystemview.php
@@ -34,7 +34,7 @@ class OC_FilesystemView {
 		if(!$path){
 			$path='/';
 		}
-		if(substr($path,0,1)!=='/'){
+		if($path[0]!=='/'){
 			$path='/'.$path;
 		}
 		return $this->fakeRoot.$path;
diff --git a/lib/installer.php b/lib/installer.php
index 6417ed1c7a..4069f2ab7c 100644
--- a/lib/installer.php
+++ b/lib/installer.php
@@ -110,7 +110,7 @@ class OC_Installer{
 			//try to find it in a subdir
 			$dh=opendir($extractDir);
 			while($folder=readdir($dh)){
-				if(substr($folder,0,1)!='.' and is_dir($extractDir.'/'.$folder)){
+				if($folder[0]!='.' and is_dir($extractDir.'/'.$folder)){
 					if(is_file($extractDir.'/'.$folder.'/appinfo/info.xml')){
 						$extractDir.='/'.$folder;
 					}
diff --git a/lib/user/database.php b/lib/user/database.php
index a9b01957d4..a69fe49a0b 100644
--- a/lib/user/database.php
+++ b/lib/user/database.php
@@ -129,7 +129,7 @@ class OC_User_Database extends OC_User_Backend {
 		$row=$result->fetchRow();
 		if($row){
 			$storedHash=$row['password'];
-			if (substr($storedHash,0,1)=='$'){//the new phpass based hashing
+			if ($storedHash[0]=='$'){//the new phpass based hashing
 				$hasher=$this->getHasher();
 				if($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash)){
 					return $row['uid'];
diff --git a/tests/index.php b/tests/index.php
index 6dec1b050f..ad98048a68 100644
--- a/tests/index.php
+++ b/tests/index.php
@@ -41,7 +41,7 @@ function loadTests($dir=''){
 	$test=isset($_GET['test'])?$_GET['test']:false;
 	if($dh=opendir($dir)){
 		while($name=readdir($dh)){
-			if(substr($name,0,1)!='.'){//no hidden files, '.' or '..'
+			if($name[0]!='.'){//no hidden files, '.' or '..'
 				$file=$dir.'/'.$name;
 				if(is_dir($file)){
 					loadTests($file);
-- 
GitLab