Re: More accurate compiled file names
| From: | Dmitry Koteroff | Date: | Sat, 29 May 2004 22:38:49 +0000 |
| Subject: | Re: More accurate compiled file names | ||
| References: | 1 | Groups: | php.smarty.dev |
| Request: | Send a blank email to php-smarty-dev+get-2327@lists.php.net to get a copy of this message | ||
Attachment.
--
Best regards,
Dmitry Koteroff.
DK> Hello.
DK> Smarty saves its compiled code to files with unreadable names
DK> (like %%23t2763%%sjhdjsdhjshgd.php). It makes too difficult to
DK> find fatal error in the template (for example, {$obj->spoon()},
DK> where spoon is non-existent method).
DK> Attached patch corrects this problem - it replaces "/" by "^" and
DK> saves the file to temporary location.
DK> Replacement code:
DK> $_filename = preg_replace("{[/\\\\]}s", "^", $_filename);
DK> $_filename = preg_replace("{[^a-z0-9~!_=.^-]}si", "_", $_filename);
DK> Don't you plan to insert this patch to production version?
--- Distrib.orig/libs/Smarty.class.php Wed Feb 18 03:00:58 2004 +++ Distrib/libs/Smarty.class.php Sun May 30 02:23:16 2004 @@ -1791,11 +1791,18 @@ if(isset($auto_source)) { - // make source name safe for filename - $_filename = urlencode(basename($auto_source)); - $_crc32 = crc32($auto_source) . $_compile_dir_sep; - // prepend %% to avoid name conflicts with - // with $params['auto_id'] names - $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32; - $_return .= $_crc32 . $_filename; + if (0) { + // make source name safe for filename + $_filename = urlencode(basename($auto_source)); + $_crc32 = crc32($auto_source) . $_compile_dir_sep; + // prepend %% to avoid name conflicts with + // with $params['auto_id'] names + $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32; + $_return .= $_crc32 . $_filename; + } else { + $_filename = $auto_source; + $_filename = preg_replace("{[/\\\\]}s", "^", $_filename); + $_filename = preg_replace("{[^a-z0-9~!_=.^-]}si", "_", $_filename); + $_return .= $_filename; + } }
--- Distrib.orig/libs/Smarty.class.php Wed Feb 18 03:00:58 2004 +++ Distrib/libs/Smarty.class.php Sun May 30 02:23:16 2004 @@ -1791,11 +1791,18 @@ if(isset($auto_source)) { - // make source name safe for filename - $_filename = urlencode(basename($auto_source)); - $_crc32 = crc32($auto_source) . $_compile_dir_sep; - // prepend %% to avoid name conflicts with - // with $params['auto_id'] names - $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32; - $_return .= $_crc32 . $_filename; + if (0) { + // make source name safe for filename + $_filename = urlencode(basename($auto_source)); + $_crc32 = crc32($auto_source) . $_compile_dir_sep; + // prepend %% to avoid name conflicts with + // with $params['auto_id'] names + $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32; + $_return .= $_crc32 . $_filename; + } else { + $_filename = $auto_source; + $_filename = preg_replace("{[/\\\\]}s", "^", $_filename); + $_filename = preg_replace("{[^a-z0-9~!_=.^-]}si", "_", $_filename); + $_return .= $_filename; + } }