Austin Group Minutes of the 16 November Teleconference Austin-328 Page 1 of 1 Submitted by Andrew Josey, The Open Group. November 17, 2006 Attendees Andrew Josey, The Open Group Don Cragun , Sun, PASC OR Geoff Clare, The Open group Nick Stoughton, USENIX, ISO/IEC OR Mark Brown, IBM, TOG OR Apologies: Ulrich Drepper, Red Hat 1. Action item review --------------------- ACTION 2005-01-01: Don Cragun to present paper on pathname resolution. OPEN ACTION 2006-02-04: Nick Stoughton to submit an aardvark against link() when the appropriate time is reached w.r.t. approval of strawman 2. OPEN ACTION 2006-09-01: Ulrich Drepper to prepare a paper making a recomendation on imaginary type in C99. OPEN ACTION 2006-09-02: Ulrich and Nick to develop a draft PAR and criteria for C++ POSIX binding for discussion. OPEN (in progress) ACTION 2006-09-06: Ulrich to file aardvark against pthread_mutexattr_getprotcol for propogation of inheritance for waiters on non-PI mutexes. CLOSED ACTION 2006-09-08: Don Cragun to examine every XCU synopsis in the next draft to check for correctness, and file aardvarks as appropriate. OPEN ACTION 2006-09-13: Andrew to make a pass through current closed aardvarks against approved std, to move items to SD-5 or interpretations when ready. Closed for D2R, but ongoing . See Austin/325 for the list of specific changes for D2R from SD/5. Action AI-2006-06-01: Andrew to work out the full set of changes for recirculation for XSH ERN 132 OPEN, ongoing in progress Draft Status ------------ ISO Ballot commenced Nov 2nd. Andrew has not yet been able to start the IEEE ballot. Aardvark Bug Reports -------------------- We picked up on the current aardvark http://www.opengroup.org/austin/aardvark/latest/ XSH ERN 166 _SC_GETGR_R_SIZE_MAX Accept as marked below. _SC_GETGR_R_SIZE_MAX is a fixed limit where it is not necessary In the DESCRIPTION Change from: The maximum size needed for this buffer can be determined with the {_SC_GETGR_R_SIZE_MAX} sysconf() parameter. To: A call to sysconf (_SC_GETGR_R_SIZE_MAX ) returns either -1 without changing errno or an initial value suggested for the size of this buffer. Also for: getpwnam_r: Change from: The maximum size needed for this buffer can be determined with the {_SC_GETPW_R_SIZE_MAX} sysconf() parameter. To: A call to sysconf (_SC_GETPW_R_SIZE_MAX ) returns either -1 without changing errno or an initial value suggested for the size of this buffer. getpwuid_r Change from: The maximum size needed for this buffer can be determined with the {_SC_GETPW_R_SIZE_MAX} sysconf() parameter To: A call to sysconf (_SC_GETPW_R_SIZE_MAX ) returns either -1 without changing errno or an initial value suggested for the size of this buffer. getgrnam_r Change from: The maximum size needed for this buffer can be determined with the {_SC_GETGR_R_SIZE_MAX} sysconf() parameter. To: A call to sysconf (_SC_GETGR_R_SIZE_MAX ) returns either -1 without changing errno or an initial value suggested for the size of this buffer. On the sysconf() page change to "Maximum size" to "Initial size" for the following text: "Maximum size of getgrgid_r() and.." "Maximum size of getpwuid_r() and..." In APPLICATION USAGE for getgrid_r/getgrnam_r, getpwuid_r/getpwnam_r Portable applications should take into account that is usual for an implementation to return -1 from sysconf() indicating that there is no maximum for ZZZ Where ZZZ is _SC_GETGR_R_SIZE_MAX for getgrgid_r / getgrnam_r _SC_GETPW_R_SIZE_MAX for getpwuid_r / getpwnam_r Add EXAMPLES as follows to the respective pages: EXAMPLE for getgrnam_r: Note that sysconf(_SC_GETGR_R_SIZE_MAX) may return -1 if there is no hard limit on the size of the buffer needed to store all the groups returned.This example shows how an application can allocate a buffer of sufficient size to work with getgrnam_r(). long int initlen = sysconf(_SC_GETGR_R_SIZE_MAX); size_t len; if (initlen == -1) /* Default initial length. */ len = 1024; else len = (size_t) initlen; struct group result; struct group *resultp; char *buffer = malloc(len); if (buffer == NULL) ...handle error... int e; while ((e = getgrnam_r("somegroup", &result, buffer, len, &resultp)) == ERANGE) { size_t newlen = 2 * len; if (newlen < len) ...handle error... len = newlen; char *newbuffer = realloc(buffer, len); if (newbuffer == NULL) ...handle error... buffer = newbuffer; } if (e != 0) ...handle error... EXAMPLE for getgrgid_r: Note that sysconf(_SC_GETGR_R_SIZE_MAX) may return -1 if there is no hard limit on the size of the buffer needed to store all the groups returned.This example shows how an application can allocate a buffer of sufficient size to work with getgrid_r() long int initlen = sysconf(_SC_GETGR_R_SIZE_MAX); size_t len; if (initlen == -1) /* Default initial length. */ len = 1024; else len = (size_t) initlen; struct group result; struct group *resultp; char *buffer = malloc(len); if (buffer == NULL) ...handle error... int e; while ((e = getgrgid_r(42, &result, buffer, len, &resultp)) == ERANGE) { size_t newlen = 2 * len; if (newlen < len) ...handle error... len = newlen; char *newbuffer = realloc(buffer, len); if (newbuffer == NULL) ...handle error... buffer = newbuffer; } if (e != 0) ...handle error... EXAMPLE for getpwnam_r: Note that sysconf(_SC_GETPW_R_SIZE_MAX) may return -1 if there is no hard limit on the size of the buffer needed to store all the groups returned.This example shows how an application can allocate a buffer of sufficient size to work with getpwnam_r() long int initlen = sysconf(_SC_GETPW_R_SIZE_MAX); size_t len; if (initlen == -1) /* Default initial length. */ len = 1024; else len = (size_t) initlen; struct passwd result; struct passwd *resultp; char *buffer = malloc(len); if (buffer == NULL) ...handle error... int e; while ((e = getpwnam_r("someuser", &result, buffer, len, &resultp)) == ERANGE) { size_t newlen = 2 * len; if (newlen < len) ...handle error... len = newlen; char *newbuffer = realloc(buffer, len); if (newbuffer == NULL) ...handle error... buffer = newbuffer; } if (e != 0) ...handle error... EXAMPLE for getpwuid_r: Note that sysconf(_SC_GETPW_R_SIZE_MAX) may return -1 if there is no hard limit on the size of the buffer needed to store all the groups returned.This example shows how an application can allocate a buffer of sufficient size to work with getpwuid_r() long int initlen = sysconf(_SC_GETPW_R_SIZE_MAX); size_t len; if (initlen == -1) /* Default initial length. */ len = 1024; else len = (size_t) initlen; struct passwd result; struct passwd *resultp; char *buffer = malloc(len); if (buffer == NULL) ...handle error... int e; while ((e = getpwuid_r(42, &result, buffer, len, &resultp)) == ERANGE) { size_t newlen = 2 * len; if (newlen < len) ...handle error... len = newlen; char *newbuffer = realloc(buffer, len); if (newbuffer == NULL) ...handle error... buffer = newbuffer; } if (e != 0) ...handle error... XSH ERN 167 signal handlers and errno Accept as marked below Page 33 Section 2.4.3 Add a new paragraph after line 1376, indented the same as the preceding paragraph: "Operations which obtain the value of errno and operations which assign a value to errno shall be async-signal-safe." On page 1366 line 42673 section sigaction Change: "may want to save and restore its value." to: "should save and restore its value in order to avoid the possibility that delivery of a signal in between an error return from a function that sets errno and the subsequent examination of errno could result in the signal-catching function changing the value of errno." and in the next paragraph on line 42688 change: "refers to any object with static storage duration other than by assigning ..." to: "refers to any object other than errno with static storage duration other than by assigning ..." Change line 42690 from: "Furthermore, if such a call fails, the value of errno is unspecified." To: "Unless all signal handlers have errno set on return as it was on entry, the value of errno is unspecified." Next Steps ----------- Andrew will update the aardvark reports with the latest inbound defect reports. Next teleconference meeting November 28th 2006 Note that this is a change of day , TUESDAY. 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