]> granicus.if.org Git - php/commitdiff
userland api for prompt/color commands
authorkrakjoe <joe.watkins@live.co.uk>
Sun, 24 Nov 2013 20:00:56 +0000 (20:00 +0000)
committerkrakjoe <joe.watkins@live.co.uk>
Sun, 24 Nov 2013 20:00:56 +0000 (20:00 +0000)
phpdbg.c

index b181d3e40729d5ceb77a29c475fe2ff701b9c4b2..d790f9d0f3f5e818bf8d0ded7537b7597b98cad9 100644 (file)
--- a/phpdbg.c
+++ b/phpdbg.c
@@ -75,6 +75,10 @@ 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);
 
+       REGISTER_LONG_CONSTANT("PHPDBG_COLOR_PROMPT", PHPDBG_COLOR_PROMPT, CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("PHPDBG_COLOR_NOTICE", PHPDBG_COLOR_NOTICE, CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("PHPDBG_COLOR_ERROR", PHPDBG_COLOR_ERROR, CONST_CS|CONST_PERSISTENT);
+       
        return SUCCESS;
 } /* }}} */
 
@@ -239,17 +243,63 @@ static PHP_FUNCTION(phpdbg_clear)
        zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_COND]);
 } /* }}} */
 
-       ZEND_BEGIN_ARG_INFO_EX(phpdbg_break_arginfo, 0, 0, 0)
+/* {{{ proto void phpdbg_color(integer element, string color) */
+static PHP_FUNCTION(phpdbg_color)
+{
+       long element;
+       char *color;
+       zend_uint color_len;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &element, &color, &color_len) == FAILURE) {
+               return;
+       }
+       
+       switch (element) {
+               case PHPDBG_COLOR_NOTICE:
+               case PHPDBG_COLOR_ERROR:
+               case PHPDBG_COLOR_PROMPT:
+                       phpdbg_set_color_ex(element, color, color_len TSRMLS_CC);
+               break;
+               
+               default: zend_error(E_ERROR, "phpdbg detected an incorrect color constant");
+       }
+} /* }}} */
+
+/* {{{ proto void phpdbg_prompt(string prompt) */
+static PHP_FUNCTION(phpdbg_prompt) 
+{
+       char *prompt;
+       zend_uint prompt_len;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &prompt, &prompt_len) == FAILURE) {
+               return;
+       }
+       
+       phpdbg_set_prompt(prompt TSRMLS_CC);
+} /* }}} */
+
+ZEND_BEGIN_ARG_INFO_EX(phpdbg_break_arginfo, 0, 0, 0)
        ZEND_ARG_INFO(0, type)
        ZEND_ARG_INFO(0, expression)
 ZEND_END_ARG_INFO()
 
-       ZEND_BEGIN_ARG_INFO_EX(phpdbg_clear_arginfo, 0, 0, 0)
+ZEND_BEGIN_ARG_INFO_EX(phpdbg_color_arginfo, 0, 0, 0)
+       ZEND_ARG_INFO(0, element)
+       ZEND_ARG_INFO(0, color)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(phpdbg_prompt_arginfo, 0, 0, 0)
+       ZEND_ARG_INFO(0, string)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(phpdbg_clear_arginfo, 0, 0, 0)
 ZEND_END_ARG_INFO()
 
-       zend_function_entry phpdbg_user_functions[] = {
-               PHP_FE(phpdbg_clear, phpdbg_clear_arginfo)
-                       PHP_FE(phpdbg_break, phpdbg_break_arginfo)
+zend_function_entry phpdbg_user_functions[] = {
+       PHP_FE(phpdbg_clear, phpdbg_clear_arginfo)
+       PHP_FE(phpdbg_break, phpdbg_break_arginfo)
+       PHP_FE(phpdbg_color, phpdbg_color_arginfo)
+       PHP_FE(phpdbg_prompt, phpdbg_prompt_arginfo)
 #ifdef  PHP_FE_END
        PHP_FE_END
 #else