]> git.ipfire.org Git - thirdparty/git.git/blame - ctype.c
Merge branch 'en/merge-recursive-directory-rename-fixes'
[thirdparty/git.git] / ctype.c
CommitLineData
4546738b
LT
1/*
2 * Sane locale-independent, ASCII ctype.
3 *
4 * No surprises, and works with signed and unsigned chars.
5 */
1a191a22 6#include "git-compat-util.h"
4546738b 7
c841aa8b
RS
8enum {
9 S = GIT_SPACE,
10 A = GIT_ALPHA,
11 D = GIT_DIGIT,
8cc32992 12 G = GIT_GLOB_SPECIAL, /* *, ?, [, \\ */
2f6c9760 13 R = GIT_REGEX_SPECIAL, /* $, (, ), +, ., ^, {, | */
1c149ab2
NTND
14 P = GIT_PATHSPEC_MAGIC, /* other non-alnum, except for ] and } */
15 X = GIT_CNTRL,
16 U = GIT_PUNCT,
17 Z = GIT_CNTRL | GIT_SPACE
c841aa8b 18};
4546738b 19
ca5ab7d1 20const unsigned char sane_ctype[256] = {
1c149ab2
NTND
21 X, X, X, X, X, X, X, X, X, Z, Z, X, X, Z, X, X, /* 0.. 15 */
22 X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, /* 16.. 31 */
2f6c9760
JH
23 S, P, P, P, R, P, P, P, R, R, G, R, P, P, R, P, /* 32.. 47 */
24 D, D, D, D, D, D, D, D, D, D, P, P, P, P, P, G, /* 48.. 63 */
25 P, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 64.. 79 */
1c149ab2 26 A, A, A, A, A, A, A, A, A, A, A, G, G, U, R, P, /* 80.. 95 */
2f6c9760 27 P, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 96..111 */
1c149ab2 28 A, A, A, A, A, A, A, A, A, A, A, R, R, U, P, X, /* 112..127 */
4546738b
LT
29 /* Nothing in the 128.. range */
30};
0f871cf5
JH
31
32/* For case-insensitive kwset */
189c860c 33const unsigned char tolower_trans_tbl[256] = {
0f871cf5
JH
34 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
35 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
36 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
37 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
38 ' ', '!', '"', '#', '$', '%', '&', 0x27,
39 '(', ')', '*', '+', ',', '-', '.', '/',
40 '0', '1', '2', '3', '4', '5', '6', '7',
41 '8', '9', ':', ';', '<', '=', '>', '?',
42 '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
43 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
44 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
45 'x', 'y', 'z', '[', 0x5c, ']', '^', '_',
46 '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
47 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
48 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
49 'x', 'y', 'z', '{', '|', '}', '~', 0x7f,
50 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
51 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
52 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
53 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
54 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
55 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
56 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
57 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
58 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
59 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
60 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
61 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
62 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
63 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
64 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
65 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
66};