diff options
| author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2008-08-13 15:13:05 +0000 |
|---|---|---|
| committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2008-08-13 15:13:05 +0000 |
| commit | bfa3b629e0d67016ec83050c5db762479af40609 (patch) | |
| tree | 4c9ae204172d0fad3ae056ccc65ffe9ea91134d2 /wp-includes/streams.php | |
| parent | 7258ea2d7eeedb439607b72a1f74dee98e4b9d12 (diff) | |
Merge with WP revision 8635
git-svn-id: http://svn.automattic.com/wordpress-mu/branches/2.6@1421 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-includes/streams.php')
| -rw-r--r-- | wp-includes/streams.php | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/wp-includes/streams.php b/wp-includes/streams.php index 924394f..60b617d 100644 --- a/wp-includes/streams.php +++ b/wp-includes/streams.php @@ -58,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; } @@ -81,9 +99,8 @@ class StringReader { } function length() { - return strlen($this->_str); + return $this->_strlen($this->_str); } - } @@ -149,17 +166,18 @@ 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); - $this->_pos = 0; fclose($fd); } else { |
