summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrakjoe <joe.watkins@live.co.uk>2013-11-24 17:50:22 +0000
committerkrakjoe <joe.watkins@live.co.uk>2013-11-24 17:50:22 +0000
commitc85f247eacccec99d531109732bb3ba757806ecc (patch)
treea3bfdd34b34c550f1d312868817fef90f40ab3dc
parentbb134a40593b9b9556ff4db9c697bc3b6fc68806 (diff)
downloadphp-git-c85f247eacccec99d531109732bb3ba757806ecc.tar.gz
make api function and format structure for color management
-rw-r--r--phpdbg_cmd.h3
-rw-r--r--phpdbg_utils.c42
-rw-r--r--phpdbg_utils.h33
3 files changed, 60 insertions, 18 deletions
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__)