Extended API Set Part 1 Preliminary Dispositions Page 1 of 1 Submitted by Andrew Josey, The Open Group. February 23, 2006 These are the dispositions of the aardvark after the Change Request review meeting. These will next be subject to balloting by the Base Working Group. Aardvark Summary Table ______________________ ERN 1 Reject ERN 2 Accept ERN 3 Accept ERN 4 Accept ERN 5 Accept ERN 6 Accept ERN 7 Reject ERN 8 Accept ERN 9 Accept as marked ERN 10 Accept ERN 11 Accept ERN 12 Accept as marked ERN 13 Accept as marked ERN 14 Accept ERN 15 Accept as marked ERN 16 Accept ERN 17 Reject ERN 18 Reject ERN 19 Reject ERN 20 Accept as marked ERN 21 Accept ERN 22 Accept ERN 23 Accept ERN 24 Accept ERN 25 Accept ERN 26 Reject ERN 27 Accept _____________________________________________________________________________ EDITORIAL Enhancement Request Number 1 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 19) {Alexey-6} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_____ Reject_X___ Rationale for rejected or partial changes: We follow the lead of functions such as mbsrtowcs and wcstombs which are not mentioned in that table. Also the DESCRIPTION is clear on the usage when pass a NULL ps argument. _____________________________________________________________________________ Page: 0 Line: 0 Section: mbsnrtowcs, Problem: mbsnrtowcs() and wcsnrtombs() shall be added to the list of functions (Section 2.9.1), which do not need be thread-safe if passed a NULL ps argument. Action: - _____________________________________________________________________________ EDITORIAL Enhancement Request Number 2 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 6) {DWC-API1-1} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 1 Line: 5 Section: 1.1 Problem: There is unneeded whitespace before the period. Action: Change "Specification ." to "Specification." _____________________________________________________________________________ COMMENT Enhancement Request Number 3 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 7) {DWC-API1-2} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 3 Line: 17-27 Section: 1.5.1 Problem: The description of the UX margin code here only applies to changes in XBD. This draft also makes changes to XCU and XSH and uses the UX margin code and shading in both of them, but does not specify addition of this new code in those volumes. Action: Unless this change goes into a file that is shared in XBD, XCU, XSH, and XRAT, add corresponding changes for XCU section 1.8.1 and XSH section 1.8.1. If it is shared between all of the volumes, add a not saying so in the Notes To Reviewers on P3, L21-22. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 4 roland.illig@gmx.de mailman> (rdvk# 14) {ri2} Fri, 17 Feb 2006 14:14:52 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 4 Line: 65 Section: 2.3 Problem: strnlen is defined with the second parameter being a va_list, but later (page 29) the second parameter has type size_t. Action: Change the type of the second parameter of strnlen from va_list to size_t. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 5 nick@usenix.org Bug in ExtAPI_1 4.1.1 (rdvk# 3) {NMS-API1-01} Mon, 13 Feb 2006 18:45:32 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 7 Line: 149 Section: 4.1.1 Problem: "There was no free space remaining on the device containing the file or on the buffer used by the fmemopen( ) function." We do talk about "space ON the device, but not typically about "space on the buffer", but rather "space IN the buffer". Action: Change this sentence to: "There was no free space remaining on the device containing the file or in the buffer used by the fmemopen( ) function." _____________________________________________________________________________ EDITORIAL Enhancement Request Number 6 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 8) {DWC-API1-3} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 8 Line: 152 Section: 4.2 Problem: This comment is misleading. Changes to other man pages have already been presented. Action: Change P8, L152 to: Add the following new system interface descriptions in alphabetic order with the existing system interface descriptions in XSH Chapter 3. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 7 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 24) {Alexey-10} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_____ Reject_X___ Rationale for rejected or partial changes: We are documenting existing practise and adding this functionality would reduce the consensus. _____________________________________________________________________________ Page: 9 Line: 0 Section: alphasort Problem: PROPOSAL Sometimes sorting of directory entres is not needed. In this case a call to the qsort() function follows extra time loss. One of possible solutions is to omit sorting if passed a NULL compar argument. Action: Add at the end of line 170 the following: If compar is a null pointer, sorting is omitted and the order of entries in the result array is unspecified. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 8 nick@usenix.org Bug in ExtAPI_1 alphasort/scandir (rdvk# 4) {NMS-API1-02} Mon, 13 Feb 2006 18:47:43 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 10 Line: 214 Section: alphasort/scandir Problem: There is a missing "}" after line 214 to match the opening one on line 210 Action: Add "}" as a new line between 214 and 215 _____________________________________________________________________________ COMMENT Enhancement Request Number 9 peterv@qnx.com Bug in ExtAPI_1 dirfd (rdvk# 27) {QNX-1} Wed, 22 Feb 2006 18:29:53 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: On line 237 Change from The behavior of future calls to readdir( ) is undefined if the application attempts to alter the file position indicator. To The behavior of future calls to readdir( ) and readdir_r() are undefined if the application attempts to alter the file position indicator using the returned file descriptor. The behavior of future calls to closedir(), readdir() and readdir_r are undefined if the application attempts to close the file descriptor. On line 239 change "the file descriptor" to "a file descriptor" On line 262 change dirclose() -> closedir() Add to RATIONALE. If it is necessary to allocate a fd to be returned by dirfd() it should be done at the time of a call to opendir(). _____________________________________________________________________________ Page: 11 Line: 237 Section: dirfd Problem: The fd returned is used for fchdir and the ExtAPI_2 at() functions. QNX is a microkernel and implements directories outside of the kernel. opendir() can open multiple fd's to multiple filesystems, there is not necessarily one fd. dirfd() could be implemented by creating a new fd that can be used for fchdir and at() functions. Action: at line 237 add: any use of the file descriptor other than to pass to fchdir or at() functions is implementation defined. at line 240 change: "contains the file descriptor for the stream" to "contains the file descriptor representing the stream" _____________________________________________________________________________ EDITORIAL Enhancement Request Number 10 nick@usenix.org Bug in ExtAPI_1 dirfd (rdvk# 5) {NMS-API1-03} Mon, 13 Feb 2006 18:58:11 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 11 Line: 268 Section: dirfd Problem: The dirfd() function is to a DIR * what fileno() is to a FILE *. It would be helpful to add this analogy to the rationale, or at least to add fileno to the See also section. Action: After line 268, add a new line: fileno() the Base Definitions volume of IEEE Std 1003.1-2001, . _____________________________________________________________________________ EDITORIAL Enhancement Request Number 11 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 9) {DWC-API1-4} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 13 Line: 298 Section: dprintf Problem: There should be a comma before the shift from references to pages in this volume to references to XBD. The printf() page in XSH6 is a pointer page pointing to fprintf(). Action: Change "printf() the Base" on P13, L298 to "fprintf(), the Base". _____________________________________________________________________________ COMMENT Enhancement Request Number 12 curtis.smith@simtrol.com Bug in ExtAPI_1 fmemopen (rdvk# 15) {cms-1} Fri, 17 Feb 2006 15:11:39 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Change line 320 to The character b shall have no effect _____________________________________________________________________________ Page: 14 Line: 320 Section: fmemopen Problem: ISO C does not define fmemopen, so it is inappropriate to say the 'b' in the mode string "is allowed for ISO C standard conformance." Action: Change "is allowed for ISO C standard conformance" to "is allowed for parallelism with the mode argument of the fopen() function." _____________________________________________________________________________ COMMENT Enhancement Request Number 13 ajosey@rdg.opengroup.org Bug in ExtAPI_1 (rdvk# 16) {Alexey-1} Sat, 18 Feb 2006 06:32:29 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Add after 329 If buf is a null pointer the initial position shall always be set to the beginning of the buffer _____________________________________________________________________________ Page: 14 Line: 321 Section: fmemopen Problem: The description reads: 321 If a null pointer is specified as the buf argument, fmemopen( ) shall allocate size bytes of memory 322 as if by a call to malloc( ). This buffer shall be automatically freed when the stream is closed. 323 Because this feature is only useful when the stream is opened for updating (because there is no 324 way to get a pointer to the buffer) the fmemopen( ) call may fail if the mode argument does not 325 include a '+'. 326 The stream maintains a current position in the buffer. This position is initially set to either the 327 begining of the buffer (for r and w modes) or to the first null byte in the buffer (for a modes). If 328 no null byte is found in append mode, the initial position is set to one byte after the end of the 329 buffer. It follows if a null pointer is specified as the buf argument and mode had 'a' as the first character, the initial value of the current position is a random value. Memory allocated by a call to malloc( ) contains accidental bytes. So the first null byte in the buffer is at a random position. Action: Add explicit definition of the initial value of the current position in this situation. The begining of the buffer is the best choice in my view. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 14 ajosey@rdg.opengroup.org Bug in ExtAPI_1 (rdvk# 17) {Alexey-2} Sat, 18 Feb 2006 06:32:29 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 14 Line: 334 Section: fmemopen Problem: The misprint is in the sentence at lines 336-337: 'The write operation starts at the current buffer position of the stream.' I guess it shall read: 'The read operation starts at the current buffer position of the stream.' 334 A read operation on the stream cannot advance the current buffer position behind the current 335 buffer size. Reaching the buffer size in a read operation counts as "end of file". Null bytes in the 336 buffer have no special meaning for reads. The write operation starts at the current buffer 337 position of the stream. 338 A write operation starts either at the current position of the stream (if mode has not specified a 339 as the first character) or at the current size of the stream (if mode had a as the first character). If 340 the current position at the end of the write is larger than the current buffer size, the current 341 buffer size is set to the current position. A write operation on the stream cannot advance the 342 current buffer size behind the size given in the size argument. Action: Replace 334 A read operation on the stream cannot advance the current buffer position behind the current 335 buffer size. Reaching the buffer size in a read operation counts as "end of file". Null bytes in the 336 buffer have no special meaning for reads. The write operation starts at the current buffer 337 position of the stream. by 334 A read operation on the stream cannot advance the current buffer position behind the current 335 buffer size. Reaching the buffer size in a read operation counts as "end of file". Null bytes in the 336 buffer have no special meaning for reads. The read operation starts at the current buffer 337 position of the stream. _____________________________________________________________________________ COMMENT Enhancement Request Number 15 ajosey@rdg.opengroup.org Bug in ExtAPI_1 (rdvk# 18) {Alexey-3} Sat, 18 Feb 2006 06:32:29 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: Change line 343 from When a stream open for writing is flushed or closed, a null byte is written at the end of the buffer if it fits. To When a stream open for writing is flushed or closed, a null byte is written at the current position or at the end of the buffer depending on the size of the contents _____________________________________________________________________________ Page: 14 Line: 343 Section: fmemopen Problem: The description 343 When a stream open for writing is flushed or closed, a null byte is written at the end of the buffer 344 if it fits. If a stream open for update is flushed or closed and the last write has advanced the 345 current buffer size, a null byte is written at the end of the buffer if it fits. 346 An attempt to seek a memory buffer stream to a negative position or to a position larger than the 347 buffer size given in the size argument shall fail. is unclear. 'the end of the buffer' can be understood in two ways: either the size of the current contents or the size of the buffer itself. 'if it fits' in this context is also unclear. Action: Clarify what the end of the buffer means. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 16 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 23) {Alexey-9} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 17 Line: 0 Section: getdelim Problem: These is suggestion to add ENOMEM error code to the ERROR section because lack of memory is a possible issue for the getdelim() function. Action: Add the following after line 425: [ENOMEM] Insufficient memory is available. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 17 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 20) {Alexey-7} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_____ Reject_X___ Rationale for rejected or partial changes: We follow the lead of functions such as mbsrtowcs and wcstombs which are not mentioned in that table. _____________________________________________________________________________ Page: 19 Line: 0 Section: mbsnrtowcs Problem: The mbsnrtowcs() function is a reentrant one if it is called with a non-NULL ps argument. This fact shall be mentioned in the description. Action: Add after line 499: UX CX If the application uses any of the _POSIX_THREAD_SAFE_FUNCTIONS or _POSIX_THREADS functions, the application shall ensure that the mbsnrtowcs( ) function is called with a non-NULL ps argument. _____________________________________________________________________________ COMMENT Enhancement Request Number 18 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 21) {Alexey-4} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_____ Reject_X___ Rationale for rejected or partial changes: The text is intentionally silent. The standard developers saw no need for the standard to describe what happens in this case. _____________________________________________________________________________ Page: 23 Line: 580-601 Section: open_memstream Problem: Clarification required The description of the open_memstream and open_wmemstream functions does not answer the following question: Shall (or may) contents of a memory buffer stream be changed if an application changes the buffer between a successfull fflush() and the next write operation on the stream? Action: - _____________________________________________________________________________ COMMENT Enhancement Request Number 19 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 25) {Alexey-5} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_____ Reject_X___ Rationale for rejected or partial changes: The text is intentionally silent. The standard developers saw no need for the standard to describe what happens in this case. _____________________________________________________________________________ Page: 23 Line: 595-601 Section: open_memstream Problem: There is a small lack of logic in the following description: 595 After a successful fflush( ) or fclose( ) the pointer referenced by bufp shall contain the address of 596 the buffer, and the variable pointed to by sizep shall contain the number of successfully written 597 bytes for open_memstream( ) or the number of successfully written wide characters for 598 open_wmemstream( ). The buffer shall be terminated by a null character for open_memstream( ) or a 599 null wide character for open_wmemstream( ). 600 After a successful fflush( ) the pointer referenced by bufp and the variable referenced by sizep 601 remain valid only until the next write operation on the stream or a call to fclose( ). Why do the pointer referenced by bufp and the variable referenced by sizep remain valid only until the next write operation on the stream or a call to fclose()? What is the difference between a call to fclose() and a call to fflush() in this situation? Why does the call to fclose() make the pointer invalid? And why does NOT the call to fflush() make the pointer invalid? Action: - _____________________________________________________________________________ COMMENT Enhancement Request Number 20 dave.anglin@nrc-cnrc.gc.ca Bug in ExtAPI_1 psiginfo (rdvk# 26) {JDA-001} Wed, 22 Feb 2006 21:34:48 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_X___ Duplicate_____ Reject_____ Rationale for rejected or partial changes: We reviewed existing practise and believe that having a signed value is ok. _____________________________________________________________________________ Page: 25 Line: 653 Section: psiginfo Problem: The type of the first argument of psignal is unsigned in many implementations (Apple/BSD, Solaris, GNU libiberty). Action: Review whether the type should be unsigned. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 21 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 10) {DWC-API1-5} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 28 Line: 778 Section: strndup Problem: The first word in an error description is usually capitalized unless it is a parameter name. Action: Change "insufficient" on P28, L778 to "Insufficient". _____________________________________________________________________________ EDITORIAL Enhancement Request Number 22 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 11) {DWC-API1-6} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 32 Line: 892 Section: wcpncpy Problem: Subsequent lines in a multiline synopsis should be indented. Action: Indent line 892 by four spaces. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 23 ajosey@opengroup.org Bug in ExtAPI_1 wcscasecmp (rdvk# 1) {TOG-001} Fri, 20 Jan 2006 06:19:35 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 33 Line: 933 Section: wcscasecmp Problem: A word is missing (a macro in the source was not expanded) Action: Change "In the locale" to "In the POSIX locale" _____________________________________________________________________________ EDITORIAL Enhancement Request Number 24 ajosey@opengroup.org Bug in ExtAPI_1 wcsncasecmp (rdvk# 2) {TOG-002} Fri, 20 Jan 2006 06:20:54 GMT _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 35 Line: 997 Section: wcsncasecmp Problem: A word is missing (a macro in the source was not expanded) Action: Change "In the locale" to "In the POSIX locale" _____________________________________________________________________________ EDITORIAL Enhancement Request Number 25 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 12) {DWC-API1-7} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 37 Line: 1056 Section: wcsnrtobms Problem: In XSH6, all subsequent lines in long synopses are indented four spaces. This line is only indented three spaces. Action: Indent P37, L1056 one more space. _____________________________________________________________________________ EDITORIAL Enhancement Request Number 26 khoroshilov@ispras.ru Bug in ExtAPI_1 open_memstream (rdvk# 22) {Alexey-8} Sat, 18 Feb 2006 21:49:05 GMT _____________________________________________________________________________ Accept_____ Accept as marked below_____ Duplicate_____ Reject_X___ Rationale for rejected or partial changes: The description parallels other existing text from ISO C. If its a null pointer the return value states the number of bytes needed to return the string. _____________________________________________________________________________ Page: 37 Line: 1058-1084 Section: wcsnrtombs Problem: The description of the wcsnrtombs() function contains a lot of phrases 'If dst is not a null pointer'. But there is no any description of behaviour 'If dst is a null pointer'. The description of the mbsnrtowcs() function contains such description: 492 When dst is a null pointer, the conversion proceeds as above, except that no wide characters are 493 written to memory, and the len argument is ignored, so no destination length limit is imposed. Action: - _____________________________________________________________________________ EDITORIAL Enhancement Request Number 27 don.cragun@Sun.COM Bug in ExtAPI_1 (rdvk# 13) {DWC-API1-8} Thu, 16 Feb 2006 17:23:44 -0800 (PST) _____________________________________________________________________________ Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____ Rationale for rejected or partial changes: _____________________________________________________________________________ Page: 37 Line: 1086,1088 Section: wcsnrtombs Problem: The RETURN VALUE and ERROR sections usually end with a period. Action: Add a period to the end of P37, L1086. Add a period to the end of P37, L1088.