[Pkg-owncloud-commits] [owncloud] 126/199: Windows exec() implementation.

David Prévot taffit at moszumanska.debian.org
Sun Jun 1 18:53:17 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit df29eec72b2b094acca97636c6b91ab2eafc245d
Author: Andreas Fischer <bantu at owncloud.com>
Date:   Sun Feb 9 16:16:01 2014 +0100

    Windows exec() implementation.
---
 lib/private/largefilehelper.php | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/lib/private/largefilehelper.php b/lib/private/largefilehelper.php
index 751e60d..5f5e14a 100644
--- a/lib/private/largefilehelper.php
+++ b/lib/private/largefilehelper.php
@@ -92,17 +92,26 @@ class LargeFileHelper {
 	public function getFilesizeViaExec($filename) {
 		if (\OC_Helper::is_function_enabled('exec')) {
 			$os = strtolower(php_uname('s'));
+			$arg = escapeshellarg($filename);
 			$result = '';
 			if (strpos($os, 'linux') !== false) {
-				$result = trim(exec('stat -c %s ' . escapeshellarg($filename)));
+				$result = $this->exec("stat -c %s $arg");
 			} else if (strpos($os, 'bsd') !== false) {
-				$result = trim(exec('stat -f %z ' . escapeshellarg($filename)));
-			}
-
-			if (ctype_digit($result)) {
-				return 0 + $result;
+				$result = $this->exec("stat -f %z $arg");
+			} else if (strpos($os, 'win') !== false) {
+				$result = $this->exec("for %F in ($arg) do @echo %~zF");
+				if (is_null($result)) {
+					// PowerShell
+					$result = $this->exec("(Get-Item $arg).length");
+				}
 			}
+			return $result;
 		}
 		return null;
 	}
+
+	protected function exec($cmd) {
+		$result = trim(exec($cmd));
+		return ctype_digit($result) ? 0 + $result : null;
+	}
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list