cpp: include psi.directory in cpp search path
authorMichael Wallner <mike@php.net>
Fri, 7 Jul 2017 07:21:49 +0000 (09:21 +0200)
committerMichael Wallner <mike@php.net>
Fri, 7 Jul 2017 07:21:49 +0000 (09:21 +0200)
php_psi.h
src/cpp.c
src/module.c

index 631c2a2ec840161a65f7685aa13f55ac5fae7058..71b554e3937ca33ba61bc4d6bcbec02ec6069678 100644 (file)
--- 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);
 
index c831b67838171f7157a117e30862b91b10d702cc..29f8541afee2f04e3657e2e98bc08cf424651dc8 100644 (file)
--- 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);
        }
 
index e7948d8a0e9abec32534e7665797fa6109e65fdf..38eca72a9eb315e3d01b1db4858b0f80ad5efbae 100644 (file)
@@ -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",