Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:24077 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 50981 invoked by uid 1010); 10 Jun 2006 12:55:30 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 50966 invoked from network); 10 Jun 2006 12:55:30 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 Jun 2006 12:55:30 -0000 X-PHP-List-Original-Sender: sesser@php.net X-Host-Fingerprint: 81.169.145.179 natipslore.rzone.de Solaris 10 (beta) Received: from ([81.169.145.179:57175] helo=natipslore.rzone.de) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 6F/F3-30619-141CA844 for ; Sat, 10 Jun 2006 08:55:30 -0400 Received: from [192.168.1.77] (p508761A5.dip.t-dialin.net [80.135.97.165]) by post.webmailer.de (8.13.6/8.13.6) with ESMTP id k5ACtPUt014215 for ; Sat, 10 Jun 2006 14:55:25 +0200 (MEST) Message-ID: <448AC13C.6050201@php.net> Date: Sat, 10 Jun 2006 14:55:24 +0200 User-Agent: Thunderbird 1.5.0.4 (Windows/20060516) MIME-Version: 1.0 To: PHP internals X-Enigmail-Version: 0.94.0.0 Content-Type: multipart/mixed; boundary="------------040200040902070209050503" Subject: [RFC][PATCH]: hook for compile_string From: sesser@php.net (Stefan Esser) --------------040200040902070209050503 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Hello, I just wanted to hear your opinion about providing a hook for compile_string. We already have a hook called zend_compile_file and it would be very nice if we could also hook compile_string calls. Greetings, Stefan --------------040200040902070209050503 Content-Type: text/plain; name="zend_compile_string.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="zend_compile_string.patch" diff -Nura php-5.2/Zend/zend.c php-5.2-cshook/Zend/zend.c --- php-5.2/Zend/zend.c 2006-06-05 16:30:49.000000000 +0200 +++ php-5.2-cshook/Zend/zend.c 2006-06-10 14:51:08.000000000 +0200 @@ -595,6 +595,7 @@ zend_vspprintf = utility_functions->vspprintf_function; zend_getenv = utility_functions->getenv_function; + zend_compile_string = compile_string; zend_compile_file = compile_file; zend_execute = execute; zend_execute_internal = NULL; diff -Nura php-5.2/Zend/zend_compile.c php-5.2-cshook/Zend/zend_compile.c --- php-5.2/Zend/zend_compile.c 2006-06-07 12:30:53.000000000 +0200 +++ php-5.2-cshook/Zend/zend_compile.c 2006-06-10 14:50:12.000000000 +0200 @@ -31,6 +31,7 @@ #include "zend_multibyte.h" #endif /* ZEND_MULTIBYTE */ +ZEND_API zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC); ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC); diff -Nura php-5.2/Zend/zend_compile.h php-5.2-cshook/Zend/zend_compile.h --- php-5.2/Zend/zend_compile.h 2006-05-27 22:30:48.000000000 +0200 +++ php-5.2-cshook/Zend/zend_compile.h 2006-06-10 14:50:04.000000000 +0200 @@ -320,6 +320,7 @@ void shutdown_compiler(TSRMLS_D); void zend_init_compiler_data_structures(TSRMLS_D); +extern ZEND_API zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC); extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC); ZEND_API int lex_scan(zval *zendlval TSRMLS_DC); diff -Nura php-5.2/Zend/zend_execute_API.c php-5.2-cshook/Zend/zend_execute_API.c --- php-5.2/Zend/zend_execute_API.c 2006-06-05 16:30:49.000000000 +0200 +++ php-5.2-cshook/Zend/zend_execute_API.c 2006-06-10 14:52:17.000000000 +0200 @@ -1101,7 +1101,7 @@ original_handle_op_arrays = CG(handle_op_arrays); CG(handle_op_arrays) = 0; - new_op_array = compile_string(&pv, string_name TSRMLS_CC); + new_op_array = zend_compile_string(&pv, string_name TSRMLS_CC); CG(handle_op_arrays) = original_handle_op_arrays; if (new_op_array) { diff -Nura php-5.2/Zend/zend_vm_def.h php-5.2-cshook/Zend/zend_vm_def.h --- php-5.2/Zend/zend_vm_def.h 2006-06-08 12:30:48.000000000 +0200 +++ php-5.2-cshook/Zend/zend_vm_def.h 2006-06-10 14:52:25.000000000 +0200 @@ -2766,7 +2766,7 @@ case ZEND_EVAL: { char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC); + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); efree(eval_desc); } break; diff -Nura php-5.2/Zend/zend_vm_execute.h php-5.2-cshook/Zend/zend_vm_execute.h --- php-5.2/Zend/zend_vm_execute.h 2006-06-08 12:30:49.000000000 +0200 +++ php-5.2-cshook/Zend/zend_vm_execute.h 2006-06-10 14:52:12.000000000 +0200 @@ -1960,7 +1960,7 @@ case ZEND_EVAL: { char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC); + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); efree(eval_desc); } break; @@ -4460,7 +4460,7 @@ case ZEND_EVAL: { char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC); + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); efree(eval_desc); } break; @@ -7542,7 +7542,7 @@ case ZEND_EVAL: { char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC); + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); efree(eval_desc); } break; @@ -19764,7 +19764,7 @@ case ZEND_EVAL: { char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC); + new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC); efree(eval_desc); } break; --------------040200040902070209050503--