Minutes of the 26 Aug 2010 Teleconference Austin-494 Page 1 of 1 Submitted by Andrew Josey, The Open Group. August 24th , 2010 Attendees Andrew Josey, The Open Group Don Cragun, PASC OR Nick Stoughton, USENIX, ISO/IEC OR Eric Blake, Red Hat Mark Brown, IBM, TOG OR Apologies Ulrich Drepper, Red Hat Geoff Clare, The Open Group * Old Business Andrew had circulated an email with next steps to commence a technical corrigendum. Action: Andrew to contact IEEE liaison to we understand the latest procedures for a TC (Michael Kipness) Closed, Michael has responded, and the procedures appear to be similar to the last time. Action: Andrew to tag the current proposed bugs for inclusion with a tc1 tag Still open. We discussed the tag and decided that a tag of tc1-2008 Andrew has edited the tc1 tag within mantis to rename it to tc1-2008. He has also added a filter called tc1-2008 to allow quick selection of the TC1 for 2008 candidate items. He is still to complete the pass of identifying all the candidates. * New business Bug 0000282: Extended Description wrong with respect to D command Accepted as Marked http://austingroupbugs.net/view.php?id=282 An interpretation is required. Interpretation response The standard states the behavior of the D command , and conforming implementations must conform to this. However, concerns have been raised about this which are being referred to the sponsor. Rationale: The current text does not match historic practice. Notes to the Editor (not part of this interpretation): At line 104833, replace: In default operation, sed cyclically shall append a line of input, less its terminating , into the pattern space. Normally the pattern space will be empty, unless a D command terminated the last cycle. The sed utility shall then apply in sequence all commands whose addresses select that pattern space, and at the end of the script copy the pattern space to standard output (except when −n is specified) and delete the pattern space. with: In default operation, sed cyclically shall append a line of input, less its terminating character, into the pattern space. Reading from input shall be skipped if a was in the pattern space prior to a D command ending the previous cycle. The sed utility shall then apply in sequence all commands whose addresses select that pattern space, until a command starts the next cycle or quits. If no commands explicitly started a new cycle, then at the end of the script the pattern space shall be copied to standard output (except when −n is specified) and the pattern space shall be deleted. At line 104926, replace: [2addr]D Delete the initial segment of the pattern space through the first and start the next cycle. with: [2addr]D If the pattern space contains no , delete the pattern space and start a normal new cycle as if the d command was issued. Otherwise, delete the initial segment of the pattern space through the first , and start the next cycle with the resultant pattern space and without reading any new input. Bug 0000293: restricting readdir normalization of filenames Accepted as Marked http://austingroupbugs.net/view.php?id=282 An interpretation is required. Interpretation response The standard does not speak to this issue, and as such no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor. Rationale: We believe that the original authors desired that the suggested response be a requirement, but there is no explicit text to that effect. Notes to the Editor (not part of this interpretation): In light of the resolution of 0000291, the term 'filename' is not NUL-terminated, so a new term is needed when referring to a string that is a filename followed by a null character. An updated Desired Action follows. This action focuses on XBD and XSH; XCU needs further preliminary work to document how delimited words on the shell command line correspond to null-terminated strings at the XSH library level. Discussion on 26 August favored EILSEQ (not EINVAL) for rejecting filenames not appropriate for a file system. After lines 1786 and 2193 (XBD Definitions), add two new sections and renumber accordingly: 3.171 Filename String A string consisting of a filename followed by a character. 3.275 Portable Filename A filename consisting only of characters from the portable filename character set, and where the first character is not . At line 7575 (XBD dirent.h DESCRIPTION), change: d_name[] Name of entry. to: d_name[] Filename string of entry. At line 7577 (XBD dirent.h DESCRIPTION), change: The character array d_name is of unspecified size, but the number of bytes preceding the terminating null byte shall not exceed {NAME_MAX}. to: The array d_name is of unspecified size, but shall contain a filename of at most {NAME_MAX} bytes followed by a terminating null byte. At line 7612 (XBD dirent.h RATIONALE), change: number of characters provided matches (or only slightly exceeds) the length of the filename. to: number of bytes provided matches (or only slightly exceeds) the length of the filename string. At line 55679 (XSH readdir DESCRIPTION), add a sentence: The d_name member shall be a filename string, and (if not dot or dot-dot) shall contain the same byte sequence as the last pathname component of the string used to create the directory entry, plus the terminating byte. At line 55799 (readdir rationale), add two new paragraphs: Compliant file systems are required to store filenames unaltered from how they were created (via open(), link(), mkdir(), mkfifo(), rename(), etc.). By definition, a filename string does not include a , even if a trailing was present in the pathname presented to mkdir() when creating a sub-directory. However, there are non-compliant file systems where filenames are converted to a canonical representation before a directory entry is created, such that it is possible to create a file using one string, then perform opendir() and a readdir() loop and not encounter the same string, because readdir() returns the canonical form of the string instead. Such non-compliant file systems also have the issue that multiple filenames can resolve to the same directory entry, with potentially confusing results. This standard cannot mandate the behavior of non-compliant file systems, and strictly compliant applications need not worry about dealing with such file systems, but it is a concern for developers of portable applications. Therefore, this standard recommends that file system implementations that perform canonicalization of filenames should reject attempts to create a directory entry with a non-canonical filename using the [EILSEQ] error. However, if a directory entry already exists, it is reasonable for a file system to permit accessing that file via a non-canonical filename. At line 730 (XBD 2.1.5.1), change "filename argument" to "pathname argument". At line 5566 (XBD 8.2 Internationalization Variables NLSPATH), change "filename" to "pathname". At lines 8933, 9060, and 9182 (XBD limits.h NAME_MAX, _POSIX_NAME_MAX, _XOPEN_NAME_MAX), change "bytes in a filename (not including the terminating null)" to "bytes in a filename (not including the terminating null of a filename string)". At line 9311 (XBD limits.h RATIONALE), change "filenames" to "pathnames". At line 11796 (XBD stdio.h FILENAME_MAX), change "filename string" to "pathname". At line 19512-19513 (XSH access EXAMPLES), change both instances of "filename" to "pathname". At line 20294 (XSH alphasort APPLICATION USAGE), change: If dir contains filenames that contain characters outside the domain of the collating sequence of the current locale, the alphasort() function need not provide a total ordering. to: If dir contains filenames that do not form character strings, or which contain characters outside the domain of the collating sequence of the current locale, the alphasort() function need not provide a total ordering. This condition is not possible if all filenames within the directory consist only of characters from the portable filename character set. At line 23739-23741 (XSH creat EXAMPLES), change both instances of "filename" to "pathname". At lines 25737 and 25741 (XSH exec DESCRIPTION), change both instances of "filename" to "filename string". At lines 26018 (XSH exec RATIONALE), change: The requirement on a Strictly Conforming POSIX Application also states that the value passed as the first argument be a filename associated with the process being started. Although some existing applications pass a pathname rather than a filename in some circumstances, a filename is more generally useful, since the common usage of argv[0] is in printing diagnostics. In some cases the filename passed is not the actual filename of the file; for example, many implementations of the login utility use a convention of prefixing a (’−’) to the actual filename, which indicates to the command interpreter being invoked that it is a "login shell". to: The requirement on a Strictly Conforming POSIX Application also states that the value passed as the first argument be a filename string associated with the process being started. Although some existing applications pass a pathname rather than a filename string in some circumstances, a filename string is more generally useful, since the common usage of argv[0] is in printing diagnostics. In some cases the filename passed is not the actual filename of the file; for example, many implementations of the login utility use a convention of prefixing a ('−') to the actual filename, which indicates to the command interpreter being invoked that it is a "login shell". At line 26577-26579 (XSH fattach EXAMPLES), change both instances of "filename" to "pathname". At line 27294-27296 (XSH fdetach EXAMPLES), change both instances of "filename" to "pathname". At line 29045 (XSH fnmatch NAME), change "filename" to "filename string". At line 29084 (XSH fnmatch APPLICATION USAGE), change "match filenames, rather than pathnames" to "match filename strings, rather than pathnames". At lines 29108, 29113, 29143, 29180, 29184 (XSH fopen), change all instances of "filename" to "pathname". At lines 30140-30150 (XSH fprintf EXAMPLES), change all instances of "filename" to "pathname". At lines 30870, 30877, 30881, 30885, 30893, 30914, 30923, 30927, 30939, 30964 (XSH freopen), change all instances of "filename" to "pathname". At line 31794 (XSH fstatat EXAMPLES), change "filename" to "pathname". At lines 34932-34949 (XSH getopt EXAMPLES), change all instances of "filename" to "pathname". At lines 40849-40860 (XSH localtime EXAMPLES), change all instances of "filename" to "pathname". At lines 49420, 42426, 42428, and 42430 (XSH mkdtemp DESCRIPTION), change "filename" to "pathname". At line 42465 (XSH mkdtemp EXAMPLES), change "Filename" to "Pathname". At lines 45377-45379 and 45409-45411 (XSH open EXAMPLES), change all instances of "filename" to "pathname". At line 46551 (XSH posix_spawn DESCRIPTION), change "filename" to "filename string". At line 46915 (XSH posix_spawn RATIONALE), change "filenames" to "pathnames". Delete lines 58669 and 58864 (XSH semget and semop EXAMPLES); "char filename[]" is unused in those examples. At line 66538-66539 (XSH tempnam EXAMPLES), change both instances of "filename" to "pathname". At line 67207 (XSH tmpnam DESCRIPTION), change "valid filename and that is not the same as the name of an existing file" to "valid pathname that does not name an existing file". At lines 67227-67235 (XSH tmpnam EXAMPLES), change all instances of "filename" to "pathname". At line 71031 (XSH wordexp APPLICATION USAGE), change "filename (or a list of filenames)" to "pathname (or a list of pathnames)". At line 98983 (XCU pathchk DESCRIPTION), change "Contains any character in any component that is not valid in its containing directory" to "Contains any byte sequence that is not valid in its containing directory". After line 21066 (XSH bind errors), add a new line: [EILSEQ] The last pathname component is not a portable filename, and cannot be created in the target directory. After line 26547 (XSH fattach errors), add a new line: [EILSEQ] The last pathname component of path is not a portable filename, and cannot be created in the target directory. After line 29168 (XSH fopen errors), add a new line with CX shading: [EILSEQ] The mode begins with 'w' or 'a', the file did not previously exist, and the last pathname component is not a portable filename, and cannot be created in the target directory. After line 30914 (XSH freopen errors), add a new line with CX shading: [EILSEQ] The mode begins with 'w' or 'a', the file did not previously exist, and the last pathname component is not a portable filename, and cannot be created in the target directory. After line 40149 (XSH link errors), add a new line: [EILSEQ] The last pathname component of path2 is not a portable filename, and cannot be created in the target directory. After line 42336 (XSH mkdir errors), add a new line: [EILSEQ] The last pathname component of path is not a portable filename, and cannot be created in the target directory. After line 42443 (XSH mkdtemp errors), add a new line: [EILSEQ] The string pointed to by template is not a portable filename, and cannot be created in the target directory. After line 42532 (XSH mkfifo errors), add a new line: [EILSEQ] The last pathname component of path is not a portable filename, and cannot be created in the target directory. After line 42682 (XSH mknod errors), add a new line: [EILSEQ] The last pathname component of path is not a portable filename, and cannot be created in the target directory. After line 45308 (XSH open errors), add a new line: [EILSEQ] O_CREAT was specified, the file did not exist, and the last pathname component of path is not a portable filename, and cannot be created in the target directory. After line 56990 (XSH rename errors), add a new line with CX shading: [EILSEQ] The last pathname component of the new pathname is not a portable filename, and cannot be created in the target directory. After line 65087 (XSH symlink errors), add a new line: [EILSEQ] The last pathname component of path2 is not a portable filename, and cannot be created in the target directory. At line 114743 (XRAT A.3 Definitions Controlling Terminal), change "filename" to "pathname". At lines 115268, 115269, 115303, 115312 (XRAT A.3 Definitions Symbolic Link), change all instances of "filename" to "pathname". At line 115565 (XRAT A.4.6 Filenames), change "filenames" to "filenames and pathnames". At line 119442 (XRAT B.2.8.3 Memory Management), change "filenames" to "pathnames". At line 123577 (XRAT C.1.1 Change History), change "fixed path filenames" to "fixed pathnames". At line 125577 (XRAT D.2.2 Process Management), change "filename" to "pathname". Next Steps ---------- The next call will be on September 2nd at 16:00 UK time/08:00 Pacific and will continue processing 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