On 11/07/2013 05:58 AM, Steffen Daode Nurpmeso wrote:
Karl Williamson <pub...@khwilliamson.com> wrote:
|On 11/06/2013 03:43 AM, Steffen Daode Nurpmeso wrote:
|> Philippe Verdy <verd...@wanadoo.fr> wrote:
|>|2013/11/5 Steffen Daode <sdao...@gmail.com>
|>|> (The problem i'm facing is that _PRINT and _GRAPH cannot be set
|>|> for some properties from PropList.txt, say, _PRINT can't be set
|>|> for U+0009, CHARACTER TABULATION (ht), since it's a Cc, but in
|>|
|>|TAB is "printable" (for the isprint() macro in standard \
|>|C librries) because
|>
|> Nope according to POSIX, Vol. 1: Base Definitions, 7.3.1. LC_CTYPE ([1]):
|
|The only vendor I'm aware of that makes TAB a printable is Microsoft.
|Thus Philippe is wrong about this except for MS products.
That made me curious, and it doesn't seem to be right [1].
isprint returns a nonzero value if c is a printable character—this
includes the space character (0x20 – 0x7E).
The behavior of isprint and _isprint_l is undefined if c is not
EOF or in the range 0 through 0xFF, inclusive. When a debug CRT
library is used and c is not one of these values, the functions
raise an assertion.
[1] <http://msdn.microsoft.com/en-us/library/ewx8s4kw(v=vs.110).aspx>
I have various tests that run through all a machine's locales looking
for violations of the Posix standard. When run on MS machines, they
fail as I've described. Perhaps those machines have old, buggy
implementations that have been fixed.