Make it clear that file sizes may be float on 32bits

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2022-12-19 13:54:23 +01:00 committed by MichaIng
parent c6b683342e
commit ed863fb47c
No known key found for this signature in database
GPG key ID: 0442B9ADE65643FE
4 changed files with 15 additions and 13 deletions

View file

@ -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,7 +58,7 @@ class Quota extends Wrapper {
}
/**
* @return quota value
* @return int|float quota value
*/
public function getQuota() {
if ($this->quota === 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) {

View file

@ -249,7 +249,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);
@ -325,7 +325,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);

View file

@ -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.disk-free-space.php
*
* @param string $path
* @return int|bool
* @return int|float|bool
* @since 6.0.0
*/
public function free_space($path);

View file

@ -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);