<?php
// phpcs:ignoreFile -- this is a third-party lib
namespace CPlus\MaxMind\Db\Reader;

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'
		);
	}
}
