From: krakjoe Date: Sun, 24 Nov 2013 17:50:22 +0000 (+0000) Subject: make api function and format structure for color management X-Git-Tag: php-5.6.0alpha1~110^2~86 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c85f247eacccec99d531109732bb3ba757806ecc;p=php make api function and format structure for color management --- diff --git a/phpdbg_cmd.h b/phpdbg_cmd.h index dc3899302d..57ec73fff5 100644 --- a/phpdbg_cmd.h +++ b/phpdbg_cmd.h @@ -89,7 +89,8 @@ struct _phpdbg_command_t { typedef struct { long num; zend_execute_data *execute_data; -} phpdbg_frame_t; /* }}} */ +} phpdbg_frame_t; +/* }}} */ /* * Workflow: diff --git a/phpdbg_utils.c b/phpdbg_utils.c index 1d015ecf8f..12e39a99fa 100644 --- a/phpdbg_utils.c +++ b/phpdbg_utils.c @@ -32,7 +32,18 @@ ZEND_EXTERN_MODULE_GLOBALS(phpdbg); -int phpdbg_is_numeric(const char *str) /* {{{ */ +/* {{{ color structures */ +const static phpdbg_color_t colors[] = { + PHPDBG_COLOR_D("white", "0:0"), + PHPDBG_COLOR_D("red", "0:31"), + PHPDBG_COLOR_D("green", "0:32"), + PHPDBG_COLOR_D("blue", "0;34"), + PHPDBG_COLOR_D("purple", "0;35"), + PHPDBG_COLOR_D("cyan", "0;36"), + PHPDBG_COLOR_END +}; /* }}} */ + +PHPDBG_API int phpdbg_is_numeric(const char *str) /* {{{ */ { if (!str) return 0; @@ -46,7 +57,7 @@ int phpdbg_is_numeric(const char *str) /* {{{ */ return 0; } /* }}} */ -int phpdbg_is_empty(const char *str) /* {{{ */ +PHPDBG_API int phpdbg_is_empty(const char *str) /* {{{ */ { if (!str) return 1; @@ -60,12 +71,12 @@ int phpdbg_is_empty(const char *str) /* {{{ */ return 1; } /* }}} */ -int phpdbg_is_addr(const char *str) /* {{{ */ +PHPDBG_API int phpdbg_is_addr(const char *str) /* {{{ */ { return str[0] && str[1] && memcmp(str, "0x", 2) == 0; } /* }}} */ -int phpdbg_is_class_method(const char *str, size_t len, char **class, char **method) /* {{{ */ +PHPDBG_API int phpdbg_is_class_method(const char *str, size_t len, char **class, char **method) /* {{{ */ { char *sep = NULL; @@ -91,7 +102,7 @@ int phpdbg_is_class_method(const char *str, size_t len, char **class, char **met return 1; } /* }}} */ -char *phpdbg_resolve_path(const char *path TSRMLS_DC) /* {{{ */ +PHPDBG_API char *phpdbg_resolve_path(const char *path TSRMLS_DC) /* {{{ */ { char resolved_name[MAXPATHLEN]; @@ -102,7 +113,7 @@ char *phpdbg_resolve_path(const char *path TSRMLS_DC) /* {{{ */ return estrdup(resolved_name); } /* }}} */ -const char *phpdbg_current_file(TSRMLS_D) /* {{{ */ +PHPDBG_API const char *phpdbg_current_file(TSRMLS_D) /* {{{ */ { const char *file = zend_get_executed_filename(TSRMLS_C); @@ -113,7 +124,7 @@ const char *phpdbg_current_file(TSRMLS_D) /* {{{ */ return file; } /* }}} */ -char *phpdbg_trim(const char *str, size_t len, size_t *new_len) /* {{{ */ +PHPDBG_API char *phpdbg_trim(const char *str, size_t len, size_t *new_len) /* {{{ */ { const char *p = str; char *new = NULL; @@ -143,7 +154,7 @@ char *phpdbg_trim(const char *str, size_t len, size_t *new_len) /* {{{ */ } /* }}} */ -int phpdbg_print(int type TSRMLS_DC, FILE *fp, const char *format, ...) /* {{{ */ +PHPDBG_API int phpdbg_print(int type TSRMLS_DC, FILE *fp, const char *format, ...) /* {{{ */ { int rc = 0; char *buffer = NULL; @@ -206,3 +217,18 @@ int phpdbg_print(int type TSRMLS_DC, FILE *fp, const char *format, ...) /* {{{ * return rc; } /* }}} */ + +PHPDBG_API const phpdbg_color_t* phpdbg_get_color(const char *name, size_t name_length) /* {{{ */ +{ + const phpdbg_color_t *color = colors; + + while (color && color->name) { + if (name_length == color->name_length && + memcmp(name, color->name, name_length) == SUCCESS) { + return color; + } + ++color; + } + + return NULL; +} /* }}} */ diff --git a/phpdbg_utils.h b/phpdbg_utils.h index b014319041..07ff8712a4 100644 --- a/phpdbg_utils.h +++ b/phpdbg_utils.h @@ -20,16 +20,31 @@ #ifndef PHPDBG_UTILS_H #define PHPDBG_UTILS_H +/* {{{ color management */ +#define PHPDBG_COLOR_LEN 12 +#define PHPDBG_COLOR_D(color, code) \ + {color, sizeof(color), code} +#define PHPDBG_COLOR_END \ + {NULL, 0L, {0}} + +typedef struct _phpdbg_color_t { + char *name; + size_t name_length; + const char code[PHPDBG_COLOR_LEN]; +} phpdbg_color_t; + +PHPDBG_API const phpdbg_color_t* phpdbg_get_color(const char *name, size_t name_length); /* }}} */ + /** * Input scan functions */ -int phpdbg_is_numeric(const char*); -int phpdbg_is_empty(const char*); -int phpdbg_is_addr(const char*); -int phpdbg_is_class_method(const char*, size_t, char**, char**); -const char *phpdbg_current_file(TSRMLS_D); -char *phpdbg_resolve_path(const char* TSRMLS_DC); -char *phpdbg_trim(const char*, size_t, size_t*); +PHPDBG_API int phpdbg_is_numeric(const char*); +PHPDBG_API int phpdbg_is_empty(const char*); +PHPDBG_API int phpdbg_is_addr(const char*); +PHPDBG_API int phpdbg_is_class_method(const char*, size_t, char**, char**); +PHPDBG_API const char *phpdbg_current_file(TSRMLS_D); +PHPDBG_API char *phpdbg_resolve_path(const char* TSRMLS_DC); +PHPDBG_API char *phpdbg_trim(const char*, size_t, size_t*); /** * Error/notice/formatting helper @@ -43,9 +58,9 @@ enum { }; #ifdef ZTS -int phpdbg_print(int TSRMLS_DC, FILE*, const char*, ...) PHP_ATTRIBUTE_FORMAT(printf, 4, 5); +PHPDBG_API int phpdbg_print(int TSRMLS_DC, FILE*, const char*, ...) PHP_ATTRIBUTE_FORMAT(printf, 4, 5); #else -int phpdbg_print(int TSRMLS_DC, FILE*, const char*, ...) PHP_ATTRIBUTE_FORMAT(printf, 3, 4); +PHPDBG_API int phpdbg_print(int TSRMLS_DC, FILE*, const char*, ...) PHP_ATTRIBUTE_FORMAT(printf, 3, 4); #endif #define phpdbg_error(fmt, ...) phpdbg_print(P_ERROR TSRMLS_CC, PHPDBG_G(io)[PHPDBG_STDOUT], fmt, ##__VA_ARGS__)