X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/7688c6ba71852cd89123b62b2d57683535e4702a..67f24b02807a1ff7e9d1a97453ed84c404c0af0f:/wp-includes/streams.php diff --git a/wp-includes/streams.php b/wp-includes/streams.php index 0612a5a3..60b617de 100644 --- a/wp-includes/streams.php +++ b/wp-includes/streams.php @@ -1,5 +1,11 @@ . This file is part of PHP-gettext. @@ -18,7 +24,7 @@ along with PHP-gettext; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ + */ // Simple class to wrap file streams, string streams, etc. @@ -52,21 +58,39 @@ class StringReader { function StringReader($str='') { $this->_str = $str; $this->_pos = 0; + // If string functions are overloaded, we need to use the mb versions + $this->is_overloaded = ((ini_get("mbstring.func_overload") & 2) != 0) && function_exists('mb_substr'); + } + + function _substr($string, $start, $length) { + if ($this->is_overloaded) { + return mb_substr($string,$start,$length,'ascii'); + } else { + return substr($string,$start,$length); + } + } + + function _strlen($string) { + if ($this->is_overloaded) { + return mb_strlen($string,'ascii'); + } else { + return strlen($string); + } } function read($bytes) { - $data = substr($this->_str, $this->_pos, $bytes); + $data = $this->_substr($this->_str, $this->_pos, $bytes); $this->_pos += $bytes; - if (strlen($this->_str)<$this->_pos) - $this->_pos = strlen($this->_str); + if ($this->_strlen($this->_str)<$this->_pos) + $this->_pos = $this->_strlen($this->_str); return $data; } function seekto($pos) { $this->_pos = $pos; - if (strlen($this->_str)<$this->_pos) - $this->_pos = strlen($this->_str); + if ($this->_strlen($this->_str)<$this->_pos) + $this->_pos = $this->_strlen($this->_str); return $this->_pos; } @@ -75,9 +99,8 @@ class StringReader { } function length() { - return strlen($this->_str); + return $this->_strlen($this->_str); } - } @@ -143,17 +166,19 @@ class FileReader { // over it (it assumes knowledge of StringReader internals) class CachedFileReader extends StringReader { function CachedFileReader($filename) { + parent::StringReader(); + if (file_exists($filename)) { $length=filesize($filename); $fd = fopen($filename,'rb'); if (!$fd) { - $this->error = 3; // Cannot read file, probably permissions - return false; + $this->error = 3; // Cannot read file, probably permissions + return false; } $this->_str = fread($fd, $length); - fclose($fd); + fclose($fd); } else { $this->error = 2; // File doesn't exist @@ -163,4 +188,4 @@ class CachedFileReader extends StringReader { } -?> \ No newline at end of file +?>