From 5ec2f9ac17f56aee266dc78b4bf657f2cf0910b1 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Fri, 7 Jul 2017 09:21:49 +0200 Subject: [PATCH] cpp: include psi.directory in cpp search path --- php_psi.h | 1 + src/cpp.c | 9 +++++++-- src/module.c | 8 ++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/php_psi.h b/php_psi.h index 631c2a2..71b554e 100644 --- a/php_psi.h +++ b/php_psi.h @@ -72,6 +72,7 @@ PHP_PSI_API zend_class_entry *psi_object_get_class_entry(); ZEND_BEGIN_MODULE_GLOBALS(psi) char *engine; char *directory; + char *search_path; struct psi_context *context; ZEND_END_MODULE_GLOBALS(psi); diff --git a/src/cpp.c b/src/cpp.c index c831b67..29f8541 100644 --- a/src/cpp.c +++ b/src/cpp.c @@ -32,6 +32,8 @@ #define PSI_CPP_PREDEF #include "php_psi_cpp.h" +#include "php_psi.h" + static void free_cpp_def(zval *p) { if (Z_TYPE_P(p) == IS_PTR) { @@ -449,7 +451,7 @@ bool psi_cpp_include(struct psi_cpp *cpp, const char *file, unsigned flags) } if (!(flags & PSI_CPP_INCLUDE_NEXT) || !cpp->search) { - cpp->search = &psi_cpp_search[0]; + cpp->search = PSI_G(search_path); } do { @@ -466,7 +468,10 @@ bool psi_cpp_include(struct psi_cpp *cpp, const char *file, unsigned flags) break; } } - cpp->search = sep + 1; + + if (sep) { + cpp->search = sep + 1; + } } while (sep); } diff --git a/src/module.c b/src/module.c index e7948d8..38eca72 100644 --- a/src/module.c +++ b/src/module.c @@ -35,6 +35,9 @@ #include "token.h" #include "parser.h" +#define PSI_CPP_SEARCH +#include "php_psi_cpp.h" + #if HAVE_LIBJIT # include "libjit.h" # ifndef HAVE_LIBFFI @@ -236,6 +239,9 @@ static PHP_MINIT_FUNCTION(psi) flags |= PSI_SILENT; } + PSI_G(search_path) = pemalloc(strlen(PSI_G(directory)) + strlen(psi_cpp_search) + 1 + 1, 1); + sprintf(PSI_G(search_path), "%s:%s", PSI_G(directory), psi_cpp_search); + PSI_G(context) = psi_context_init(NULL, ops, psi_error_wrapper, flags); psi_context_build(PSI_G(context), PSI_G(directory)); @@ -268,7 +274,9 @@ static PHP_MINFO_FUNCTION(psi) php_info_print_table_start(); php_info_print_table_header(2, "PSI Support", "enabled"); php_info_print_table_row(2, "Extension Version", PHP_PSI_VERSION); + php_info_print_table_row(2, "Search Path", PSI_G(search_path)); php_info_print_table_end(); + php_info_print_table_start(); php_info_print_table_header(3, "Used Library", "Compiled", "Linked"); php_info_print_table_row(3, "libffi", -- 2.30.2