summaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2016-03-17 13:54:26 +0100
committerRobin Appelman <icewind@owncloud.com>2016-03-21 14:24:00 +0100
commitdfbd85d7231d3440b2831c61a83ba8cb1512523e (patch)
treefbece739c4879b823e911f3d7a125c28bf791b0b /apps/files_external
parent90fb744e89572f5f9a41a82e9619bd3b2bcfa0a6 (diff)
downloadnextcloud-server-dfbd85d7231d3440b2831c61a83ba8cb1512523e.tar.gz
nextcloud-server-dfbd85d7231d3440b2831c61a83ba8cb1512523e.zip
update icewind/streams to 0.4.0 and icewind/smb to 1.0.7 in files_external
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/3rdparty/.gitignore1
-rw-r--r--apps/files_external/3rdparty/composer.json4
-rw-r--r--apps/files_external/3rdparty/composer.lock29
-rw-r--r--apps/files_external/3rdparty/composer/ClassLoader.php8
-rw-r--r--apps/files_external/3rdparty/composer/autoload_classmap.php15
-rw-r--r--apps/files_external/3rdparty/composer/autoload_real.php15
-rw-r--r--apps/files_external/3rdparty/composer/installed.json29
-rw-r--r--apps/files_external/3rdparty/icewind/smb/README.md2
-rw-r--r--apps/files_external/3rdparty/icewind/smb/composer.json2
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NativeStream.php7
-rw-r--r--apps/files_external/3rdparty/icewind/streams/.travis.yml7
-rw-r--r--apps/files_external/3rdparty/icewind/streams/LICENCE21
-rw-r--r--apps/files_external/3rdparty/icewind/streams/README.md1
-rw-r--r--apps/files_external/3rdparty/icewind/streams/composer.json3
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php67
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php60
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php88
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/File.php2
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php4
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php15
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Path.php104
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php66
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php92
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Url.php64
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/UrlCallBack.php121
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Wrapper.php31
-rw-r--r--apps/files_external/3rdparty/icewind/streams/tests/CallbackWrapper.php72
-rw-r--r--apps/files_external/3rdparty/icewind/streams/tests/IteratorDirectory.php130
-rw-r--r--apps/files_external/3rdparty/icewind/streams/tests/NullWrapper.php59
-rw-r--r--apps/files_external/3rdparty/icewind/streams/tests/Wrapper.php105
-rw-r--r--apps/files_external/3rdparty/icewind/streams/tests/bootstrap.php9
-rw-r--r--apps/files_external/3rdparty/icewind/streams/tests/phpunit.xml6
32 files changed, 761 insertions, 478 deletions
diff --git a/apps/files_external/3rdparty/.gitignore b/apps/files_external/3rdparty/.gitignore
index c8d4e6eed0b..b56af237c35 100644
--- a/apps/files_external/3rdparty/.gitignore
+++ b/apps/files_external/3rdparty/.gitignore
@@ -2,3 +2,4 @@ example.php
icewind/smb/tests
icewind/smb/install_libsmbclient.sh
icewind/smb/.travis.yml
+icewind/streams/tests
diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json
index 4c130404add..64bf1aa02cd 100644
--- a/apps/files_external/3rdparty/composer.json
+++ b/apps/files_external/3rdparty/composer.json
@@ -8,8 +8,8 @@
"classmap-authoritative": true
},
"require": {
- "icewind/smb": "1.0.5",
- "icewind/streams": "0.2"
+ "icewind/smb": "1.0.7",
+ "icewind/streams": "0.4"
}
}
diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock
index 7bfb48a2c0d..fea8b05e2b2 100644
--- a/apps/files_external/3rdparty/composer.lock
+++ b/apps/files_external/3rdparty/composer.lock
@@ -4,25 +4,25 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "669663944c7232473a1c51a6d160319d",
- "content-hash": "7612ced4391f6287fb3e50534500d217",
+ "hash": "1eea7879a98792c704df2d7c86d37577",
+ "content-hash": "aeb32fd12aaab76f3c8873dd81f5775b",
"packages": [
{
"name": "icewind/smb",
- "version": "v1.0.5",
+ "version": "v1.0.7",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "acb94a0a85290d653cd64c883175b855ada5022f"
+ "reference": "b9364a984e9667416406c6f21c1bc5ac7ad86aa1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/acb94a0a85290d653cd64c883175b855ada5022f",
- "reference": "acb94a0a85290d653cd64c883175b855ada5022f",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/b9364a984e9667416406c6f21c1bc5ac7ad86aa1",
+ "reference": "b9364a984e9667416406c6f21c1bc5ac7ad86aa1",
"shasum": ""
},
"require": {
- "icewind/streams": "0.2.*",
+ "icewind/streams": ">=0.2.0",
"php": ">=5.3"
},
"require-dev": {
@@ -47,27 +47,28 @@
}
],
"description": "php wrapper for smbclient and libsmbclient-php",
- "time": "2016-01-20 13:12:36"
+ "time": "2016-03-17 12:48:14"
},
{
"name": "icewind/streams",
- "version": "0.2",
+ "version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/Streams.git",
- "reference": "5aae45f2ddd3d1a6e2a496dd5d1e7857bfeb605a"
+ "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/5aae45f2ddd3d1a6e2a496dd5d1e7857bfeb605a",
- "reference": "5aae45f2ddd3d1a6e2a496dd5d1e7857bfeb605a",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/9ca40274645a967ecc3408b0ca2e6255ead1d1d3",
+ "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
- "satooshi/php-coveralls": "dev-master"
+ "phpunit/phpunit": "^4.8",
+ "satooshi/php-coveralls": "v1.0.0"
},
"type": "library",
"autoload": {
@@ -87,7 +88,7 @@
}
],
"description": "A set of generic stream wrappers",
- "time": "2014-07-30 23:46:15"
+ "time": "2016-03-17 12:32:25"
}
],
"packages-dev": [],
diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php
index 5e1469e8307..ff6ecfb822f 100644
--- a/apps/files_external/3rdparty/composer/ClassLoader.php
+++ b/apps/files_external/3rdparty/composer/ClassLoader.php
@@ -13,9 +13,7 @@
namespace Composer\Autoload;
/**
- * ClassLoader implements a PSR-0 class loader
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
@@ -39,6 +37,8 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see http://www.php-fig.org/psr/psr-0/
+ * @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
@@ -147,7 +147,7 @@ class ClassLoader
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-0 base directories
+ * @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
diff --git a/apps/files_external/3rdparty/composer/autoload_classmap.php b/apps/files_external/3rdparty/composer/autoload_classmap.php
index 5b0f2511e12..c77d5df1906 100644
--- a/apps/files_external/3rdparty/composer/autoload_classmap.php
+++ b/apps/files_external/3rdparty/composer/autoload_classmap.php
@@ -52,12 +52,27 @@ return array(
'Icewind\\SMB\\TimeZoneProvider' => $vendorDir . '/icewind/smb/src/TimeZoneProvider.php',
'Icewind\\Streams\\CallbackWrapper' => $vendorDir . '/icewind/streams/src/CallbackWrapper.php',
'Icewind\\Streams\\Directory' => $vendorDir . '/icewind/streams/src/Directory.php',
+ 'Icewind\\Streams\\DirectoryFilter' => $vendorDir . '/icewind/streams/src/DirectoryFilter.php',
+ 'Icewind\\Streams\\DirectoryWrapper' => $vendorDir . '/icewind/streams/src/DirectoryWrapper.php',
'Icewind\\Streams\\File' => $vendorDir . '/icewind/streams/src/File.php',
'Icewind\\Streams\\IteratorDirectory' => $vendorDir . '/icewind/streams/src/IteratorDirectory.php',
'Icewind\\Streams\\NullWrapper' => $vendorDir . '/icewind/streams/src/NullWrapper.php',
+ 'Icewind\\Streams\\Path' => $vendorDir . '/icewind/streams/src/Path.php',
+ 'Icewind\\Streams\\RetryWrapper' => $vendorDir . '/icewind/streams/src/RetryWrapper.php',
+ 'Icewind\\Streams\\SeekableWrapper' => $vendorDir . '/icewind/streams/src/SeekableWrapper.php',
'Icewind\\Streams\\Tests\\CallbackWrapper' => $vendorDir . '/icewind/streams/tests/CallbackWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryFilter' => $vendorDir . '/icewind/streams/tests/DirectoryFilter.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapper' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapperDummy' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php',
+ 'Icewind\\Streams\\Tests\\DirectoryWrapperNull' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php',
'Icewind\\Streams\\Tests\\IteratorDirectory' => $vendorDir . '/icewind/streams/tests/IteratorDirectory.php',
'Icewind\\Streams\\Tests\\NullWrapper' => $vendorDir . '/icewind/streams/tests/NullWrapper.php',
+ 'Icewind\\Streams\\Tests\\PartialWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\RetryWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php',
+ 'Icewind\\Streams\\Tests\\SeekableWrapper' => $vendorDir . '/icewind/streams/tests/SeekableWrapper.php',
+ 'Icewind\\Streams\\Tests\\UrlCallBack' => $vendorDir . '/icewind/streams/tests/UrlCallBack.php',
'Icewind\\Streams\\Tests\\Wrapper' => $vendorDir . '/icewind/streams/tests/Wrapper.php',
+ 'Icewind\\Streams\\Url' => $vendorDir . '/icewind/streams/src/Url.php',
+ 'Icewind\\Streams\\UrlCallback' => $vendorDir . '/icewind/streams/src/UrlCallBack.php',
'Icewind\\Streams\\Wrapper' => $vendorDir . '/icewind/streams/src/Wrapper.php',
);
diff --git a/apps/files_external/3rdparty/composer/autoload_real.php b/apps/files_external/3rdparty/composer/autoload_real.php
index 9e8b3b558e5..6f27fffb9da 100644
--- a/apps/files_external/3rdparty/composer/autoload_real.php
+++ b/apps/files_external/3rdparty/composer/autoload_real.php
@@ -23,16 +23,6 @@ class ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3', 'loadClassLoader'));
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
@@ -44,8 +34,3 @@ class ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3
return $loader;
}
}
-
-function composerRequire98fe9b281934250b3a93f69a5ce843b3($file)
-{
- require $file;
-}
diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json
index 6e0b5d0d8f9..a09d496cc2c 100644
--- a/apps/files_external/3rdparty/composer/installed.json
+++ b/apps/files_external/3rdparty/composer/installed.json
@@ -1,26 +1,27 @@
[
{
"name": "icewind/streams",
- "version": "0.2",
- "version_normalized": "0.2.0.0",
+ "version": "0.4.0",
+ "version_normalized": "0.4.0.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/Streams.git",
- "reference": "5aae45f2ddd3d1a6e2a496dd5d1e7857bfeb605a"
+ "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/5aae45f2ddd3d1a6e2a496dd5d1e7857bfeb605a",
- "reference": "5aae45f2ddd3d1a6e2a496dd5d1e7857bfeb605a",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/9ca40274645a967ecc3408b0ca2e6255ead1d1d3",
+ "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
- "satooshi/php-coveralls": "dev-master"
+ "phpunit/phpunit": "^4.8",
+ "satooshi/php-coveralls": "v1.0.0"
},
- "time": "2014-07-30 23:46:15",
+ "time": "2016-03-17 12:32:25",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -43,28 +44,28 @@
},
{
"name": "icewind/smb",
- "version": "v1.0.5",
- "version_normalized": "1.0.5.0",
+ "version": "v1.0.7",
+ "version_normalized": "1.0.7.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "acb94a0a85290d653cd64c883175b855ada5022f"
+ "reference": "b9364a984e9667416406c6f21c1bc5ac7ad86aa1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/acb94a0a85290d653cd64c883175b855ada5022f",
- "reference": "acb94a0a85290d653cd64c883175b855ada5022f",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/b9364a984e9667416406c6f21c1bc5ac7ad86aa1",
+ "reference": "b9364a984e9667416406c6f21c1bc5ac7ad86aa1",
"shasum": ""
},
"require": {
- "icewind/streams": "0.2.*",
+ "icewind/streams": ">=0.2.0",
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "^4.8",
"satooshi/php-coveralls": "v1.0.0"
},
- "time": "2016-01-20 13:12:36",
+ "time": "2016-03-17 12:48:14",
"type": "library",
"installation-source": "source",
"autoload": {
diff --git a/apps/files_external/3rdparty/icewind/smb/README.md b/apps/files_external/3rdparty/icewind/smb/README.md
index a0864717b09..32f3c650f87 100644
--- a/apps/files_external/3rdparty/icewind/smb/README.md
+++ b/apps/files_external/3rdparty/icewind/smb/README.md
@@ -75,7 +75,7 @@ $share = $server->getShare('test');
$content = $share->dir('test');
foreach ($content as $info) {
- echo $name->getName() . "\n";
+ echo $info->getName() . "\n";
echo "\tsize :" . $info->getSize() . "\n";
}
```
diff --git a/apps/files_external/3rdparty/icewind/smb/composer.json b/apps/files_external/3rdparty/icewind/smb/composer.json
index 2e1fd35f7a6..4ac8b27e725 100644
--- a/apps/files_external/3rdparty/icewind/smb/composer.json
+++ b/apps/files_external/3rdparty/icewind/smb/composer.json
@@ -10,7 +10,7 @@
],
"require" : {
"php": ">=5.3",
- "icewind/streams": "0.2.*"
+ "icewind/streams": ">=0.2.0"
},
"require-dev": {
"satooshi/php-coveralls" : "v1.0.0",
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NativeStream.php b/apps/files_external/3rdparty/icewind/smb/src/NativeStream.php
index 07bd2f1e797..8ffa8836924 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/NativeStream.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/NativeStream.php
@@ -7,6 +7,7 @@
namespace Icewind\SMB;
+use Icewind\SMB\Exception\Exception;
use Icewind\SMB\Exception\InvalidRequestException;
use Icewind\Streams\File;
@@ -89,7 +90,11 @@ class NativeStream implements File {
}
public function stream_stat() {
- return $this->state->fstat($this->handle);
+ try {
+ return $this->state->fstat($this->handle);
+ } catch (Exception $e) {
+ return false;
+ }
}
public function stream_tell() {
diff --git a/apps/files_external/3rdparty/icewind/streams/.travis.yml b/apps/files_external/3rdparty/icewind/streams/.travis.yml
index dfa52767dda..d2e1afaad67 100644
--- a/apps/files_external/3rdparty/icewind/streams/.travis.yml
+++ b/apps/files_external/3rdparty/icewind/streams/.travis.yml
@@ -1,13 +1,14 @@
language: php
php:
- - 5.3
- 5.4
- 5.5
+ - 5.6
+ - 7.0
- hhvm
matrix:
- allow_failures:
- - php: hhvm # due to facebook/hhvm#3321
+ allow_failures:
+ - php: hhvm # due to facebook/hhvm#3321
env:
global:
diff --git a/apps/files_external/3rdparty/icewind/streams/LICENCE b/apps/files_external/3rdparty/icewind/streams/LICENCE
new file mode 100644
index 00000000000..a194b9117b8
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/LICENCE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Robin Appelman
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/apps/files_external/3rdparty/icewind/streams/README.md b/apps/files_external/3rdparty/icewind/streams/README.md
index 54f6d19a560..ca13db28e44 100644
--- a/apps/files_external/3rdparty/icewind/streams/README.md
+++ b/apps/files_external/3rdparty/icewind/streams/README.md
@@ -2,6 +2,7 @@
[![Build Status](https://travis-ci.org/icewind1991/Streams.svg?branch=master)](https://travis-ci.org/icewind1991/Streams)
[![Coverage Status](https://img.shields.io/coveralls/icewind1991/Streams.svg)](https://coveralls.io/r/icewind1991/Streams?branch=master)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/icewind1991/Streams/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/icewind1991/Streams/?branch=master)
Generic stream wrappers for php.
diff --git a/apps/files_external/3rdparty/icewind/streams/composer.json b/apps/files_external/3rdparty/icewind/streams/composer.json
index 86d3c834258..f2f3e0fc255 100644
--- a/apps/files_external/3rdparty/icewind/streams/composer.json
+++ b/apps/files_external/3rdparty/icewind/streams/composer.json
@@ -12,7 +12,8 @@
"php": ">=5.3"
},
"require-dev" : {
- "satooshi/php-coveralls": "dev-master"
+ "satooshi/php-coveralls": "v1.0.0",
+ "phpunit/phpunit": "^4.8"
},
"autoload" : {
"psr-4": {
diff --git a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
index fd99aa6ebe8..c5847b95fdb 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php
@@ -13,10 +13,11 @@ namespace Icewind\Streams;
* The following options should be passed in the context when opening the stream
* [
* 'callback' => [
- * 'source' => resource
- * 'read' => function($count){} (optional)
- * 'write' => function($data){} (optional)
- * 'close' => function(){} (optional)
+ * 'source' => resource
+ * 'read' => function($count){} (optional)
+ * 'write' => function($data){} (optional)
+ * 'close' => function(){} (optional)
+ * 'readdir' => function(){} (optional)
* ]
* ]
*
@@ -39,54 +40,56 @@ class CallbackWrapper extends Wrapper {
protected $closeCallback;
/**
+ * @var callable
+ */
+ protected $readDirCallBack;
+
+ /**
* Wraps a stream with the provided callbacks
*
* @param resource $source
* @param callable $read (optional)
* @param callable $write (optional)
* @param callable $close (optional)
+ * @param callable $readDir (optional)
* @return resource
*
* @throws \BadMethodCallException
*/
- public static function wrap($source, $read = null, $write = null, $close = null) {
+ public static function wrap($source, $read = null, $write = null, $close = null, $readDir = null) {
$context = stream_context_create(array(
'callback' => array(
'source' => $source,
'read' => $read,
'write' => $write,
- 'close' => $close
+ 'close' => $close,
+ 'readDir' => $readDir
)
));
- stream_wrapper_register('callback', '\Icewind\Streams\CallbackWrapper');
- try {
- $wrapped = fopen('callback://', 'r+', false, $context);
- } catch (\BadMethodCallException $e) {
- stream_wrapper_unregister('callback');
- throw $e;
- }
- stream_wrapper_unregister('callback');
- return $wrapped;
+ return Wrapper::wrapSource($source, $context, 'callback', '\Icewind\Streams\CallbackWrapper');
}
- public function stream_open($path, $mode, $options, &$opened_path) {
+ protected function open() {
$context = $this->loadContext('callback');
- if (isset($context['read']) and is_callable($context['read'])) {
- $this->readCallback = $context['read'];
- }
- if (isset($context['write']) and is_callable($context['write'])) {
- $this->writeCallback = $context['write'];
- }
- if (isset($context['close']) and is_callable($context['close'])) {
- $this->closeCallback = $context['close'];
- }
+ $this->readCallback = $context['read'];
+ $this->writeCallback = $context['write'];
+ $this->closeCallback = $context['close'];
+ $this->readDirCallBack = $context['readDir'];
return true;
}
+ public function dir_opendir($path, $options) {
+ return $this->open();
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ return $this->open();
+ }
+
public function stream_read($count) {
$result = parent::stream_read($count);
- if ($this->readCallback) {
+ if (is_callable($this->readCallback)) {
call_user_func($this->readCallback, $count);
}
return $result;
@@ -94,7 +97,7 @@ class CallbackWrapper extends Wrapper {
public function stream_write($data) {
$result = parent::stream_write($data);
- if ($this->writeCallback) {
+ if (is_callable($this->writeCallback)) {
call_user_func($this->writeCallback, $data);
}
return $result;
@@ -102,9 +105,17 @@ class CallbackWrapper extends Wrapper {
public function stream_close() {
$result = parent::stream_close();
- if ($this->closeCallback) {
+ if (is_callable($this->closeCallback)) {
call_user_func($this->closeCallback);
}
return $result;
}
+
+ public function dir_readdir() {
+ $result = parent::dir_readdir();
+ if (is_callable($this->readDirCallBack)) {
+ call_user_func($this->readDirCallBack);
+ }
+ return $result;
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php
new file mode 100644
index 00000000000..4b869699000
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * Wrapper allows filtering of directories
+ *
+ * The filter callback will be called for each entry in the folder
+ * when the callback return false the entry will be filtered out
+ */
+class DirectoryFilter extends DirectoryWrapper {
+ /**
+ * @var callable
+ */
+ private $filter;
+
+ /**
+ * @param string $path
+ * @param array $options
+ * @return bool
+ */
+ public function dir_opendir($path, $options) {
+ $context = $this->loadContext('filter');
+ $this->filter = $context['filter'];
+ return true;
+ }
+
+ /**
+ * @return string
+ */
+ public function dir_readdir() {
+ $file = readdir($this->source);
+ $filter = $this->filter;
+ // keep reading untill we have an accepted entry or we're at the end of the folder
+ while ($file !== false && $filter($file) === false) {
+ $file = readdir($this->source);
+ }
+ return $file;
+ }
+
+ /**
+ * @param resource $source
+ * @param callable $filter
+ * @return resource
+ */
+ public static function wrap($source, callable $filter) {
+ $options = array(
+ 'filter' => array(
+ 'source' => $source,
+ 'filter' => $filter
+ )
+ );
+ return self::wrapWithOptions($options, '\Icewind\Streams\DirectoryFilter');
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php
new file mode 100644
index 00000000000..63e4805a807
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+class DirectoryWrapper implements Directory {
+ /**
+ * @var resource
+ */
+ public $context;
+
+ /**
+ * @var resource
+ */
+ protected $source;
+
+ /**
+ * Load the source from the stream context and return the context options
+ *
+ * @param string $name
+ * @return array
+ * @throws \Exception
+ */
+ protected function loadContext($name) {
+ $context = stream_context_get_options($this->context);
+ if (isset($context[$name])) {
+ $context = $context[$name];
+ } else {
+ throw new \BadMethodCallException('Invalid context, "' . $name . '" options not set');
+ }
+ if (isset($context['source']) and is_resource($context['source'])) {
+ $this->source = $context['source'];
+ } else {
+ throw new \BadMethodCallException('Invalid context, source not set');
+ }
+ return $context;
+ }
+
+ /**
+ * @param string $path
+ * @param array $options
+ * @return bool
+ */
+ public function dir_opendir($path, $options) {
+ $this->loadContext('dir');
+ return true;
+ }
+
+ /**
+ * @return string
+ */
+ public function dir_readdir() {
+ return readdir($this->source);
+ }
+
+ /**
+ * @return bool
+ */
+ public function dir_closedir() {
+ closedir($this->source);
+ return true;
+ }
+
+ /**
+ * @return bool
+ */
+ public function dir_rewinddir() {
+ rewinddir($this->source);
+ return true;
+ }
+
+ /**
+ * @param array $options the options for the context to wrap the stream with
+ * @param string $class
+ * @return resource
+ */
+ protected static function wrapWithOptions($options, $class) {
+ $context = stream_context_create($options);
+ stream_wrapper_register('dirwrapper', $class);
+ $wrapped = opendir('dirwrapper://', $context);
+ stream_wrapper_unregister('dirwrapper');
+ return $wrapped;
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/File.php b/apps/files_external/3rdparty/icewind/streams/src/File.php
index 6202ef4a4b4..252b7b8971f 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/File.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/File.php
@@ -21,7 +21,7 @@ interface File {
public function stream_open($path, $mode, $options, &$opened_path);
/**
- * @param string $offset
+ * @param int $offset
* @param int $whence
* @return bool
*/
diff --git a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php
index c4eac5d4ed3..6dfa42a8b68 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php
@@ -45,9 +45,9 @@ class IteratorDirectory implements Directory {
} else {
throw new \BadMethodCallException('Invalid context, "' . $name . '" options not set');
}
- if (isset($context['iterator']) and $context['iterator'] instanceof \Iterator) {
+ if (isset($context['iterator'])) {
$this->iterator = $context['iterator'];
- } else if (isset($context['array']) and is_array($context['array'])) {
+ } else if (isset($context['array'])) {
$this->iterator = new \ArrayIterator($context['array']);
} else {
throw new \BadMethodCallException('Invalid context, iterator or array not set');
diff --git a/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php
index 8cbaaa756d3..b6c71d98fc4 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php
@@ -24,19 +24,16 @@ class NullWrapper extends Wrapper {
'null' => array(
'source' => $source)
));
- stream_wrapper_register('null', '\Icewind\Streams\NullWrapper');
- try {
- $wrapped = fopen('null://', 'r+', false, $context);
- } catch (\BadMethodCallException $e) {
- stream_wrapper_unregister('null');
- throw $e;
- }
- stream_wrapper_unregister('null');
- return $wrapped;
+ return Wrapper::wrapSource($source, $context, 'null', '\Icewind\Streams\NullWrapper');
}
public function stream_open($path, $mode, $options, &$opened_path) {
$this->loadContext('null');
return true;
}
+
+ public function dir_opendir($path, $options) {
+ $this->loadContext('null');
+ return true;
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Path.php b/apps/files_external/3rdparty/icewind/streams/src/Path.php
new file mode 100644
index 00000000000..46d2156b69a
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/Path.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * A string-like object that automatically registers a stream wrapper when used and removes the stream wrapper when no longer used
+ *
+ * Can optionally pass context options to the stream wrapper
+ */
+class Path {
+
+ /**
+ * @var bool
+ */
+ protected $registered = false;
+
+ /**
+ * @var string
+ */
+ protected $protocol;
+
+ /**
+ * @var string
+ */
+ protected $class;
+
+ /**
+ * @var array
+ */
+ protected $contextOptions;
+
+ /**
+ * @param string $class
+ * @param array $contextOptions
+ */
+ public function __construct($class, $contextOptions = array()) {
+ $this->class = $class;
+ $this->contextOptions = $contextOptions;
+ }
+
+ public function getProtocol() {
+ if (!$this->protocol) {
+ $this->protocol = 'auto' . uniqid();
+ }
+ return $this->protocol;
+ }
+
+ public function wrapPath($path) {
+ return $this->getProtocol() . '://' . $path;
+ }
+
+ protected function register() {
+ if (!$this->registered) {
+ $this->appendDefaultContent($this->getProtocol(), $this->contextOptions);
+ stream_wrapper_register($this->getProtocol(), $this->class);
+ $this->registered = true;
+ }
+ }
+
+ protected function unregister() {
+ stream_wrapper_unregister($this->getProtocol());
+ $this->unsetDefaultContent($this->getProtocol());
+ $this->registered = false;
+ }
+
+ /**
+ * Add values to the default stream context
+ *
+ * @param string $key
+ * @param array $values
+ */
+ protected function appendDefaultContent($key, $values) {
+ $context = stream_context_get_default();
+ $defaults = stream_context_get_options($context);
+ $defaults[$key] = $values;
+ stream_context_set_default($defaults);
+ }
+
+ /**
+ * Remove values from the default stream context
+ *
+ * @param string $key
+ */
+ protected function unsetDefaultContent($key) {
+ $context = stream_context_get_default();
+ $defaults = stream_context_get_options($context);
+ unset($defaults[$key]);
+ stream_context_set_default($defaults);
+ }
+
+ public function __toString() {
+ $this->register();
+ return $this->protocol . '://';
+ }
+
+ public function __destruct() {
+ $this->unregister();
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php
new file mode 100644
index 00000000000..84b43f6bd02
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * Wrapper that retries reads/writes to remote streams that dont deliver/recieve all requested data at once
+ */
+class RetryWrapper extends Wrapper {
+
+ /**
+ * Wraps a stream with the provided callbacks
+ *
+ * @param resource $source
+ * @return resource
+ */
+ public static function wrap($source) {
+ $context = stream_context_create(array(
+ 'retry' => array(
+ 'source' => $source
+ )
+ ));
+ return Wrapper::wrapSource($source, $context, 'retry', '\Icewind\Streams\RetryWrapper');
+ }
+
+ protected function open() {
+ $this->loadContext('retry');
+ return true;
+ }
+
+ public function dir_opendir($path, $options) {
+ return false;
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ return $this->open();
+ }
+
+ public function stream_read($count) {
+ $result = parent::stream_read($count);
+
+ $bytesReceived = strlen($result);
+ while ($bytesReceived < $count && !$this->stream_eof()) {
+ $result .= parent::stream_read($count - $bytesReceived);
+ $bytesReceived = strlen($result);
+ }
+
+ return $result;
+ }
+
+ public function stream_write($data) {
+ $bytesToSend = strlen($data);
+ $result = parent::stream_write($data);
+
+ while ($result < $bytesToSend && !$this->stream_eof()) {
+ $dataLeft = substr($data, $result);
+ $result += parent::stream_write($dataLeft);
+ }
+
+ return $result;
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php
new file mode 100644
index 00000000000..d41fd73ec9c
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * Wrapper that provides callbacks for write, read and close
+ *
+ * The following options should be passed in the context when opening the stream
+ * [
+ * 'callback' => [
+ * 'source' => resource
+ * ]
+ * ]
+ *
+ * All callbacks are called after the operation is executed on the source stream
+ */
+class SeekableWrapper extends Wrapper {
+ /**
+ * @var resource
+ */
+ protected $cache;
+
+ /**
+ * Wraps a stream to make it seekable
+ *
+ * @param resource $source
+ * @return resource
+ *
+ * @throws \BadMethodCallException
+ */
+ public static function wrap($source) {
+ $context = stream_context_create(array(
+ 'callback' => array(
+ 'source' => $source
+ )
+ ));
+ return Wrapper::wrapSource($source, $context, 'callback', '\Icewind\Streams\SeekableWrapper');
+ }
+
+ public function dir_opendir($path, $options) {
+ return false;
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ $this->loadContext('callback');
+ $this->cache = fopen('php://temp', 'w+');
+ return true;
+ }
+
+ protected function readTill($position) {
+ $current = ftell($this->source);
+ if ($position > $current) {
+ $data = parent::stream_read($position - $current);
+ $cachePosition = ftell($this->cache);
+ fseek($this->cache, $current);
+ fwrite($this->cache, $data);
+ fseek($this->cache, $cachePosition);
+ }
+ }
+
+ public function stream_read($count) {
+ $current = ftell($this->cache);
+ $this->readTill($current + $count);
+ return fread($this->cache, $count);
+ }
+
+ public function stream_seek($offset, $whence = SEEK_SET) {
+ if ($whence === SEEK_SET) {
+ $target = $offset;
+ } else if ($whence === SEEK_CUR) {
+ $current = ftell($this->cache);
+ $target = $current + $offset;
+ } else {
+ return false;
+ }
+ $this->readTill($target);
+ return fseek($this->cache, $target) === 0;
+ }
+
+ public function stream_tell() {
+ return ftell($this->cache);
+ }
+
+ public function stream_eof() {
+ return parent::stream_eof() and (ftell($this->source) === ftell($this->cache));
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Url.php b/apps/files_external/3rdparty/icewind/streams/src/Url.php
new file mode 100644
index 00000000000..d6822608a33
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/Url.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * Interface for stream wrappers that implement url functions such as unlink, stat
+ */
+interface Url {
+ /**
+ * @param string $path
+ * @param array $options
+ * @return bool
+ */
+ public function dir_opendir($path, $options);
+
+ /**
+ * @param string $path
+ * @param string $mode
+ * @param int $options
+ * @param string &$opened_path
+ * @return bool
+ */
+ public function stream_open($path, $mode, $options, &$opened_path);
+
+ /**
+ * @param string $path
+ * @param int $mode
+ * @param int $options
+ * @return bool
+ */
+ public function mkdir($path, $mode, $options);
+
+ /**
+ * @param string $source
+ * @param string $target
+ * @return bool
+ */
+ public function rename($source, $target);
+
+ /**
+ * @param string $path
+ * @param int $options
+ * @return bool
+ */
+ public function rmdir($path, $options);
+
+ /**
+ * @param string
+ * @return bool
+ */
+ public function unlink($path);
+
+ /**
+ * @param string $path
+ * @param int $flags
+ * @return array
+ */
+ public function url_stat($path, $flags);
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/UrlCallBack.php b/apps/files_external/3rdparty/icewind/streams/src/UrlCallBack.php
new file mode 100644
index 00000000000..580bfc6ba22
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/streams/src/UrlCallBack.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\Streams;
+
+/**
+ * Wrapper that provides callbacks for url actions such as fopen, unlink, rename
+ *
+ * Usage:
+ *
+ * $path = UrlCallBack('/path/so/source', function(){
+ * echo 'fopen';
+ * }, function(){
+ * echo 'opendir';
+ * }, function(){
+ * echo 'mkdir';
+ * }, function(){
+ * echo 'rename';
+ * }, function(){
+ * echo 'rmdir';
+ * }, function(){
+ * echo 'unlink';
+ * }, function(){
+ * echo 'stat';
+ * });
+ *
+ * mkdir($path);
+ * ...
+ *
+ * All callbacks are called after the operation is executed on the source stream
+ */
+class UrlCallback extends Wrapper implements Url {
+
+ /**
+ * @param string $source
+ * @param callable $fopen
+ * @param callable $opendir
+ * @param callable $mkdir
+ * @param callable $rename
+ * @param callable $rmdir
+ * @param callable $unlink
+ * @param callable $stat
+ * @return \Icewind\Streams\Path
+ *
+ * @throws \BadMethodCallException
+ * @throws \Exception
+ */
+ public static function wrap($source, $fopen = null, $opendir = null, $mkdir = null, $rename = null, $rmdir = null,
+ $unlink = null, $stat = null) {
+ $options = array(
+ 'source' => $source,
+ 'fopen' => $fopen,
+ 'opendir' => $opendir,
+ 'mkdir' => $mkdir,
+ 'rename' => $rename,
+ 'rmdir' => $rmdir,
+ 'unlink' => $unlink,
+ 'stat' => $stat
+ );
+ return new Path('\Icewind\Streams\UrlCallBack', $options);
+ }
+
+ protected function loadContext($url) {
+ list($protocol) = explode('://', $url);
+ $options = stream_context_get_options($this->context);
+ return $options[$protocol];
+ }
+
+ protected function callCallBack($context, $callback) {
+ if (is_callable($context[$callback])) {
+ call_user_func($context[$callback]);
+ }
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ $context = $this->loadContext($path);
+ $this->callCallBack($context, 'fopen');
+ $this->setSourceStream(fopen($context['source'], $mode));
+ return true;
+ }
+
+ public function dir_opendir($path, $options) {
+ $context = $this->loadContext($path);
+ $this->callCallBack($context, 'opendir');
+ $this->setSourceStream(opendir($context['source']));
+ return true;
+ }
+
+ public function mkdir($path, $mode, $options) {
+ $context = $this->loadContext($path);
+ $this->callCallBack($context, 'mkdir');
+ return mkdir($context['source'], $mode, $options & STREAM_MKDIR_RECURSIVE);
+ }
+
+ public function rmdir($path, $options) {
+ $context = $this->loadContext($path);
+ $this->callCallBack($context, 'rmdir');
+ return rmdir($context['source']);
+ }
+
+ public function rename($source, $target) {
+ $context = $this->loadContext($source);
+ $this->callCallBack($context, 'rename');
+ list(, $target) = explode('://', $target);
+ return rename($context['source'], $target);
+ }
+
+ public function unlink($path) {
+ $context = $this->loadContext($path);
+ $this->callCallBack($context, 'unlink');
+ return unlink($context['source']);
+ }
+
+ public function url_stat($path, $flags) {
+ throw new \Exception('stat is not supported due to php bug 50526');
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
index 2e3a6e6cd88..53de2942ca9 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
@@ -12,7 +12,7 @@ namespace Icewind\Streams;
*
* This wrapper itself doesn't implement any functionality but is just a base class for other wrappers to extend
*/
-abstract class Wrapper implements File {
+abstract class Wrapper implements File, Directory {
/**
* @var resource
*/
@@ -25,6 +25,22 @@ abstract class Wrapper implements File {
*/
protected $source;
+ protected static function wrapSource($source, $context, $protocol, $class) {
+ try {
+ stream_wrapper_register($protocol, $class);
+ if (@rewinddir($source) === false) {
+ $wrapped = fopen($protocol . '://', 'r+', false, $context);
+ } else {
+ $wrapped = opendir($protocol . '://', $context);
+ }
+ } catch (\BadMethodCallException $e) {
+ stream_wrapper_unregister($protocol);
+ throw $e;
+ }
+ stream_wrapper_unregister($protocol);
+ return $wrapped;
+ }
+
/**
* Load the source from the stream context and return the context options
*
@@ -107,4 +123,17 @@ abstract class Wrapper implements File {
public function stream_close() {
return fclose($this->source);
}
+
+ public function dir_readdir() {
+ return readdir($this->source);
+ }
+
+ public function dir_closedir() {
+ closedir($this->source);
+ return true;
+ }
+
+ public function dir_rewinddir() {
+ return rewind($this->source);
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/streams/tests/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/tests/CallbackWrapper.php
deleted file mode 100644
index 229b629dcd9..00000000000
--- a/apps/files_external/3rdparty/icewind/streams/tests/CallbackWrapper.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Licensed under the MIT license:
- * http://opensource.org/licenses/MIT
- */
-
-namespace Icewind\Streams\Tests;
-
-class CallbackWrapper extends Wrapper {
-
- /**
- * @param resource $source
- * @param callable $read
- * @param callable $write
- * @param callable $close
- * @return resource
- */
- protected function wrapSource($source, $read = null, $write = null, $close = null) {
- return \Icewind\Streams\CallbackWrapper::wrap($source, $read, $write, $close);
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testWrapInvalidSource() {
- $this->wrapSource('foo');
- }
-
- public function testReadCallback() {
- $called = false;
- $callBack = function () use (&$called) {
- $called = true;
- };
-
- $source = fopen('php://temp', 'r+');
- fwrite($source, 'foobar');
- rewind($source);
-
- $wrapped = $this->wrapSource($source, $callBack);
- $this->assertEquals('foo', fread($wrapped, 3));
- $this->assertTrue($called);
- }
-
- public function testWriteCallback() {
- $lastData = '';
- $callBack = function ($data) use (&$lastData) {
- $lastData = $data;
- };
-
- $source = fopen('php://temp', 'r+');
-
- $wrapped = $this->wrapSource($source, null, $callBack);
- fwrite($wrapped, 'foobar');
- $this->assertEquals('foobar', $lastData);
- }
-
- public function testCloseCallback() {
- $called = false;
- $callBack = function () use (&$called) {
- $called = true;
- };
-
- $source = fopen('php://temp', 'r+');
- fwrite($source, 'foobar');
- rewind($source);
-
- $wrapped = $this->wrapSource($source, null, null, $callBack);
- fclose($wrapped);
- $this->assertTrue($called);
- }
-}
diff --git a/apps/files_external/3rdparty/icewind/streams/tests/IteratorDirectory.php b/apps/files_external/3rdparty/icewind/streams/tests/IteratorDirectory.php
deleted file mode 100644
index 0d990468368..00000000000
--- a/apps/files_external/3rdparty/icewind/streams/tests/IteratorDirectory.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-/**
- * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Licensed under the MIT license:
- * http://opensource.org/licenses/MIT
- */
-
-namespace Icewind\Streams\Tests;
-
-class IteratorDirectory extends \PHPUnit_Framework_TestCase {
-
- /**
- * @param \Iterator | array $source
- * @return resource
- */
- protected function wrapSource($source) {
- return \Icewind\Streams\IteratorDirectory::wrap($source);
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testNoContext() {
- $context = stream_context_create(array());
- stream_wrapper_register('iterator', '\Icewind\Streams\IteratorDirectory');
- try {
- opendir('iterator://', $context);
- stream_wrapper_unregister('iterator');
- } catch (\Exception $e) {
- stream_wrapper_unregister('iterator');
- throw $e;
- }
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testInvalidSource() {
- $context = stream_context_create(array(
- 'dir' => array(
- 'array' => 2
- )
- ));
- stream_wrapper_register('iterator', '\Icewind\Streams\IteratorDirectory');
- try {
- opendir('iterator://', $context);
- stream_wrapper_unregister('iterator');
- } catch (\Exception $e) {
- stream_wrapper_unregister('iterator');
- throw $e;
- }
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testWrapInvalidSource() {
- $this->wrapSource(2);
- }
-
- public function fileListProvider() {
- $longList = array_fill(0, 500, 'foo');
- return array(
- array(
- array(
- 'foo',
- 'bar',
- 'qwerty'
- )
- ),
- array(
- array(
- 'with spaces',
- 'under_scores',
- '日本語',
- 'character %$_',
- '.',
- '0',
- 'double "quotes"',
- "single 'quotes'"
- )
- ),
- array(
- array(
- 'single item'
- )
- ),
- array(
- $longList
- ),
- array(
- array()
- )
- );
- }
-
- protected function basicTest($fileList, $dh) {
- $result = array();
-
- while (($file = readdir($dh)) !== false) {
- $result[] = $file;
- }
-
- $this->assertEquals($fileList, $result);
-
- rewinddir($dh);
- if (count($fileList)) {
- $this->assertEquals($fileList[0], readdir($dh));
- } else {
- $this->assertFalse(readdir($dh));
- }
- }
-
- /**
- * @dataProvider fileListProvider
- */
- public function testBasicIterator($fileList) {
- $iterator = new \ArrayIterator($fileList);
- $dh = $this->wrapSource($iterator);
- $this->basicTest($fileList, $dh);
- }
-
- /**
- * @dataProvider fileListProvider
- */
- public function testBasicArray($fileList) {
- $dh = $this->wrapSource($fileList);
- $this->basicTest($fileList, $dh);
- }
-}
diff --git a/apps/files_external/3rdparty/icewind/streams/tests/NullWrapper.php b/apps/files_external/3rdparty/icewind/streams/tests/NullWrapper.php
deleted file mode 100644
index ba42b4dfea1..00000000000
--- a/apps/files_external/3rdparty/icewind/streams/tests/NullWrapper.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Licensed under the MIT license:
- * http://opensource.org/licenses/MIT
- */
-
-namespace Icewind\Streams\Tests;
-
-class NullWrapper extends Wrapper {
-
- /**
- * @param resource $source
- * @return resource
- */
- protected function wrapSource($source) {
- return \Icewind\Streams\NullWrapper::wrap($source);
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testNoContext() {
- stream_wrapper_register('null', '\Icewind\Streams\NullWrapper');
- $context = stream_context_create(array());
- try {
- fopen('null://', 'r+', false, $context);
- stream_wrapper_unregister('null');
- } catch (\Exception $e) {
- stream_wrapper_unregister('null');
- throw $e;
- }
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testNoSource() {
- stream_wrapper_register('null', '\Icewind\Streams\NullWrapper');
- $context = stream_context_create(array(
- 'null' => array(
- 'source' => 'bar'
- )
- ));
- try {
- fopen('null://', 'r+', false, $context);
- } catch (\Exception $e) {
- stream_wrapper_unregister('null');
- throw $e;
- }
- }
-
- /**
- * @expectedException \BadMethodCallException
- */
- public function testWrapInvalidSource() {
- $this->wrapSource('foo');
- }
-}
diff --git a/apps/files_external/3rdparty/icewind/streams/tests/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/tests/Wrapper.php
deleted file mode 100644
index 6bb644dd611..00000000000
--- a/apps/files_external/3rdparty/icewind/streams/tests/Wrapper.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Licensed under the MIT license:
- * http://opensource.org/licenses/MIT
- */
-
-namespace Icewind\Streams\Tests;
-
-abstract class Wrapper extends \PHPUnit_Framework_TestCase {
- /**
- * @param resource $source
- * @return resource
- */
- abstract protected function wrapSource($source);
-
- public function testRead() {
- $source = fopen('php://temp', 'r+');
- fwrite($source, 'foobar');
- rewind($source);
-
- $wrapped = $this->wrapSource($source);
- $this->assertEquals('foo', fread($wrapped, 3));
- $this->assertEquals('bar', fread($wrapped, 3));
- $this->assertEquals('', fread($wrapped, 3));
- }
-
- public function testWrite() {
- $source = fopen('php://temp', 'r+');
- rewind($source);
-
- $wrapped = $this->wrapSource($source);
-
- $this->assertEquals(6, fwrite($wrapped, 'foobar'));
- rewind($source);
- $this->assertEquals('foobar', stream_get_contents($source));
- }
-
- public function testClose() {
- $source = fopen('php://temp', 'r+');
- rewind($source);
-
- $wrapped = $this->wrapSource($source);
-
- fclose($wrapped);
- $this->assertFalse(is_resource($source));
- }
-
- public function testSeekTell() {
- $source = fopen('php://temp', 'r+');
- fwrite($source, 'foobar');
- rewind($source);
-
- $wrapped = $this->wrapSource($source);
-
- $this->assertEquals(0, ftell($wrapped));
-
- fseek($wrapped, 2);
- $this->assertEquals(2, ftell($source));
- $this->assertEquals(2, ftell($wrapped));
-
- fseek($wrapped, 2, SEEK_CUR);
- $this->assertEquals(4, ftell($source));
- $this->assertEquals(4, ftell($wrapped));
-
- fseek($wrapped, -1, SEEK_END);
- $this->assertEquals(5, ftell($source));
- $this->assertEquals(5, ftell($wrapped));
- }
-
- public function testStat() {
- $source = fopen(__FILE__, 'r+');
- $wrapped = $this->wrapSource($source);
- $this->assertEquals(stat(__FILE__), fstat($wrapped));
- }
-
- public function testTruncate() {
- if (version_compare(phpversion(), '5.4.0', '<')) {
- $this->markTestSkipped('php <5.4 doesn\'t support truncate for stream wrappers');
- }
- $source = fopen('php://temp', 'r+');
- fwrite($source, 'foobar');
- rewind($source);
- $wrapped = $this->wrapSource($source);
-
- ftruncate($wrapped, 2);
- $this->assertEquals('fo', fread($wrapped, 10));
- }
-
- public function testLock() {
- $source = tmpfile();
- $wrapped = $this->wrapSource($source);
- if (!flock($wrapped, LOCK_EX)) {
- $this->fail('Unable to acquire lock');
- }
- }
-
- public function testStreamOptions() {
- $source = fopen('php://temp', 'r+');
- $wrapped = $this->wrapSource($source);
- stream_set_blocking($wrapped, 0);
- stream_set_timeout($wrapped, 1, 0);
- stream_set_write_buffer($wrapped, 0);
- }
-}
diff --git a/apps/files_external/3rdparty/icewind/streams/tests/bootstrap.php b/apps/files_external/3rdparty/icewind/streams/tests/bootstrap.php
deleted file mode 100644
index 2c17fd57feb..00000000000
--- a/apps/files_external/3rdparty/icewind/streams/tests/bootstrap.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/**
- * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Licensed under the MIT license:
- * http://opensource.org/licenses/MIT
- */
-
-date_default_timezone_set('UTC');
-require_once __DIR__ . '/../vendor/autoload.php';
diff --git a/apps/files_external/3rdparty/icewind/streams/tests/phpunit.xml b/apps/files_external/3rdparty/icewind/streams/tests/phpunit.xml
deleted file mode 100644
index e3d96352c43..00000000000
--- a/apps/files_external/3rdparty/icewind/streams/tests/phpunit.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<phpunit bootstrap="bootstrap.php">
- <testsuite name='Stream'>
- <directory suffix='.php'>./</directory>
- </testsuite>
-</phpunit>