]> granicus.if.org Git - php/commitdiff
.phpdbginit also possible in ini dirs
authorBob Weinand <bobwei9@hotmail.com>
Mon, 25 Nov 2013 12:19:01 +0000 (13:19 +0100)
committerBob Weinand <bobwei9@hotmail.com>
Mon, 25 Nov 2013 12:19:01 +0000 (13:19 +0100)
Changelog.md
phpdbg.h
phpdbg_prompt.c

index bbd9f29b30daaae7a6d5ebb83442d5466883814f..c12915b7023c55643d27d4e314138e59f878fdf7 100644 (file)
@@ -7,6 +7,7 @@ Version 0.2.0 2013-00-00
 1. Added "break delete <id>" command
 2. Added "break opcode <opcode>" command
 3. Added "set" command
+4. .phpdbginit now searched in (additional) ini dirs
 
 Version 0.1.0 2013-11-23
 ------------------------
index 7b8e0c0c4ba384a6cebbcd584b1ea6b5f8362a87..19cf0c463af68975985340e3a5c2f471ca119ffa 100644 (file)
--- a/phpdbg.h
+++ b/phpdbg.h
 
 /* {{{ strings */
 #define PHPDBG_ISSUES "http://github.com/krakjoe/phpdbg/issues"
-#define PHPDBG_VERSION "0.2.0-dev" /* }}} */
+#define PHPDBG_VERSION "0.2.0-dev"
+#define PHPDBG_INIT_FILENAME ".phpdbginit"
+/* }}} */
 
 /* {{{ output descriptors */
 #define PHPDBG_STDIN                   0
index b1e5aecf88a88e2827d30761467742778908d36a..e9b484f32f97a9631f842acf1f47014cbf54b03b 100644 (file)
@@ -66,21 +66,10 @@ const phpdbg_command_t phpdbg_prompt_commands[] = {
 
 ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
 
-void phpdbg_init(char *init_file, size_t init_file_len, zend_bool use_default TSRMLS_DC) /* {{{ */
-{
-       zend_bool init_default = 0;
+void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_init TSRMLS_DC) {
+       struct stat sb;
 
-       if (!init_file && use_default) {
-               struct stat sb;
-
-               if (VCWD_STAT(".phpdbginit", &sb) != -1) {
-                       init_file = ".phpdbginit";
-                       init_file_len = strlen(".phpdbginit");
-                       init_default = 1;
-               }
-       }
-
-       if (init_file) {
+       if (init_file && VCWD_STAT(init_file, &sb) != -1) {
                FILE *fp = fopen(init_file, "r");
                if (fp) {
                        int line = 1;
@@ -158,12 +147,32 @@ next_line:
                                "Failed to open %s for initialization", init_file);
                }
 
-               if (!init_default) {
+               if (free_init) {
                        free(init_file);
                }
        }
 } /* }}} */
 
+void phpdbg_init(char *init_file, size_t init_file_len, zend_bool use_default TSRMLS_DC) /* {{{ */
+{
+       if (!init_file && use_default) {
+               char *scan_dir = getenv("PHP_INI_SCAN_DIR");
+
+               phpdbg_try_file_init(ZEND_STRS(PHP_CONFIG_FILE_PATH "/" PHPDBG_INIT_FILENAME) - 1 , 0 TSRMLS_CC);
+
+               if (!scan_dir) {
+                       scan_dir = PHP_CONFIG_FILE_SCAN_DIR;
+               }
+               init_file = malloc(strlen(scan_dir) + sizeof(PHPDBG_INIT_FILENAME));
+               sprintf(init_file, "%s/%s", scan_dir, PHPDBG_INIT_FILENAME);
+               phpdbg_try_file_init(init_file, strlen(init_file), 1 TSRMLS_CC);
+
+               phpdbg_try_file_init(ZEND_STRS(PHPDBG_INIT_FILENAME) - 1, 0 TSRMLS_CC);
+       } else {
+               phpdbg_try_file_init(init_file, init_file_len, 1 TSRMLS_CC);
+       }
+}
+
 PHPDBG_COMMAND(exec) /* {{{ */
 {
        switch (param->type) {