Minutes of the 15th October 2009 Teleconference Austin-468 Page 1 of 1 Submitted by Andrew Josey, The Open Group. October 16 , 2009 Attendees Andrew Josey, The Open Group Don Cragun, PASC OR Geoff Clare, The Open Group Mark Brown, IBM, TOG OR Nick Stoughton, USENIX, ISO/IEC OR Apologies Ulrich Drepper, Red Hat We looked at the Mantis bugs #114 , dot exit status Accept as marked http://austingroupbugs.net/view.php?id=114 We reviewed the feedback from David Korn. This needs to go down the interpretations track. 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. At line 74053 (dot), replace: Returns the value of the last command executed, or a zero exit status if no command is executed. with: If no readable file was found or if the commands in the file could not be parsed, and the shell is interactive (and therefore does not abort; see [xref to 2.8.1]), the exit status shall be non-zero. Otherwise, return the value of the last command executed, or a zero exit status if no command is executed. At line 74110 (eval), replace: If there are no arguments, or only null arguments, eval shall return a zero exit status; otherwise, it shall return the exit status of the command defined by the string of concatenated arguments separated by characters. with: If there are no arguments, or only null arguments, eval shall return a zero exit status; otherwise, it shall return the exit status of the command defined by the string of concatenated arguments separated by characters, or a non-zero exit status if the concatenation could not be parsed as a command and the shell is interactive (and therefore did not abort). #146 symlinkat failure cases Accept as marked http://austingroupbugs.net/view.php?id=146 An Interpretation is required 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. After line 65056, add a new paragraph: If path2 names a symbolic link, symlink() shall fail and set errno to [EEXIST]. At line 65087 (EEXIST) change: existing file or symbolic link to: existing file At line 65095 change: [ENOENT] A component of path2 does not name an existing file to: [ENOENT] A component of the path prefix of path2 does not name an existing file After line 65096, add: [ENOENT] or [ENOTDIR] The path2 argument contains at least one non- character and ends with one or more trailing characters. If path2 names an existing file, an [ENOENT] error shall not occur. At page 482 line 16419 section 2.3, replace the ENOTDIR description with: [ENOTDIR] Not a directory. A component of the specified pathname exists, but it is not a directory, when a directory was expected; or an attempt was made to create a non-directory file, and the specified pathname contains at least one non- character and ends with one or more trailing characters. After page 616 line 21046 section bind, add a new paragraph: If the address family of the socket is AF_UNIX and the pathname in address names a symbolic link, bind() shall fail and set errno to [EADDRINUSE]. At page 617 line 21086 section bind, change: [ENOENT] A component of the pathname does not name an existing file to: [ENOENT] A component of the path prefix of the pathname in address does not name an existing file After page 617 line 21087 section bind, add: [ENOENT] or [ENOTDIR] The pathname in address contains at least one non- character and ends with one or more trailing characters. If the pathname names an existing file, an [ENOENT] error shall not occur. At page 795 line 26555 section fattach, delete: and the last pathname component names an existing file that is neither a directory nor a symbolic link to a directory At page 878 line 29180 section fopen, and at page 924 line 30923 section freopen, change: [ENOENT] A component of filename does not name an existing file or filename is an empty string. to: [ENOENT] The mode string begins with 'r' and a component of filename does not name an existing file, or mode begins with 'w' or 'a' and a component of the path prefix of filename does not name an existing file, or filename is an empty string. After page 878 line 29181 section fopen, and after page 924 line 30924 section freopen, add: [ENOENT] or [ENOTDIR] The filename argument contains at least one non- character and ends with one or more trailing characters. If filename names an existing file, an [ENOENT] error shall not occur. At page 1296 line 42537 section mkfifo, and at page 1299 line 42689 section mknod, change: [ENOENT] A component of the path prefix specified by path does not name an existing directory to: [ENOENT] A component of the path prefix of path does not name an existing file After page 1296 line 42538 section mkfifo, and after page 1299 line 42690 section mknod, add: [ENOENT] or [ENOTDIR] The path argument contains at least one non- character and ends with one or more trailing characters. If path names an existing file, an [ENOENT] error shall not occur. At page 1382 line 45322 section open, change: [ENOENT] O_CREAT is not set and the named file does not exist; or O_CREAT is set and either the path prefix does not exist or the path argument points to an empty string. to: [ENOENT] O_CREAT is not set and a component of path does not name an existing file, or O_CREAT is set and a component of the path prefix of path does not name an existing file, or path points to an empty string. After page 1382 line 45324 section open, add: [ENOENT] or [ENOTDIR] O_CREAT is set, and the path argument contains at least one non- character and ends with one or more trailing characters. If path names an existing file, an [ENOENT] error shall not occur. #163 Problems in rationale of trap shell builtin Accept as marked http://austingroupbugs.net/view.php?id=163 See http://austingroupbugs.net/view.php?id=163#c252 #166 errno indeterminate in wait() example Accept http://austingroupbugs.net/view.php?id=166 #165 nohup internal error exit status Reject http://austingroupbugs.net/view.php?id=165 The proposal as stated would cause non-conformance in currently conforming implementations, and by allowing multiple behaviors would make implementations less portable. If submitter wishes to make refinements to the proposal to correct these perceived deficiencies, it is requested the it be done as an enhancement request for a future revision of the standard. #167 getenv() and modifying environ directly Accept as Marked http://austingroupbugs.net/view.php?id=167 Consensus on 2009-10-15 telecon is to go for option 2. An interpretation is required. The standard states the requirements for environ, and conforming implementations must conform to this. However, concerns have been raised about this which are being referred to the sponsor. Remove at 5476 "manipulating the environ variable," Add new paragraph at 5478: If the application modifies environ or the pointers to which it points, the behavior of all interfaces described in the System Interfaces volume of POSIX.1-2008 is undefined. Also need to remove undefined behavior note in getenv (line 33856), setenv (line 59347) and unsetenv (line 68256) Modify the rationale for getenv on page 1009, line 33885 from: This constraint allows the implementation to properly manage the memory it allocates, either by using allocated storage for all variables (copying them on the first invocation of setenv( ) or unsetenv( )), or keeping track of which strings are currently in allocated space and which are not, via a separate table or some other means. This enables the implementation to free any allocated space used by strings (and perhaps the pointers to them) stored in environ when unsetenv( ) is called. to This constraint allows the implementation to properly manage the memory it allocates. This enables the implementation to free any space it has allocated to strings (and perhaps the pointers to them) stored in environ when unsetenv() is called. Add putenv to the list of functions that modify environ on line 33897. Add to Rationale for getenv (page 1009, line 33897): For these reasons, any application that directly modifies the environ variable, or the pointers to which it points, has undefined behavior. Also exec page 772 line 25713: Any application that directly modifies the environ variable, or the pointers to which it points, has undefined behavior. Next Steps ---------- The next call will be on November 5 at 16:00 UK time/08:00 Pacific to carry on with the defect reports http://austingroupbugs.net See the calendar for the list of dialup numbers. An IRC channel will be available for the meeting irc://irc.freestandards.org #austin ICAL: http://www.google.com/calendar/ical/nvctqtstkuni3fab9k3jqtrt4g@group.calendar.google.com/public/basic XML: http://www.google.com/calendar/feeds/nvctqtstkuni3fab9k3jqtrt4g@group.calendar.google.com/public/basic