]> source.dussan.org Git - nextcloud-server.git/commitdiff
fall back to getLocalFile if storage doesn't support fseek
authorBjoern Schiessle <schiessle@owncloud.com>
Tue, 17 Dec 2013 15:18:05 +0000 (16:18 +0100)
committerBjoern Schiessle <schiessle@owncloud.com>
Tue, 17 Dec 2013 15:18:05 +0000 (16:18 +0100)
apps/files_encryption/lib/util.php

index d4aa4d316494b8bb624be1ebe008bb854fc1e6e0..577b656077f6a007640e032ad145f0010cc50bd8 100644 (file)
@@ -472,8 +472,20 @@ class Util {
                // we only need 24 byte from the last chunk
                $data = '';
                $handle = $this->view->fopen($path, 'r');
-               if (is_resource($handle) && !fseek($handle, -24, SEEK_END)) {
-                       $data = fgets($handle);
+               if (is_resource($handle)) {
+                       if (fseek($handle, -24, SEEK_END) === 0) {
+                               $data = fgets($handle);
+                       } else {
+                               // if fseek failed on the storage we create a local copy from the file
+                               // and read this one
+                               fclose($handle);
+                               $localFile = $this->view->getLocalFile($path);
+                               $handle = fopen($localFile, 'r');
+                               if (is_resource($handle) && fseek($handle, -24, SEEK_END) === 0) {
+                                       $data = fgets($handle);
+                               }
+                       }
+                       fclose($handle);
                }
 
                // re-enable proxy