Date: Mon, 13 Nov 2017 09:09:52 -0500 From: "James B. Byrne" <byrnejb@harte-lyne.ca> To: mfv@bway.net Cc: freebsd-questions@freebsd.org Subject: Re: Regex character and collation class documentation Message-ID: <b0835f510ae66a82808725fa8ae8c7d0.squirrel@webmail.harte-lyne.ca> In-Reply-To: <20171111104543.11279fb7@gecko4> References: <mailman.90.1510315202.51235.freebsd-questions@freebsd.org> <68be33ca89aab31e068253dffe129021.squirrel@webmail.harte-lyne.ca> <20171111104543.11279fb7@gecko4>
next in thread | previous in thread | raw e-mail | index | archive | help
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 ... > > Marek > 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: /usr/local/include/nstring.h contains this: /* 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 are undefined. 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@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b0835f510ae66a82808725fa8ae8c7d0.squirrel>