Browse Source

Windows exec() implementation.

tags/v7.0.0alpha2
Andreas Fischer 10 years ago
parent
commit
df29eec72b
1 changed files with 15 additions and 6 deletions
  1. 15
    6
      lib/private/largefilehelper.php

+ 15
- 6
lib/private/largefilehelper.php View File

@@ -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…
Cancel
Save