Last update: 09 October,1997
97 #002 _____________________________________________________________________________ Topic: ISO C MSE Orientation Relevant Sections: Multiple Spec: XSH Issue 5, XBD Issue 5 Resolution Request: ------------------- The current wording of XSH5/XBD is not aligned with the the orientation model described in the ISO C MSE rationale. Resolution Response ------------------- The following set of changes have been identified to XBD5 and XSH5 and will be applied in a future revision . For this revision of the specification either behaviour is deemed conforming. 1. XBD Changes M1. Add to XBD5, P8 after the glossary entry for "byte": byte input/output functions The functions that perform byte-oriented input from streams or byte-oriented output to streams: fgetc(), fgets(), fprintf(), fputc(), fputs(), fread(), fscanf(), fwrite(), getc(), getchar(), gets(), printf(), putc(), putchar(), puts(), scanf(), ungetc(), vfprintf(), and vprintf(). M2. Add to XBD5, P13 after the glossary entry for "empty string": encoding rule The rules used to convert between wide-character codes and multibyte-character codes. See the XSH specification, Section 2.4.2, Stream Orientation. M3. Add to XBD5, P21 after the glossary entry for "option-argument": orientation A stream has one of three orientations: unoriented, byte-oriented, or wide-oriented. See the XSH specification, Section 2.4.2, Stream Orientation. M4. Add to XBD5, P36, after the glossary entry for "wide-character code (C language": wide-character input/output functions The functions that perform wide-oriented input from streams or wide-oriented output to streams: fgetwc(), fputwc(), fputws(), fwprintf(), fwscanf(), getwc(), getwchar(), getws(), putwc(), putwchar(), ungetwc(), vfwprintf(), vwprintf(), wprintf(), and wscanf(). 2. XSH Changes M5. Change the title of XSH5, section 2.4.2 from "Stream Orientation" to "Stream Orientation and Encoding Rules". Update all references to "XSH Section 2.4.2, Stream Orientation" in XBD5, XCU5, and in this resolution and all references to "Section 2.4.2, Stream Orientation" in XSH5 and in this resolution. M6. Add a new paragraph in XSH5 section 2.4.2, P32 after the paragraph that begins with "Each wide-oriented stream...": Implementations that support multiple encoding rules associate an encoding rule with the stream. The encoding rule is determined by the setting of the LC_CTYPE category in the current locale at the time when the stream becomes wide-oriented. If a wide-character input/output function is applied to a byte-oriented stream, the encoding rule used is undefined. As with the stream's orientation, the encoding rule associated with a stream cannot be changed once it has been set, except by a successful call to freopen() which clears the encoding rule and resets the orientation to unoriented. M6.5 Change the two paragraphs in XSH5 section 2.4.2, P33 from: The wide-character input functions read characters from the stream and convert them to wide-characters as if they were read by successive calls to the fgetwc() function. Each conversion occurs as if by a call to the mbrtowc() function, with the conversion state described by the stream's own mbstate_t object. The wide-character output functions convert wide-characters to (possibly multibyte) characters and write them to the stream as if they were written by successive calls to the fputwc() function. Each conversion occurs as if by a a call to the wcrtomb() function, with the coversion state described by the stream's own mbstate_t object. to: The wide-character input functions read characters from the stream and convert them to wide-characters as if they were read by successive calls to the fgetwc() function. Each conversion occurs as if by a call to the mbrtowc() function with the conversion state described by the stream's own mbstate_t object, except the encoding rule associated with the stream is used instead of the encoding rule implied by the LC_CTYPE category of the current locale. The wide-character output functions convert wide-characters to (possibly multibyte) characters and write them to the stream as if they were written by successive calls to the fputwc() function. Each conversion occurs as if by a a call to the wcrtomb() function with the coversion state described by the stream's own mbstate_t object, except the encoding rule associated with the stream is used instead of the encoding rule implied by the LC_CTYPE category of the current locale. with the "except ..." clauses in both of these paragraphs shaded with EX markings. M7. Add a new paragraph before the last paragraph of the fopen() description on XSH5, P246: After a successful call to the fopen() function, the orientation of the stream is cleared, the encoding rule is cleared, and the associated mbstate_t object is set to describe an initial conversion state. with "the encoding rule is cleared" shaded with an EX marking. M8. Change the fourth paragraph of the freopen() description on XSH5, P270 from: After a successful call to the freopen() function, the orientation of the stream is cleared and the associated mbstate_t object is set to describe an initial conversion state. to: After a successful call to the freopen() function, the orientation of the stream is cleared, the encoding rule is cleared, and the associated mbstate_t object is set to describe an initial conversion state. with "the encoding rule is cleared" shaded with an EX marking. M9. (empty) M10. (editorial) Shade the last paragraph of the mbrlen() description on XSH5, P496: The behavior of this function is affected by the LC_CTYPE category of the current locale. with an EX marking. M11. (empty) M12. (editorial) Shade the last paragraph of the mbrtowc() description on XSH5, P498: The behavior of this function is affected by the LC_CTYPE category of the current locale. with an EX marking. M13. (empty) M14. (empty) M14.5. (Editorial correction.) Shade the last paragraph of the mbsrtowcs() description on XSH5, P501: The behavior of this function is affected by the LC_CTYPE category of the current locale. with an EX marking. M15. (empty) M16. (editorial.) Shade the last paragraph of the wcrtomb() description on XSH5, P1009: The behavior of this function is affected by the LC_CTYPE category of the current locale. with an EX marking. M17. (empty) M18. (editorial) Shade the last paragraph of the wcsrtombs() description on XSH5, P1023: The behavior of this function is affected by the LC_CTYPE category of the current locale. with an EX marking. Rationale ------------- None. Circulated for review: Jun 25 1997 Proposed for final review: Sep 18 1997 Approved: Sep 30 1997