]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/streams.php
Wordpress 2.5.1
[autoinstalls/wordpress.git] / wp-includes / streams.php
index c69841ed6ba8d04c1ebafbface55c4b9eb79e382..595acd775b80df8dbacf757bb9eedccb0ea56b67 100644 (file)
@@ -1,5 +1,11 @@
 <?php
-/*
+/**
+ * PHP-Gettext External Library: StreamReader classes
+ *
+ * @package External
+ * @subpackage PHP-gettext
+ *
+ * @internal
    Copyright (c) 2003, 2005 Danilo Segan <danilo@kvota.net>.
 
    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.
@@ -28,17 +34,17 @@ class StreamReader {
   function read($bytes) {
     return false;
   }
-  
+
   // should return new position
   function seekto($position) {
     return false;
   }
-  
+
   // returns current position
   function currentpos() {
     return false;
   }
-  
+
   // returns length of entire stream (limit for seekto()s)
   function length() {
     return false;
@@ -105,9 +111,16 @@ class FileReader {
   function read($bytes) {
     if ($bytes) {
       fseek($this->_fd, $this->_pos);
-      $data = fread($this->_fd, $bytes);
+
+      // PHP 5.1.1 does not read more than 8192 bytes in one fread()
+      // the discussions at PHP Bugs suggest it's the intended behaviour
+      while ($bytes > 0) {
+        $chunk  = fread($this->_fd, $bytes);
+        $data  .= $chunk;
+        $bytes -= strlen($chunk);
+      }
       $this->_pos = ftell($this->_fd);
-      
+
       return $data;
     } else return '';
   }
@@ -132,7 +145,7 @@ class FileReader {
 
 }
 
-// Preloads entire file in memory first, then creates a StringReader 
+// Preloads entire file in memory first, then creates a StringReader
 // over it (it assumes knowledge of StringReader internals)
 class CachedFileReader extends StringReader {
   function CachedFileReader($filename) {