Austin Group Minutes of the 19 Apr 2007 Teleconference Austin-361 Page 1 of 1 Submitted by Andrew Josey, The Open Group. April 20, 2007 Attendees Andrew Josey, The Open Group Don Cragun , Sun, PASC OR Mark Brown, IBM, TOG OR Ulrich Drepper, Red Hat Geoff Clare, The Open Group Nick Stoughton, USENIX, ISO/IEC OR Mats Wichman, Intel (IRC) Action item review --------------------- ACTION AI-2005-01-01: Don Cragun to present paper on pathname resolution. OPEN ACTION 2007-02-01: Andrew Josey to make a pass through current closed aardvarks against approved std, to move items to SD-5 or interpretations when ready. CLOSED: Andrew has prepared updates for SD5, and also the list of interpretations and circulated those to the reflector. These are also now documented in Austin/357. ACTION 2007-02-02: Andrew Josey to talk to IEEE and ITTF about the name to use in the text: is POSIX.1:200x satisfactory to all? CLOSED No status yet to report from IEEE, we plan to make the name change in D3R as its a macro. ACTION 2007-02-06: Ulrich to research issue 15 and propose text for XSH intro to explain directory searching, with special respect to the *at() functions. OPEN (Geoff has posted some mail on this, come back to this when Ulrich has the cycles) Ulrich has also now posted some thoughts on this item. ACTION 2007-02-09: ALL review sample c99 pages when available with an audience that includes non standards developers. OPEN Aardvark Bug Reports -------------------- We expect to discuss the finegrain aardvark reports next week http://www.opengroup.org/austin/aardvark/finegrain/ We discussed how we should handle the issues raised on the reflector, primarily pathconf and fine granularity time stamps. It was decided to start with the aardvark and then return to the issue later. All changes in the aardvark are against D2R. XSHfg ERN 60 Accept as marked below Replace entire NAME, SYNOPSIS, and DESCRIPTION sections with: NAME utimensat, utimes set file access and modification times relative to directory file descriptor SYNOPSIS #include int utimensat(int fd, const char *path, const struct timespec times[2]); [XSI] #include int utimes(const char *path, const struct timeval times[2]); [/XSI] DESCRIPTION The utimensat( ) function shall set the access and modification times of the file pointed to by the path argument to the value of the times argument. The utimensat( ) function allows time specifications accurate to the nanosecond. For utimensat( ), the times argument is an array of two timespec structures. The first array member represents the date and time of last access, and the second member represents the date and time of last modification. The times in the timespec structure are measured in seconds and nanoseconds since the Epoch. The file's relevant timestamp shall be set to the greatest value supported by the file system that is not greater than the specified time If the tv_nsec field of a struct timespec has the special value UTIME_NOW, the file's relevant timestamp shall be set to the greatest value supported by the file system that is not greater than the current time. If the tv_nsec field has the special value, UTIME_OMIT the file's relevant timestamp shall not be changed. In either case, the tv_sec field shall be ignored. If the times argument is a null pointer, both the access and modification timestamps shall be set to the greatest value supported by the file system that is not greater than the current time. If path specifies a relative path, the file to be used shall be relative to the directory associated with the file descriptor fd instead of the current working directory. If utimensat() is passed the special value AT_FDCWD in the fd parameter, the current working directory shall be used. Only a process with the effective user ID equal to the user ID of the file, or with write access to the file, or with appropriate privileges may use utimensat() with a null pointer as the times argument or with both tv_nsec fields set to the special value UTIME_NOW. Only a process with the effective user ID equal to the user ID of the file or with appropriate privileges may use utimensat() with a non-null times argument that does not have both tv_nsec fields set to UTIME_NOW and does not have both tv_nsec fields set to UTIME_OMIT. If both tv_nsec fields are set to UTIME_OMIT, no ownership or permissions check shall be performed for the file, but other error conditions may still be detected (including EACCES errors related to the path prefix). Upon completion, utimensat( ) shall mark the last file status change timestamp for update. The utimes( ) function shall be equivalent to the utimensat() function with the special value AT_FDCWD as the fd argument, except that the times argument is a struct timeval rather than struct timespec, and accuracy is only to the microsecond, not nanosecond, and rounding towards the nearest second may occur Add to RATIONALE section. The standard developers considered including a special case for the permissions required by utimensat() when one tv_nsec field is UTIME_NOW and the other is UTIME_OMIT. One possibility would be to include this case in with the cases where times is a null pointer or both fields are UTIME_NOW, where the call is allowed if the process has write permission for the file. However, associating write permission with an update to just the last data access timestamp (which is normally updated by read()) did not seem appropriate. The other possibility would be to specify that this one case is allowed if the process has read permission, but this was felt to be too great a departure from the utime() and utimes() functions on which utimensat() is based. If an application needs to set the last data access timestamp to the current time for a file on which it has read permission but is not the owner, it can do so by opening the file, reading one or more bytes (or reading a directory entry, if the file is a directory), and then closing it. XSHfg ERN 61 Accept as marked below change from: [EACCES] Search permission is denied by a component of the path prefix; or the times argument is a null pointer and the effective user ID of the process does not match the owner of the file and write access is denied. to: [EACCES] Search permission is denied by a component of the path prefix; or the times argument is a null pointer, or both tv_nsec values are UTIME_NOW, and the effective user ID of the process does not match the owner of the file and write access is denied. and add: [EINVAL] Either of the times argument structures specified a tv_nsec value that was neither UTIME_NOW nor UTIME_OMIT and was a value less than zero or a value greater than or equal to 1 000 million [EINVAL] A new file timestamp would be a value whose tv_sec component is not a value supported by file system. (editors to check whether we need additional commas in the first EINVAL case , or whether it would be be better as a bullet list) XBD ERN 8 Accept as marked below Add a new paragraph to sys/stat.h p367 line 12812 The following symbolic constants shall be defined as distinct integer values outside of the range [0,999 999 999], for use with the utimensat() function: UTIME_NOW UTIME_OMIT XSHfg ERN 62 Accept as marked below Action: Change from: [EPERM] The times argument is not a null pointer and the calling process' effective user ID has write access to the file but does not match the owner of the file and the calling process does not have the appropriate privileges. to: [EPERM] The times argument is not a null pointer, does not have both tv_nsec fields set to UTIME_NOW, does not have both tv_nsec fields set to UTIME_OMIT, the calling process' effective user ID has write access to the file but does not match the owner of the file, and the calling process does not have the appropriate privileges. XSHfg ERN 63 Accept XSHfg ERN 64 Accept as marked below Change "futimesat()" to "utimensat()". In addition change the APPLICATION USAGE from: For applications portability, the utime() function should be used to set file access and modification times instead of utimes(). To: None. XSHfg ERN 65 Accept XSHfg ERN 66 Accept XSHfg ERN 67 Accept This now means that the first sets of finegrain aardvarks for XBD and XSH can be passed to the editors for actioning in D3R. http://www.opengroup.org/austin/aardvark/finegrain/xshfgbug.txt http://www.opengroup.org/austin/aardvark/finegrain/xbdfgbug.txt Next Steps ----------- Andrew will update the aardvark reports with the latest inbound defect reports. Next teleconference meeting will be 3 May 2007. Note that the time will be at 16:00 UK local time New number for next week: +1 877-421-0003 Passcode: 953276 See http://www.opengroup.org/austin/. An IRC channel will be available for the meeting irc://irc.freestandards.org #austin 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