mirror of
https://github.com/php/php-src.git
synced 2024-09-24 11:27:28 +00:00
- Initial work on setting color to prompt
This commit is contained in:
parent
bfccc292a6
commit
8589c0af91
14
phpdbg.c
14
phpdbg.c
@ -38,6 +38,8 @@ void (*zend_execute_old)(zend_op_array *op_array TSRMLS_DC);
|
||||
static inline void php_phpdbg_globals_ctor(zend_phpdbg_globals *pg) /* {{{ */
|
||||
{
|
||||
pg->prompt = NULL;
|
||||
pg->prompt_raw = NULL;
|
||||
pg->prompt_color = NULL;
|
||||
pg->exec = NULL;
|
||||
pg->exec_len = 0;
|
||||
pg->ops = NULL;
|
||||
@ -154,6 +156,16 @@ static PHP_RSHUTDOWN_FUNCTION(phpdbg) /* {{{ */
|
||||
PHPDBG_G(prompt) = NULL;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(prompt_raw)) {
|
||||
efree(PHPDBG_G(prompt_raw));
|
||||
PHPDBG_G(prompt_raw) = NULL;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(prompt_color)) {
|
||||
efree(PHPDBG_G(prompt_color));
|
||||
PHPDBG_G(prompt_color) = NULL;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(oplog)) {
|
||||
fclose(
|
||||
PHPDBG_G(oplog));
|
||||
@ -687,7 +699,7 @@ phpdbg_main:
|
||||
PHPDBG_G(flags) = flags;
|
||||
|
||||
/* set default prompt */
|
||||
phpdbg_set_prompt(PROMPT TSRMLS_CC);
|
||||
phpdbg_set_prompt(PROMPT, "1;64" TSRMLS_CC);
|
||||
|
||||
zend_try {
|
||||
zend_activate_modules(TSRMLS_C);
|
||||
|
2
phpdbg.h
2
phpdbg.h
@ -132,6 +132,8 @@
|
||||
ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
|
||||
HashTable bp[PHPDBG_BREAK_TABLES]; /* break points */
|
||||
char *prompt; /* prompt */
|
||||
char *prompt_raw; /* prompt unmodified */
|
||||
char *prompt_color; /* prompt color */
|
||||
char *exec; /* file to execute */
|
||||
size_t exec_len; /* size of exec */
|
||||
zend_op_array *ops; /* op_array */
|
||||
|
57
phpdbg_set.c
57
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();
|
||||
|
13
phpdbg_set.h
13
phpdbg_set.h
@ -24,15 +24,20 @@
|
||||
|
||||
#define PHPDBG_SET(name) PHPDBG_COMMAND(set_##name)
|
||||
|
||||
void phpdbg_set_prompt(const char* TSRMLS_DC);
|
||||
const char* phpdbg_get_prompt(TSRMLS_D);
|
||||
void phpdbg_set_prompt(const char*, const char* TSRMLS_DC);
|
||||
const char *phpdbg_get_prompt(TSRMLS_D);
|
||||
|
||||
void phpdbg_set_prompt_color(const char* TSRMLS_DC);
|
||||
const char *phpdbg_get_prompt_color(TSRMLS_D);
|
||||
|
||||
PHPDBG_SET(prompt);
|
||||
PHPDBG_SET(prompt_color);
|
||||
PHPDBG_SET(oplog);
|
||||
|
||||
static const phpdbg_command_t phpdbg_set_commands[] = {
|
||||
PHPDBG_COMMAND_D_EX(prompt, "set prompt", 'p', set_prompt, NULL, 0),
|
||||
PHPDBG_COMMAND_D_EX(oplog, "set oplog output", 'O', set_oplog, NULL, 0),
|
||||
PHPDBG_COMMAND_D_EX(prompt, "set prompt", 'p', set_prompt, NULL, 0),
|
||||
PHPDBG_COMMAND_D_EX(prompt_color, "set prompt color", 'c', set_prompt_color, NULL, 0),
|
||||
PHPDBG_COMMAND_D_EX(oplog, "set oplog output", 'O', set_oplog, NULL, 0),
|
||||
PHPDBG_END_COMMAND
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user