17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate * CDDL HEADER START
37c478bd9Sstevel@tonic-gate *
47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the
58ef5f9c7Schin * Common Development and Distribution License (the "License").
68ef5f9c7Schin * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate *
87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate * and limitations under the License.
127c478bd9Sstevel@tonic-gate *
137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate *
197c478bd9Sstevel@tonic-gate * CDDL HEADER END
207c478bd9Sstevel@tonic-gate */
21019c3c43Sraf
227c478bd9Sstevel@tonic-gate /*
233b862e9aSRoger A. Faulkner * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
247c478bd9Sstevel@tonic-gate * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate */
267c478bd9Sstevel@tonic-gate
277c478bd9Sstevel@tonic-gate /*
287c478bd9Sstevel@tonic-gate * Copyright 1985, 1993 by Mortice Kern Systems Inc. All rights reserved.
297c478bd9Sstevel@tonic-gate *
307c478bd9Sstevel@tonic-gate */
317c478bd9Sstevel@tonic-gate
32*bc54f855SJohn Levon /*
33*bc54f855SJohn Levon * Copyright (c) 2018, Joyent, Inc.
34*bc54f855SJohn Levon */
35*bc54f855SJohn Levon
367c478bd9Sstevel@tonic-gate /*
377c478bd9Sstevel@tonic-gate * getconf -- POSIX.2 compatible utility to query configuration specific
387c478bd9Sstevel@tonic-gate * parameters.
397c478bd9Sstevel@tonic-gate * -- XPG4 support added June/93
407c478bd9Sstevel@tonic-gate *
417c478bd9Sstevel@tonic-gate * -- XPG5 support added Dec/97
427c478bd9Sstevel@tonic-gate *
437c478bd9Sstevel@tonic-gate * -- XPG6 support added May/2003
447c478bd9Sstevel@tonic-gate */
457c478bd9Sstevel@tonic-gate
467c478bd9Sstevel@tonic-gate #include <stdio.h>
477c478bd9Sstevel@tonic-gate #include <stdlib.h>
487c478bd9Sstevel@tonic-gate #include <string.h>
497c478bd9Sstevel@tonic-gate #include <errno.h>
507c478bd9Sstevel@tonic-gate #include <unistd.h>
517c478bd9Sstevel@tonic-gate #include <limits.h>
527c478bd9Sstevel@tonic-gate #include <locale.h>
537c478bd9Sstevel@tonic-gate #include <libintl.h>
547c478bd9Sstevel@tonic-gate #include <assert.h>
557c478bd9Sstevel@tonic-gate
567c478bd9Sstevel@tonic-gate extern size_t confstr(int, char *, size_t);
577c478bd9Sstevel@tonic-gate
587c478bd9Sstevel@tonic-gate static int aflag = 0;
597c478bd9Sstevel@tonic-gate
607c478bd9Sstevel@tonic-gate #define INVAL_ARG "getconf: Invalid argument (%s)\n"
617c478bd9Sstevel@tonic-gate #define INVAL_PATHARG "getconf: Invalid argument (%s or %s)\n"
627c478bd9Sstevel@tonic-gate
637c478bd9Sstevel@tonic-gate /*
647c478bd9Sstevel@tonic-gate * Notes:
657c478bd9Sstevel@tonic-gate * The sctab.value field is defined to be a long.
667c478bd9Sstevel@tonic-gate * There are some values that are "unsigned long"; these values
677c478bd9Sstevel@tonic-gate * can be stored in a "long" field but when output, must be printed
687c478bd9Sstevel@tonic-gate * as an unsigned value. Thus, these values must have UNSIGNED_VALUE bit
697c478bd9Sstevel@tonic-gate * set in sctab.flag field.
707c478bd9Sstevel@tonic-gate *
717c478bd9Sstevel@tonic-gate * There are 2 different ways to indicate a symbol is undefined:
727c478bd9Sstevel@tonic-gate * 1) sctab.flag = UNDEFINED
737c478bd9Sstevel@tonic-gate * 2) or sctab.value = -1 (and if !UNDEFINED and !UNSIGNED_VALUE)
747c478bd9Sstevel@tonic-gate *
757c478bd9Sstevel@tonic-gate * There are a group of symbols (e.g CHAR_MIN, INT_MAX, INT_MIN, LONG_BIT ...)
767c478bd9Sstevel@tonic-gate * which we may set to -1 if they are not pre-defined in a system header file.
777c478bd9Sstevel@tonic-gate * This is used to indicate that these symbols are "undefined".
787c478bd9Sstevel@tonic-gate * We are assuming that these symbols cannot reasonably have a value of -1
797c478bd9Sstevel@tonic-gate * if they were defined in a system header file.
807c478bd9Sstevel@tonic-gate * (Unless of course -1 can be used to indicate "undefined" for that symbol)
817c478bd9Sstevel@tonic-gate */
827c478bd9Sstevel@tonic-gate
837c478bd9Sstevel@tonic-gate static struct sctab {
847c478bd9Sstevel@tonic-gate long value;
857c478bd9Sstevel@tonic-gate char *name;
867c478bd9Sstevel@tonic-gate enum { SELFCONF, SYSCONF, PATHCONF, CONFSTR } type;
877c478bd9Sstevel@tonic-gate int flag;
887c478bd9Sstevel@tonic-gate /* bit fields for sctab.flag member */
897c478bd9Sstevel@tonic-gate #define NOFLAGS 0 /* no special indicators */
907c478bd9Sstevel@tonic-gate #define UNDEFINED 1 /* value is known undefined at compile time */
917c478bd9Sstevel@tonic-gate #define UNSIGNED_VALUE 2 /* value is an unsigned */
927c478bd9Sstevel@tonic-gate } sctab[] = {
937c478bd9Sstevel@tonic-gate /*
947c478bd9Sstevel@tonic-gate * Some entries in this structure have both leading _ and non leading _
957c478bd9Sstevel@tonic-gate * versions for compatibility with various versions of the specifications.
967c478bd9Sstevel@tonic-gate * It is not expected that both forms will be required for new entries.
977c478bd9Sstevel@tonic-gate */
987c478bd9Sstevel@tonic-gate
997c478bd9Sstevel@tonic-gate /* POSIX.2-1992 table 2-17 */
1007c478bd9Sstevel@tonic-gate _POSIX2_BC_BASE_MAX, "POSIX2_BC_BASE_MAX", SELFCONF, NOFLAGS,
1017c478bd9Sstevel@tonic-gate _POSIX2_BC_BASE_MAX, "_POSIX2_BC_BASE_MAX", SELFCONF, NOFLAGS,
1027c478bd9Sstevel@tonic-gate _POSIX2_BC_DIM_MAX, "POSIX2_BC_DIM_MAX", SELFCONF, NOFLAGS,
1037c478bd9Sstevel@tonic-gate _POSIX2_BC_DIM_MAX, "_POSIX2_BC_DIM_MAX", SELFCONF, NOFLAGS,
1047c478bd9Sstevel@tonic-gate _POSIX2_BC_SCALE_MAX, "POSIX2_BC_SCALE_MAX", SELFCONF, NOFLAGS,
1057c478bd9Sstevel@tonic-gate _POSIX2_BC_SCALE_MAX, "_POSIX2_BC_SCALE_MAX", SELFCONF, NOFLAGS,
1067c478bd9Sstevel@tonic-gate _POSIX2_BC_STRING_MAX, "POSIX2_BC_STRING_MAX", SELFCONF, NOFLAGS,
1077c478bd9Sstevel@tonic-gate _POSIX2_BC_STRING_MAX, "_POSIX2_BC_STRING_MAX", SELFCONF, NOFLAGS,
1087c478bd9Sstevel@tonic-gate _POSIX2_COLL_WEIGHTS_MAX, "POSIX2_COLL_WEIGHTS_MAX", SELFCONF, NOFLAGS,
1097c478bd9Sstevel@tonic-gate _POSIX2_COLL_WEIGHTS_MAX, "_POSIX2_COLL_WEIGHTS_MAX", SELFCONF, NOFLAGS,
1107c478bd9Sstevel@tonic-gate _POSIX2_EXPR_NEST_MAX, "POSIX2_EXPR_NEST_MAX", SELFCONF, NOFLAGS,
1117c478bd9Sstevel@tonic-gate _POSIX2_EXPR_NEST_MAX, "_POSIX2_EXPR_NEST_MAX", SELFCONF, NOFLAGS,
1127c478bd9Sstevel@tonic-gate _POSIX2_LINE_MAX, "POSIX2_LINE_MAX", SELFCONF, NOFLAGS,
1137c478bd9Sstevel@tonic-gate _POSIX2_LINE_MAX, "_POSIX2_LINE_MAX", SELFCONF, NOFLAGS,
1147c478bd9Sstevel@tonic-gate _POSIX2_RE_DUP_MAX, "POSIX2_RE_DUP_MAX", SELFCONF, NOFLAGS,
1157c478bd9Sstevel@tonic-gate _POSIX2_RE_DUP_MAX, "_POSIX2_RE_DUP_MAX", SELFCONF, NOFLAGS,
1167c478bd9Sstevel@tonic-gate /* See limits.h section below for _POSIX_RE_DUP_MAX */
1177c478bd9Sstevel@tonic-gate
1187c478bd9Sstevel@tonic-gate /* UNIX 98 */
1197c478bd9Sstevel@tonic-gate _POSIX_AIO_LISTIO_MAX, "_POSIX_AIO_LISTIO_MAX", SELFCONF, NOFLAGS,
1207c478bd9Sstevel@tonic-gate _POSIX_AIO_MAX, "_POSIX_AIO_MAX", SELFCONF, NOFLAGS,
1217c478bd9Sstevel@tonic-gate _POSIX_DELAYTIMER_MAX, "_POSIX_DELAYTIMER_MAX", SELFCONF, NOFLAGS,
1227c478bd9Sstevel@tonic-gate _POSIX_LOGIN_NAME_MAX, "_POSIX_LOGIN_NAME_MAX", SELFCONF, NOFLAGS,
1237c478bd9Sstevel@tonic-gate _POSIX_MQ_OPEN_MAX, "_POSIX_MQ_OPEN_MAX", SELFCONF, NOFLAGS,
1247c478bd9Sstevel@tonic-gate _POSIX_MQ_PRIO_MAX, "_POSIX_MQ_PRIO_MAX", SELFCONF, NOFLAGS,
1257c478bd9Sstevel@tonic-gate _POSIX_RTSIG_MAX, "_POSIX_RTSIG_MAX", SELFCONF, NOFLAGS,
1267c478bd9Sstevel@tonic-gate _POSIX_SEM_NSEMS_MAX, "_POSIX_SEM_NSEMS_MAX", SELFCONF, NOFLAGS,
1277c478bd9Sstevel@tonic-gate _POSIX_SEM_VALUE_MAX, "_POSIX_SEM_VALUE_MAX", SELFCONF, NOFLAGS,
1287c478bd9Sstevel@tonic-gate _POSIX_SIGQUEUE_MAX, "_POSIX_SIGQUEUE_MAX", SELFCONF, NOFLAGS,
1297c478bd9Sstevel@tonic-gate _POSIX_TTY_NAME_MAX, "_POSIX_TTY_NAME_MAX", SELFCONF, NOFLAGS,
1307c478bd9Sstevel@tonic-gate
1317c478bd9Sstevel@tonic-gate /* UNIX 03 */
1327c478bd9Sstevel@tonic-gate _POSIX_HOST_NAME_MAX, "_POSIX_HOST_NAME_MAX", SELFCONF, NOFLAGS,
1337c478bd9Sstevel@tonic-gate _POSIX_RE_DUP_MAX, "_POSIX_RE_DUP_MAX", SELFCONF, NOFLAGS,
1347c478bd9Sstevel@tonic-gate _POSIX_CLOCKRES_MIN, "_POSIX_CLOCKRES_MIN", SELFCONF, NOFLAGS,
1357c478bd9Sstevel@tonic-gate _POSIX_SYMLINK_MAX, "_POSIX_SYMLINK_MAX", SELFCONF, NOFLAGS,
1367c478bd9Sstevel@tonic-gate _POSIX_SYMLOOP_MAX, "_POSIX_SYMLOOP_MAX", SELFCONF, NOFLAGS,
1377c478bd9Sstevel@tonic-gate CHARCLASS_NAME_MAX, "_POSIX2_CHARCLASS_NAME_MAX", SELFCONF, NOFLAGS,
1387c478bd9Sstevel@tonic-gate
1397c478bd9Sstevel@tonic-gate /* POSIX.2-1992 table 2-17 */
1407c478bd9Sstevel@tonic-gate _SC_2_VERSION, "POSIX2_VERSION", SYSCONF, NOFLAGS,
1417c478bd9Sstevel@tonic-gate _SC_2_VERSION, "_POSIX2_VERSION", SYSCONF, NOFLAGS,
1427c478bd9Sstevel@tonic-gate
1437c478bd9Sstevel@tonic-gate /* POSIX.2-1992 table 2-18 */
1447c478bd9Sstevel@tonic-gate _SC_BC_BASE_MAX, "BC_BASE_MAX", SYSCONF, NOFLAGS,
1457c478bd9Sstevel@tonic-gate _SC_BC_DIM_MAX, "BC_DIM_MAX", SYSCONF, NOFLAGS,
1467c478bd9Sstevel@tonic-gate _SC_BC_SCALE_MAX, "BC_SCALE_MAX", SYSCONF, NOFLAGS,
1477c478bd9Sstevel@tonic-gate _SC_BC_STRING_MAX, "BC_STRING_MAX", SYSCONF, NOFLAGS,
1487c478bd9Sstevel@tonic-gate _SC_COLL_WEIGHTS_MAX, "COLL_WEIGHTS_MAX", SYSCONF, NOFLAGS,
1497c478bd9Sstevel@tonic-gate _SC_EXPR_NEST_MAX, "EXPR_NEST_MAX", SYSCONF, NOFLAGS,
1507c478bd9Sstevel@tonic-gate _SC_LINE_MAX, "LINE_MAX", SYSCONF, NOFLAGS,
1517c478bd9Sstevel@tonic-gate _SC_RE_DUP_MAX, "RE_DUP_MAX", SYSCONF, NOFLAGS,
1527c478bd9Sstevel@tonic-gate
1537c478bd9Sstevel@tonic-gate /* POSIX.2-1992 table 2-19 */
1547c478bd9Sstevel@tonic-gate _SC_2_C_BIND, "POSIX2_C_BIND", SYSCONF, NOFLAGS,
1557c478bd9Sstevel@tonic-gate _SC_2_C_BIND, "_POSIX2_C_BIND", SYSCONF, NOFLAGS,
1567c478bd9Sstevel@tonic-gate _SC_2_C_DEV, "POSIX2_C_DEV", SYSCONF, NOFLAGS,
1577c478bd9Sstevel@tonic-gate _SC_2_C_DEV, "_POSIX2_C_DEV", SYSCONF, NOFLAGS,
1587c478bd9Sstevel@tonic-gate _SC_2_CHAR_TERM, "POSIX2_CHAR_TERM", SYSCONF, NOFLAGS,
1597c478bd9Sstevel@tonic-gate _SC_2_CHAR_TERM, "_POSIX2_CHAR_TERM", SYSCONF, NOFLAGS,
1607c478bd9Sstevel@tonic-gate _SC_2_FORT_DEV, "POSIX2_FORT_DEV", SYSCONF, NOFLAGS,
1617c478bd9Sstevel@tonic-gate _SC_2_FORT_DEV, "_POSIX2_FORT_DEV", SYSCONF, NOFLAGS,
1627c478bd9Sstevel@tonic-gate _SC_2_FORT_RUN, "POSIX2_FORT_RUN", SYSCONF, NOFLAGS,
1637c478bd9Sstevel@tonic-gate _SC_2_FORT_RUN, "_POSIX2_FORT_RUN", SYSCONF, NOFLAGS,
1647c478bd9Sstevel@tonic-gate _SC_2_LOCALEDEF, "POSIX2_LOCALEDEF", SYSCONF, NOFLAGS,
1657c478bd9Sstevel@tonic-gate _SC_2_LOCALEDEF, "_POSIX2_LOCALEDEF", SYSCONF, NOFLAGS,
1667c478bd9Sstevel@tonic-gate _SC_2_SW_DEV, "POSIX2_SW_DEV", SYSCONF, NOFLAGS,
1677c478bd9Sstevel@tonic-gate _SC_2_SW_DEV, "_POSIX2_SW_DEV", SYSCONF, NOFLAGS,
1687c478bd9Sstevel@tonic-gate _SC_2_UPE, "POSIX2_UPE", SYSCONF, NOFLAGS,
1697c478bd9Sstevel@tonic-gate _SC_2_UPE, "_POSIX2_UPE", SYSCONF, NOFLAGS,
1707c478bd9Sstevel@tonic-gate
1717c478bd9Sstevel@tonic-gate /* POSIX.1-1990 table 2-3 */
1727c478bd9Sstevel@tonic-gate _POSIX_ARG_MAX, "_POSIX_ARG_MAX", SELFCONF, NOFLAGS,
1737c478bd9Sstevel@tonic-gate _POSIX_CHILD_MAX, "_POSIX_CHILD_MAX", SELFCONF, NOFLAGS,
1747c478bd9Sstevel@tonic-gate _POSIX_LINK_MAX, "_POSIX_LINK_MAX", SELFCONF, NOFLAGS,
1757c478bd9Sstevel@tonic-gate _POSIX_MAX_CANON, "_POSIX_MAX_CANON", SELFCONF, NOFLAGS,
1767c478bd9Sstevel@tonic-gate _POSIX_MAX_INPUT, "_POSIX_MAX_INPUT", SELFCONF, NOFLAGS,
1777c478bd9Sstevel@tonic-gate _POSIX_NAME_MAX, "_POSIX_NAME_MAX", SELFCONF, NOFLAGS,
1787c478bd9Sstevel@tonic-gate _POSIX_NGROUPS_MAX, "_POSIX_NGROUPS_MAX", SELFCONF, NOFLAGS,
1797c478bd9Sstevel@tonic-gate _POSIX_OPEN_MAX, "_POSIX_OPEN_MAX", SELFCONF, NOFLAGS,
1807c478bd9Sstevel@tonic-gate _POSIX_PATH_MAX, "_POSIX_PATH_MAX", SELFCONF, NOFLAGS,
1817c478bd9Sstevel@tonic-gate _POSIX_PIPE_BUF, "_POSIX_PIPE_BUF", SELFCONF, NOFLAGS,
1827c478bd9Sstevel@tonic-gate _POSIX_SSIZE_MAX, "_POSIX_SSIZE_MAX", SELFCONF, NOFLAGS,
1837c478bd9Sstevel@tonic-gate _POSIX_STREAM_MAX, "_POSIX_STREAM_MAX", SELFCONF, NOFLAGS,
1847c478bd9Sstevel@tonic-gate _POSIX_TIMER_MAX, "_POSIX_TIMER_MAX", SELFCONF, NOFLAGS,
1857c478bd9Sstevel@tonic-gate _POSIX_THREAD_DESTRUCTOR_ITERATIONS,
1867c478bd9Sstevel@tonic-gate "_POSIX_THREAD_DESTRUCTOR_ITERATIONS", SELFCONF, NOFLAGS,
1877c478bd9Sstevel@tonic-gate _POSIX_THREAD_KEYS_MAX,
1887c478bd9Sstevel@tonic-gate "_POSIX_THREAD_KEYS_MAX", SELFCONF, NOFLAGS,
1897c478bd9Sstevel@tonic-gate _POSIX_THREAD_THREADS_MAX,
1907c478bd9Sstevel@tonic-gate "_POSIX_THREAD_THREADS_MAX", SELFCONF, NOFLAGS,
1917c478bd9Sstevel@tonic-gate _POSIX_TZNAME_MAX, "_POSIX_TZNAME_MAX", SELFCONF, NOFLAGS,
1927c478bd9Sstevel@tonic-gate
1937c478bd9Sstevel@tonic-gate /* POSIX.1-1990 table 4-2 */
1947c478bd9Sstevel@tonic-gate _SC_ARG_MAX, "ARG_MAX", SYSCONF, NOFLAGS,
1957c478bd9Sstevel@tonic-gate _SC_CHILD_MAX, "CHILD_MAX", SYSCONF, NOFLAGS,
1967c478bd9Sstevel@tonic-gate _SC_CLK_TCK, "CLK_TCK", SYSCONF, NOFLAGS,
1977c478bd9Sstevel@tonic-gate _SC_JOB_CONTROL, "_POSIX_JOB_CONTROL", SYSCONF, NOFLAGS,
1987c478bd9Sstevel@tonic-gate _SC_NGROUPS_MAX, "NGROUPS_MAX", SYSCONF, NOFLAGS,
1997c478bd9Sstevel@tonic-gate _SC_OPEN_MAX, "OPEN_MAX", SYSCONF, NOFLAGS,
2007c478bd9Sstevel@tonic-gate _SC_SAVED_IDS, "_POSIX_SAVED_IDS", SYSCONF, NOFLAGS,
2017c478bd9Sstevel@tonic-gate _SC_STREAM_MAX, "STREAM_MAX", SYSCONF, NOFLAGS,
2027c478bd9Sstevel@tonic-gate _SC_TZNAME_MAX, "TZNAME_MAX", SYSCONF, NOFLAGS,
2037c478bd9Sstevel@tonic-gate _SC_VERSION, "_POSIX_VERSION", SYSCONF, NOFLAGS,
2047c478bd9Sstevel@tonic-gate
2057c478bd9Sstevel@tonic-gate /* pathconf() variables */
2067c478bd9Sstevel@tonic-gate
2077c478bd9Sstevel@tonic-gate /* POSIX.1-1990 table 5-2 */
2087c478bd9Sstevel@tonic-gate
2097c478bd9Sstevel@tonic-gate _PC_LINK_MAX, "LINK_MAX", PATHCONF, NOFLAGS,
2107c478bd9Sstevel@tonic-gate _PC_MAX_CANON, "MAX_CANON", PATHCONF, NOFLAGS,
2117c478bd9Sstevel@tonic-gate _PC_MAX_INPUT, "MAX_INPUT", PATHCONF, NOFLAGS,
2127c478bd9Sstevel@tonic-gate _PC_NAME_MAX, "NAME_MAX", PATHCONF, NOFLAGS,
2137c478bd9Sstevel@tonic-gate _PC_PATH_MAX, "PATH_MAX", PATHCONF, NOFLAGS,
2147c478bd9Sstevel@tonic-gate _PC_PIPE_BUF, "PIPE_BUF", PATHCONF, NOFLAGS,
2157c478bd9Sstevel@tonic-gate _PC_CHOWN_RESTRICTED, "_POSIX_CHOWN_RESTRICTED", PATHCONF, NOFLAGS,
2167c478bd9Sstevel@tonic-gate _PC_NO_TRUNC, "_POSIX_NO_TRUNC", PATHCONF, NOFLAGS,
2177c478bd9Sstevel@tonic-gate _PC_VDISABLE, "_POSIX_VDISABLE", PATHCONF, NOFLAGS,
2187c478bd9Sstevel@tonic-gate
2197c478bd9Sstevel@tonic-gate /* UNIX 98 additions */
2207c478bd9Sstevel@tonic-gate
2217c478bd9Sstevel@tonic-gate _PC_ASYNC_IO, "_POSIX_ASYNC_IO", PATHCONF, NOFLAGS,
2227c478bd9Sstevel@tonic-gate _PC_PRIO_IO, "_POSIX_PRIO_IO", PATHCONF, NOFLAGS,
2237c478bd9Sstevel@tonic-gate _PC_SYNC_IO, "_POSIX_SYNC_IO", PATHCONF, NOFLAGS,
2247c478bd9Sstevel@tonic-gate
2257c478bd9Sstevel@tonic-gate /* Large File Summit name (UNIX 98) */
2267c478bd9Sstevel@tonic-gate
2277c478bd9Sstevel@tonic-gate _PC_FILESIZEBITS, "FILESIZEBITS", PATHCONF, NOFLAGS,
2281cfc4fb7SDavid Höppner _PC_XATTR_ENABLED, "XATTR_ENABLED", PATHCONF, NOFLAGS,
2291cfc4fb7SDavid Höppner _PC_XATTR_EXISTS, "XATTR_EXISTS", PATHCONF, NOFLAGS,
2307c478bd9Sstevel@tonic-gate
2317c478bd9Sstevel@tonic-gate /* UNIX 03 Additions */
2327c478bd9Sstevel@tonic-gate
233019c3c43Sraf /* Advisory Information (ADV) */
2347c478bd9Sstevel@tonic-gate _PC_ALLOC_SIZE_MIN, "POSIX_ALLOC_SIZE_MIN", PATHCONF, NOFLAGS,
2357c478bd9Sstevel@tonic-gate _PC_REC_INCR_XFER_SIZE, "POSIX_REC_INCR_XFER_SIZE", PATHCONF, NOFLAGS,
2367c478bd9Sstevel@tonic-gate _PC_REC_MAX_XFER_SIZE, "POSIX_REC_MAX_XFER_SIZE", PATHCONF, NOFLAGS,
2377c478bd9Sstevel@tonic-gate _PC_REC_MIN_XFER_SIZE, "POSIX_REC_MIN_XFER_SIZE", PATHCONF, NOFLAGS,
2387c478bd9Sstevel@tonic-gate _PC_REC_XFER_ALIGN, "POSIX_REC_XFER_ALIGN", PATHCONF, NOFLAGS,
2397c478bd9Sstevel@tonic-gate
2407c478bd9Sstevel@tonic-gate _PC_2_SYMLINKS, "POSIX2_SYMLINKS", PATHCONF, NOFLAGS,
2417c478bd9Sstevel@tonic-gate _PC_SYMLINK_MAX, "SYMLINK_MAX", PATHCONF, NOFLAGS,
2427c478bd9Sstevel@tonic-gate
2431cfc4fb7SDavid Höppner _PC_ACL_ENABLED, "ACL_ENABLED", PATHCONF, NOFLAGS,
2441cfc4fb7SDavid Höppner _PC_MIN_HOLE_SIZE, "MIN_HOLE_SIZE", PATHCONF, NOFLAGS,
2451cfc4fb7SDavid Höppner _PC_SATTR_ENABLED, "SATTR_ENABLED", PATHCONF, NOFLAGS,
2461cfc4fb7SDavid Höppner _PC_SATTR_EXISTS, "SATTR_EXISTS", PATHCONF, NOFLAGS,
2471cfc4fb7SDavid Höppner
2483b862e9aSRoger A. Faulkner /* UNIX 08 additions */
2493b862e9aSRoger A. Faulkner
2503b862e9aSRoger A. Faulkner _PC_TIMESTAMP_RESOLUTION, "_POSIX_TIMESTAMP_RESOLUTION",
2513b862e9aSRoger A. Faulkner PATHCONF, NOFLAGS,
2523b862e9aSRoger A. Faulkner
2537c478bd9Sstevel@tonic-gate /* confstr() variables */
2547c478bd9Sstevel@tonic-gate
2557c478bd9Sstevel@tonic-gate /* POSIX.2-1992 description of getconf utility */
2567c478bd9Sstevel@tonic-gate _CS_PATH, "PATH", CONFSTR, NOFLAGS,
2577c478bd9Sstevel@tonic-gate
2587c478bd9Sstevel@tonic-gate /* POSIX.2-1992 table B-18 */
2597c478bd9Sstevel@tonic-gate _CS_PATH, "CS_PATH", CONFSTR, NOFLAGS,
2607c478bd9Sstevel@tonic-gate _CS_PATH, "_CS_PATH", CONFSTR, NOFLAGS,
2617c478bd9Sstevel@tonic-gate
2627c478bd9Sstevel@tonic-gate /* command names for large file configuration information */
2637c478bd9Sstevel@tonic-gate /* large file compilation environment configuration */
2647c478bd9Sstevel@tonic-gate
2657c478bd9Sstevel@tonic-gate _CS_LFS_CFLAGS, "LFS_CFLAGS", CONFSTR, NOFLAGS,
2667c478bd9Sstevel@tonic-gate _CS_LFS_LDFLAGS, "LFS_LDFLAGS", CONFSTR, NOFLAGS,
2677c478bd9Sstevel@tonic-gate _CS_LFS_LIBS, "LFS_LIBS", CONFSTR, NOFLAGS,
2687c478bd9Sstevel@tonic-gate _CS_LFS_LINTFLAGS, "LFS_LINTFLAGS", CONFSTR, NOFLAGS,
2697c478bd9Sstevel@tonic-gate
2707c478bd9Sstevel@tonic-gate /* transitional large file interface configuration */
2717c478bd9Sstevel@tonic-gate
2727c478bd9Sstevel@tonic-gate _CS_LFS64_CFLAGS, "LFS64_CFLAGS", CONFSTR, NOFLAGS,
2737c478bd9Sstevel@tonic-gate _CS_LFS64_LDFLAGS, "LFS64_LDFLAGS", CONFSTR, NOFLAGS,
2747c478bd9Sstevel@tonic-gate _CS_LFS64_LIBS, "LFS64_LIBS", CONFSTR, NOFLAGS,
2757c478bd9Sstevel@tonic-gate _CS_LFS64_LINTFLAGS, "LFS64_LINTFLAGS", CONFSTR, NOFLAGS,
2767c478bd9Sstevel@tonic-gate
2777c478bd9Sstevel@tonic-gate /*
2787c478bd9Sstevel@tonic-gate * UNIX 98:
2797c478bd9Sstevel@tonic-gate * confstr additions, these support
2807c478bd9Sstevel@tonic-gate * programming specifications/environments.
2817c478bd9Sstevel@tonic-gate *
2827c478bd9Sstevel@tonic-gate * Unfortunately there is some uncertainty with
2837c478bd9Sstevel@tonic-gate * the standard at this point about the constant
2847c478bd9Sstevel@tonic-gate * name, thus we need to recognize BOTH with and
2857c478bd9Sstevel@tonic-gate * without the initial underscore.
2867c478bd9Sstevel@tonic-gate */
2877c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_CFLAGS, "XBS5_ILP32_OFF32_CFLAGS",
2887c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
2897c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_CFLAGS, "_XBS5_ILP32_OFF32_CFLAGS",
2907c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
2917c478bd9Sstevel@tonic-gate
2927c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_LDFLAGS, "XBS5_ILP32_OFF32_LDFLAGS",
2937c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
2947c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_LDFLAGS, "_XBS5_ILP32_OFF32_LDFLAGS",
2957c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
2967c478bd9Sstevel@tonic-gate
2977c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_LIBS, "XBS5_ILP32_OFF32_LIBS",
2987c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
2997c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_LIBS, "_XBS5_ILP32_OFF32_LIBS",
3007c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3017c478bd9Sstevel@tonic-gate
3027c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_LINTFLAGS, "XBS5_ILP32_OFF32_LINTFLAGS",
3037c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3047c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFF32_LINTFLAGS, "_XBS5_ILP32_OFF32_LINTFLAGS",
3057c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3067c478bd9Sstevel@tonic-gate
3077c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_CFLAGS, "XBS5_ILP32_OFFBIG_CFLAGS",
3087c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3097c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_CFLAGS, "_XBS5_ILP32_OFFBIG_CFLAGS",
3107c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3117c478bd9Sstevel@tonic-gate
3127c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_LDFLAGS, "XBS5_ILP32_OFFBIG_LDFLAGS",
3137c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3147c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_LDFLAGS, "_XBS5_ILP32_OFFBIG_LDFLAGS",
3157c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3167c478bd9Sstevel@tonic-gate
3177c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_LIBS, "XBS5_ILP32_OFFBIG_LIBS",
3187c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3197c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_LIBS, "_XBS5_ILP32_OFFBIG_LIBS",
3207c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3217c478bd9Sstevel@tonic-gate
3227c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, "XBS5_ILP32_OFFBIG_LINTFLAGS",
3237c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3247c478bd9Sstevel@tonic-gate _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, "_XBS5_ILP32_OFFBIG_LINTFLAGS",
3257c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3267c478bd9Sstevel@tonic-gate
3277c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_CFLAGS, "XBS5_LP64_OFF64_CFLAGS",
3287c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3297c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_CFLAGS, "_XBS5_LP64_OFF64_CFLAGS",
3307c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3317c478bd9Sstevel@tonic-gate
3327c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_LDFLAGS, "XBS5_LP64_OFF64_LDFLAGS",
3337c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3347c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_LDFLAGS, "_XBS5_LP64_OFF64_LDFLAGS",
3357c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3367c478bd9Sstevel@tonic-gate
3377c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_LIBS, "XBS5_LP64_OFF64_LIBS",
3387c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3397c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_LIBS, "_XBS5_LP64_OFF64_LIBS",
3407c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3417c478bd9Sstevel@tonic-gate
3427c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_LINTFLAGS, "XBS5_LP64_OFF64_LINTFLAGS",
3437c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3447c478bd9Sstevel@tonic-gate _CS_XBS5_LP64_OFF64_LINTFLAGS, "_XBS5_LP64_OFF64_LINTFLAGS",
3457c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3467c478bd9Sstevel@tonic-gate
3477c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_CFLAGS, "XBS5_LPBIG_OFFBIG_CFLAGS",
3487c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3497c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_CFLAGS, "_XBS5_LPBIG_OFFBIG_CFLAGS",
3507c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3517c478bd9Sstevel@tonic-gate
3527c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, "XBS5_LPBIG_OFFBIG_LDFLAGS",
3537c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3547c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, "_XBS5_LPBIG_OFFBIG_LDFLAGS",
3557c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3567c478bd9Sstevel@tonic-gate
3577c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_LIBS, "XBS5_LPBIG_OFFBIG_LIBS",
3587c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3597c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_LIBS, "_XBS5_LPBIG_OFFBIG_LIBS",
3607c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3617c478bd9Sstevel@tonic-gate
3627c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, "XBS5_LPBIG_OFFBIG_LINTFLAGS",
3637c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3647c478bd9Sstevel@tonic-gate _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, "_XBS5_LPBIG_OFFBIG_LINTFLAGS",
3657c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3667c478bd9Sstevel@tonic-gate
3677c478bd9Sstevel@tonic-gate /*
3687c478bd9Sstevel@tonic-gate * UNIX 03 confstr() additions for compilation environments
3697c478bd9Sstevel@tonic-gate */
3707c478bd9Sstevel@tonic-gate _CS_POSIX_V6_ILP32_OFF32_CFLAGS, "POSIX_V6_ILP32_OFF32_CFLAGS",
3717c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3727c478bd9Sstevel@tonic-gate _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, "POSIX_V6_ILP32_OFF32_LDFLAGS",
3737c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3747c478bd9Sstevel@tonic-gate _CS_POSIX_V6_ILP32_OFF32_LIBS, "POSIX_V6_ILP32_OFF32_LIBS",
3757c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3767c478bd9Sstevel@tonic-gate _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, "POSIX_V6_ILP32_OFFBIG_CFLAGS",
3777c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3787c478bd9Sstevel@tonic-gate _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, "POSIX_V6_ILP32_OFFBIG_LDFLAGS",
3797c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3807c478bd9Sstevel@tonic-gate _CS_POSIX_V6_ILP32_OFFBIG_LIBS, "POSIX_V6_ILP32_OFFBIG_LIBS",
3817c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3827c478bd9Sstevel@tonic-gate _CS_POSIX_V6_LP64_OFF64_CFLAGS, "POSIX_V6_LP64_OFF64_CFLAGS",
3837c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3847c478bd9Sstevel@tonic-gate _CS_POSIX_V6_LP64_OFF64_LDFLAGS, "POSIX_V6_LP64_OFF64_LDFLAGS",
3857c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3867c478bd9Sstevel@tonic-gate _CS_POSIX_V6_LP64_OFF64_LIBS, "POSIX_V6_LP64_OFF64_LIBS",
3877c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3887c478bd9Sstevel@tonic-gate _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, "POSIX_V6_LPBIG_OFFBIG_CFLAGS",
3897c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3907c478bd9Sstevel@tonic-gate _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, "POSIX_V6_LPBIG_OFFBIG_LDFLAGS",
3917c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3927c478bd9Sstevel@tonic-gate _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, "POSIX_V6_LPBIG_OFFBIG_LIBS",
3937c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3947c478bd9Sstevel@tonic-gate _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS, "POSIX_V6_WIDTH_RESTRICTED_ENVS",
3957c478bd9Sstevel@tonic-gate CONFSTR, NOFLAGS,
3967c478bd9Sstevel@tonic-gate /* End of UNIX 03 compilation environments */
3977c478bd9Sstevel@tonic-gate
3987c478bd9Sstevel@tonic-gate #ifdef _SC_2_C_VERSION /* POSIX.2 table B-4 */
3997c478bd9Sstevel@tonic-gate _SC_2_C_VERSION, "_POSIX2_C_VERSION", SYSCONF, NOFLAGS,
4007c478bd9Sstevel@tonic-gate #else
4017c478bd9Sstevel@tonic-gate _POSIX2_C_VERSION, "_POSIX2_C_VERSION", SELFCONF, NOFLAGS,
4027c478bd9Sstevel@tonic-gate #endif
4037c478bd9Sstevel@tonic-gate
4047c478bd9Sstevel@tonic-gate /*
4057c478bd9Sstevel@tonic-gate * XPG4 support BEGINS
4067c478bd9Sstevel@tonic-gate */
4077c478bd9Sstevel@tonic-gate
4087c478bd9Sstevel@tonic-gate #ifndef CHARCLASS_NAME_MAX
4097c478bd9Sstevel@tonic-gate #define CHARCLASS_NAME_MAX -1
4107c478bd9Sstevel@tonic-gate #endif
4117c478bd9Sstevel@tonic-gate #ifndef CHAR_BIT
4127c478bd9Sstevel@tonic-gate #define CHAR_BIT -1
4137c478bd9Sstevel@tonic-gate #endif
4147c478bd9Sstevel@tonic-gate #ifndef CHAR_MAX
4157c478bd9Sstevel@tonic-gate #define CHAR_MAX -1
4167c478bd9Sstevel@tonic-gate #endif
4177c478bd9Sstevel@tonic-gate #ifndef CHAR_MIN
4187c478bd9Sstevel@tonic-gate #define CHAR_MIN -1
4197c478bd9Sstevel@tonic-gate #endif
4207c478bd9Sstevel@tonic-gate #ifndef INT_MAX
4217c478bd9Sstevel@tonic-gate #define INT_MAX -1
4227c478bd9Sstevel@tonic-gate #endif
4237c478bd9Sstevel@tonic-gate #ifndef INT_MIN
4247c478bd9Sstevel@tonic-gate #define INT_MIN -1
4257c478bd9Sstevel@tonic-gate #endif
4267c478bd9Sstevel@tonic-gate #ifndef LONG_BIT
4277c478bd9Sstevel@tonic-gate #define LONG_BIT -1
4287c478bd9Sstevel@tonic-gate #endif
4297c478bd9Sstevel@tonic-gate #ifndef LONG_MAX
4307c478bd9Sstevel@tonic-gate #define LONG_MAX -1
4317c478bd9Sstevel@tonic-gate #endif
4327c478bd9Sstevel@tonic-gate #ifndef LONG_MIN
4337c478bd9Sstevel@tonic-gate #define LONG_MIN -1
4347c478bd9Sstevel@tonic-gate #endif
4357c478bd9Sstevel@tonic-gate #ifndef MB_LEN_MAX
4367c478bd9Sstevel@tonic-gate #define MB_LEN_MAX -1
4377c478bd9Sstevel@tonic-gate #endif
4387c478bd9Sstevel@tonic-gate #ifndef NL_NMAX
4397c478bd9Sstevel@tonic-gate #define NL_NMAX -1
4407c478bd9Sstevel@tonic-gate #endif
4417c478bd9Sstevel@tonic-gate #ifndef NL_ARGMAX
4427c478bd9Sstevel@tonic-gate #define NL_ARGMAX -1
4437c478bd9Sstevel@tonic-gate #endif
4447c478bd9Sstevel@tonic-gate #ifndef NL_LANGMAX
4457c478bd9Sstevel@tonic-gate #define NL_LANGMAX -1
4467c478bd9Sstevel@tonic-gate #endif
4477c478bd9Sstevel@tonic-gate #ifndef NL_MSGMAX
4487c478bd9Sstevel@tonic-gate #define NL_MSGMAX -1
4497c478bd9Sstevel@tonic-gate #endif
4507c478bd9Sstevel@tonic-gate #ifndef NL_SETMAX
4517c478bd9Sstevel@tonic-gate #define NL_SETMAX -1
4527c478bd9Sstevel@tonic-gate #endif
4537c478bd9Sstevel@tonic-gate #ifndef NL_TEXTMAX
4547c478bd9Sstevel@tonic-gate #define NL_TEXTMAX -1
4557c478bd9Sstevel@tonic-gate #endif
4567c478bd9Sstevel@tonic-gate #ifndef NZERO
4577c478bd9Sstevel@tonic-gate #define NZERO -1
4587c478bd9Sstevel@tonic-gate #endif
4597c478bd9Sstevel@tonic-gate #ifndef SCHAR_MAX
4607c478bd9Sstevel@tonic-gate #define SCHAR_MAX -1
4617c478bd9Sstevel@tonic-gate #endif
4627c478bd9Sstevel@tonic-gate #ifndef SCHAR_MIN
4637c478bd9Sstevel@tonic-gate #define SCHAR_MIN -1
4647c478bd9Sstevel@tonic-gate #endif
4657c478bd9Sstevel@tonic-gate #ifndef SHRT_MAX
4667c478bd9Sstevel@tonic-gate #define SHRT_MAX -1
4677c478bd9Sstevel@tonic-gate #endif
4687c478bd9Sstevel@tonic-gate #ifndef SHRT_MIN
4697c478bd9Sstevel@tonic-gate #define SHRT_MIN -1
4707c478bd9Sstevel@tonic-gate #endif
4717c478bd9Sstevel@tonic-gate #ifndef TMP_MAX
4727c478bd9Sstevel@tonic-gate #define TMP_MAX -1
4737c478bd9Sstevel@tonic-gate #endif
4747c478bd9Sstevel@tonic-gate #ifndef WORD_BIT
4757c478bd9Sstevel@tonic-gate #define WORD_BIT -1
4767c478bd9Sstevel@tonic-gate #endif
4777c478bd9Sstevel@tonic-gate
4787c478bd9Sstevel@tonic-gate
4797c478bd9Sstevel@tonic-gate #ifndef _XOPEN_XPG2
4807c478bd9Sstevel@tonic-gate #define _XOPEN_XPG2 -1
4817c478bd9Sstevel@tonic-gate #endif
4827c478bd9Sstevel@tonic-gate #ifndef _XOPEN_XPG3
4837c478bd9Sstevel@tonic-gate #define _XOPEN_XPG3 -1
4847c478bd9Sstevel@tonic-gate #endif
4857c478bd9Sstevel@tonic-gate #ifndef _XOPEN_XPG4
4867c478bd9Sstevel@tonic-gate #define _XOPEN_XPG4 -1
4877c478bd9Sstevel@tonic-gate #endif
4887c478bd9Sstevel@tonic-gate
4897c478bd9Sstevel@tonic-gate /*
4907c478bd9Sstevel@tonic-gate * the following are values that we should find in <limits.h>
4917c478bd9Sstevel@tonic-gate * so we use SELFCONF here.
4927c478bd9Sstevel@tonic-gate *
4937c478bd9Sstevel@tonic-gate */
4947c478bd9Sstevel@tonic-gate
4957c478bd9Sstevel@tonic-gate /* POSIX.1-1990 */
4967c478bd9Sstevel@tonic-gate CHARCLASS_NAME_MAX, "CHARCLASS_NAME_MAX", SELFCONF, NOFLAGS,
4978ef5f9c7Schin SSIZE_MAX, "SSIZE_MAX", SELFCONF, NOFLAGS,
4987c478bd9Sstevel@tonic-gate
4997c478bd9Sstevel@tonic-gate /* POSIX.1-1988 */
5007c478bd9Sstevel@tonic-gate CHAR_BIT, "CHAR_BIT", SELFCONF, NOFLAGS,
5017c478bd9Sstevel@tonic-gate CHAR_MAX, "CHAR_MAX", SELFCONF, NOFLAGS,
5027c478bd9Sstevel@tonic-gate CHAR_MIN, "CHAR_MIN", SELFCONF, NOFLAGS,
5037c478bd9Sstevel@tonic-gate INT_MAX, "INT_MAX", SELFCONF, NOFLAGS,
5047c478bd9Sstevel@tonic-gate INT_MIN, "INT_MIN", SELFCONF, NOFLAGS,
5057c478bd9Sstevel@tonic-gate LONG_BIT, "LONG_BIT", SELFCONF, NOFLAGS,
5067c478bd9Sstevel@tonic-gate LONG_MAX, "LONG_MAX", SELFCONF, NOFLAGS,
5077c478bd9Sstevel@tonic-gate LONG_MIN, "LONG_MIN", SELFCONF, NOFLAGS,
5087c478bd9Sstevel@tonic-gate MB_LEN_MAX, "MB_LEN_MAX", SELFCONF, NOFLAGS,
5097c478bd9Sstevel@tonic-gate NL_NMAX, "NL_NMAX", SELFCONF, NOFLAGS,
5107c478bd9Sstevel@tonic-gate NL_ARGMAX, "NL_ARGMAX", SELFCONF, NOFLAGS,
5117c478bd9Sstevel@tonic-gate NL_LANGMAX, "NL_LANGMAX", SELFCONF, NOFLAGS,
5127c478bd9Sstevel@tonic-gate NL_MSGMAX, "NL_MSGMAX", SELFCONF, NOFLAGS,
5137c478bd9Sstevel@tonic-gate NL_SETMAX, "NL_SETMAX", SELFCONF, NOFLAGS,
5147c478bd9Sstevel@tonic-gate NL_TEXTMAX, "NL_TEXTMAX", SELFCONF, NOFLAGS,
5157c478bd9Sstevel@tonic-gate NZERO, "NZERO", SELFCONF, NOFLAGS,
5167c478bd9Sstevel@tonic-gate SCHAR_MAX, "SCHAR_MAX", SELFCONF, NOFLAGS,
5177c478bd9Sstevel@tonic-gate SCHAR_MIN, "SCHAR_MIN", SELFCONF, NOFLAGS,
5187c478bd9Sstevel@tonic-gate SHRT_MAX, "SHRT_MAX", SELFCONF, NOFLAGS,
5197c478bd9Sstevel@tonic-gate SHRT_MIN, "SHRT_MIN", SELFCONF, NOFLAGS,
5207c478bd9Sstevel@tonic-gate TMP_MAX, "TMP_MAX", SELFCONF, NOFLAGS,
5217c478bd9Sstevel@tonic-gate
5227c478bd9Sstevel@tonic-gate /*
5237c478bd9Sstevel@tonic-gate * for the unsigned maximums, we cannot rely on the value -1
5247c478bd9Sstevel@tonic-gate * to indicate "undefined".
5257c478bd9Sstevel@tonic-gate */
5267c478bd9Sstevel@tonic-gate #ifndef UCHAR_MAX
5277c478bd9Sstevel@tonic-gate 0, "UCHAR_MAX", SELFCONF, UNDEFINED,
5287c478bd9Sstevel@tonic-gate #else
5297c478bd9Sstevel@tonic-gate (long)UCHAR_MAX, "UCHAR_MAX", SELFCONF, UNSIGNED_VALUE,
5307c478bd9Sstevel@tonic-gate #endif /* UCHAR_MAX */
5317c478bd9Sstevel@tonic-gate #ifndef UINT_MAX
5327c478bd9Sstevel@tonic-gate 0, "UINT_MAX", SELFCONF, UNDEFINED,
5337c478bd9Sstevel@tonic-gate #else
5347c478bd9Sstevel@tonic-gate (long)UINT_MAX, "UINT_MAX", SELFCONF, UNSIGNED_VALUE,
5357c478bd9Sstevel@tonic-gate #endif /* UINT_MAX */
5367c478bd9Sstevel@tonic-gate #ifndef ULONG_MAX
5377c478bd9Sstevel@tonic-gate 0, "ULONG_MAX", SELFCONF, UNDEFINED,
5387c478bd9Sstevel@tonic-gate #else
5397c478bd9Sstevel@tonic-gate (long)ULONG_MAX, "ULONG_MAX", SELFCONF, UNSIGNED_VALUE,
5407c478bd9Sstevel@tonic-gate #endif /* ULONG_MAX */
5417c478bd9Sstevel@tonic-gate #ifndef USHRT_MAX
5427c478bd9Sstevel@tonic-gate 0, "USHRT_MAX", SELFCONF, UNDEFINED,
5437c478bd9Sstevel@tonic-gate #else
5447c478bd9Sstevel@tonic-gate (long)USHRT_MAX, "USHRT_MAX", SELFCONF, UNSIGNED_VALUE,
5457c478bd9Sstevel@tonic-gate #endif /* USHRT_MAX */
5467c478bd9Sstevel@tonic-gate #ifndef SIZE_MAX
5477c478bd9Sstevel@tonic-gate 0, "SIZE_MAX", SELFCONF, UNDEFINED,
5487c478bd9Sstevel@tonic-gate #else
5497c478bd9Sstevel@tonic-gate (long)SIZE_MAX, "SIZE_MAX", SELFCONF, UNSIGNED_VALUE,
5507c478bd9Sstevel@tonic-gate #endif /* SIZE_MAX */
5517c478bd9Sstevel@tonic-gate
5527c478bd9Sstevel@tonic-gate WORD_BIT, "WORD_BIT", SELFCONF, NOFLAGS,
5537c478bd9Sstevel@tonic-gate
5547c478bd9Sstevel@tonic-gate /* XPG4 Version 2 */
5557c478bd9Sstevel@tonic-gate _XOPEN_IOV_MAX, "_XOPEN_IOV_MAX", SELFCONF, NOFLAGS,
5567c478bd9Sstevel@tonic-gate
5577c478bd9Sstevel@tonic-gate /* UNIX 03 */
5587c478bd9Sstevel@tonic-gate _XOPEN_NAME_MAX, "_XOPEN_NAME_MAX", SELFCONF, NOFLAGS,
5597c478bd9Sstevel@tonic-gate _XOPEN_PATH_MAX, "_XOPEN_PATH_MAX", SELFCONF, NOFLAGS,
5607c478bd9Sstevel@tonic-gate
5617c478bd9Sstevel@tonic-gate /*
5627c478bd9Sstevel@tonic-gate * The following are defined via sysconf(). These are considered
5637c478bd9Sstevel@tonic-gate * an extension to sysconf().
5647c478bd9Sstevel@tonic-gate * The -0 is needed if _XOPEN_XPG? is defined to be an empty string.
5657c478bd9Sstevel@tonic-gate */
5667c478bd9Sstevel@tonic-gate _XOPEN_XPG2-0, "_XOPEN_XPG2", SELFCONF, NOFLAGS,
5677c478bd9Sstevel@tonic-gate _XOPEN_XPG3-0, "_XOPEN_XPG3", SELFCONF, NOFLAGS,
5687c478bd9Sstevel@tonic-gate _XOPEN_XPG4-0, "_XOPEN_XPG4", SELFCONF, NOFLAGS,
5697c478bd9Sstevel@tonic-gate
5707c478bd9Sstevel@tonic-gate /*
5717c478bd9Sstevel@tonic-gate * The following should be provided by sysconf() (e.g use SYSCONF),
5727c478bd9Sstevel@tonic-gate * so we look for the appropriate _SC_* symbol in <unistd.h>.
5737c478bd9Sstevel@tonic-gate * If it is not defined, then we use SELFCONF with the value of -1.
5747c478bd9Sstevel@tonic-gate */
5757c478bd9Sstevel@tonic-gate _SC_XOPEN_VERSION, "_XOPEN_VERSION", SYSCONF, NOFLAGS,
5767c478bd9Sstevel@tonic-gate _SC_XOPEN_XCU_VERSION, "_XOPEN_XCU_VERSION", SYSCONF, NOFLAGS,
5777c478bd9Sstevel@tonic-gate _SC_XOPEN_CRYPT, "_XOPEN_CRYPT", SYSCONF, NOFLAGS,
5787c478bd9Sstevel@tonic-gate _SC_XOPEN_ENH_I18N, "_XOPEN_ENH_I18N", SYSCONF, NOFLAGS,
5797c478bd9Sstevel@tonic-gate _SC_XOPEN_SHM, "_XOPEN_SHM", SYSCONF, NOFLAGS,
5807c478bd9Sstevel@tonic-gate
5817c478bd9Sstevel@tonic-gate /*
5827c478bd9Sstevel@tonic-gate * XPG4 support ends
5837c478bd9Sstevel@tonic-gate */
5847c478bd9Sstevel@tonic-gate
5857c478bd9Sstevel@tonic-gate /* XPG4, Version 2 support */
5867c478bd9Sstevel@tonic-gate
5877c478bd9Sstevel@tonic-gate _SC_ATEXIT_MAX, "ATEXIT_MAX", SYSCONF, NOFLAGS,
5887c478bd9Sstevel@tonic-gate _SC_PAGESIZE, "PAGESIZE", SYSCONF, NOFLAGS,
5897c478bd9Sstevel@tonic-gate _SC_PAGE_SIZE, "PAGE_SIZE", SYSCONF, NOFLAGS,
5907c478bd9Sstevel@tonic-gate _SC_XOPEN_UNIX, "_XOPEN_UNIX", SYSCONF, NOFLAGS,
5917c478bd9Sstevel@tonic-gate _SC_IOV_MAX, "IOV_MAX", SYSCONF, NOFLAGS,
5927c478bd9Sstevel@tonic-gate
5937c478bd9Sstevel@tonic-gate /*
5947c478bd9Sstevel@tonic-gate * UNIX 98 - XPG5 additions
5957c478bd9Sstevel@tonic-gate */
5967c478bd9Sstevel@tonic-gate _SC_XOPEN_LEGACY, "_XOPEN_LEGACY", SYSCONF, NOFLAGS,
5977c478bd9Sstevel@tonic-gate _SC_PASS_MAX, "PASS_MAX", SYSCONF, NOFLAGS,
5987c478bd9Sstevel@tonic-gate _SC_AIO_LISTIO_MAX, "AIO_LISTIO_MAX", SYSCONF, NOFLAGS,
5997c478bd9Sstevel@tonic-gate _SC_AIO_MAX, "AIO_MAX", SYSCONF, NOFLAGS,
6007c478bd9Sstevel@tonic-gate _SC_AIO_PRIO_DELTA_MAX, "AIO_PRIO_DELTA_MAX", SYSCONF, NOFLAGS,
6017c478bd9Sstevel@tonic-gate _SC_DELAYTIMER_MAX, "DELAYTIMER_MAX", SYSCONF, NOFLAGS,
6027c478bd9Sstevel@tonic-gate _SC_MQ_OPEN_MAX, "MQ_OPEN_MAX", SYSCONF, NOFLAGS,
6037c478bd9Sstevel@tonic-gate _SC_MQ_PRIO_MAX, "MQ_PRIO_MAX", SYSCONF, NOFLAGS,
6047c478bd9Sstevel@tonic-gate _SC_RTSIG_MAX, "RTSIG_MAX", SYSCONF, NOFLAGS,
6057c478bd9Sstevel@tonic-gate _SC_SEM_NSEMS_MAX, "SEM_NSEMS_MAX", SYSCONF, NOFLAGS,
6067c478bd9Sstevel@tonic-gate _SC_SEM_VALUE_MAX, "SEM_VALUE_MAX", SYSCONF, NOFLAGS,
6077c478bd9Sstevel@tonic-gate _SC_SIGQUEUE_MAX, "SIGQUEUE_MAX", SYSCONF, NOFLAGS,
6087c478bd9Sstevel@tonic-gate _SC_TIMER_MAX, "TIMER_MAX", SYSCONF, NOFLAGS,
6097c478bd9Sstevel@tonic-gate
6107c478bd9Sstevel@tonic-gate _SC_ASYNCHRONOUS_IO, "_POSIX_ASYNCHRONOUS_IO", SYSCONF, NOFLAGS,
6117c478bd9Sstevel@tonic-gate _SC_FSYNC, "_POSIX_FSYNC", SYSCONF, NOFLAGS,
6127c478bd9Sstevel@tonic-gate _SC_MAPPED_FILES, "_POSIX_MAPPED_FILES", SYSCONF, NOFLAGS,
6137c478bd9Sstevel@tonic-gate _SC_MEMLOCK, "_POSIX_MEMLOCK", SYSCONF, NOFLAGS,
6147c478bd9Sstevel@tonic-gate _SC_MEMLOCK_RANGE, "_POSIX_MEMLOCK_RANGE", SYSCONF, NOFLAGS,
6157c478bd9Sstevel@tonic-gate _SC_MEMORY_PROTECTION, "_POSIX_MEMORY_PROTECTION", SYSCONF, NOFLAGS,
6167c478bd9Sstevel@tonic-gate _SC_MESSAGE_PASSING, "_POSIX_MESSAGE_PASSING", SYSCONF, NOFLAGS,
6177c478bd9Sstevel@tonic-gate _SC_PRIORITIZED_IO, "_POSIX_PRIORITIZED_IO", SYSCONF, NOFLAGS,
6187c478bd9Sstevel@tonic-gate _SC_PRIORITY_SCHEDULING, "_POSIX_PRIORITY_SCHEDULING", SYSCONF, NOFLAGS,
6197c478bd9Sstevel@tonic-gate _SC_REALTIME_SIGNALS, "_POSIX_REALTIME_SIGNALS", SYSCONF, NOFLAGS,
6207c478bd9Sstevel@tonic-gate _SC_SEMAPHORES, "_POSIX_SEMAPHORES", SYSCONF, NOFLAGS,
6217c478bd9Sstevel@tonic-gate
6227c478bd9Sstevel@tonic-gate _SC_SHARED_MEMORY_OBJECTS, "_POSIX_SHARED_MEMORY_OBJECTS",
6237c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6247c478bd9Sstevel@tonic-gate
6257c478bd9Sstevel@tonic-gate _SC_SYNCHRONIZED_IO, "_POSIX_SYNCHRONIZED_IO", SYSCONF, NOFLAGS,
6267c478bd9Sstevel@tonic-gate _SC_TIMERS, "_POSIX_TIMERS", SYSCONF, NOFLAGS,
6277c478bd9Sstevel@tonic-gate
6287c478bd9Sstevel@tonic-gate _SC_LOGIN_NAME_MAX, "LOGIN_NAME_MAX", SYSCONF, NOFLAGS,
6297c478bd9Sstevel@tonic-gate
6307c478bd9Sstevel@tonic-gate _SC_THREAD_DESTRUCTOR_ITERATIONS, "PTHREAD_DESTRUCTOR_ITERATIONS",
6317c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6327c478bd9Sstevel@tonic-gate
6337c478bd9Sstevel@tonic-gate _SC_THREAD_KEYS_MAX, "PTHREAD_KEYS_MAX", SYSCONF, NOFLAGS,
6347c478bd9Sstevel@tonic-gate _SC_THREAD_STACK_MIN, "PTHREAD_STACK_MIN", SYSCONF, NOFLAGS,
6357c478bd9Sstevel@tonic-gate _SC_THREAD_THREADS_MAX, "PTHREAD_THREADS_MAX", SYSCONF, NOFLAGS,
6367c478bd9Sstevel@tonic-gate
6377c478bd9Sstevel@tonic-gate _SC_THREADS, "_POSIX_THREADS", SYSCONF, NOFLAGS,
6387c478bd9Sstevel@tonic-gate
6397c478bd9Sstevel@tonic-gate _SC_THREAD_ATTR_STACKADDR, "POSIX_THREAD_ATTR_STACKADDR",
6407c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6417c478bd9Sstevel@tonic-gate _SC_THREAD_ATTR_STACKADDR, "_POSIX_THREAD_ATTR_STACKADDR",
6427c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6437c478bd9Sstevel@tonic-gate
6447c478bd9Sstevel@tonic-gate _SC_THREAD_ATTR_STACKSIZE, "POSIX_THREAD_ATTR_STACKSIZE",
6457c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6467c478bd9Sstevel@tonic-gate _SC_THREAD_ATTR_STACKSIZE, "_POSIX_THREAD_ATTR_STACKSIZE",
6477c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6487c478bd9Sstevel@tonic-gate
6497c478bd9Sstevel@tonic-gate _SC_THREAD_PRIORITY_SCHEDULING, "POSIX_THREAD_PRIORITY_SCHEDULING",
6507c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6517c478bd9Sstevel@tonic-gate _SC_THREAD_PRIORITY_SCHEDULING, "_POSIX_THREAD_PRIORITY_SCHEDULING",
6527c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6537c478bd9Sstevel@tonic-gate
6547c478bd9Sstevel@tonic-gate _SC_THREAD_PRIO_INHERIT, "POSIX_THREAD_PRIO_INHERIT",
6557c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6567c478bd9Sstevel@tonic-gate _SC_THREAD_PRIO_INHERIT, "_POSIX_THREAD_PRIO_INHERIT",
6577c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6587c478bd9Sstevel@tonic-gate
6597c478bd9Sstevel@tonic-gate _SC_THREAD_PRIO_PROTECT, "POSIX_THREAD_PRIO_PROTECT",
6607c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6617c478bd9Sstevel@tonic-gate _SC_THREAD_PRIO_PROTECT, "_POSIX_THREAD_PRIO_PROTECT",
6627c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6637c478bd9Sstevel@tonic-gate
6647c478bd9Sstevel@tonic-gate _SC_THREAD_PROCESS_SHARED, "POSIX_THREAD_PROCESS_SHARED",
6657c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6667c478bd9Sstevel@tonic-gate _SC_THREAD_PROCESS_SHARED, "_POSIX_THREAD_PROCESS_SHARED",
6677c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6687c478bd9Sstevel@tonic-gate
6697c478bd9Sstevel@tonic-gate _SC_THREAD_SAFE_FUNCTIONS, "POSIX_THREAD_SAFE_FUNCTIONS",
6707c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6717c478bd9Sstevel@tonic-gate _SC_THREAD_SAFE_FUNCTIONS, "_POSIX_THREAD_SAFE_FUNCTIONS",
6727c478bd9Sstevel@tonic-gate SYSCONF, NOFLAGS,
6737c478bd9Sstevel@tonic-gate
6747c478bd9Sstevel@tonic-gate _SC_TTY_NAME_MAX, "TTY_NAME_MAX", SYSCONF, NOFLAGS,
6757c478bd9Sstevel@tonic-gate _SC_XOPEN_REALTIME, "_XOPEN_REALTIME", SYSCONF, NOFLAGS,
6767c478bd9Sstevel@tonic-gate _SC_XOPEN_REALTIME_THREADS, "_XOPEN_REALTIME_THREADS", SYSCONF, NOFLAGS,
6777c478bd9Sstevel@tonic-gate
6787c478bd9Sstevel@tonic-gate /*
6797c478bd9Sstevel@tonic-gate * Due to ambiguity in the standard we need
6807c478bd9Sstevel@tonic-gate * to recognize both the underscored name
6817c478bd9Sstevel@tonic-gate * and the non-underscored version in the
6827c478bd9Sstevel@tonic-gate * following variables.
6837c478bd9Sstevel@tonic-gate */
6847c478bd9Sstevel@tonic-gate _SC_XBS5_ILP32_OFF32, "XBS5_ILP32_OFF32", SYSCONF, NOFLAGS,
6857c478bd9Sstevel@tonic-gate _SC_XBS5_ILP32_OFF32, "_XBS5_ILP32_OFF32", SYSCONF, NOFLAGS,
6867c478bd9Sstevel@tonic-gate
6877c478bd9Sstevel@tonic-gate _SC_XBS5_ILP32_OFFBIG, "XBS5_ILP32_OFFBIG", SYSCONF, NOFLAGS,
6887c478bd9Sstevel@tonic-gate _SC_XBS5_ILP32_OFFBIG, "_XBS5_ILP32_OFFBIG", SYSCONF, NOFLAGS,
6897c478bd9Sstevel@tonic-gate
6907c478bd9Sstevel@tonic-gate _SC_XBS5_LP64_OFF64, "XBS5_LP64_OFF64", SYSCONF, NOFLAGS,
6917c478bd9Sstevel@tonic-gate _SC_XBS5_LP64_OFF64, "_XBS5_LP64_OFF64", SYSCONF, NOFLAGS,
6927c478bd9Sstevel@tonic-gate
6937c478bd9Sstevel@tonic-gate _SC_XBS5_LPBIG_OFFBIG, "XBS5_LPBIG_OFFBIG", SYSCONF, NOFLAGS,
6947c478bd9Sstevel@tonic-gate _SC_XBS5_LPBIG_OFFBIG, "_XBS5_LPBIG_OFFBIG", SYSCONF, NOFLAGS,
6957c478bd9Sstevel@tonic-gate
6967c478bd9Sstevel@tonic-gate /*
6977c478bd9Sstevel@tonic-gate * UNIX 03 additions for sysconf() names, and names that are not in interfaces
6987c478bd9Sstevel@tonic-gate */
6997c478bd9Sstevel@tonic-gate _SC_REGEXP, "_POSIX_REGEXP", SYSCONF, NOFLAGS,
7007c478bd9Sstevel@tonic-gate _SC_SHELL, "_POSIX_SHELL", SYSCONF, NOFLAGS,
7017c478bd9Sstevel@tonic-gate _SC_HOST_NAME_MAX, "HOST_NAME_MAX", SYSCONF, NOFLAGS,
7027c478bd9Sstevel@tonic-gate _SC_READER_WRITER_LOCKS, "_POSIX_READER_WRITER_LOCKS", SYSCONF, NOFLAGS,
7037c478bd9Sstevel@tonic-gate _SC_IPV6, "_POSIX_IPV6", SYSCONF, NOFLAGS,
7047c478bd9Sstevel@tonic-gate _SC_RAW_SOCKETS, "_POSIX_RAW_SOCKETS", SYSCONF, NOFLAGS,
7057c478bd9Sstevel@tonic-gate _SC_XOPEN_STREAMS, "_XOPEN_STREAMS", SYSCONF, NOFLAGS,
7067c478bd9Sstevel@tonic-gate _SC_SYMLOOP_MAX, "SYMLOOP_MAX", SYSCONF, NOFLAGS,
7077c478bd9Sstevel@tonic-gate _SC_2_PBS, "_POSIX2_PBS", SYSCONF, NOFLAGS,
7087c478bd9Sstevel@tonic-gate _SC_2_PBS_ACCOUNTING, "_POSIX2_PBS_ACCOUNTING", SYSCONF, NOFLAGS,
7097c478bd9Sstevel@tonic-gate _SC_2_PBS_CHECKPOINT, "_POSIX2_PBS_CHECKPOINT", SYSCONF, NOFLAGS,
7107c478bd9Sstevel@tonic-gate _SC_2_PBS_LOCATE, "_POSIX2_PBS_LOCATE", SYSCONF, NOFLAGS,
7117c478bd9Sstevel@tonic-gate _SC_2_PBS_MESSAGE, "_POSIX2_PBS_MESSAGE", SYSCONF, NOFLAGS,
7127c478bd9Sstevel@tonic-gate _SC_2_PBS_TRACK, "_POSIX2_PBS_TRACK", SYSCONF, NOFLAGS,
7137c478bd9Sstevel@tonic-gate
7147c478bd9Sstevel@tonic-gate _SC_ADVISORY_INFO, "_POSIX_ADVISORY_INFO", SYSCONF, NOFLAGS,
7157c478bd9Sstevel@tonic-gate _SC_BARRIERS, "_POSIX_BARRIERS", SYSCONF, NOFLAGS,
7167c478bd9Sstevel@tonic-gate _SC_CLOCK_SELECTION, "_POSIX_CLOCK_SELECTION", SYSCONF, NOFLAGS,
7177c478bd9Sstevel@tonic-gate _SC_CPUTIME, "_POSIX_CPUTIME", SYSCONF, NOFLAGS,
7187c478bd9Sstevel@tonic-gate _SC_MONOTONIC_CLOCK, "_POSIX_MONOTONIC_CLOCK", SYSCONF, NOFLAGS,
7197c478bd9Sstevel@tonic-gate _SC_SPAWN, "_POSIX_SPAWN", SYSCONF, NOFLAGS,
7207c478bd9Sstevel@tonic-gate _SC_SPIN_LOCKS, "_POSIX_SPIN_LOCKS", SYSCONF, NOFLAGS,
7217c478bd9Sstevel@tonic-gate _SC_SPORADIC_SERVER, "_POSIX_SPORADIC_SERVER", SYSCONF, NOFLAGS,
7227c478bd9Sstevel@tonic-gate _SC_SS_REPL_MAX, "_POSIX_SS_REPL_MAX", SYSCONF, NOFLAGS,
7237c478bd9Sstevel@tonic-gate _SC_THREAD_CPUTIME, "_POSIX_THREAD_CPUTIME", SYSCONF, NOFLAGS,
7247c478bd9Sstevel@tonic-gate _SC_THREAD_SPORADIC_SERVER, "_POSIX_THREAD_SPORADIC_SERVER", SYSCONF,
7257c478bd9Sstevel@tonic-gate NOFLAGS,
7267c478bd9Sstevel@tonic-gate _SC_TIMEOUTS, "_POSIX_TIMEOUTS", SYSCONF, NOFLAGS,
7277c478bd9Sstevel@tonic-gate _SC_TRACE, "_POSIX_TRACE", SYSCONF, NOFLAGS,
7287c478bd9Sstevel@tonic-gate _SC_TRACE_EVENT_FILTER, "_POSIX_TRACE_EVENT_FILTER", SYSCONF, NOFLAGS,
7297c478bd9Sstevel@tonic-gate _SC_TRACE_EVENT_NAME_MAX, "_POSIX_TRACE_EVENT_NAME_MAX", SYSCONF,
7307c478bd9Sstevel@tonic-gate NOFLAGS,
7317c478bd9Sstevel@tonic-gate _SC_TRACE_INHERIT, "_POSIX_TRACE_INHERIT", SYSCONF, NOFLAGS,
7327c478bd9Sstevel@tonic-gate _SC_TRACE_LOG, "_POSIX_TRACE_LOG", SYSCONF, NOFLAGS,
7337c478bd9Sstevel@tonic-gate _SC_TRACE_NAME_MAX, "_POSIX_TRACE_NAME_MAX", SYSCONF, NOFLAGS,
7347c478bd9Sstevel@tonic-gate _SC_TRACE_SYS_MAX, "_POSIX_TRACE_SYS_MAX", SYSCONF, NOFLAGS,
7357c478bd9Sstevel@tonic-gate _SC_TRACE_USER_EVENT_MAX, "_POSIX_TRACE_USER_EVENT_MAX", SYSCONF,
7367c478bd9Sstevel@tonic-gate NOFLAGS,
7377c478bd9Sstevel@tonic-gate _SC_TYPED_MEMORY_OBJECTS, "_POSIX_TYPED_MEMORY_OBJECTS", SYSCONF,
7387c478bd9Sstevel@tonic-gate NOFLAGS,
7397c478bd9Sstevel@tonic-gate
7407c478bd9Sstevel@tonic-gate /*
7417c478bd9Sstevel@tonic-gate * Due to an ambiguity in the specification, we need to recognize both
7427c478bd9Sstevel@tonic-gate * the underscored POSIX name and the non-underscored name. In addition,
7437c478bd9Sstevel@tonic-gate * we need to permit the use of the _V6_* environment names specified
7447c478bd9Sstevel@tonic-gate * in unistd.h.
7457c478bd9Sstevel@tonic-gate */
7467c478bd9Sstevel@tonic-gate _SC_V6_ILP32_OFF32, "_V6_ILP32_OFF32", SYSCONF, NOFLAGS,
7477c478bd9Sstevel@tonic-gate _SC_V6_ILP32_OFF32, "_POSIX_V6_ILP32_OFF32", SYSCONF, NOFLAGS,
7487c478bd9Sstevel@tonic-gate _SC_V6_ILP32_OFF32, "POSIX_V6_ILP32_OFF32", SYSCONF, NOFLAGS,
7497c478bd9Sstevel@tonic-gate
7507c478bd9Sstevel@tonic-gate _SC_V6_ILP32_OFFBIG, "_V6_ILP32_OFFBIG", SYSCONF, NOFLAGS,
7517c478bd9Sstevel@tonic-gate _SC_V6_ILP32_OFFBIG, "_POSIX_V6_ILP32_OFFBIG", SYSCONF, NOFLAGS,
7527c478bd9Sstevel@tonic-gate _SC_V6_ILP32_OFFBIG, "POSIX_V6_ILP32_OFFBIG", SYSCONF, NOFLAGS,
7537c478bd9Sstevel@tonic-gate
7547c478bd9Sstevel@tonic-gate _SC_V6_LP64_OFF64, "_V6_LP64_OFF64", SYSCONF, NOFLAGS,
7557c478bd9Sstevel@tonic-gate _SC_V6_LP64_OFF64, "_POSIX_V6_LP64_OFF64", SYSCONF, NOFLAGS,
7567c478bd9Sstevel@tonic-gate _SC_V6_LP64_OFF64, "POSIX_V6_LP64_OFF64", SYSCONF, NOFLAGS,
7577c478bd9Sstevel@tonic-gate
7587c478bd9Sstevel@tonic-gate _SC_V6_LPBIG_OFFBIG, "_V6_LPBIG_OFFBIG", SYSCONF, NOFLAGS,
7597c478bd9Sstevel@tonic-gate _SC_V6_LPBIG_OFFBIG, "_POSIX_V6_LPBIG_OFFBIG", SYSCONF, NOFLAGS,
7607c478bd9Sstevel@tonic-gate _SC_V6_LPBIG_OFFBIG, "POSIX_V6_LPBIG_OFFBIG", SYSCONF, NOFLAGS,
7613c1e5174SDavid Höppner /*
7623c1e5174SDavid Höppner * System V Interface Definition
7633c1e5174SDavid Höppner */
7643c1e5174SDavid Höppner _SC_NPROCESSORS_CONF, "NPROCESSORS_CONF", SYSCONF, NOFLAGS,
7653c1e5174SDavid Höppner _SC_NPROCESSORS_MAX, "NPROCESSORS_MAX", SYSCONF, NOFLAGS,
7663c1e5174SDavid Höppner _SC_NPROCESSORS_ONLN, "NPROCESSORS_ONLN", SYSCONF, NOFLAGS,
7677c478bd9Sstevel@tonic-gate 0, NULL, 0, 0 /* end of table */
7687c478bd9Sstevel@tonic-gate };
7697c478bd9Sstevel@tonic-gate
7707c478bd9Sstevel@tonic-gate
7717c478bd9Sstevel@tonic-gate /*
7727c478bd9Sstevel@tonic-gate * Print usage message.
7737c478bd9Sstevel@tonic-gate */
7747c478bd9Sstevel@tonic-gate static int
usage()7757c478bd9Sstevel@tonic-gate usage()
7767c478bd9Sstevel@tonic-gate {
7777c478bd9Sstevel@tonic-gate
7787c478bd9Sstevel@tonic-gate (void) fputs(gettext(
779019c3c43Sraf "usage:\tgetconf [-v specification] system_var\n"
780019c3c43Sraf "\tgetconf [-v specification] path_var pathname\n"
781019c3c43Sraf "\tgetconf -a\n"), stderr);
7827c478bd9Sstevel@tonic-gate return (2);
7837c478bd9Sstevel@tonic-gate }
7847c478bd9Sstevel@tonic-gate
7857c478bd9Sstevel@tonic-gate
7867c478bd9Sstevel@tonic-gate static int
namecmp(const void * a,const void * b)7877c478bd9Sstevel@tonic-gate namecmp(const void *a, const void *b)
7887c478bd9Sstevel@tonic-gate {
7897c478bd9Sstevel@tonic-gate return (strcoll(((const struct sctab *)a)->name,
7907c478bd9Sstevel@tonic-gate ((const struct sctab *)b)->name));
7917c478bd9Sstevel@tonic-gate }
7927c478bd9Sstevel@tonic-gate
7937c478bd9Sstevel@tonic-gate
7947c478bd9Sstevel@tonic-gate static int
getconf(struct sctab * scp,int argc,char * name,char * file)7957c478bd9Sstevel@tonic-gate getconf(struct sctab *scp, int argc, char *name, char *file)
7967c478bd9Sstevel@tonic-gate {
7977c478bd9Sstevel@tonic-gate register size_t len;
7987c478bd9Sstevel@tonic-gate register char *buffer;
7997c478bd9Sstevel@tonic-gate long value;
8007c478bd9Sstevel@tonic-gate
8017c478bd9Sstevel@tonic-gate switch (scp->type) {
8027c478bd9Sstevel@tonic-gate case SELFCONF:
8037c478bd9Sstevel@tonic-gate if (argc > 2)
8047c478bd9Sstevel@tonic-gate return (usage());
8057c478bd9Sstevel@tonic-gate if (scp->flag & UNDEFINED ||
8067c478bd9Sstevel@tonic-gate (!(scp->flag&UNSIGNED_VALUE) && scp->value == -1)) {
8077c478bd9Sstevel@tonic-gate /* DO NOT TRANSLATE */
8087c478bd9Sstevel@tonic-gate (void) printf("undefined\n");
8097c478bd9Sstevel@tonic-gate } else
8107c478bd9Sstevel@tonic-gate if (scp->flag & UNSIGNED_VALUE)
8117c478bd9Sstevel@tonic-gate (void) printf("%lu\n", scp->value);
8127c478bd9Sstevel@tonic-gate else
8137c478bd9Sstevel@tonic-gate (void) printf("%ld\n", scp->value);
8147c478bd9Sstevel@tonic-gate break;
8157c478bd9Sstevel@tonic-gate
8167c478bd9Sstevel@tonic-gate case SYSCONF:
8177c478bd9Sstevel@tonic-gate if (argc > 2)
8187c478bd9Sstevel@tonic-gate return (usage());
8197c478bd9Sstevel@tonic-gate errno = 0;
8207c478bd9Sstevel@tonic-gate if (scp->flag & UNDEFINED ||
8217c478bd9Sstevel@tonic-gate (value = sysconf((int)scp->value)) == -1) {
8227c478bd9Sstevel@tonic-gate if (errno == EINVAL) {
8237c478bd9Sstevel@tonic-gate (void) fprintf(stderr,
8247c478bd9Sstevel@tonic-gate gettext(INVAL_ARG), name);
8257c478bd9Sstevel@tonic-gate return (1);
8267c478bd9Sstevel@tonic-gate } else {
8277c478bd9Sstevel@tonic-gate /* DO NOT TRANSLATE */
8287c478bd9Sstevel@tonic-gate (void) printf("undefined\n");
8297c478bd9Sstevel@tonic-gate return (0);
8307c478bd9Sstevel@tonic-gate }
8317c478bd9Sstevel@tonic-gate } else
8327c478bd9Sstevel@tonic-gate (void) printf("%ld\n", value);
8337c478bd9Sstevel@tonic-gate break;
8347c478bd9Sstevel@tonic-gate
8357c478bd9Sstevel@tonic-gate case CONFSTR:
8367c478bd9Sstevel@tonic-gate if (argc > 2)
8377c478bd9Sstevel@tonic-gate return (usage());
8387c478bd9Sstevel@tonic-gate errno = 0;
8397c478bd9Sstevel@tonic-gate len = confstr((int)scp->value, NULL, (size_t)0);
8401cfc4fb7SDavid Höppner if (len == 0) {
8417c478bd9Sstevel@tonic-gate if (errno == EINVAL) {
8427c478bd9Sstevel@tonic-gate (void) fprintf(stderr, gettext(INVAL_ARG),
8437c478bd9Sstevel@tonic-gate name);
8447c478bd9Sstevel@tonic-gate return (1);
8457c478bd9Sstevel@tonic-gate } else {
8467c478bd9Sstevel@tonic-gate /* DO NOT TRANSLATE */
8477c478bd9Sstevel@tonic-gate (void) printf("undefined\n");
8487c478bd9Sstevel@tonic-gate return (0);
8497c478bd9Sstevel@tonic-gate }
8501cfc4fb7SDavid Höppner }
8517c478bd9Sstevel@tonic-gate /*
8527c478bd9Sstevel@tonic-gate * allocate space to store result of constr() into
8537c478bd9Sstevel@tonic-gate */
8547c478bd9Sstevel@tonic-gate if ((buffer = malloc(len)) == NULL) {
8557c478bd9Sstevel@tonic-gate (void) fprintf(stderr,
8567c478bd9Sstevel@tonic-gate gettext("insufficient memory available"));
8577c478bd9Sstevel@tonic-gate return (1);
8587c478bd9Sstevel@tonic-gate }
8597c478bd9Sstevel@tonic-gate
8607c478bd9Sstevel@tonic-gate assert(confstr((int)scp->value, buffer, len) != 0);
8617c478bd9Sstevel@tonic-gate
8627c478bd9Sstevel@tonic-gate (void) printf("%s\n", buffer);
8637c478bd9Sstevel@tonic-gate free(buffer);
8647c478bd9Sstevel@tonic-gate break;
8657c478bd9Sstevel@tonic-gate
8667c478bd9Sstevel@tonic-gate case PATHCONF:
8677c478bd9Sstevel@tonic-gate if (argc != 3)
8687c478bd9Sstevel@tonic-gate return (usage());
8697c478bd9Sstevel@tonic-gate errno = 0;
8707c478bd9Sstevel@tonic-gate if ((value = pathconf(file, (int)scp->value)) == -1) {
8717c478bd9Sstevel@tonic-gate if (errno == EINVAL || errno == 0) {
8727c478bd9Sstevel@tonic-gate /* Does not support the association */
8737c478bd9Sstevel@tonic-gate /* DO NOT TRANSLATE */
8747c478bd9Sstevel@tonic-gate (void) printf("undefined\n");
8757c478bd9Sstevel@tonic-gate return (0);
8767c478bd9Sstevel@tonic-gate } else {
8777c478bd9Sstevel@tonic-gate /* Probably problems with the pathname itself */
8787c478bd9Sstevel@tonic-gate if (aflag) {
8797c478bd9Sstevel@tonic-gate (void) printf("%s\n", file);
8807c478bd9Sstevel@tonic-gate } else {
8817c478bd9Sstevel@tonic-gate (void) printf("%s", file);
8827c478bd9Sstevel@tonic-gate }
8837c478bd9Sstevel@tonic-gate return (1);
8847c478bd9Sstevel@tonic-gate }
8857c478bd9Sstevel@tonic-gate }
8867c478bd9Sstevel@tonic-gate (void) printf("%ld\n", value);
8877c478bd9Sstevel@tonic-gate break;
8887c478bd9Sstevel@tonic-gate }
8897c478bd9Sstevel@tonic-gate return (0);
8907c478bd9Sstevel@tonic-gate }
8917c478bd9Sstevel@tonic-gate
8927c478bd9Sstevel@tonic-gate int
main(int argc,char ** argv)8937c478bd9Sstevel@tonic-gate main(int argc, char **argv)
8947c478bd9Sstevel@tonic-gate {
8957c478bd9Sstevel@tonic-gate register struct sctab *scp;
8967c478bd9Sstevel@tonic-gate int c;
8977c478bd9Sstevel@tonic-gate int exstat = 0;
8987c478bd9Sstevel@tonic-gate
8997c478bd9Sstevel@tonic-gate (void) setlocale(LC_ALL, "");
9007c478bd9Sstevel@tonic-gate #if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */
9017c478bd9Sstevel@tonic-gate #define TEXT_DOMAIN "SYS_TEST"
9027c478bd9Sstevel@tonic-gate #endif
9037c478bd9Sstevel@tonic-gate (void) textdomain(TEXT_DOMAIN);
9047c478bd9Sstevel@tonic-gate
9057c478bd9Sstevel@tonic-gate while ((c = getopt(argc, argv, "av:")) != -1)
9067c478bd9Sstevel@tonic-gate switch (c) {
9077c478bd9Sstevel@tonic-gate case 'a':
9087c478bd9Sstevel@tonic-gate aflag = 1;
9097c478bd9Sstevel@tonic-gate break;
9107c478bd9Sstevel@tonic-gate case 'v':
9117c478bd9Sstevel@tonic-gate /*
9127c478bd9Sstevel@tonic-gate * Unix98 adds the -v option to allow
9137c478bd9Sstevel@tonic-gate * programming 'specifications' to be
9147c478bd9Sstevel@tonic-gate * indicated, for present purposes
9157c478bd9Sstevel@tonic-gate * the specification isn't really
9167c478bd9Sstevel@tonic-gate * doing anything of value, so for
9177c478bd9Sstevel@tonic-gate * the moment getopt just processes the
9187c478bd9Sstevel@tonic-gate * option value and argv[1] is adjusted.
9197c478bd9Sstevel@tonic-gate *
9207c478bd9Sstevel@tonic-gate * At some later date we might want to
9217c478bd9Sstevel@tonic-gate * do specification processing at this
9227c478bd9Sstevel@tonic-gate * point.
9237c478bd9Sstevel@tonic-gate */
9247c478bd9Sstevel@tonic-gate break;
9257c478bd9Sstevel@tonic-gate case '?':
9267c478bd9Sstevel@tonic-gate return (usage());
9277c478bd9Sstevel@tonic-gate }
9287c478bd9Sstevel@tonic-gate argc -= optind-1;
9297c478bd9Sstevel@tonic-gate argv += optind-1;
9307c478bd9Sstevel@tonic-gate
9317c478bd9Sstevel@tonic-gate if ((aflag && argc >= 2) || (!aflag && argc < 2))
9327c478bd9Sstevel@tonic-gate return (usage());
9337c478bd9Sstevel@tonic-gate if (aflag) {
9347c478bd9Sstevel@tonic-gate
9357c478bd9Sstevel@tonic-gate #define TabStop 8
9367c478bd9Sstevel@tonic-gate #define RightColumn 32
9377c478bd9Sstevel@tonic-gate #define DefPathName "."
9387c478bd9Sstevel@tonic-gate
9397c478bd9Sstevel@tonic-gate /*
9407c478bd9Sstevel@tonic-gate * sort the table by the "name" field
9417c478bd9Sstevel@tonic-gate * so we print it in sorted order
9427c478bd9Sstevel@tonic-gate */
943*bc54f855SJohn Levon qsort(&sctab[0], (sizeof (sctab) /
944*bc54f855SJohn Levon sizeof (struct sctab)) - 1,
945*bc54f855SJohn Levon sizeof (struct sctab), namecmp);
9467c478bd9Sstevel@tonic-gate
9477c478bd9Sstevel@tonic-gate /*
9487c478bd9Sstevel@tonic-gate * print all the known symbols and their values
9497c478bd9Sstevel@tonic-gate */
9507c478bd9Sstevel@tonic-gate for (scp = &sctab[0]; scp->name != NULL; ++scp) {
9517c478bd9Sstevel@tonic-gate int stat;
9527c478bd9Sstevel@tonic-gate
9537c478bd9Sstevel@tonic-gate /*
9547c478bd9Sstevel@tonic-gate * create 2 columns:
9557c478bd9Sstevel@tonic-gate * variable name in the left column,
9567c478bd9Sstevel@tonic-gate * value in the right column.
9577c478bd9Sstevel@tonic-gate * The right column starts at a tab stop.
9587c478bd9Sstevel@tonic-gate */
9597c478bd9Sstevel@tonic-gate (void) printf("%s:\t", scp->name);
9607c478bd9Sstevel@tonic-gate
9617c478bd9Sstevel@tonic-gate c = strlen(scp->name) + 1;
9627c478bd9Sstevel@tonic-gate c = (c+TabStop) / TabStop, c *= TabStop;
9637c478bd9Sstevel@tonic-gate for (; c < RightColumn; c += TabStop)
9647c478bd9Sstevel@tonic-gate (void) putchar('\t');
9657c478bd9Sstevel@tonic-gate
9667c478bd9Sstevel@tonic-gate /*
9677c478bd9Sstevel@tonic-gate * for pathconf() related variables that require
9687c478bd9Sstevel@tonic-gate * a pathname, use "."
9697c478bd9Sstevel@tonic-gate */
9707c478bd9Sstevel@tonic-gate stat = getconf(scp, scp->type == PATHCONF ? 3 : 2,
9717c478bd9Sstevel@tonic-gate scp->name, DefPathName);
9727c478bd9Sstevel@tonic-gate
9737c478bd9Sstevel@tonic-gate exstat |= stat;
9747c478bd9Sstevel@tonic-gate
9757c478bd9Sstevel@tonic-gate /*
9767c478bd9Sstevel@tonic-gate * if stat != 0, then an error message was already
9777c478bd9Sstevel@tonic-gate * printed in getconf(),
9787c478bd9Sstevel@tonic-gate * so don't need to print one here
9797c478bd9Sstevel@tonic-gate */
9807c478bd9Sstevel@tonic-gate }
9817c478bd9Sstevel@tonic-gate } else {
9827c478bd9Sstevel@tonic-gate
9837c478bd9Sstevel@tonic-gate /*
9847c478bd9Sstevel@tonic-gate * find the name of the specified variable (argv[1])
9857c478bd9Sstevel@tonic-gate * and print its value.
9867c478bd9Sstevel@tonic-gate */
9877c478bd9Sstevel@tonic-gate for (scp = &sctab[0]; scp->name != NULL; ++scp)
9887c478bd9Sstevel@tonic-gate if (strcmp(argv[1], scp->name) == 0) {
9897c478bd9Sstevel@tonic-gate exstat = getconf(scp, argc, argv[1], argv[2]);
9907c478bd9Sstevel@tonic-gate break;
9917c478bd9Sstevel@tonic-gate }
9927c478bd9Sstevel@tonic-gate
9937c478bd9Sstevel@tonic-gate /*
9947c478bd9Sstevel@tonic-gate * if at last entry in table, then the user specified
9957c478bd9Sstevel@tonic-gate * variable is invalid
9967c478bd9Sstevel@tonic-gate */
9977c478bd9Sstevel@tonic-gate if (scp->name == NULL) {
9987c478bd9Sstevel@tonic-gate errno = EINVAL;
9997c478bd9Sstevel@tonic-gate (void) fprintf(stderr, gettext(INVAL_ARG), argv[1]);
10007c478bd9Sstevel@tonic-gate return (1);
10017c478bd9Sstevel@tonic-gate }
10027c478bd9Sstevel@tonic-gate }
10037c478bd9Sstevel@tonic-gate return (exstat);
10047c478bd9Sstevel@tonic-gate }
1005