Minutes of the 16th October 2023 Teleconference Austin-1352 Page 1 of 1 Submitted by Andrew Josey, The Open Group. 18th October 2023 Attendees: Nick Stoughton, Logitech/USENIX, ISO/IEC JTC 1/SC 22 OR Don Cragun, IEEE PASC OR Eric Ackermann, HPI, University of Potsdam Andrew Josey, The Open Group Geoff Clare, The Open Group Eric Blake, Red Hat, The Open Group OR Mark Ziegast, SHware Systems Dev. Apologies Tom Thompson, IEEE * General news Andrew took an action to develop a response to the outstanding MEC comments (relating to use of trademarks in text, for example saying we met at the IBM facility!). * Current Business Note for issue resolution all items are tagged for Issue 8 unless noted otherwise or disposition is reject or duplicate. Bug 657: Conditions under which fmemopen() write a NUL to the buffer are insufficiently specified Accepted as Marked https://austingroupbugs.net/view.php?id=657 This item is tagged for Issue 8. An interpretation is required. Interpretation response: The standard is unclear on this issue, and no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor. Rationale: None. Notes to the Editor (not part of this interpretation): Page and line numbers are for Issue 8 draft 3. Change "size" (when talking about the argument) to "max_size" throughout. Change "size" (when talking about the last position in the buffer) to "end position" throughout. Change on P961, L32741: Open the stream for update (reading and writing). Truncate the buffer contents. to: Open the stream for update (reading and writing). Change P961, L32744-32745 from: If the mode argument includes 'b', then the stream shall be in binary mode; otherwise the stream shall be in text mode. to: If the mode argument begins with 'w' and max_size is not zero, the buffer contents shall be truncated by writing a null byte at the beginning. If the mode argument includes 'b', the results are implementation-defined. Change on P961, L32758-32762: The stream shall also maintain the size of the current buffer contents; use of fseek() or fseeko() on the stream with SEEK_END shall seek relative to this size. If mode starts with 'r' or includes 'b', the size shall be set to the value given by the size argument and shall not change. Otherwise, the stream is in text mode and writable, and the size shall be variable; for modes w and w+ the initial size shall be zero and for modes a and a+ the initial size shall be: to: The stream shall also maintain the end position of the current buffer contents; use of fseek() or fseeko() on the stream with SEEK_END shall seek relative to this end position. If mode starts with 'r' the end position shall be set to the value given by the max_size argument and shall not change. Otherwise, the stream is writable and the end position shall be variable; for modes w and w+ the initial end position shall be zero and for modes a and a+ the initial end position shall be: Change on P962, L32775-32776: When a stream open for writing in text mode is flushed or closed, a null byte shall be written at the current position or at the end of the buffer, depending on the size of the contents. If a stream open for update in text mode is flushed or closed and the last write has advanced the current buffer size, a null byte shall be written at the end of the buffer if it fits. If a stream is opened in binary mode, no additional null byte shall be written. to: When a stream open for update (the mode argument includes '+') or for writing only is successfully written and the write advances the current buffer end position, a null byte shall be written at the new buffer end position if it fits. Change on P963, L32822-32828: Unlike fopen(), where a 'b' in the mode argument is required to have no effect, fmemopen() distinguishes between text and binary modes. Text mode guarantees that the underlying memory will always be null terminated after any write operation, and tracks the growth of the largest position written to up to that point; while binary mode only modifies the underlying buffer according to direct writes, while seeking relative to the full buffer size. The combination of append and binary modes is not commonly used, since any attempt to write to such a stream will necessarily fail because the stream does not dynamically grow beyond the initial size. to: Implementations differ as regards how a 'b' in the mode argument affects the behavior. For some the 'b' has no effect, as is required for fopen(); others distinguish between text and binary modes. Note that buf will not be null terminated if max_size bytes are written to the memory stream. Applications wanting to guarantee that the buffer will be null terminated need to call fmemopen() with max_size set to one byte smaller than the actual size of buf and set buf[max_size] to a null byte. Bug 251: Forbid newline, or even bytes 1 through 31 (inclusive), in filenames OPEN https://austingroupbugs.net/view.php?id=251 We started discussion on this item. See the proposed changes in https://posix.rhansen.org/p/bug251 We will continue next time. Next Steps ---------- We will continue on 251 The next call is on: Thu 2023-10-19 (Zoom meeting - general bugs/ballot resolution) Mon 2023-10-23 (Zoom meeting - general bugs/ballot resolution) The calls are for 90 minutes Calls are anchored on US time. (8am Pacific) Please check the calendar invites for dial in details. Bugs are at: https://austingroupbugs.net An etherpad is usually up for the meeting, with a URL using the date format as below: https://posix.rhansen.org/p/20xx-mm-dd (For write access this uses The Open Group single sign on, for those individuals with gitlab.opengroup.org accounts. Please contact Andrew if you need to be setup)