]> granicus.if.org Git - php/commitdiff
include registered functions in help for register command
authorkrakjoe <joe.watkins@live.co.uk>
Tue, 19 Nov 2013 14:28:57 +0000 (14:28 +0000)
committerkrakjoe <joe.watkins@live.co.uk>
Tue, 19 Nov 2013 14:28:57 +0000 (14:28 +0000)
phpdbg.c
phpdbg_cmd.c
phpdbg_help.c
phpdbg_prompt.c

index e7f34036104d98e912a5cb596a4f2ae3bb11132e..c8a39957cda8ce73877c7acc82cdd1da1139cd2c 100644 (file)
--- a/phpdbg.c
+++ b/phpdbg.c
@@ -60,15 +60,11 @@ static PHP_MINIT_FUNCTION(phpdbg) /* {{{ */
     REGISTER_LONG_CONSTANT("PHPDBG_LINENO", NUMERIC_PARAM, CONST_CS|CONST_PERSISTENT);
     REGISTER_LONG_CONSTANT("PHPDBG_FUNC",    STR_PARAM, CONST_CS|CONST_PERSISTENT);
 
-       php_output_startup();
-       
     return SUCCESS;
 } /* }}} */
 
 static PHP_MSHUTDOWN_FUNCTION(phpdbg)
 {
-       php_output_shutdown();
-       
        return SUCCESS;
 }
 
index ca026cf7debe24af0f4a04947238dc7e14d210c7..e192c2b953e3d5030f27ddc445f773b1b25dba16 100644 (file)
@@ -198,9 +198,7 @@ int phpdbg_do_cmd(const phpdbg_command_t *command, char *cmd_line, size_t cmd_le
        while (command && command->name && command->handler) {
                if ((command->name_len == expr_len && memcmp(cmd, command->name, expr_len) == 0)
                        || (expr_len == 1 && command->alias && command->alias == cmd_line[0])) {
-                       
                        phpdbg_param_t param;
-                       
                        phpdbg_parse_param(
                                expr,
                                (cmd_len - expr_len) ? (((cmd_len - expr_len) - sizeof(" "))+1) : 0,
index 1f2246a8a99a77e87f85dde511ae21e04c663409..9aa37310e922bf606fc18e201f0873c50dd1283d 100644 (file)
@@ -420,6 +420,20 @@ PHPDBG_HELP(register) /* {{{ */
     phpdbg_writeln("\tWill register the scandir function for use in phpdbg");
        phpdbg_writeln(EMPTY);
     phpdbg_writeln("Note: argument will be passed as a string to the function and the return printed to the console");
+    if (zend_hash_num_elements(&PHPDBG_G(registered))) {
+               HashPosition position;
+               char *name = NULL;
+               zend_uint name_len = 0;
+               
+               phpdbg_notice("Registered Functions (%d)", zend_hash_num_elements(&PHPDBG_G(registered)));
+               for (zend_hash_internal_pointer_reset_ex(&PHPDBG_G(registered), &position);
+                       zend_hash_get_current_key_ex(&PHPDBG_G(registered), &name, &name_len, NULL, 1, &position) == HASH_KEY_IS_STRING;
+                       zend_hash_move_forward_ex(&PHPDBG_G(registered), &position)) {
+                       phpdbg_writeln("|-------> %s", name);
+                       efree(name);
+               }
+    }
+    
     phpdbg_help_footer();
     return SUCCESS;
 } /* }}} */
index 1cbc7db3a00a93d1f1e7ba37a05628f61066c3c9..9a12454e7cf1b4fdc2565ce2b577b824ac17aa83 100644 (file)
@@ -681,10 +681,10 @@ static PHPDBG_COMMAND(register) /* {{{ */
                        char *lcname = zend_str_tolower_dup(param->str, param->len);
                        size_t lcname_len = strlen(lcname);
 
-                       if (!zend_hash_exists(&PHPDBG_G(registered), lcname, lcname_len)) {
+                       if (!zend_hash_exists(&PHPDBG_G(registered), lcname, lcname_len+1)) {
                                if (zend_hash_find(EG(function_table), lcname, lcname_len+1, (void**) &function) == SUCCESS) {
                                        zend_hash_update(
-                                               &PHPDBG_G(registered), lcname, lcname_len, (void*)&function, sizeof(zend_function), NULL);
+                                               &PHPDBG_G(registered), lcname, lcname_len+1, (void*)&function, sizeof(zend_function), NULL);
                                        function_add_ref(function);
 
                                        phpdbg_notice(
@@ -696,6 +696,8 @@ static PHPDBG_COMMAND(register) /* {{{ */
                                phpdbg_error(
                                        "The requested name (%s) is already in use", lcname);
                        }
+                       
+                       efree(lcname);
                } break;
 
                phpdbg_default_switch_case();
@@ -917,8 +919,8 @@ static inline int phpdbg_call_register(phpdbg_input_t *input TSRMLS_DC) /* {{{ *
        size_t cmd_len = input->length;
        const char *start = (const char*) input->start;
        size_t offset = strlen(cmd)+(sizeof(" ")-1);
-
-       if (zend_hash_exists(&PHPDBG_G(registered), cmd, strlen(cmd))) {
+       
+       if (zend_hash_exists(&PHPDBG_G(registered), cmd, strlen(cmd)+1)) {
                zval fname, *fretval, *farg = NULL;
                zend_fcall_info fci;
                zend_fcall_info_cache fcic;