diff options
author | Felipe Pena <felipensp@gmail.com> | 2013-11-24 15:00:30 -0200 |
---|---|---|
committer | Felipe Pena <felipensp@gmail.com> | 2013-11-24 15:00:30 -0200 |
commit | 8589c0af91b78c59c8a226ad7eec9af3262e8737 (patch) | |
tree | 25d0c66d3d8b869071f1634c06f3cf5ddedd9acb /phpdbg_set.c | |
parent | bfccc292a6acc5f4862c38faccaee9a5d124be85 (diff) | |
download | php-git-8589c0af91b78c59c8a226ad7eec9af3262e8737.tar.gz |
- Initial work on setting color to prompt
Diffstat (limited to 'phpdbg_set.c')
-rw-r--r-- | phpdbg_set.c | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/phpdbg_set.c b/phpdbg_set.c index e81b0f4cc5..650f2116c8 100644 --- a/phpdbg_set.c +++ b/phpdbg_set.c @@ -18,23 +18,40 @@ */ #include "phpdbg.h" +#include "phpdbg_cmd.h" #include "phpdbg_set.h" #include "phpdbg_utils.h" ZEND_EXTERN_MODULE_GLOBALS(phpdbg); -void phpdbg_set_prompt(const char *prompt TSRMLS_DC) /* {{{ */ +void phpdbg_set_prompt(const char *prompt, const char *color TSRMLS_DC) /* {{{ */ { + char *old_prompt_raw = PHPDBG_G(prompt_raw); + if (PHPDBG_G(prompt)) { efree(PHPDBG_G(prompt)); PHPDBG_G(prompt) = NULL; } + if (color) { + if (PHPDBG_G(prompt_color)) { + efree(PHPDBG_G(prompt_color)); + } + PHPDBG_G(prompt_color) = estrdup(color); + } + if (PHPDBG_G(flags) & PHPDBG_IS_COLOURED) { - spprintf(&PHPDBG_G(prompt), 0, "\033[1;64m%s\033[0m ", prompt); + spprintf(&PHPDBG_G(prompt), 0, "\033[%sm%s\033[0m ", + PHPDBG_G(prompt_color) ? PHPDBG_G(prompt_color) : "1;64", prompt); } else { spprintf(&PHPDBG_G(prompt), 0, "%s ", prompt); } + + PHPDBG_G(prompt_raw) = estrdup(prompt); + + if (old_prompt_raw) { + efree(old_prompt_raw); + } } /* }}} */ const char *phpdbg_get_prompt(TSRMLS_D) /* {{{ */ @@ -42,6 +59,23 @@ const char *phpdbg_get_prompt(TSRMLS_D) /* {{{ */ return PHPDBG_G(prompt); } /* }}} */ +void phpdbg_set_prompt_color(const char *color TSRMLS_DC) /* {{{ */ +{ + if (memcmp(color, PHPDBG_STRL("blue")) == 0) { + PHPDBG_G(prompt_color) = estrndup("blue", sizeof("blue")-1); + phpdbg_set_prompt(PHPDBG_G(prompt_raw), "0;34" TSRMLS_CC); + } else if (memcmp(color, PHPDBG_STRL("green")) == 0) { + PHPDBG_G(prompt_color) = estrndup("green", sizeof("green")-1); + phpdbg_set_prompt(PHPDBG_G(prompt_raw), "0;32" TSRMLS_CC); + } + +} /* }}} */ + +const char* phpdbg_get_prompt_color(TSRMLS_D) /* {{{ */ +{ + return PHPDBG_G(prompt_color); +} /* }}} */ + PHPDBG_SET(prompt) /* {{{ */ { switch (param->type) { @@ -50,7 +84,24 @@ PHPDBG_SET(prompt) /* {{{ */ break; case STR_PARAM: - phpdbg_set_prompt(param->str TSRMLS_CC); + phpdbg_set_prompt(param->str, NULL TSRMLS_CC); + break; + + phpdbg_default_switch_case(); + } + + return SUCCESS; +} /* }}} */ + +PHPDBG_SET(prompt_color) /* {{{ */ +{ + switch (param->type) { + case EMPTY_PARAM: + phpdbg_writeln(phpdbg_get_prompt_color(TSRMLS_C)); + break; + + case STR_PARAM: + phpdbg_set_prompt_color(param->str TSRMLS_CC); break; phpdbg_default_switch_case(); |