Re: [PATCH] use file_get_contents instead fread($fp, filesize($filename))

Monte Ohrt <[email protected]>
Newsgroups gmane.comp.php.smarty.devel
Message-ID <[email protected]>
This has come up before... the problem is that file_get_contents() was 
introduced in PHP 4.3.0. We can either wait until we consider 4.3.0 to 
be Smarty's lowest PHP version supported (when that will be?), or build 
an internal file_get_contents() function in the case it does not exist. 
I haven't benchmarked the latter, but I'm partial to waiting.


Antony Dovgal wrote:

>Hi!
>
>Small patch, which removes all fopen() - fread($fp, filesize($filename))
>- fclose() cases, replacing them with one file_get_contents() call.
>
>Moreover, this fixes problem with bug http://bugs.php.net/29023, which
>prevents Smarty from working properly.
>
>Regardless of the fact that this bug will be fixed (I hope), this
>fopen-fread-filesize-fclose mess can be safely replaced by one
>file_get_contents() calls.
>
>Please, review it.
>
>---
>WBR,
>Antony Dovgal aka tony2001
>[email protected] || [email protected]
>
>
>!DSPAM:40ead217207291919119506!
>  
>
>------------------------------------------------------------------------
>
>Index: Config_File.class.php
>===================================================================
>RCS file: /repository/smarty/libs/Config_File.class.php,v
>retrieving revision 1.71
>diff -u -r1.71 Config_File.class.php
>--- Config_File.class.php	17 Jun 2004 08:55:09 -0000	1.71
>+++ Config_File.class.php	6 Jul 2004 13:50:57 -0000
>@@ -234,14 +234,12 @@
>             $config_file = $file_name;
> 
>         ini_set('track_errors', true);
>-        $fp = @fopen($config_file, "r");
>-        if (!is_resource($fp)) {
>+        if (!is_readable($config_file)) {
>             $this->_trigger_error_msg("Could not open config file '$config_file'");
>             return false;
>         }
> 
>-        $contents = ($size = filesize($config_file)) ? fread($fp, $size) : '';
>-        fclose($fp);
>+        $contents = ($size = filesize($config_file)) ? file_get_contents($config_file) : '';
> 
>         $this->_config_data[$config_file] = $this->parse_contents($contents);
>         return true;
>Index: Smarty.class.php
>===================================================================
>RCS file: /repository/smarty/libs/Smarty.class.php,v
>retrieving revision 1.492
>diff -u -r1.492 Smarty.class.php
>--- Smarty.class.php	1 Jul 2004 15:48:40 -0000	1.492
>+++ Smarty.class.php	6 Jul 2004 13:50:57 -0000
>@@ -1705,9 +1705,8 @@
>      */
>     function _read_file($filename)
>     {
>-        if ( file_exists($filename) && ($fd = @fopen($filename, 'rb')) ) {
>-            $contents = ($size = filesize($filename)) ? fread($fd, $size) : '';
>-            fclose($fd);
>+        if ( is_readable($filename) ) {
>+            $contents = ($size = filesize($filename)) ? file_get_contents($filename) : '';
>             return $contents;
>         } else {
>             return false;
>
>  
>

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.