From ajosey@rdg.opengroup.org Mon Mar 30 12:44:13 1998 Received: from mailgate.rdg.opengroup.org (mailgate.rdg.opengroup.org [192.153.166.4]) by dkuug.dk (8.6.12/8.6.12) with SMTP id MAA05246 for ; Mon, 30 Mar 1998 12:44:11 +0200 Received: by mailgate.rdg.opengroup.org; id AA25326; Mon, 30 Mar 1998 10:43:24 GMT Message-Id: <9803301043.AA25326@mailgate.rdg.opengroup.org> Received: from mailhome [192.153.166.5] by mailgate.rdg.opengroup.org via smtpd ; Mon Mar 30 10:43 GMT 1998 Received: by mailhome.rdg.opengroup.org (1.36.108.10/16.2) id AA15112; Mon, 30 Mar 1998 11:42:46 +0100 From: ajosey@rdg.opengroup.org (Andrew Josey) Date: Mon, 30 Mar 1998 11:42:45 +0100 Reply-To: ajosey@rdg.opengroup.org (Andrew Josey) X-Mailer: Mail User's Shell (7.2.5 10/14/92) To: sc22wg15@dkuug.dk Subject: Defect Report concerning: IEEE Std. 1003.1-1996, ISO/IEC 9945-1:1996 - C API For the attention of the WG15 Project Editors: Defect Report concerning: IEEE Std. 1003.1-1996, ISO/IEC 9945-1:1996 - C API Defect report number: IS9945-1:1996#84 Clause: Clause 14.1, P309 & subclause 14.2.2.1, P312 (timer_create()) PASC Interpretation Ref: pasc-1003.1-84 Topic: time.h and namespace ---------------------------------------------------------------------------- This is an unapproved interpretation of PASC 1003.1-1996, ISO/IEC 9945-1:1996 - C API. Use of the information contained in this unapproved document is at your own risk. Last update: 30 March,1998 ---------------------------------------------------------------------------- 1003.1-96 #84 _____________________________________________________________________________ Interpretation Number: XXXX Topic: time.h and namespace Relevant Sections: Clause 14.1, P309 & subclause 14.2.2.1, P312 (timer_create()) Interpretation Request: (Defect Report) ----------------------- Date: Wed, 25 Feb 1998 11:12:35 -0600 From: Don.Cragun@eng.sun.com WG15 Status Block: ------------------------------------------------------------------------ 1 Defect report number: IS9945-1:1996#84 2 Submitter: IEEE PASC 30 March 1998 3 Addressed to: JTC1/SC22 /WG15 editor's group on IS 9945-1 4 WG secretariat: ------------------------------------------------------------------------ 5 Date circulated by WG secretariat: 6 Deadline on response from editor: ------------------------------------------------------------------------ 7 Defect Report concerning (number and title of International Standard or DIS final text, if applicable): IEEE Std 1003.1-1996 (incorporates 1003.1-1990, 1003.1b-1993, 1003.1c-1995, 1003.1i-1995) (ISO 9945-1:1996) ------------------------------------------------------------------------ 8 Qualifier (e.g. error, omission, clarification required): 2 Error=1 , Omission=2, Clarification=3 ------------------------------------------------------------------------ 9 References in document (e.g. page, clause, figure, and/or table numbers): Clause 14.1, P309 & subclause 14.2.2.1, P312 (timer_create()) ------------------------------------------------------------------------ 10 Nature of defect (complete, concise explanation of the perceived problem): Although the synopsis for timer_create() (POSIX.1-1996, P312, L138-141) shows that must be included before to pick up the definition of struct sigevent, there are lots of synopses in POSIX.1-1996 that just specify . When an application using routines defined in that don't also require (e.g. clock_gettime()) is built, most compilers generate warnings about a dubious tag declaration for struct sigevent. This is because the specification for does not require (or even allow) struct sigevent (and the union sigval needed to define its sigev_notify_function element) to be defined and does not reserve namespace to define elements of struct sigevent and union sigval when is included. Even though these are warnings, not errors, our customers complain when they use standard functions from standard headers and don't get "clean compiles". In other places where this problem could occur, the C Standard and POSIX standards usually reserve the namespace or require that the needed elements be in both headers. Examples of these are: 1. The description of in the C Standard (ISO/IEC 9899-1990), P124, Section 7.9.1, 2nd and 3rd paragraphs requires that define size_t and NULL in as well as in . 2. The description of in POSIX.1-1996, P319, L2-4 says that including may essentially include , , , and and L13-16 requires that struct sigevent be defined in as well as in . Was the intent here to require warnings about dubious structure tags for conforming applications using , but not using timer_create()? Or, was it an oversight that the description of did not specify that implementations were allowed to include as a side effect of including ? ------------------------------------------------------------------------ 11 Solution proposed by the submitter (optional): Add to the end of the paragraph on POSIX.1-1996, P309, L2-3 (description of ): Inclusion of the header may make visible symbols allowed by this part of ISO/IEC 9945 to be in the header. (This copies what appears on POSIX.1-1996, P319, L2-4 for .) ------------------------------------------------------------------------ Interpretation response ------------------------ The standard is unclear on this issue, and no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor. Rationale ------------- The standard is ambiguous in its namespace requirements and there appear to be some omissions in the specification. It is recommend that a future revision address this issue. ------------------------------------------------------------------------ 12 Editor's response (any material proposed for processing as a technical corrigendum to, an amendment to, or a commentary on the International Standard or DIS final text is attached separately to this completed report): See interpretation response attached Forwarded to Interpretations group: 26 Feb 1998 Finalised: 30 March 1998