Minutes of the 5 April 2012 Teleconference Austin-553 Page 1 of 1 Submitted by Andrew Josey, The Open Group. 7 April, 2012 Attendees Mark Brown, IBM, TOG OR Joerg Schilling, Fraunhofer Society Don Cragun, PASC OR Nick Stoughton, USENIX, ISO/IEC OR Geoff Clare, The Open Group Eric Blake, Red Hat Andrew Josey, The Open Group A reminder to all that the current review of TC1 ends on April 11th. Mark has set a flag so when a bug goes into Closed state it can only be reopened by an individual with Manager status. We need to communicate this to the Austin Group. It was agreed to add wording to the maintenance procedures document that is specific to Mantis bug reporting. Action: Andrew to add wording to the maintenance procedures document, and also to inform the Austin Group (a revision of Austin 112 has been drafted and is under review). An extract of Austin/112 follows: {snip} 8. It is the responsibility of individual reviewers to check the updated defect reports (or query the defect tracker system) to find out the disposition of their individual review comments. If a reviewer disagrees with the disposition he or she should (1) either raise it with his or her Organizational representative or (2) raise it during the next review resolution meeting, or submit an additional comment into the defect tracker system. {Insert new paragraph:} It should be noted that when a bug within the defect tracker is in the Closed or Resolved state it becomes read only. If a reviewer feels that the bug should be reopened as further changes are needed, then he or she should follow the advice in the previous paragraph, or raise the matter on the main reflector where it should be discussed. If the matter cannot be resolved by email, it should be discussed at the next regular meeting. If the outcome of the further discussion is that the bug should be reopened then a working group member with Manager status can adjust the bug settings to reopen the bug. * Old Business Bug 0000529: fildes unspecified on close()'s [EINTR] Re-OPENED http://austingroupbugs.net/view.php?id=529 Eric still has an open action on this item so it was deferred until the next meeting. *New business 0000520: posix_memalign should not modify memptr on failure Accepted as Marked http://austingroupbugs.net/view.php?id=520 This was re-opened. Geoff has proposed a revised proposal in bugnote 1184 which was accepted in the meeting. This item is marked for TC2-2008 Given the behaviour on Solaris, I am reopening this bug. Since the point of the requested change was to ensure that if ptr is set to null before a failed call, it will still be null afterwards, and since Solaris explicitly sets it to null, the desired coding style will still work on Solaris. The standard should allow either behaviour. Revised proposal: At line 46428 [XSH posix_memalign RETURN VALUE], change: otherwise, an error number shall be returned to indicate the error. to: otherwise, an error number shall be returned to indicate the error and the contents of memptr shall either be left unmodified or be set to a null pointer. On line 46436 change the EXAMPLES section from: None to: The following example shows how applications can obtain consistent behavior on error by setting *memptr to be a null pointer before calling posix_memalign(). void *ptr = NULL; ... //do some work, which might goto error if (posix_memalign(&ptr, align, size)) goto error; //do some more work, which might goto error ... error: free(ptr); //more cleanup; Bug 0000551: Clarify behavior when root node is deleted with tdelete() & binary search tree example http://austingroupbugs.net/view.php?id=551 Accept as Marked This item was tagged for TC2-2008 Although the desired action adds a new normative requirement, it is felt that all implementations already comply and no interpretation is required. At line 66450 (page 2099), change 'tsearch' to 'twalk'. At line 66353 (page 2097), after the sentence: "The variable pointed to by rootp shall be changed if the deleted node was the root of the tree." insert a new sentence: "If the deleted node was the root of the tree and had no children, the variable pointed to by rootp shall be set to a null pointer." At lines 66392-66446, replace the example program with: #include #include #include #include #include struct element { /* Pointers to these are stored in the tree. */ int count; char string[]; }; void *root = NULL; /* This points to the root. */ int main(void) { char str[_POSIX2_LINE_MAX+1]; int length = 0; struct element *elementptr; void *node; void print_node(const void *, VISIT, int); int node_compare(const void *, const void *), delete_root(const void *, const void *); while (fgets(str, sizeof(str), stdin)) { /* Set element. */ length = strlen(str); if (str[length-1] == '\n') str[--length] = '\0'; elementptr = (struct element *)malloc(sizeof(struct element) + length + 1); strcpy(elementptr->string, str); elementptr->count = 1; /* Put element into the tree. */ node = tsearch((void *)elementptr, &root, node_compare); if (node == NULL) { fprintf(stderr, "tsearch: Not enough space avaialble\n"); exit(EXIT_FAILURE); } else if (*(struct element **)node != elementptr) { /* A node containing the element already exists */ (*(struct element **)node)->count++; free(elementptr); } } twalk(root, print_node); /* Delete all nodes in the tree */ while (root != NULL) { elementptr = *(struct element **)root; printf("deleting node: string = %s, count = %d\n", elementptr->string, elementptr->count); tdelete((void *)elementptr, &root, delete_root); free(elementptr); } return 0; } /* * This routine compares two nodes, based on an * alphabetical ordering of the string field. */ int node_compare(const void *node1, const void *node2) { return strcmp(((const struct element *) node1)->string, ((const struct element *) node2)->string); } /* * This comparison routine can be used with tdelete() * when explicitly deleting a root node, as no comparison * is necessary. */ int delete_root(const void *node1, const void *node2) { return 0; } /* * This routine prints out a node, the second time * twalk encounters it or if it is a leaf. */ void print_node(const void *ptr, VISIT order, int level) { const struct element *p = *(const struct element **) ptr; if (order == postorder || order == leaf) { (void) printf("string = %s, count = %d\n", p->string, p->count); } } Bug 0000553: Add new type of shell and shell feature requirement for new shell in posix. OPEN http://austingroupbugs.net/view.php?id=553 This is being left open pending a full proposal. Andrew took an action to include a note documenting the process for New Work Items. (completed, see http://austingroupbugs.net/view.php?id=553#c1191 ) Bug 0000519: Add to make macro variable pattern substitution (expansion), e.g., $(foo:%.o=%.c) OPEN http://austingroupbugs.net/view.php?id=519 Some further discussion occurred on this bug. Action: Joerg agreed to take an action to update the bug. Bug 0000518: Allow make's "include" to include multiple files Accepted as Marked http://austingroupbugs.net/view.php?id=518 (This is the desired action minus the "and " addition, which is not needed because includes and characters.) Replace lines 95667-95688 in make's definition ("Include Lines") with: Include Lines If the word include appears at the beginning of a line and is followed by one or more characters, the string formed by the remainder of the line shall be processed as follows to produce one or more pathnames: * The trailing and any comment shall be discarded. If the resulting string contains any double-quote characters (’"’) the behavior is unspecified. * The resulting string shall be processed for macro expansion (see Macros (on page 2914). * Any characters that appear after the first non- shall be used as separators to divide the macro-expanded string into fields. It is unspecified whether pathname expansion (see Section 2.13, on page 2332) is also performed. * If the processing of separators and optional pathname expansion results in zero fields, the behavior is unspecified. If it results in at least one non-empty field, these fields are taken as the pathnames. For each pathname so identified, in the order specified: * Each pathname that does not begin with a ’/’ shall be treated as relative to the current working directory of the process, not relative to the directory containing the makefile. If the file does not exist in this location, it is unspecified whether additional directories are searched. * The contents of the file specified by the pathname shall be read and processed as if they appeared in the makefile in place of the include line. If the file ends with an escaped the behavior is unspecified. * The file may itself contain further include lines. Implementations shall support nesting of include files up to a depth of at least 16. Bug 0000516: Calling longjmp() from a signal handler OPEN http://austingroupbugs.net/view.php?id=516 Action: Geoff agreed to draft a proposed resolution Bug 0000514: Enhance internal macros in make OPEN http://austingroupbugs.net/view.php?id=514 Action: Joerg agreed to do some testing to investigate behavior and then to add a note with his findings. Next Steps ---------- The next call is on April 12 and will continue processing defect reports. This call will be for the regular 90 minutes. http://austingroupbugs.net See the calendar for the list of dialup numbers. An IRC channel will be available for the meeting irc://irc.freenode.org/austingroupbugs Andrew Josey will provide a calendar invitation at a later time.