From a11772c6179c382b3be4cfa1c60ec723e625a5c1 Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Sun, 9 Sep 2001 06:17:02 +0000 Subject: 15765: introduce [:ascii:] class --- Src/pattern.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'Src') diff --git a/Src/pattern.c b/Src/pattern.c index db5344230..f75698adc 100644 --- a/Src/pattern.c +++ b/Src/pattern.c @@ -158,18 +158,19 @@ typedef union upat *Upat; */ #define PP_ALPHA 1 #define PP_ALNUM 2 -#define PP_BLANK 3 -#define PP_CNTRL 4 -#define PP_DIGIT 5 -#define PP_GRAPH 6 -#define PP_LOWER 7 -#define PP_PRINT 8 -#define PP_PUNCT 9 -#define PP_SPACE 10 -#define PP_UPPER 11 -#define PP_XDIGIT 12 -#define PP_UNKWN 13 -#define PP_RANGE 14 +#define PP_ASCII 3 +#define PP_BLANK 4 +#define PP_CNTRL 5 +#define PP_DIGIT 6 +#define PP_GRAPH 7 +#define PP_LOWER 8 +#define PP_PRINT 9 +#define PP_PUNCT 10 +#define PP_SPACE 11 +#define PP_UPPER 12 +#define PP_XDIGIT 13 +#define PP_UNKWN 14 +#define PP_RANGE 15 #define P_OP(p) ((p)->l & 0xff) #define P_NEXT(p) ((p)->l >> 8) @@ -928,6 +929,8 @@ patcomppiece(int *flagp) ch = PP_ALPHA; else if (!strncmp(patparse, "alnum", len)) ch = PP_ALNUM; + else if (!strncmp(patparse, "ascii", len)) + ch = PP_ASCII; else if (!strncmp(patparse, "blank", len)) ch = PP_BLANK; else if (!strncmp(patparse, "cntrl", len)) @@ -2187,6 +2190,10 @@ patmatchrange(char *range, int ch) if (isalnum(ch)) return 1; break; + case PP_ASCII: + if ((ch & ~0x7f) == 0) + return 1; + break; case PP_BLANK: if (ch == ' ' || ch == '\t') return 1; -- cgit 1.4.1