[ Index ]
 

Code source de WordPress 2.1.2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/wp-includes/ -> streams.php (source)

   1  <?php
   2  /*
   3     Copyright (c) 2003, 2005 Danilo Segan <danilo@kvota.net>.
   4  
   5     This file is part of PHP-gettext.
   6  
   7     PHP-gettext is free software; you can redistribute it and/or modify
   8     it under the terms of the GNU General Public License as published by
   9     the Free Software Foundation; either version 2 of the License, or
  10     (at your option) any later version.
  11  
  12     PHP-gettext is distributed in the hope that it will be useful,
  13     but WITHOUT ANY WARRANTY; without even the implied warranty of
  14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15     GNU General Public License for more details.
  16  
  17     You should have received a copy of the GNU General Public License
  18     along with PHP-gettext; if not, write to the Free Software
  19     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20  
  21  */
  22  
  23  
  24  // Simple class to wrap file streams, string streams, etc.
  25  // seek is essential, and it should be byte stream
  26  class StreamReader {
  27    // should return a string [FIXME: perhaps return array of bytes?]
  28    function read($bytes) {
  29      return false;
  30    }
  31    
  32    // should return new position
  33    function seekto($position) {
  34      return false;
  35    }
  36    
  37    // returns current position
  38    function currentpos() {
  39      return false;
  40    }
  41    
  42    // returns length of entire stream (limit for seekto()s)
  43    function length() {
  44      return false;
  45    }
  46  }
  47  
  48  class StringReader {
  49    var $_pos;
  50    var $_str;
  51  
  52    function StringReader($str='') {
  53      $this->_str = $str;
  54      $this->_pos = 0;
  55    }
  56  
  57    function read($bytes) {
  58      $data = substr($this->_str, $this->_pos, $bytes);
  59      $this->_pos += $bytes;
  60      if (strlen($this->_str)<$this->_pos)
  61        $this->_pos = strlen($this->_str);
  62  
  63      return $data;
  64    }
  65  
  66    function seekto($pos) {
  67      $this->_pos = $pos;
  68      if (strlen($this->_str)<$this->_pos)
  69        $this->_pos = strlen($this->_str);
  70      return $this->_pos;
  71    }
  72  
  73    function currentpos() {
  74      return $this->_pos;
  75    }
  76  
  77    function length() {
  78      return strlen($this->_str);
  79    }
  80  
  81  }
  82  
  83  
  84  class FileReader {
  85    var $_pos;
  86    var $_fd;
  87    var $_length;
  88  
  89    function FileReader($filename) {
  90      if (file_exists($filename)) {
  91  
  92        $this->_length=filesize($filename);
  93        $this->_pos = 0;
  94        $this->_fd = fopen($filename,'rb');
  95        if (!$this->_fd) {
  96      $this->error = 3; // Cannot read file, probably permissions
  97      return false;
  98        }
  99      } else {
 100        $this->error = 2; // File doesn't exist
 101        return false;
 102      }
 103    }
 104  
 105    function read($bytes) {
 106      if ($bytes) {
 107        fseek($this->_fd, $this->_pos);
 108  
 109        // PHP 5.1.1 does not read more than 8192 bytes in one fread()
 110        // the discussions at PHP Bugs suggest it's the intended behaviour
 111        while ($bytes > 0) {
 112          $chunk  = fread($this->_fd, $bytes);
 113          $data  .= $chunk;
 114          $bytes -= strlen($chunk);
 115        }
 116        $this->_pos = ftell($this->_fd);
 117        
 118        return $data;
 119      } else return '';
 120    }
 121  
 122    function seekto($pos) {
 123      fseek($this->_fd, $pos);
 124      $this->_pos = ftell($this->_fd);
 125      return $this->_pos;
 126    }
 127  
 128    function currentpos() {
 129      return $this->_pos;
 130    }
 131  
 132    function length() {
 133      return $this->_length;
 134    }
 135  
 136    function close() {
 137      fclose($this->_fd);
 138    }
 139  
 140  }
 141  
 142  // Preloads entire file in memory first, then creates a StringReader 
 143  // over it (it assumes knowledge of StringReader internals)
 144  class CachedFileReader extends StringReader {
 145    function CachedFileReader($filename) {
 146      if (file_exists($filename)) {
 147  
 148        $length=filesize($filename);
 149        $fd = fopen($filename,'rb');
 150  
 151        if (!$fd) {
 152      $this->error = 3; // Cannot read file, probably permissions
 153      return false;
 154        }
 155        $this->_str = fread($fd, $length);
 156        fclose($fd);
 157  
 158      } else {
 159        $this->error = 2; // File doesn't exist
 160        return false;
 161      }
 162    }
 163  }
 164  
 165  
 166  ?>


Généré le : Fri Mar 30 19:41:27 2007 par Balluche grâce à PHPXref 0.7