aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/3rdparty/icewind/streams/src/Wrapper.php')
-rw-r--r--apps/files_external/3rdparty/icewind/streams/src/Wrapper.php21
1 files changed, 20 insertions, 1 deletions
diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
index 03d0b202571..5b6348afe4f 100644
--- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
+++ b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php
@@ -44,7 +44,7 @@ abstract class Wrapper extends WrapperHandler implements File, Directory {
public function stream_seek($offset, $whence = SEEK_SET) {
$result = fseek($this->source, $offset, $whence);
- return $result == 0 ? true : false;
+ return $result == 0;
}
public function stream_tell() {
@@ -109,4 +109,23 @@ abstract class Wrapper extends WrapperHandler implements File, Directory {
public function dir_rewinddir() {
return rewind($this->source);
}
+
+ public function getSource() {
+ return $this->source;
+ }
+
+ /**
+ * Retrieves header/metadata from the source stream.
+ *
+ * This is equivalent to calling `stream_get_meta_data` on the source stream except nested stream wrappers are handled transparently
+ *
+ * @return array
+ */
+ public function getMetaData(): array {
+ $meta = stream_get_meta_data($this->source);
+ while (isset($meta['wrapper_data']) && $meta['wrapper_data'] instanceof Wrapper) {
+ $meta = $meta['wrapper_data']->getMetaData();
+ }
+ return $meta;
+ }
}