eacc36a26b
No changes from the upstream version have been made, it is recommended by upstream to install these depdencies via composer - but the composer installation is bundled with a load of test files, shell scripts etc (and we don't use composer to manage 'production dependencies') so we have to do it manually.
29 lines
749 B
PHP
29 lines
749 B
PHP
<?php
|
|
|
|
namespace MaxMind\Db\Reader;
|
|
|
|
use MaxMind\Db\Reader\InvalidDatabaseException;
|
|
|
|
class Util
|
|
{
|
|
public static function read($stream, $offset, $numberOfBytes)
|
|
{
|
|
if ($numberOfBytes == 0) {
|
|
return '';
|
|
}
|
|
if (fseek($stream, $offset) == 0) {
|
|
$value = fread($stream, $numberOfBytes);
|
|
|
|
// We check that the number of bytes read is equal to the number
|
|
// asked for. We use ftell as getting the length of $value is
|
|
// much slower.
|
|
if (ftell($stream) - $offset === $numberOfBytes) {
|
|
return $value;
|
|
}
|
|
}
|
|
throw new InvalidDatabaseException(
|
|
"The MaxMind DB file contains bad data"
|
|
);
|
|
}
|
|
}
|