René Scharfe <rene.scharfe@xxxxxxxxxxxxxx> writes: > +#define RR GIT_REGEX_SPECIAL /* $, (, ), +, ., ^, {, | */ > +#define US GIT_UNDERSCORE > +#define Ah (GIT_ALPHA | GIT_LOWER_XDIGIT) > > unsigned char sane_ctype[256] = { > GS, 0, 0, 0, 0, 0, 0, 0, 0, SS, SS, 0, 0, SS, 0, 0, /* 0-15 */ Mental note. NUL is marked as GIT_SPECIAL. > #define isspecial(x) sane_istest(x,GIT_SPECIAL) > +#define isregexspecial(x) sane_istest(x,GIT_SPECIAL | GIT_REGEX_SPECIAL) Perhaps isspecial() is misnamed if we were to enhance git-ctype in this way. It is about a byte being shell glob pattern or a NUL (!!!), and it should be renamed to isglobspecial() or something. dir.c uses isspecial() in two places, and both callers rely on NUL being a part of special to terminate the loops they are in, like this: for (;;) { unsigned char c = *match++; len++; if (isspecial(c)) return len; } It may be a cunning and cute logic, but I do not particularly like it. It might be cleaner to rename it to isglobspecial(), drop NUL from it, and have these two call existing call sites to explicitly check for (c == NUL) for loop termination. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html