mirror of
https://github.com/nextcloud/server.git
synced 2026-04-15 22:11:17 -04:00
Merge pull request #35734 from nextcloud/stable25-quota-as-float-for-32bit-folks
[stable25] Quota value as float for 32-bit systems
This commit is contained in:
commit
1e982ee33b
10 changed files with 29 additions and 28 deletions
|
|
@ -477,7 +477,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
|
|||
* get the free space in the storage
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
*/
|
||||
public function free_space($path) {
|
||||
return \OCP\Files\FileInfo::SPACE_UNKNOWN;
|
||||
|
|
@ -523,7 +523,6 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
|
|||
* @throws InvalidPathException
|
||||
*/
|
||||
public function verifyPath($path, $fileName) {
|
||||
|
||||
// verify empty and dot files
|
||||
$trimmed = trim($fileName);
|
||||
if ($trimmed === '') {
|
||||
|
|
|
|||
|
|
@ -486,7 +486,7 @@ class DAV extends Common {
|
|||
/**
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
*/
|
||||
public function file_put_contents($path, $data) {
|
||||
$path = $this->cleanPath($path);
|
||||
|
|
|
|||
|
|
@ -609,6 +609,7 @@ class Local extends \OC\Files\Storage\Common {
|
|||
}
|
||||
|
||||
public function writeStream(string $path, $stream, int $size = null): int {
|
||||
/** @var int|false $result We consider here that returned size will never be a float because we write less than 4GB */
|
||||
$result = $this->file_put_contents($path, $stream);
|
||||
if (is_resource($stream)) {
|
||||
fclose($stream);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ use OCP\ICache;
|
|||
* the actual given name and then try its NFD form.
|
||||
*/
|
||||
class Encoding extends Wrapper {
|
||||
|
||||
/**
|
||||
* @var ICache
|
||||
*/
|
||||
|
|
@ -213,7 +212,7 @@ class Encoding extends Wrapper {
|
|||
* The result for filesize when called on a folder is required to be 0
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function filesize($path) {
|
||||
return $this->storage->filesize($this->findPathToUse($path));
|
||||
|
|
@ -315,7 +314,7 @@ class Encoding extends Wrapper {
|
|||
*
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
*/
|
||||
public function file_put_contents($path, $data) {
|
||||
return $this->storage->file_put_contents($this->findPathToUse($path), $data);
|
||||
|
|
@ -400,7 +399,7 @@ class Encoding extends Wrapper {
|
|||
* see https://www.php.net/manual/en/function.free_space.php
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function free_space($path) {
|
||||
return $this->storage->free_space($this->findPathToUse($path));
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ class Jail extends Wrapper {
|
|||
* The result for filesize when called on a folder is required to be 0
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function filesize($path) {
|
||||
return $this->getWrapperStorage()->filesize($this->getUnjailedPath($path));
|
||||
|
|
@ -262,7 +262,7 @@ class Jail extends Wrapper {
|
|||
*
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
*/
|
||||
public function file_put_contents($path, $data) {
|
||||
return $this->getWrapperStorage()->file_put_contents($this->getUnjailedPath($path), $data);
|
||||
|
|
@ -338,7 +338,7 @@ class Jail extends Wrapper {
|
|||
* see https://www.php.net/manual/en/function.free_space.php
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function free_space($path) {
|
||||
return $this->getWrapperStorage()->free_space($this->getUnjailedPath($path));
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@ use OCP\Files\Storage\IStorage;
|
|||
class Quota extends Wrapper {
|
||||
/** @var callable|null */
|
||||
protected $quotaCallback;
|
||||
protected ?int $quota;
|
||||
/** @var int|float|null int on 64bits, float on 32bits for bigint */
|
||||
protected $quota;
|
||||
protected string $sizeRoot;
|
||||
private SystemConfig $config;
|
||||
|
||||
|
|
@ -57,9 +58,9 @@ class Quota extends Wrapper {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return int quota value
|
||||
* @return int|float quota value
|
||||
*/
|
||||
public function getQuota(): int {
|
||||
public function getQuota() {
|
||||
if ($this->quota === null) {
|
||||
$quotaCallback = $this->quotaCallback;
|
||||
if ($quotaCallback === null) {
|
||||
|
|
@ -77,7 +78,8 @@ class Quota extends Wrapper {
|
|||
|
||||
/**
|
||||
* @param string $path
|
||||
* @param \OC\Files\Storage\Storage $storage
|
||||
* @param IStorage $storage
|
||||
* @return int|float
|
||||
*/
|
||||
protected function getSize($path, $storage = null) {
|
||||
if ($this->config->getValue('quota_include_external_storage', false)) {
|
||||
|
|
@ -101,7 +103,7 @@ class Quota extends Wrapper {
|
|||
* Get free space as limited by the quota
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function free_space($path) {
|
||||
if (!$this->hasQuota()) {
|
||||
|
|
@ -128,7 +130,7 @@ class Quota extends Wrapper {
|
|||
*
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
*/
|
||||
public function file_put_contents($path, $data) {
|
||||
if (!$this->hasQuota()) {
|
||||
|
|
@ -177,7 +179,7 @@ class Quota extends Wrapper {
|
|||
// don't apply quota for part files
|
||||
if (!$this->isPartFile($path)) {
|
||||
$free = $this->free_space($path);
|
||||
if ($source && is_int($free) && $free >= 0 && $mode !== 'r' && $mode !== 'rb') {
|
||||
if ($source && (is_int($free) || is_float($free)) && $free >= 0 && $mode !== 'r' && $mode !== 'rb') {
|
||||
// only apply quota for files, not metadata, trash or others
|
||||
if ($this->shouldApplyQuota($path)) {
|
||||
return \OC\Files\Stream\Quota::wrap($source, $free);
|
||||
|
|
@ -192,7 +194,7 @@ class Quota extends Wrapper {
|
|||
* Checks whether the given path is a part file
|
||||
*
|
||||
* @param string $path Path that may identify a .part file
|
||||
* @return string File path without .part extension
|
||||
* @return bool
|
||||
* @note this is needed for reusing keys
|
||||
*/
|
||||
private function isPartFile($path) {
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea
|
|||
* The result for filesize when called on a folder is required to be 0
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function filesize($path) {
|
||||
return $this->getWrapperStorage()->filesize($path);
|
||||
|
|
@ -252,7 +252,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea
|
|||
*
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
*/
|
||||
public function file_put_contents($path, $data) {
|
||||
return $this->getWrapperStorage()->file_put_contents($path, $data);
|
||||
|
|
@ -328,7 +328,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea
|
|||
* see https://www.php.net/manual/en/function.free_space.php
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
*/
|
||||
public function free_space($path) {
|
||||
return $this->getWrapperStorage()->free_space($path);
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ class LargeFileHelper {
|
|||
*
|
||||
* @param string $filename Path to the file.
|
||||
*
|
||||
* @return null|int|float Number of bytes as number (float or int) or
|
||||
* @return int|float Number of bytes as number (float or int) or
|
||||
* null on failure.
|
||||
*/
|
||||
public function getFileSize($filename) {
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ interface Storage extends IStorage {
|
|||
* The result for filesize when called on a folder is required to be 0
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public function filesize($path);
|
||||
|
|
@ -227,7 +227,7 @@ interface Storage extends IStorage {
|
|||
*
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public function file_put_contents($path, $data);
|
||||
|
|
@ -296,7 +296,7 @@ interface Storage extends IStorage {
|
|||
* see https://www.php.net/manual/en/function.free_space.php
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public function free_space($path);
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ interface IStorage {
|
|||
* The result for filesize when called on a folder is required to be 0
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function filesize($path);
|
||||
|
|
@ -224,7 +224,7 @@ interface IStorage {
|
|||
*
|
||||
* @param string $path
|
||||
* @param mixed $data
|
||||
* @return int|false
|
||||
* @return int|float|false
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function file_put_contents($path, $data);
|
||||
|
|
@ -293,7 +293,7 @@ interface IStorage {
|
|||
* see https://www.php.net/manual/en/function.free_space.php
|
||||
*
|
||||
* @param string $path
|
||||
* @return int|bool
|
||||
* @return int|float|bool
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function free_space($path);
|
||||
|
|
|
|||
Loading…
Reference in a new issue