ctype: support iscntrl, ispunct, isxdigit and isprint
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ca5ab7d1e8
commit
1c149ab2dd
13
ctype.c
13
ctype.c
@ -11,18 +11,21 @@ enum {
|
||||
D = GIT_DIGIT,
|
||||
G = GIT_GLOB_SPECIAL, /* *, ?, [, \\ */
|
||||
R = GIT_REGEX_SPECIAL, /* $, (, ), +, ., ^, {, | */
|
||||
P = GIT_PATHSPEC_MAGIC /* other non-alnum, except for ] and } */
|
||||
P = GIT_PATHSPEC_MAGIC, /* other non-alnum, except for ] and } */
|
||||
X = GIT_CNTRL,
|
||||
U = GIT_PUNCT,
|
||||
Z = GIT_CNTRL | GIT_SPACE
|
||||
};
|
||||
|
||||
const unsigned char sane_ctype[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, S, S, 0, 0, S, 0, 0, /* 0.. 15 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16.. 31 */
|
||||
X, X, X, X, X, X, X, X, X, Z, Z, X, X, Z, X, X, /* 0.. 15 */
|
||||
X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, /* 16.. 31 */
|
||||
S, P, P, P, R, P, P, P, R, R, G, R, P, P, R, P, /* 32.. 47 */
|
||||
D, D, D, D, D, D, D, D, D, D, P, P, P, P, P, G, /* 48.. 63 */
|
||||
P, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 64.. 79 */
|
||||
A, A, A, A, A, A, A, A, A, A, A, G, G, 0, R, P, /* 80.. 95 */
|
||||
A, A, A, A, A, A, A, A, A, A, A, G, G, U, R, P, /* 80.. 95 */
|
||||
P, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 96..111 */
|
||||
A, A, A, A, A, A, A, A, A, A, A, R, R, 0, P, 0, /* 112..127 */
|
||||
A, A, A, A, A, A, A, A, A, A, A, R, R, U, P, X, /* 112..127 */
|
||||
/* Nothing in the 128.. range */
|
||||
};
|
||||
|
||||
|
@ -470,6 +470,10 @@ extern const char tolower_trans_tbl[256];
|
||||
#undef isupper
|
||||
#undef tolower
|
||||
#undef toupper
|
||||
#undef iscntrl
|
||||
#undef ispunct
|
||||
#undef isxdigit
|
||||
#undef isprint
|
||||
extern const unsigned char sane_ctype[256];
|
||||
#define GIT_SPACE 0x01
|
||||
#define GIT_DIGIT 0x02
|
||||
@ -477,6 +481,8 @@ extern const unsigned char sane_ctype[256];
|
||||
#define GIT_GLOB_SPECIAL 0x08
|
||||
#define GIT_REGEX_SPECIAL 0x10
|
||||
#define GIT_PATHSPEC_MAGIC 0x20
|
||||
#define GIT_CNTRL 0x40
|
||||
#define GIT_PUNCT 0x80
|
||||
#define sane_istest(x,mask) ((sane_ctype[(unsigned char)(x)] & (mask)) != 0)
|
||||
#define isascii(x) (((x) & ~0x7f) == 0)
|
||||
#define isspace(x) sane_istest(x,GIT_SPACE)
|
||||
@ -487,6 +493,13 @@ extern const unsigned char sane_ctype[256];
|
||||
#define isupper(x) sane_iscase(x, 0)
|
||||
#define is_glob_special(x) sane_istest(x,GIT_GLOB_SPECIAL)
|
||||
#define is_regex_special(x) sane_istest(x,GIT_GLOB_SPECIAL | GIT_REGEX_SPECIAL)
|
||||
#define iscntrl(x) (sane_istest(x,GIT_CNTRL))
|
||||
#define ispunct(x) sane_istest(x, GIT_PUNCT | GIT_REGEX_SPECIAL | \
|
||||
GIT_GLOB_SPECIAL | GIT_PATHSPEC_MAGIC)
|
||||
#define isxdigit(x) (hexval_table[x] != -1)
|
||||
#define isprint(x) (sane_istest(x, GIT_ALPHA | GIT_DIGIT | GIT_SPACE | \
|
||||
GIT_PUNCT | GIT_REGEX_SPECIAL | GIT_GLOB_SPECIAL | \
|
||||
GIT_PATHSPEC_MAGIC))
|
||||
#define tolower(x) sane_case((unsigned char)(x), 0x20)
|
||||
#define toupper(x) sane_case((unsigned char)(x), 0)
|
||||
#define is_pathspec_magic(x) sane_istest(x,GIT_PATHSPEC_MAGIC)
|
||||
|
Loading…
Reference in New Issue
Block a user