mirror of
https://github.com/php/php-src.git
synced 2025-08-18 23:18:56 +02:00
make api function and format structure for color management
This commit is contained in:
parent
bb134a4059
commit
c85f247eac
3 changed files with 60 additions and 18 deletions
|
@ -89,7 +89,8 @@ struct _phpdbg_command_t {
|
|||
typedef struct {
|
||||
long num;
|
||||
zend_execute_data *execute_data;
|
||||
} phpdbg_frame_t; /* }}} */
|
||||
} phpdbg_frame_t;
|
||||
/* }}} */
|
||||
|
||||
/*
|
||||
* Workflow:
|
||||
|
|
|
@ -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;
|
||||
} /* }}} */
|
||||
|
|
|
@ -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__)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue