summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorTim Dettrick <t.dettrick@uq.edu.au>2015-08-10 11:06:45 +1000
committerMorris Jobke <hey@morrisjobke.de>2015-12-07 10:20:09 +0100
commit35ab7f0e64316eba1966bde406f31885b61f15a8 (patch)
tree2e2aa66eb58d19df36c08301110be51a813032cf /apps
parent884946276e13e7949cb2a5a46fd29d342ff386d4 (diff)
downloadnextcloud-server-35ab7f0e64316eba1966bde406f31885b61f15a8.tar.gz
nextcloud-server-35ab7f0e64316eba1966bde406f31885b61f15a8.zip
Improving fopen behaviour for Swift backend
Diffstat (limited to 'apps')
-rw-r--r--apps/files_external/lib/swift.php11
1 files changed, 10 insertions, 1 deletions
diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php
index e946e7feb77..a64a02a4ed9 100644
--- a/apps/files_external/lib/swift.php
+++ b/apps/files_external/lib/swift.php
@@ -354,9 +354,18 @@ class Swift extends \OC\Files\Storage\Common {
}
$tmpFile = \OCP\Files::tmpFile($ext);
\OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
- if ($this->file_exists($path)) {
+ // Fetch existing file if required
+ if ($mode[0] !== 'w' && $this->file_exists($path)) {
+ if ($mode[0] === 'x') {
+ // File cannot already exist
+ return false;
+ }
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
+ // Seek to end if required
+ if ($mode[0] === 'a') {
+ fseek($tmpFile, 0, SEEK_END);
+ }
}
self::$tmpFiles[$tmpFile] = $path;