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 631c2a2..71b554e 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 c831b67..29f8541 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 e7948d8..38eca72 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",