|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 0163 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 0163.
Report 0163 Actions
Problem Report Number 0163 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0163 Raised 1994-08-06 08:00 Updated 2003-03-13 08:00 Published 1994-06-14 08:00 Product Standard Internationalised System Calls and Libraries (XPG4) Certification Program The Open Brand certification program Test Suite VSX4 version 4.3.4 Test Identification ANSI.os/charhandle/isxdigit 1 Problem Summary TSD4.163 This was submitted to X/Open during the beta testing of VSX 4.3.3. The discussion between the implementor and vsx_support may be reviewed by viewing err.4.3.3.[056, 058, 065]. continuing the discussio... Problem Text
This was submitted to X/Open during the beta testing of VSX 4.3.3.
The discussion between the implementor and vsx_support may be reviewed by
viewing err.4.3.3.[056, 058, 065].
continuing the discussion
from err.4.3.3.065
vsx_support comments
|You say that isxdigit(A-F) must return > 0. The question is what
|is meant by A-F. We believe it means A-F in the portable
|character set, i.e. if the function is called using the C source
|code:
|
| isxdigit('A');
|
|then the return value must be > 0. The value of the C language
|constant 'A' is always 0x41 regardless of the current locale
|setting.
This is wrong, and is not supported by the standard. Quoting a member of
I18N working group: "There is no mapping of the characters in the
portable character set to any codeset, ASCII or otherwise, in the standard.
The isxdigit('A') call mentioned will return unpredictable results, based
upon the locale present when the code is executed."
He went on to say that the Base WG (of which he was a part) was *quite*
*specific* in avoiding *ANY* mapping of character to codeset. The
behavior we are trying to implement (and is failing in your test) was
intentionally written (or you might say, intentionally allowed) by the
Base WG.
from err.4.3.3.065
vsx_support comments
|Presumably the reason localedef is automatically classifying
|0x81-0x86 as xdigit is because you have used the symbolic names
|<A>, <B>, etc. for these characters in VSX4L1, and <a>, <b>,
|etc. in VSX4L2. We suggest that you try changing these symbolic
|names to, say, <PSLA>, <PSLB>, etc. Hopefully this will allow
|localedef to install VSX4L1 and VSX4L2 with the correct character
|classifications, as described in E.3.1 and E.3.2. If localedef
|insists that the symbolic names <A>, <B>, etc. must appear in the
|source file, you should use these names for the characters 0x41-
|0x46 instead of the names you are currently using.
Your test is requiring *NON-conformant* behavior to pass, based on
the comment above and the wording of the Standard, which
specifically allows characters and codesets to be orthogonal.Test Output
This waiver request also pertains to the following testcases
tset/ANSI.os/charhandle/iswxdigit 2
tset/XPG4.os/wcharhandle/iswctype 2
************************************************************************
/tset/ANSI.os/charhandle/isxdigit/T.isxdigit 1 Failed
Test Description:
isxdigit() returns non-zero if and only if the character is a
hexadecimal digit (i.e. 0-9, a-f, A-F) in the ASCII codeset. This
classification is independent of the current setting of the locale.
Posix Ref: Component ISXDIGIT Assertion 8.1-04(A)
Test Strategy:
CREATE child process
SET locale for LC_ALL to VSX4L1
FOR all ASCII values :
VERIFY value returned by isxdigit() against expected value
SET locale for LC_CTYPE to VSX4L2
FOR all ASCII values :
VERIFY value returned by isxdigit() against expected value
Test Information:
isxdigit(0x81) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
Actual return value: 2048
isxdigit(0x82) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
Actual return value: 2048
isxdigit(0x83) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
Actual return value: 2048
isxdigit(0x84) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
Actual return value: 2048
isxdigit(0x85) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
Actual return value: 2048
isxdigit(0x86) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
Actual return value: 2048
isxdigit(0x81) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
Actual return value: 2048
isxdigit(0x82) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
Actual return value: 2048
isxdigit(0x83) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
Actual return value: 2048
isxdigit(0x84) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
Actual return value: 2048
isxdigit(0x85) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
Actual return value: 2048
isxdigit(0x86) failed
isxdigit returns non-zero for hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
Actual return value: 2048
************************************************************************
************************************************************************
/tset/XPG4.os/wcharhandle/iswctype/T.iswctype 2 Failed
Test Description:
When the wide character c is defined to not have property property in
the wide character classification table associated with the current
locale specified in LC_CTYPE, then a call to iswctype() returns zero.
Test Strategy:
OBTAIN multibyte strings using wcharcfg()
CHILD process:
CHANGE to test locale using setlocale()
FOR each valid property name, call wctype()
VERIFY that return value from wctype() when used as the second
argument to iswctype(), with character argument not with that
property returns zero.
Test Information:
With locale set to VSX4L1
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L1
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L1
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L1
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L1
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L1
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L2
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L2
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L2
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L2
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L2
iswctype(, wctype(xdigit)) returned 2048, expected zero
With locale set to VSX4L2
iswctype(, wctype(xdigit)) returned 2048, expected zero
************************************************************************
************************************************************************
/tset/XPG4.os/wcharhandle/iswxdigit/T.iswxdigit 2 Failed
Test Description:
When the wide character is not a hexadecimal digit (i.e. 0-9, a-f, A-
F) in the standard specification for the 'C' locale, then a call to
iswxdigit() returns zero. This classification is independent of the
current setting of the locale.
Test Strategy:
CREATE child process
(child) FOR locales C (default), VSX4L1 and VSX4L2, for categories
LC_ALL, LC_ALL and LC_CTYPE respectively :
FOR all non-hexadecimal-digit ASCII values :
VERIFY value returned by iswxdigit() is zero
Test Information:
iswxdigit(0x81) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
iswxdigit(0x82) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
iswxdigit(0x83) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
iswxdigit(0x84) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
iswxdigit(0x85) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
iswxdigit(0x86) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L1
Current category is LC_ALL
Expected return value: 0
iswxdigit(0x81) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
iswxdigit(0x82) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
iswxdigit(0x83) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
iswxdigit(0x84) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
iswxdigit(0x85) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
iswxdigit(0x86) failed
iswxdigit returns zero for non-hexadecimal digit characters
Current language is VSX4L2
Current category is LC_CTYPE
Expected return value: 0
************************************************************************Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
As pointed out in the full response to err.4.3.3.065, there is a
problem with setting up the VSX psuedo-languages using the XCU4
localedef utility. This relates to the fact that the design of
these locales preceded the XCU4 localedef definition by some
considerable period of time. It is accepted that the current
psuedo languages need to be revamped in order to meet these new,
more stringent requirements and, this being the case, it is
recommended that this request be treated as a test suite deficiency.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed Test Suite Deficiency
Problem Reporting System Options:
- View Report 0163
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority