aboutsummaryrefslogtreecommitdiff
path: root/libraries/phpvideotoolkit/adapters/ffmpeg-php/php-reader/src/Magic.php
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/phpvideotoolkit/adapters/ffmpeg-php/php-reader/src/Magic.php')
-rw-r--r--libraries/phpvideotoolkit/adapters/ffmpeg-php/php-reader/src/Magic.php177
1 files changed, 0 insertions, 177 deletions
diff --git a/libraries/phpvideotoolkit/adapters/ffmpeg-php/php-reader/src/Magic.php b/libraries/phpvideotoolkit/adapters/ffmpeg-php/php-reader/src/Magic.php
deleted file mode 100644
index ab5b81d..0000000
--- a/libraries/phpvideotoolkit/adapters/ffmpeg-php/php-reader/src/Magic.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-/**
- * PHP Reader Library
- *
- * Copyright (c) 2006-2008 The PHP Reader Project Workgroup. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * - Neither the name of the project workgroup nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * 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.
- *
- * @package php-reader
- * @copyright Copyright (c) 2006-2008 PHP Reader Project Workgroup
- * @license http://code.google.com/p/php-reader/wiki/License New BSD License
- * @version $Id: Magic.php 73 2008-04-12 19:07:31Z svollbehr $
- */
-
-/**#@+ @ignore */
-require_once("Reader.php");
-/**#@-*/
-
-/**
- * This class is used to classify the given file using some magic bytes
- * characteristic to a particular file type. The classification information can
- * be a MIME type or just text describing the file.
- *
- * This method is slower than determining the type by file suffix but on the
- * other hand reduces the risk of fail positives during the test.
- *
- * The magic file consists of ASCII characters defining the magic numbers for
- * different file types. Each row has 4 to 5 columns, empty and commented lines
- * (those starting with a hash character) are ignored. Columns are described
- * below.
- *
- * o <b>1</b> -- byte number to begin checking from. ">" indicates a dependency
- * upon the previous non-">" line
- * o <b>2</b> -- type of data to match. Can be one of following
- * - <i>byte</i> (single character)
- * - <i>short</i> (machine-order 16-bit integer)
- * - <i>long</i> (machine-order 32-bit integer)
- * - <i>string</i> (arbitrary-length string)
- * - <i>date</i> (long integer date (seconds since Unix epoch/1970))
- * - <i>beshort</i> (big-endian 16-bit integer)
- * - <i>belong</i> (big-endian 32-bit integer)
- * - <i>bedate</i> (big-endian 32-bit integer date)
- * - <i>leshort</i> (little-endian 16-bit integer)
- * - <i>lelong</i> (little-endian 32-bit integer)
- * - <i>ledate</i> (little-endian 32-bit integer date)
- * o <b>3</b> -- contents of data to match
- * o <b>4</b> -- file description/MIME type if matched
- * o <b>5</b> -- optional MIME encoding if matched and if above was a MIME type
- *
- * @package php-reader
- * @author Sven Vollbehr <svollbehr@gmail.com>
- * @copyright Copyright (c) 2006-2008 PHP Reader Project Workgroup
- * @license http://code.google.com/p/php-reader/wiki/License New BSD License
- * @version $Rev: 73 $
- */
-final class Magic
-{
- /** @var string */
- private $_magic;
-
- /**
- * Reads the magic information from given magic file.
- *
- * @param string $filename The path to the magic file.
- */
- public function __construct($filename)
- {
- $reader = new Reader($filename);
- $this->_magic = $reader->read($reader->getSize());
- }
-
- /**
- * Returns the recognized MIME type/description of the given file. The type
- * is determined by the content using magic bytes characteristic for the
- * particular file type.
- *
- * If the type could not be found, the function returns the default value, or
- * <var>false</var>.
- *
- * @param string $filename The file path whose type to determine.
- * @param string $default The default value.
- * @return string|false
- */
- public function getType($filename, $default = false)
- {
- $reader = new Reader($filename);
-
- $parentOffset = 0;
- foreach (preg_split("/^/m", $this->_magic) as $line) {
- $chunks = array();
- if (!preg_match("/^(?P<Dependant>>?)(?P<Byte>\d+)\s+(?P<MatchType>\S+)" .
- "\s+(?P<MatchData>\S+)(?:\s+(?P<MIMEType>[a-z]+\/[a-z-" .
- "0-9]+)?(?:\s+(?P<Description>.+))?)?$/", $line, $chunks))
- continue;
-
- if ($chunks["Dependant"]) {
- $reader->setOffset($parentOffset);
- $reader->skip($chunks["Byte"]);
- } else
- $reader->setOffset($parentOffset = $chunks["Byte"]);
-
- $matchType = strtolower($chunks["MatchType"]);
- $matchData = preg_replace
- (array("/\\\\ /", "/\\\\\\\\/", "/\\\\([0-7]{1,3})/e",
- "/\\\\x([0-9A-Fa-f]{1,2})/e", "/0x([0-9A-Fa-f]+)/e"),
- array(" ", "\\\\", "pack(\"H*\", base_convert(\"$1\", 8, 16));",
- "pack(\"H*\", \"$1\");", "hexdec(\"$1\");"),
- $chunks["MatchData"]);
-
- switch ($matchType) {
- case "byte": // single character
- $data = $reader->readInt8();
- break;
- case "short": // machine-order 16-bit integer
- $data = $reader->readInt16();
- break;
- case "long": // machine-order 32-bit integer
- $data = $reader->readInt32();
- break;
- case "string": // arbitrary-length string
- $data = $reader->readString8(strlen($matchData));
- break;
- case "date": // long integer date (seconds since Unix epoch/1970)
- $data = $reader->readInt64BE();
- break;
- case "beshort": // big-endian 16-bit integer
- $data = $reader->readUInt16BE();
- break;
- case "belong": // big-endian 32-bit integer
- case "bedate": // big-endian 32-bit integer date
- $data = $reader->readUInt32BE();
- break;
- case "leshort": // little-endian 16-bit integer
- $data = $reader->readUInt16LE();
- break;
- case "lelong": // little-endian 32-bit integer
- case "ledate": // little-endian 32-bit integer date
- $data = $reader->readUInt32LE();
- break;
- default:
- $data = null;
- break;
- }
-
- if (strcmp($data, $matchData) == 0) {
- if (!empty($chunks["MIMEType"]))
- return $chunks["MIMEType"];
- if (!empty($chunks["Description"]))
- return $chunks["Description"];
- }
- }
- return $default;
- }
-}