Minutes from the September 5 2002 Teleconference Austin-130 Page 1 of 1 Submitted by Andrew Josey, The Open Group. September 5, 2002 Attendees: Andrew Josey, Chair Don Cragun, PASC OR Nick Stoughton, WG15 OR Mark Brown, TOG OR Ben Harris The purpose of the call was to review recent inbound aardvark against the final text (before the August 15 cutoff for TC1), TC1 draft 3 and against the final text (after the August 15 cutoff for TC1) . These minutes contain a summary of the resolutions of the meeting, but defer to the aardvark change request reports which will appear in the documt register subsequently to the meeting. The following summary notation: Accept=Accept for TC1, A/M=Accept as marked for TC1, D=Duplicate, R=Reject,OPEN=Open Accept* = Accept the bug report, not in scope for TC1 since beyond cutoff date, will send down the interpretations track. =================================================================== 1.Open Aardvark against the Finaltext that came in in time to be considered for TC1 inclusion XSH: http://www.opengroup.org/austin/aardvark/finaltext/xshbug.txt ERN 1. A/M, On page 92 Replace lines 3543-3546 with: "[CX] The abnormal termination processing shall include the default actions defined for SIGABRT and may include an attempt to effect fclose() on all open streams. Add to the Rationale for abort: "C99 requires the abort() function to be async-signal-safe. Since this standard defers to ISO C, this required a change to the DESCRIPTION from "shall include the effect of fclose()" to "may include an attempt to effect fclose()". The revised wording permits some backwards compatibility and avoids a potential deadlock situation. The Open Group resolution bwg2002-003 is applied, removing the following XSI shaded paragraph from the DESCRIPTION: "On XSI-conformant systems, in addition the abnormal termination processing shall include the effect of fclose() on message catalog descriptors." There were several reasons to remove this paragraph: * No special processing of open message catalogs needs to be performed prior to abnormal process termination. * The main reason to specifically mention that abort() include the effect of fclose() on open streams is to flush output queued on the stream. Message catalogs in this context are read-only and, therefore, do not need to be flushed. * The effect of fclose() on a message catalog descriptor is unspecified. Message catalog descriptors are allowed, but not required to be implemented using a file descriptor, but there is no mention in the standard of a message catalog descriptor using a standard I/O stream FILE object as would be expected by fclose(). Add to the Change History Changes are made to the DESCRIPTION for C99 alignment. The Open Group resolution bwg2002-003 is applied. Add the abort() function to the list of async-cancel-safe functions in section 2.4.3 on page 33 line 1336. ERN 2 A/M Action: Add a new sentence after the THR shaded sentence that ends on line 12700: "When the application calls fork from a signal handler and any of the fork handlers registered by pthread_atfork() calls a function that is not async-signal-safe, the behavior is undefined." Add a new paragraph in the rationale after line 12807: "While fork() is async-signal-safe, there is no way for an implementation to determine whether the fork handlers established by pthread_atfork() are async-signal-safe. The fork handlers may attempt to execute portions of the implementation that are not async-signal-safe, such as those that are protected by mutex's, leading to a deadlock condition. It is therefor undefined for the fork handlers to execute functions that are not async-signal-safe when fork() is called from a signal handler." ERN 3 A/M After the second paragraph in the Description section (sorry, I'm reading the HTML version from opengroup.org, so no line numbers), add in smaller type this note copied from the gethostbyname description: Note: In many cases it is implemented by the Domain Name System, as documented in RFC 1034, RFC 1035, and RFC 1886. After the Description paragraph starting "If the AI_CANONNAME flag", add in smaller type: Note: Since different implementations use different conceptual models, the terms "canonical name" and "alias" cannot be precisely defined for the general case. However, Domain Name System implementations are expected to interpret them as they are used in RFC 1034. Note: A numeric host address string is not a "name", and thus does not have a "canonical name" form; no address to hostname translation is performed. See below for handling of the case where a canonical name cannot be obtained. Add to the Application Usage section: The term "canonical name" is misleading; it is taken from the Domain Name System (RFC 2181). It should be noted that the canonical name is a result of alias processing, and not necessarily a unique attribute of a host, address, or set of addresses. See RFC 2181 for more discussion of this in the Domain Name System context. ERN 4 A/M Change the text from "The application shall ensure that the value of argc matches the number of integer arguments passed to func; otherwise, the behavior is undefined." to "The application shall ensure that the value of argc matches the number of arguments of type int passed to func; otherwise, the behavior is undefined." ERN 5 A/M Lines 30749-30750 should be changed to: If the correct value would cause overflow, a range error shall occur and pow(), powf(), and powl() shall return +/-HUGE_VAL, +/-HUGE_VALF, and +/-HUGE_VALL, respectively with the same sign as the correct value of the function. ERN 6 A/M Change from If sem is locked, then the value returned by sem_getvalue() is either zero or a negative to: If sem is locked, then the object to which sval points shall either be set to zero or to a negative... ERN 7 Accept ERN 8 A/M Note should be tan in the problem statement. Lines 45779-45780 should be changed to: If the correct value would cause overflow, a range error shall occur and tan(), tanf() and tanl() shall return +/-HUGE_VAL, +/-HUGE_VALF, and +/-HUGE_VALL, respectively with the same sign as the correct value of the function. ERN 9 A/M Lines 46605-46607 should be changed to: If the correct value would cause overflow, a range error shall occur and tgamma(), tgammaf(), and tgammal()shall return +/-HUGE_VAL, +/-HUGE_VALF, and +/-HUGE_VALL, respectively with the same sign as the correct value of the function. ERN 10 Accept ================================ XCU http://www.opengroup.org/austin/aardvark/finaltext/xcubug.txt ERN 1 Accept ERN 2 Accept ERN 3 Accept ERN 4 A/M SYNOPSIS Change P442, L17024 (the entire SYNOPSIS section) to: file [-dh][-M file][-m file] file... file -i [-h] file... with both lines shaded with a UP marking. DESCRIPTION Replace P442, L17027-17039 (the entire DESCRIPTION section) with: The file utility shall perform a series of tests in sequence on each specified file in an attempt to classify it: 1. If file does not exist, cannot be read, or its file status could not be determined, the output shall indicate that the file was processed, but that its type could not be determined. 2. If the file is not a regular file, its file type shall be identified. The file types directory, FIFO, socket, block special, and character special shall be identified as such. Other implementation-defined file types may also be identified. If file is a symbolic link, by default the link shall be resolved and file shall test the type of file referenced by the symbolic link. (See the -h and -i options below.) 3. If the length of file is zero, it shall be identified as an empty file. 4. The file utility shall examine an initial segment of file and shall make a guess at identifying its contents based on position sensitive tests. (The answer is not guaranteed to be correct. See the -d, -M and -m options below.) 5. The file utility shall examine file and make a guess at identifying its contents based on context sensitive default system tests. (The answer is not guaranteed to be correct.) 6. The file shall be identified as a data file. OPTIONS Change the description of the -d option on P442, L17044 to: -d Apply any position sensitive default system tests and context sensitive default system tests to the file. This is the default if no -M nor -m option is specified. Change the description of the -i, -M, and -m options, and the interactions between options on P442, L17048-17060 to: -i If a file is a regular file, do not attempt to classify the type of the file further, but identify the file as specified in the STDOUT section." -M file Specify the name of a file containing position sensitive tests that shall be applied to a file in order to classify it (see the EXTENDED DESCRIPTION). No position sensitive default system tests nor context sensitive default system tests shall be applied unless the -d option is also specified. -m file Specify the name of a file containing position sensitive tests that shall be applied to a file in order to classify it (see the EXTENDED DESCRIPTION). If the -m option is specified without specifying the -d option or the -M option, position sensitive default system tests shall be applied after the position sensitive tests specified by the -m option. If the -M option is specified with the -d option, the -m option, or both; or the -m option is specified with the -d option; the concatenation of the position sensitive tests specified by these options shall be applied in the order specified by the appearance of these options. If a -M or -m file option-argument is -, the results are unspecified. STDOUT Change the text on P443-444, L17089-17115 to: The values for are unspecified, except that in the POSIX locale, if file is identified as one of the types listed in the following table, shall contain (but is not limited to) the corresponding string, unless the file is identified by a position sensitive test specified by a -M or -m option. Each space shown in the strings shall be exactly one . Table 4-8 File Utility Output Strings _____________________________________________________________________________ If file is: shall contain Notes the string: _____________________________________________________________________________ nonexistent cannot open Block special block special 1 Character special character special 1 Directory directory 1 FIFO fifo 1 Socket socket 1 Symbolic link symbolic link to 1 Regular file regular file 1,2 Empty regular file empty 3 regular file that cannot be read cannot open 3 Executable binary executable 4,6 ar archive library (see ar) archive 4,6 Extended cpio format (see pax) cpio archive 4,6 Extended tar format (see ustar in pax) tar archive 4,6 Shell script commands text 5,6 C-language source c program text 5,6 FORTRAN source fortran program text 5,6 regular file whose type cannot be determined data _____________________________________________________________________________ Notes: 1. This is a file type test. 2. This test is applied only if the -i option is specified. 3. This test is applied only if the -i option is not specified. 4. This is a position sensitive default system test. 5. This is a context sensitive default system test. 6. Position sensitive default system tests and context sensitive default system tests are not applied if the -M option is specified unless the -d option is also specified. In the POSIX locale, if file is identified as a symbolic link (see the -h option), the following alternative output format shall be used: "%s: %s %s\n", , , " If the file named by the file operand does not exist, cannot be read, or the type of the file named by the file operand cannot be determined, this shall not be considered an error that affects the exit status. EXTENDED DESCRIPTION Change "one test per line" on P444, L17121 to "one position sensitive test per line". APPLICATION USAGE Add to end of paragraph on P446, L17223-17225: Note also that on systems that recognize shell script files starting with "#!" as executable files, these may be identified as executable binary files rather than as shell scripts. RATIONALE Add new paragraphs after P447, L17248: The IEEE Std 1003.1-2001 description of default system tests and the interaction between the -d, -M, and -m options didn't clearly indicate that there were two types of "default system tests". The "position sensitive tests" determine file types by looking for certain string or binary values at specific offsets in the file being examined. These position sensitive tests were implemented in historical systems using the magic file described above. Some of these tests are now built into the file utility itself on some implementations so the output can provide more detail than can be provided by magic files. For example, a magic file can easily identify a core file on most implementations, but can't name the program file that dropped the core. A magic file could produce output like: /home/dwc/core: ELF 32-bit MSB core file SPARC Version 1 but by building the test into the file utility, you could get output like: /home/dwc/core: ELF 32-bit MSB core file SPARC Version 1, from 'testprog' These extended built-in tests are still to be treated as position sensitive default system tests even if they are not listed in /etc/magic or any other magic file. The context sensitive default system tests were always built into the file utility. These tests looked for language constructs in text files trying to identify shell scripts, C, FORTRAN, and other computer language source files, and even plain text files. With the addition of the -m and -M options the distinction between position sensitive and context sensitive default system tests became important becuase the order of testing is important. The context sensitive system default tests should never be applied before any position sensitive tests even if the -d option is specified before a -m option or -M option due to the high probability that the context sensitive system default tests will incorrectly identify arbitrary text files as text files before position sensitive tests specified by the -m or -M option would be applied to give a more accurate identification. Leaving the meaning of -M - and -m - unspecified allows an existing prototype of these options to continue to work in a backwards compatible manner. (In that implementation, -M - was roughly equivalent to -d in this specification.) ERN 5 A/M Add to line 26489 p 688 If the patched file is processed with the C preprocessor, where the macro "define" is defined, the output shall contain the changes from the patch file, otherwise the output shall not contain the patches specified in the patch file. ERN 6 Accept ERN 7 Accept ==================================== XBD http://www.opengroup.org/austin/aardvark/finaltext/xbdbug.txt ERN 1 Accept ERN 2 A/M Add to APP USAGE The iswblank() function was a late addition to the ISO C standard and introduced at the same time as the ISO C standard introduced , which contains all of the isw* functions. The Open Group specification had previously aligned with the MSE draft and had introduced the rest of the isw* functions into . For backwards compatability, the original set of isw* functions, without iswblank(), are permitted (as an XSI extension) in . For maximum portability, applications should include the in order to obtain declarations for the isw* functions. Add to Change History The APPLICATION USAGE section is added. ====================================================== 2. Aardvark against TC1 D3 XSH http://www.opengroup.org/austin/aardvark/tc1d3/xshbug.txt ERN 1 Accept ERN 2 Accept XBD http://www.opengroup.org/austin/aardvark/tc1d3/xbdbug.txt ERN 1 Accept =========================================================== 3. Aardvark against the Finaltext for TC2 XSH http://www.opengroup.org/austin/aardvark/tc2d0/xshbug.txt ERN 1 Accept* ERN 2 Accept* ERN 3 Accept* ERN 4 OPEN XCU http://www.opengroup.org/austin/aardvark/tc2d0/xcubug.txt ERN 1 Accept* XBD http://www.opengroup.org/austin/aardvark/tc2d0/xbdbug.txt ERN 1 Accept* ERN 2 Accept* Draft Schedule -------------- The next draft is scheduled for Monday September 9 and will be for a 10 day circulation.