Minutes of the 10th October 2024 Teleconference Austin-1430 Page 1 of 1 Submitted by Andrew Josey, The Open Group. 12th October 2024 Attendees: Andrew Josey, The Open Group Nick Stoughton, USENIX, ISO/IEC JTC 1/SC 22 OR Don Cragun, IEEE SA OR Geoff Clare, The Open Group Eric Ackermann, CISPA Eric Blake, Red Hat, The Open Group OR Apologies Tom Thompson, IEEE * General news The ISO status remains unchanged-- we are still awaiting a formal reply from the ISO editors. The issue of duplicate emails to the reflector remains - Andrew has completed the action (after the meeting) to contact Mark Brown to see if there is anything we can do - initial investigations show it to be at the Mantis side rather than The Open Group receiving email system (the items has different message IDs). * Carried forward Bug 1851: FD_CLOFORK should not be preserved across exec https://www.austingroupbugs.net/bug_view_page.php?bug_id=1851 This item still open. AI: Andrew to try to contact Solaris, other BSD, AIX, and macOS for comments. Andrew has partially completed this, sending notes to contacts for Solaris and macOS. A response has been received for Solaris. It does not appear as if we will get further responses on this one. Bug 1854: dd iflags=fullblock should be iflag=fullblock OPEN https://www.austingroupbugs.net/bug_view_page.php?bug_id=1854 This item still open On this issue, which appears to be a typo in the standard. We are looking for advice from IEEE on whether this can be handled as an errata item (iflags should have been iflag). * Current Business Bug 1797: strftime "%s" should be able to examine tm_gmtoff Accepted as Marked https://austingroupbugs.net/bug_view_page.php?bug_id=1797 An interpretation is required. This item is tagged for TC1-2024. Interpretation Response: The standard clearly states that when the input is in the normal range the strftime() %s conversion calculates the number of seconds since the Epoch as described for mktime(), and conforming implementations must conform to this. When the input is not in the normal range, 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: When the input is in the normal range: there is no requirement for applications to set the tm_gmtoff member and therefore implementations cannot rely on it having been set. However, in situations where there are two valid results of the conversion, an implementation may choose to make use of tm_gmtoff to decide between these two values (provided it can do so safely if tm_gmtoff is uninitialized), even though the strftime() %s conversion is not specified as making use of tm_gmtoff, since returning either of the values is allowed by the standard and the method used to choose between them is internal implementation detail that does not affect applications. When the input is not in the normal range: the standard states that the strftime() %s conversion calculates the number of seconds since the Epoch as described for mktime(), implying that out of range member values should be handled as for mktime(), but it also states ``If any of the specified values are outside the normal range, the characters stored are unspecified.'' Notes to the Editor (not part of this interpretation): On page 452 lines 15753-15754 section XBD , add CX shading to the lines for tm_gmtoff and tm_zone. On page 1211 line 41369 section gmtime() DESCRIPTION, change (already in CX shading): ...where the names in the structure and in the expression correspond. to: ...where the names in the structure and in the expression correspond; additionally, the tm_zone field shall be set to a pointer to an implementation-defined string set to "UTC" or "GMT", which shall have static storage duration. On page 1211 line 41385 section gmtime() RETURN VALUE, delete: The structure’s tm_zone member shall be set to a pointer to the string "UTC", which shall have static storage duration. On page 1427 line 47885 section mktime(), change: The mktime() function shall make use of only the tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, and tm_isdst members of the structure pointed to by timeptr; the values of these members shall not be restricted to the ranges described in . to: The mktime() function shall make use of only the tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, and tm_isdst members of the structure pointed to by timeptr, except that tm_gmtoff may also be used in order to choose between two valid return values, provided it can be used safely if uninitialized; the values of these members shall not be restricted to the ranges described in . On page 1428 line 47952 section mktime(), change: shall calculate the time since the Epoch value using either the offset in effect before the change or the offset in effect after the change. to: shall calculate the time since the Epoch value using either the offset in effect before the change or the offset in effect after the change; mktime() may use the value of tm_gmtoff to decide which of these two results is the more appropriate to return, provided it can do so safely if tm_gmtoff is uninitialized. On page 2134 line 69724 section strftime(), change: The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard. to: Except for the members of the tm structure used by the z and Z conversion specifiers (see below), the functionality described on this reference page is aligned with the ISO C standard. Any other conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard for all strftime() functionality except in relation to this aspect of the z and Z conversion specifiers. On page 2135 line 69760 section strftime(), change: If any of the specified values are outside the normal range, the characters stored are unspecified. to: If any of the specified values are outside the normal range, as if set by localtime(), the characters stored are unspecified. On page 2135 line 69764 section strftime(), change: Local timezone information shall be set as though strftime() called tzset(). to: It is implementation-defined whether local timezone information is set as though strftime() called tzset(). On page 2136 line 69823 section strftime() (%s), change: Replaced by the number of seconds since the Epoch as a decimal number, calculated as described for mktime(). [tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_isdst] to: Replaced by the number of seconds since the Epoch as a decimal number, calculated as described for mktime(), except that the tm structure member values used by this conversion need to be within the normal range, as if set by localtime(), to avoid unspecified output. [tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_isdst, tm_gmtoff] On page 2137 line 69854 section strftime() (%z), change: If tm_isdst is zero, the standard time offset is used. If tm_isdst is greater than zero, the daylight saving time offset is used. If tm_isdst is negative, no characters are returned. [tm_isdst, tm_gmtoff] to: [tm_gmtoff] On page 2137 line 69858 section strftime() (%Z), change: Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. [tm_isdst, tm_zone] to: Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. If the tm_zone value was not set by one of the standard functions that set it, the application shall ensure that it is either a null pointer (indicating that no timezone information exists) or points to a string containing the timezone name or abbreviation. [tm_zone]. On page 2137 line 69862 section strftime(), change: If a struct tm broken-down time structure is created by localtime() or localtime_r(), or modified by mktime(), and the value of TZ is subsequently modified, the results of the %Z and %z strftime() conversion specifiers are undefined, when strftime() is called with such a broken-down time structure. If a struct tm broken-down time structure is created or modified by gmtime() or gmtime_r(), it is unspecified whether the result of the %Z and %z conversion specifiers shall refer to UTC or the current local timezone, when strftime() is called with such a broken-down time structure. to: If a struct tm broken-down time structure is created by localtime() or localtime_r(), or modified by mktime(), and the value of TZ is subsequently modified, the results of the Z strftime() conversion specifier are undefined, when strftime() is called with such a broken-down time structure. After page 2139 line 69953 section strftime(), add a new paragraph to APPLICATION USAGE: Using a tm structure populated by gmtime() or gmtime_r() with the %s, %z, and %Z conversion of strftime() is not portable unless local time is UTC, as the implementation might process the conversions either by inspecting the structure’s tm_gmtoff and tm_zone members, or by inspecting global state. After page 2142 line 70092 section strftime(), add a new paragraph to RATIONALE: The ISO C standard specifies that the z and Z conversion specifiers use only the tm_isdst member of the tm structure, whereas POSIX.1 implementations have the additional structure members tm_gmtoff and tm_zone which provide information used in these conversions. Therefore this standard does not defer to the ISO C standard in relation to this aspect of the z and Z conversion specifiers. A future version of the ISO C standard is expected to allow the use of ``all members, including any non-standard additional members''. On page 2376 line 77023 section wcsftime(), change: The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard. to: Except for the members of the tm structure used by the z and Z conversion specifiers (see [xref to strftime()]), the functionality described on this reference page is aligned with the ISO C standard. Any other conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard for all wcsftime() functionality except in relation to this aspect of the z and Z conversion specifiers. Bug 1860: kill_dependency() SYNOPSIS has type* instead of type Accepted https://www.austingroupbugs.net/bug_view_page.php?bug_id=1860 This is tagged TC1-2024 and Errata-2024. Next Steps ---------- The next calls are on Thu 2024-10-17 (WEBEX meeting - general bugs) Thu 2024-10-24 (WEBEX meeting - general bugs) The calls are for 90 minutes Apologies in advance: 2024-10-24 Eric Blake 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)