X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fmodule.c;h=85dcfc938910959f721d34b659741c95b745f2b0;hb=refs%2Fheads%2Fmaster;hp=0edd74f365ca0c6c28c879cac13c1b10010d837e;hpb=a7ac1c0a3c855321f21682c127a4b707de33a303;p=m6w6%2Fext-psi diff --git a/src/module.c b/src/module.c index 0edd74f..85dcfc9 100644 --- a/src/module.c +++ b/src/module.c @@ -23,7 +23,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# include "php_config.h" +#endif #include "php.h" #include "php_ini.h" @@ -72,14 +76,12 @@ static void OnUpdateBlacklist(const char *str, void (*cb)(const char*, size_t)) } while (end); } -static void psi_blacklist_add_decl(const char *pattern, size_t len); static ZEND_INI_MH(OnUpdateBlacklistedDecls) { OnUpdateBlacklist(new_value->val, psi_blacklist_add_decl); return SUCCESS; } -static void psi_blacklist_add_var(const char *pattern, size_t len); static ZEND_INI_MH(OnUpdateBlacklistedVars) { OnUpdateBlacklist(new_value->val, psi_blacklist_add_var); @@ -117,6 +119,7 @@ PHP_INI_END(); static zend_object_handlers psi_object_handlers; static zend_class_entry *psi_class_entry; +zend_class_entry *psi_object_get_class_entry(); zend_class_entry *psi_object_get_class_entry() { return psi_class_entry; @@ -166,19 +169,18 @@ static PHP_FUNCTION(psi_dump) { php_stream *s; zval *r = NULL; - int fd = STDOUT_FILENO; + struct psi_dump dump = {.fun = (psi_dump_cb) php_stream_printf}; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "|r!", &r)) { return; } if (r) { php_stream_from_zval(s, r); - - if (SUCCESS != php_stream_cast(s, PHP_STREAM_AS_FD | PHP_STREAM_CAST_INTERNAL, (void **)&fd, 1)) { - RETURN_FALSE; - } + dump.ctx.hn = s; + } else { + dump.ctx.hn = php_stream_open_wrapper("php://output", "w", REPORT_ERRORS, NULL); } - psi_context_dump(PSI_G(context), fd); + psi_context_dump(&dump, PSI_G(context)); } ZEND_BEGIN_ARG_INFO_EX(ai_psi_validate, 0, 0, 1) @@ -285,6 +287,7 @@ static PHP_FUNCTION(psi_validate_string) psi_parser_input_free(&I); } +PHP_MINIT_FUNCTION(psi_debug); PHP_MINIT_FUNCTION(psi_cpp); PHP_MINIT_FUNCTION(psi_builtin); PHP_MINIT_FUNCTION(psi_context); @@ -306,6 +309,9 @@ static PHP_MINIT_FUNCTION(psi) psi_object_handlers.free_obj = psi_object_free; psi_object_handlers.clone_obj = NULL; + if (SUCCESS != PHP_MINIT(psi_debug)(type, module_number)) { + return FAILURE; + } if (SUCCESS != PHP_MINIT(psi_builtin)(type, module_number)) { return FAILURE; } @@ -322,11 +328,13 @@ static PHP_MINIT_FUNCTION(psi) PHP_MSHUTDOWN_FUNCTION(psi_cpp); PHP_MSHUTDOWN_FUNCTION(psi_builtin); PHP_MSHUTDOWN_FUNCTION(psi_context); +PHP_MSHUTDOWN_FUNCTION(psi_debug); static PHP_MSHUTDOWN_FUNCTION(psi) { PHP_MSHUTDOWN(psi_context)(type, module_number); PHP_MSHUTDOWN(psi_cpp)(type, module_number); PHP_MSHUTDOWN(psi_builtin)(type, module_number); + PHP_MSHUTDOWN(psi_debug)(type, module_number); UNREGISTER_INI_ENTRIES(); @@ -377,7 +385,7 @@ static void ptr_free(void *ptr) free(*(void **) ptr); } -static void psi_blacklist_add_decl(const char *pattern, size_t len) +void psi_blacklist_add_decl(const char *pattern, size_t len) { char *tmp = strndup(pattern, len); struct psi_plist **decls = &PSI_G(blacklist).decls; @@ -385,7 +393,7 @@ static void psi_blacklist_add_decl(const char *pattern, size_t len) *decls = psi_plist_add(*decls, &tmp); } -static void psi_blacklist_add_var(const char *pattern, size_t len) +void psi_blacklist_add_var(const char *pattern, size_t len) { char *tmp = strndup(pattern, len); struct psi_plist **vars = &PSI_G(blacklist).vars;