View Issue Details

IDProjectCategoryView StatusLast Update
00003111003.1(2008)/Issue 7Base Definitions and Headerspublic2013-04-16 13:06
Reportergeoffclare Assigned Toajosey  
PrioritynormalSeverityObjectionTypeOmission
Status ClosedResolutionAccepted 
NameGeoff Clare
OrganizationThe Open Group
User Reference
Sectionunistd.h
Page Number430
Line Number14446
Interp Status---
Final Accepted Text
Summary0000311: _POSIX2_VERSION and profiles with no shell and utilities
DescriptionImplementations of profiles of POSIX.1 need a way to indicate that
the shell and utilities are not supported, but the description of
_POSIX2_VERSION on the <unistd.h> page does not provide any means of
doing so.

This problem does not arise for old options that are mandated in
the current revision, such as Asynchronous I/O, because even though
POSIX.1 requires the _POSIX_ASYNCHRONOUS_IO constant to have the
value 200809L, the introductory paragraph of the "Constants for
Options and Option Groups" section of the <unistd.h> page explains
what the values -1/undefined and 0 mean for all of the option
constants. Unfortunately _POSIX2_VERSION is not in that section of
the <unistd.h> page.

Since no special values are described, it is reasonable to assume
that leaving _POSIX2_VERSION undefined would indicate that the
shell and utilities are not supported. However, there is still
a problem with sysconf(). Although the convention of sysconf()
returning -1 without setting errno is well known, the way the
return value is described on the sysconf() page actually relies on
the <unistd.h> description of the meaning of value -1, and
therefore does not, by a strict reading, apply to _POSIX2_VERSION.
Desired ActionAt line 14446 after:

    For implementations conforming to POSIX.1-2008, the value
    shall be 200809L.

add (to the same paragraph):

    For profile implementations that define _POSIX_SUBPROFILE
    (see [xref to 2.1.5.1]) in <unistd.h>, _POSIX2_VERSION may be
    left undefined or be defined with the value -1 to indicate
    that the Shell and Utilities volume is not supported. In
    this case a call to sysconf(_SC_2_VERSION) shall return
    either 200809L or -1 indicating that the Shell and Utilities
    volume is or is not, respectively, supported at runtime.

At line 14455 after:

    The following symbolic constants, if defined in <unistd.h>, shall
    have a value of -1, 0, or greater, unless otherwise specified below.

add:

    For profile implementations that define _POSIX_SUBPROFILE
    (see [xref to 2.1.5.1]) in <unistd.h>, constants described
    below as always having a value greater than zero need not be
    defined and, if defined, may have a value of -1, 0, or greater.
Tagstc1-2008

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2010-09-15 14:21 geoffclare New Issue
2010-09-15 14:22 geoffclare Status New => Under Review
2010-09-15 14:22 geoffclare Assigned To => ajosey
2010-09-15 14:22 geoffclare Name => Geoff Clare
2010-09-15 14:22 geoffclare Organization => The Open Group
2010-09-15 14:22 geoffclare Section => unistd.h
2010-09-15 14:22 geoffclare Page Number => 430
2010-09-15 14:22 geoffclare Line Number => 14446
2010-09-15 14:22 geoffclare Interp Status => ---
2010-10-07 15:51 Don Cragun Interp Status --- => Pending
2010-10-07 15:51 Don Cragun Status Under Review => Resolved
2010-10-07 15:51 Don Cragun Resolution Open => Accepted
2010-10-07 15:51 Don Cragun Tag Attached: tc1-2008
2010-10-07 15:53 Don Cragun Interp Status Pending => ---
2013-04-16 13:06 ajosey Status Resolved => Closed