Windows exec() implementation.
This commit is contained in:
parent
626e87aa54
commit
df29eec72b
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue