Regex character and collation class documentation
James B. Byrne
byrnejb at harte-lyne.ca
Mon Nov 13 14:10:06 UTC 2017
On Sat, November 11, 2017 10:45, mfv wrote:
> As a result I did some more digging and discovered that the valid
> names for [[.<name>.]] are contained in /usr/src/lib/libc/regex
> /cname.h. The names in "man ascii" are a subset of cname.h.
> It also explains why [[.SP.]] generates an error message. Even though
> SP is listed in "man ascii" it is not specified in cname.h.
> Cheers ...
A file named cname.h does not even exist on my system. At least if it
does then find does not report it. On the other hand, this file:
/* The standard C library routines isdigit(), for some weird
historical reason, does not take a character (type 'char') as its
argument. Instead it takes an integer. When the integer is a whole
number, it represents a character in the obvious way using the local
character set encoding. When the integer is negative, the results
Passing a character to isdigit(), which expects an integer,
results in isdigit() sometimes getting a negative number.
On some systems, when the integer is negative, it represents exactly
the character you want it to anyway (e.g. -1 is the character that
is encoded 0xFF). But on others, it does not.
(The same is true of other routines like isdigit()).
Therefore, we have the substitutes for isdigit() etc. that take an
actual character (type 'char') as an argument.
#define ISALNUM(C) (isalnum((unsigned char)(C)))
#define ISALPHA(C) (isalpha((unsigned char)(C)))
#define ISCNTRL(C) (iscntrl((unsigned char)(C)))
#define ISDIGIT(C) (isdigit((unsigned char)(C)))
#define ISGRAPH(C) (isgraph((unsigned char)(C)))
#define ISLOWER(C) (islower((unsigned char)(C)))
#define ISPRINT(C) (isprint((unsigned char)(C)))
#define ISPUNCT(C) (ispunct((unsigned char)(C)))
#define ISSPACE(C) (isspace((unsigned char)(C)))
#define ISUPPER(C) (isupper((unsigned char)(C)))
#define ISXDIGIT(C) (isxdigit((unsigned char)(C)))
#define TOUPPER(C) ((char)toupper((unsigned char)(C)))
But nowhere can I find 'isnul' or ISNUL'.
*** e-Mail is NOT a SECURE channel ***
Do NOT transmit sensitive data via e-Mail
Do NOT open attachments nor follow links sent by e-Mail
James B. Byrne mailto:ByrneJB at Harte-Lyne.ca
Harte & Lyne Limited http://www.harte-lyne.ca
9 Brockley Drive vox: +1 905 561 1241
Hamilton, Ontario fax: +1 905 561 0757
Canada L8E 3C3
More information about the freebsd-questions