diff options
author | krakjoe <joe.watkins@live.co.uk> | 2013-11-24 19:34:18 +0000 |
---|---|---|
committer | krakjoe <joe.watkins@live.co.uk> | 2013-11-24 19:34:18 +0000 |
commit | ddcfa42f15217d8e8e21248cc5c7e1ee2007e7f6 (patch) | |
tree | 2bc89b90458ae52d810eb7ab597e7d200195cc37 /phpdbg_set.c | |
parent | c85f247eacccec99d531109732bb3ba757806ecc (diff) | |
download | php-git-ddcfa42f15217d8e8e21248cc5c7e1ee2007e7f6.tar.gz |
get good control over colors and prompt
Diffstat (limited to 'phpdbg_set.c')
-rw-r--r-- | phpdbg_set.c | 112 |
1 files changed, 38 insertions, 74 deletions
diff --git a/phpdbg_set.c b/phpdbg_set.c index 2cbb616777..0c3381e694 100644 --- a/phpdbg_set.c +++ b/phpdbg_set.c @@ -24,67 +24,6 @@ ZEND_EXTERN_MODULE_GLOBALS(phpdbg); -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[%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) /* {{{ */ -{ - return PHPDBG_G(prompt); -} /* }}} */ - -void phpdbg_set_prompt_color(const char *color TSRMLS_DC) /* {{{ */ -{ - static const char *colors[] = { - "blue", "0;34", - "green", "0;32", - "red", "0;31", - "cyan", "0;36", - "purple", "0;35", - NULL, NULL - }; - const char **p = colors; - - do { - if (memcmp(color, *p, strlen(*p)+1) == 0) { - PHPDBG_G(prompt_color) = estrdup(*p); - phpdbg_set_prompt(PHPDBG_G(prompt_raw), *(p+1) TSRMLS_CC); - return; - } - } while (++p && *(++p)); -} /* }}} */ - -const char* phpdbg_get_prompt_color(TSRMLS_D) /* {{{ */ -{ - return PHPDBG_G(prompt_color); -} /* }}} */ - PHPDBG_SET(prompt) /* {{{ */ { switch (param->type) { @@ -93,7 +32,7 @@ PHPDBG_SET(prompt) /* {{{ */ break; case STR_PARAM: - phpdbg_set_prompt(param->str, NULL TSRMLS_CC); + phpdbg_set_prompt(param->str TSRMLS_CC); break; phpdbg_default_switch_case(); @@ -102,20 +41,45 @@ PHPDBG_SET(prompt) /* {{{ */ return SUCCESS; } /* }}} */ -PHPDBG_SET(prompt_color) /* {{{ */ +PHPDBG_SET(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(); + if ((param->type == STR_PARAM) && (input->argc == 3)) { + const phpdbg_color_t *color = phpdbg_get_color( + input->argv[2]->string, input->argv[2]->length TSRMLS_CC); + int element = PHPDBG_COLOR_INVALID; + + if (color) { + if (phpdbg_argv_is(1, "prompt")) { + phpdbg_notice( + "setting prompt color to %s (%s)", color->name, color->code); + element = PHPDBG_COLOR_PROMPT; + if (PHPDBG_G(prompt)[1]) { + free(PHPDBG_G(prompt)[1]); + PHPDBG_G(prompt)[1]=NULL; + } + } else if (phpdbg_argv_is(1, "error")) { + phpdbg_notice( + "setting error color to %s (%s)", color->name, color->code); + element = PHPDBG_COLOR_ERROR; + + } else if (phpdbg_argv_is(1, "notice")) { + phpdbg_notice( + "setting notice color to %s (%s)", color->name, color->code); + element = PHPDBG_COLOR_NOTICE; + + } else goto usage; + + /* set color for element */ + phpdbg_set_color(element, color TSRMLS_CC); + } else { + phpdbg_error( + "Failed to find the requested color (%s)", input->argv[2]->string); + } + } else { +usage: + phpdbg_error( + "set color used incorrected: set color <prompt|error|notice> <color>"); } - return SUCCESS; } /* }}} */ |