blob: fc0225cebd1a4b43654772270826e06fd941a128 [file] [log] [blame]
Linus Torvalds45467382005-10-13 11:03:18 -07001/*
2 * Sane locale-independent, ASCII ctype.
3 *
4 * No surprises, and works with signed and unsigned chars.
5 */
Namhyung Kim1a191a22012-02-10 11:13:30 +09006#include "git-compat-util.h"
Linus Torvalds45467382005-10-13 11:03:18 -07007
René Scharfec841aa82009-01-17 16:50:29 +01008enum {
9 S = GIT_SPACE,
10 A = GIT_ALPHA,
11 D = GIT_DIGIT,
René Scharfe8cc32992009-01-17 16:50:34 +010012 G = GIT_GLOB_SPECIAL, /* *, ?, [, \\ */
Junio C Hamano2f6c9762011-04-08 16:18:46 -070013 R = GIT_REGEX_SPECIAL, /* $, (, ), +, ., ^, {, | */
Nguyễn Thái Ngọc Duy1c149ab2012-10-15 13:25:51 +070014 P = GIT_PATHSPEC_MAGIC, /* other non-alnum, except for ] and } */
15 X = GIT_CNTRL,
16 U = GIT_PUNCT,
17 Z = GIT_CNTRL | GIT_SPACE
René Scharfec841aa82009-01-17 16:50:29 +010018};
Linus Torvalds45467382005-10-13 11:03:18 -070019
Nguyễn Thái Ngọc Duyca5ab7d2012-10-15 13:25:50 +070020const unsigned char sane_ctype[256] = {
Nguyễn Thái Ngọc Duy1c149ab2012-10-15 13:25:51 +070021 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 */
Junio C Hamano2f6c9762011-04-08 16:18:46 -070023 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 */
Nguyễn Thái Ngọc Duy1c149ab2012-10-15 13:25:51 +070026 A, A, A, A, A, A, A, A, A, A, A, G, G, U, R, P, /* 80.. 95 */
Junio C Hamano2f6c9762011-04-08 16:18:46 -070027 P, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 96..111 */
Nguyễn Thái Ngọc Duy1c149ab2012-10-15 13:25:51 +070028 A, A, A, A, A, A, A, A, A, A, A, R, R, U, P, X, /* 112..127 */
Linus Torvalds45467382005-10-13 11:03:18 -070029 /* Nothing in the 128.. range */
30};
Junio C Hamano0f871cf2012-02-28 14:20:53 -080031
32/* For case-insensitive kwset */
Ben Walton189c8602015-03-02 19:22:31 +000033const unsigned char tolower_trans_tbl[256] = {
Junio C Hamano0f871cf2012-02-28 14:20:53 -080034 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};