There's a related discussion
(https://www.zsh.org/mla/workers/2018/msg00567.html) on the zsh
mailing list about the [[:blank:]] character class.

That's not one of the original POSIX character classes. I
understand it was added when C99 added isblank() which was
inspired by GNU libc's isblank() (there since at least as far
back as 1991).

I could not find any standard documentation that clarifies
what's that meant to be for. All we know is that it's a subset
of [:space:] and should include at least SPC and TAB.

I always thought that it was meant to be horizontal whitespace.
That is characters commonly found in text files that introduce
spacing *within* a line.

But then some locales on NetBSD include \v (vertical tabulation)
and most on OpenBSD include \v and \f (form feed/page break).

ISO/IEC TR 30112 (see draft at
http://www.open-std.org/JTC1/SC35/WG5/docs/30112d10.pdf)
wants to exclude (from [:space:] and as a result from [:blank:]
as well) characters that should not be considered as
"boundaries" (like the non-breaking space).

Without clear direction, in practice what [[:blank:]] matches
outside the POSIX locale is completely random and inconsistent
from one system to the next.

Does/should POSIX offer an opinion on that?

-- 
Stephane

Reply via email to