workaround for 32-bit systems to handle filesizes bigger than 2GB

This commit is contained in:
Thomas Mueller 2013-01-03 00:35:57 +01:00
parent 34e5cb5070
commit 045c0acc92
2 changed files with 19 additions and 2 deletions

View File

@ -21,7 +21,7 @@
*/ */
/** /**
* Provde a common interface to all different storage options * Provide a common interface to all different storage options
*/ */
abstract class OC_Filestorage{ abstract class OC_Filestorage{
abstract public function __construct($parameters); abstract public function __construct($parameters);

View File

@ -29,7 +29,24 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
return is_file($this->datadir.$path); return is_file($this->datadir.$path);
} }
public function stat($path) { public function stat($path) {
return stat($this->datadir.$path); $fullPath = $this->datadir.$path;
$statResult = stat($fullPath);
// special case for 32-bit systems
if (PHP_INT_SIZE===4) {
if (!(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'))
$size = (float)exec('stat -c %s '. escapeshellarg ($fullPath));
else{
$fsobj = new COM("Scripting.FileSystemObject");
$f = $fsobj->GetFile($fullPath);
$size = $f->Size;
}
$statResult['size'] = $size;
$statResult[7] = $size;
}
return $statResult;
} }
public function filetype($path) { public function filetype($path) {
$filetype=filetype($this->datadir.$path); $filetype=filetype($this->datadir.$path);