diff options
Diffstat (limited to 'buildscripts/phing/classes/phing/util/ExtendedFileStream.php')
-rwxr-xr-x | buildscripts/phing/classes/phing/util/ExtendedFileStream.php | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/buildscripts/phing/classes/phing/util/ExtendedFileStream.php b/buildscripts/phing/classes/phing/util/ExtendedFileStream.php new file mode 100755 index 00000000..9c09b56f --- /dev/null +++ b/buildscripts/phing/classes/phing/util/ExtendedFileStream.php @@ -0,0 +1,129 @@ +<?php + + include_once 'phing/system/io/PhingFile.php'; + + /** + * $Id: f7e4641c758d5e781ad209d3eaf653a20404bf56 $ + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * and is licensed under the LGPL. For more information please see + * <http://phing.info>. + */ + + /** + * Extended file stream wrapper class which auto-creates directories + * + * @author Michiel Rook <mrook@php.net> + * @version $Id: f7e4641c758d5e781ad209d3eaf653a20404bf56 $ + * @package phing.util + */ + class ExtendedFileStream + { + private $fp = NULL; + + static function registerStream() + { + if (!in_array("efile", stream_get_wrappers())) + { + stream_wrapper_register("efile", "ExtendedFileStream"); + } + } + + static function unregisterStream() + { + stream_wrapper_unregister("efile"); + } + + private function createDirectories($path) + { + $f = new PhingFile($path); + if (!$f->exists()) { + $f->mkdirs(); + } + } + + function stream_open($path, $mode, $options, &$opened_path) + { + $filepath = substr($path, 8); + + $this->createDirectories(dirname($filepath)); + + $this->fp = fopen($filepath, $mode); + + return true; + } + + function stream_close() + { + fclose($this->fp); + $this->fp = NULL; + } + + function stream_read($count) + { + return fread($this->fp, $count); + } + + function stream_write($data) + { + return fwrite($this->fp, $data); + } + + function stream_eof() + { + return feof($this->fp); + } + + function stream_tell() + { + return ftell($this->fp); + } + + function stream_seek($offset, $whence) + { + return fseek($this->fp, $offset, $whence); + } + + function stream_flush() + { + return fflush($this->fp); + } + + function stream_stat() + { + return fstat($this->fp); + } + + function unlink($path) + { + return FALSE; + } + + function rename($path_from, $path_to) + { + return FALSE; + } + + function mkdir($path, $mode, $options) + { + return FALSE; + } + + function rmdir($path, $options) + { + return FALSE; + } + }; + |