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