ANSI C symbols supported by POSIX

Moderator, John S. Quarterman std-unix at longway.TIC.COM
Sat Mar 17 09:28:42 AEST 1990


From: Doug Gwyn <uunet!smoke.brl.mil!gwyn>

In article <563 at longway.TIC.COM> std-unix at uunet.uu.net writes:
>	Which symbols from the ANSI C header namespace are guaranteed to
>	be available to a Strictly Conforming POSIX Application?

There are two 1003.1 conforming C environments, C standard and common-usage C.
In the C standard environment, those portions of the C standard referenced by
1003.1-1988 Chapter 8 are required for implementation conformance.  While
section 8.1 lists only the specific standard C functions that 1003.1 requires
to be supported, it also stipulates that the requirements in the indiciated
sections of the C standard be obeyed.  Those do include macro definitions and
external object declarations, as well as function declarations.
In fact 1003.1-1988 section 8.2.1.2 refers to the C language stdin, etc. so
clearly 1003.1 intends that these have meaning.

1003.1 cleverly side-stepped the issue of defining what the cited functions
should do for the "common-usage C" binding to 1003.1, which makes that pretty
much a nonstandard flavor of the standard that you should avoid specifying in
procurement contracts etc..

1003.1, even in the C standard binding variant, does not mandate full ANSI/ISO
C standard conformance; however, it does require that the implementor announce
clearly that he does not conform to the C standard if in fact that is the
case.

>Specific question:
>	Can a Strictly Conforming POSIX Application use "stdin", for
>	example by calling "getc(stdin)"?

Yes.

>Arguments about the specific question:
>No, because...
>	...The POSIX Standard specifically names the symbols and terms
>	   adopted from the C Standard, in section 2.8.1, and stdin is
>	   not among them.

Section 2.8.1 is not an exclusive list; other symbols (e.g. those in section
8.1) are also required, and by the argument I gave above so are stdin, etc.

What I recommend is that when specifying acquisition of a system you always
specify ANSI C conformance in addition to IEEE 1003.1 conformance.  1003.1
was never intended to stand independently of the standard C library.

Volume-Number: Volume 18, Number 78



More information about the Comp.std.unix mailing list