Document Number: AUSTIN/18 Title: Options for XSH/XCU additions Revision Date: 1999-03-04 Source: Andrew Josey, Chair Action: for review What to do about UNIX additions over POSIX? The scope gives the following guidance "Options. The revision will consider the options within the standard, and whether its possible to reduce the number of them. It will also include an examination of the possibility of adding overriding options that combine a set of finer grained options. Functional extensions from XSH/XCU over POSIX will be added as options, for example there would be a STREAMS option and a System V IPC option. This allows standards building on the Common Standard to mandate the options, one such example would be the UNIX specification." This document introduces a set of options together with the list of interfaces and a recommendation that will be noted in editorial text in draft 1 for consideration by the Austin Group i.e. whether to leave as optional , move to legacy status or mandate. Where no comment exists no recommendation is made in which case the default is optional. (just to make it clear, in D1 they will all be options). Much of this document should be considered a note to the editors. Note that for EX extensions within manual pages, where the EX is not related to an option such as STREAMS, then the EX will default to being removed . For draft 1 the EX in such cases will be changed to MAN (for mandatory) so its made clear that this text is intended to become mandatory, and the change history enumerated to describe the new POSIX requirement derived from the Single UNIX Specification. -->Please note that Margin markers need to be generated for all of these -->and will be provided in a future revision of this document. System Interfaces ----------------- Options for system interfaces new in POSIX from the Single UNIX Specification. Should these be a single lump or or subset'd according to functionality? OPTION: _POSIX_SYSV_SHM shmat(),shmctl(),shmdt(),shmget() optional OPTION: _POSIX_SYSV_MSG msgctl(),msgget(),msgrcv(),msgsnd() optional OPTION: _POSIX_SYSV_SEM semctl(),semget(),semop() optional Notes on the three above The ftok( ) interface is provided in all 3 above, as is ipcs , ipcrm OPTION: _POSIX_STREAMS , fattach(),fdetach(),getmsg(),getpmsg(),ioctl(), isastream(),putmsg(),putpmsg() OPTION: _POSIX_SYMLINKS lchown(),lstat(),readlink(),symlink() add an editorial note to recommend that all except lchown become mandatory since will come in from .1a OPTION: _POSIX_INTERVALTIMERS (): getitimer(),gettimeofday(),select(),setitimer(),utimes() recommend that these become mandatory. OPTION: _POSIX_SCHEDULING (): getpriority(),setpriority() OPTION: _POSIX_RLIMITS (): getrlimit(),getrusage(),setrlimit() The User Limit Interface (): ulimit() Note we may want to deprecate ulimit since you can do it with setrlimit/getrlimit OPTION:_POSIX_POLL poll() OPTION:_POSIX_SELECT select() OPTION: _POSIX_SEEKDIR * Additional Directory Manipulation Routines (): seekdir(),telldir() recommend as optional OPTION: _POSIX_PATHNAME * Historical Pattern Matching Functions (): basename(),dirname() recommend as mandatory since we have the dirname/basenames utils OPTION: _POSIX_SETJMP * Additional Support for Non-local goto Control Flow (): _longjmp(),_setjmp() recommend become mandatory OPTION: _POSIX_LOGGING_BASIC ( AJ prefers _POSIX_SYSLOG - ballot document) * System Logging (): closelog(),openlog(),setlogmask(),syslog() (check with SRASS over same name) OPTION: _POSIX_USERDB * User and Groups Database Access (): endgrent(),endpwent(),getgrent(),getpwent(),setgrent(),setpwent() recommend as mandatory OPTIONS: _POSIX_STRINGS * BSD String Operations (): bcmp(),bcopy(),bzero(),ffs(),index(),rindex(),strcasecmp(), strncasecmp() Recommend strcasecmp , strncasecmp, ffs become mandatory The rest as optional (?perhaps even legacy). OPTIONS: _POSIX_NDBM * Ndbm Database Operations (): dbm_clearerr(),dbm_close(),dbm_delete(),dbm_error(),dbm_fetch(),dbm_firstkey(), dbm_nextkey(),dbm_open(),dbm_store() remain optional OPTIONS: _POSIX_UTMPX * User Accounting Database Access (): endutxent(),getutxent(),getutxid(),getutxline(),pututxline(),setutxent() remain option OPTIONS: _POSIX_CONTEXT * User Context Control (): getcontext(),makecontext(),setcontext(),swapcontext() remain option OPTIONS: _POSIX_VFS * VFS Filesystem Information Access (): fstatvfs(),statvfs() OPTIONS: _POSIX_MATHLIB * Additional Math Library Functions (): acosh(),asinh(),atanh(),cbrt(),expm1(),ilogb(),log1p(),logb(),nextafter(), remainder(),rint(),scalb() * Additional Math Library Functions (): erf(),erfc(),gamma(),hypot(),isnan(),j0(),j1(), jn(),lgamma(),y0(),y1(),yn() ecvt(),fcvt(),gcvt(), (stdlib.h) (a significant portion is in c99 , we'll need to check this when c99 is available) OPTIONS: _POSIX_SYSV_SIGNALS * System V Signal Management Functions (): sighold(),sigignore(),sigpause(),sigrelse(),sigset() And other historical signal management functions: killpg(),sigaltstack(),siginterrupt() So as not to conflict signal models provided on different historical systems, bsd_signal( ) has been added as a direct replacement for the signal( ) function found on BSD systems. recommend mandating? OPTION: _POSIX_STD_FUNCS * Additional System Interfaces (): fchdir(),fchown(),ftruncate(),gethostid(), getpgid(),getsid(),getwd(),lockf(), setpgrp(),setregid(),setreuid(),sync(),truncate(), ualarm(),usleep(),vfork() * Additional System Interfaces (): fsync(),nice(),swab() * Additional stat( )-related Interfaces (): fchmod(),mknod() * Additional Standard Library Functions (): a64l(), getsubopt(), l64a(), realpath(), * Additional String Manipulation Function (): strdup() * Additional Memory Manipulation Function (): memccpy() * Additional Character Type Interfaces (): isascii(),toascii() Miscellaneous snprintf(),vsnprintf(), Recommend all mandatory except gethostid, mknod, and maybe getwd? OPTION: _POSIX_WAITID * Additional Process Waiting Interfaces (): waitid() remains optional OPTION _POSIX_TCGETSID * Additional General Terminal Control Interface (): tcgetsid() recommend mandatory OPTION _POSIX_SEARCH * Additional Search Functions (): insque(),remque() * Hash Table and Binary Tree Functions (): hcreate(),hdestroy(),hsearch(),lfind(),lsearch(), tdelete(),tfind(),tsearch(),twalk() recommend optional OPTION: _POSIX_TEMPFILE * Historical Temporary File and Filename Creation (): mktemp(),mkstemp() Also, tempnam( ) is added to . remain optional OPTION: _POSIX_PTTY * Pseudo-terminal Device Control (): grantpt(),ptsname(),unlockpt() optional _POSIX_VECTOR_IO * Vectored File Read/Write Interfaces (): readv(),writev() recommend mandatory _POSIX_FMTMSG * Standard Error Stream Message Format Interface (): fmtmsg() optional _POSIX_DATETIME * Historical Date and Time Interfaces: ftime( ) (in ), getdate( ) (in ). option - legacy? _POSIX_RANDOM * Additional Random Number Generation Functions (): drand48(),erand48(),jrand48(),lcong48(),lrand48(), mrand48(),nrand48(), seed48(),srand48() initstate(), random(), setstate(), srandom() no recommendation _POSIX_PUTENV * Environment Manipulation Function (): putenv() note .1a has some funcs coming that overlap _POSIX_FTW * File-tree Walking Interface (): ftw(),nftw() _POSIX_DYNAMIC_LINKING * Dynamic Linking (): dlclose(),dlerror(),dlopen(),dlsym() remain optional _POSIX_THREADS_EXT X/Open Threads Extension pread(),pthread_attr_getguardsize(),pthread_attr_setguardsize(), pthread_getconcurrency(),pthread_mutexattr_gettype(),pthread_mutexattr_settype(), pthread_rwlock_destroy(),pthread_rwlock_init(),pthread_rwlock_rdlock(), pthread_rwlock_tryrdlock(),pthread_rwlock_trywrlock(),pthread_rwlock_unlock(), pthread_rwlock_wrlock(),pthread_rwlockattr_destroy(),pthread_rwlockattr_getpshared(), pthread_rwlockattr_init(),pthread_rwlockattr_setpshared(),pthread_setconcurrency(), pwrite() recommend that become part of core POSIX threads _POSIX_LFS Large File Support fseeko(),ftello(), recommend mandatory _POSIX_INTEGRAL_TYPES Data Size Neutral note when c99 is approved this will be covered _POSIX_I18N strfmon(),strptime() check c9x to see if they turn up mandate _POSIX_MSG_CATALOGS catclose(),catgets(),catopen() _POSIX_ICONV iconv(),iconv_close(),iconv_open() suggest mandatory _POSIX_CRYPT crypt(),encrypt(),setkey() must be optional ___________________ Commands & Utilities ===================== The available of the following commands is controlled by _POSIX_SYSV_SHM, _POSIX_SYSV_SEM, _POSIX_SYSV_MSG ipcs ipcrm _POSIX_LINK (File linking) link unlink recommend optional _POSIX_SCCS (SCCS Development) admin, delta, get, prs, rmdel, sact, sccs, unget, what optional _POSIX_DEVTOOLS (Development tools) cflow, cxref optional