xref: /titanic_53/usr/src/cmd/getconf/getconf.c (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
24*7c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
25*7c478bd9Sstevel@tonic-gate  */
26*7c478bd9Sstevel@tonic-gate 
27*7c478bd9Sstevel@tonic-gate /*
28*7c478bd9Sstevel@tonic-gate  * Copyright 1985, 1993 by Mortice Kern Systems Inc.  All rights reserved.
29*7c478bd9Sstevel@tonic-gate  *
30*7c478bd9Sstevel@tonic-gate  */
31*7c478bd9Sstevel@tonic-gate 
32*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
33*7c478bd9Sstevel@tonic-gate 
34*7c478bd9Sstevel@tonic-gate /*
35*7c478bd9Sstevel@tonic-gate  * getconf -- POSIX.2 compatible utility to query configuration specific
36*7c478bd9Sstevel@tonic-gate  *	      parameters.
37*7c478bd9Sstevel@tonic-gate  *         -- XPG4 support added June/93
38*7c478bd9Sstevel@tonic-gate  *
39*7c478bd9Sstevel@tonic-gate  *         -- XPG5 support added Dec/97
40*7c478bd9Sstevel@tonic-gate  *
41*7c478bd9Sstevel@tonic-gate  *         -- XPG6 support added May/2003
42*7c478bd9Sstevel@tonic-gate  */
43*7c478bd9Sstevel@tonic-gate 
44*7c478bd9Sstevel@tonic-gate #include <stdio.h>
45*7c478bd9Sstevel@tonic-gate #include <stdlib.h>
46*7c478bd9Sstevel@tonic-gate #include <string.h>
47*7c478bd9Sstevel@tonic-gate #include <errno.h>
48*7c478bd9Sstevel@tonic-gate #include <unistd.h>
49*7c478bd9Sstevel@tonic-gate #include <limits.h>
50*7c478bd9Sstevel@tonic-gate #include <locale.h>
51*7c478bd9Sstevel@tonic-gate #include <libintl.h>
52*7c478bd9Sstevel@tonic-gate #include <assert.h>
53*7c478bd9Sstevel@tonic-gate 
54*7c478bd9Sstevel@tonic-gate extern size_t confstr(int, char *, size_t);
55*7c478bd9Sstevel@tonic-gate 
56*7c478bd9Sstevel@tonic-gate static int aflag = 0;
57*7c478bd9Sstevel@tonic-gate 
58*7c478bd9Sstevel@tonic-gate #define	INVAL_ARG	"getconf: Invalid argument (%s)\n"
59*7c478bd9Sstevel@tonic-gate #define	INVAL_PATHARG	"getconf: Invalid argument (%s or %s)\n"
60*7c478bd9Sstevel@tonic-gate 
61*7c478bd9Sstevel@tonic-gate /*
62*7c478bd9Sstevel@tonic-gate  *  Notes:
63*7c478bd9Sstevel@tonic-gate  *  The sctab.value field is defined to be a long.
64*7c478bd9Sstevel@tonic-gate  *  There are some values that are "unsigned long"; these values
65*7c478bd9Sstevel@tonic-gate  *  can be stored in a "long" field but when output, must be printed
66*7c478bd9Sstevel@tonic-gate  *  as an unsigned value. Thus, these values must have UNSIGNED_VALUE bit
67*7c478bd9Sstevel@tonic-gate  *  set in sctab.flag field.
68*7c478bd9Sstevel@tonic-gate  *
69*7c478bd9Sstevel@tonic-gate  *  There are 2 different ways to indicate a symbol is undefined:
70*7c478bd9Sstevel@tonic-gate  *     1) sctab.flag = UNDEFINED
71*7c478bd9Sstevel@tonic-gate  *     2) or sctab.value = -1 (and if !UNDEFINED and !UNSIGNED_VALUE)
72*7c478bd9Sstevel@tonic-gate  *
73*7c478bd9Sstevel@tonic-gate  *  There are a group of symbols (e.g CHAR_MIN, INT_MAX, INT_MIN, LONG_BIT ...)
74*7c478bd9Sstevel@tonic-gate  *  which we may set to -1 if they are not pre-defined in a system header file.
75*7c478bd9Sstevel@tonic-gate  *  This is used to indicate that these symbols are "undefined".
76*7c478bd9Sstevel@tonic-gate  *  We are assuming that these symbols cannot reasonably have a value of -1
77*7c478bd9Sstevel@tonic-gate  *  if they were defined in a system header file.
78*7c478bd9Sstevel@tonic-gate  *  (Unless of course -1 can be used to indicate "undefined" for that symbol)
79*7c478bd9Sstevel@tonic-gate  */
80*7c478bd9Sstevel@tonic-gate 
81*7c478bd9Sstevel@tonic-gate static struct sctab {
82*7c478bd9Sstevel@tonic-gate 	long value;
83*7c478bd9Sstevel@tonic-gate 	char *name;
84*7c478bd9Sstevel@tonic-gate 	enum { SELFCONF, SYSCONF, PATHCONF, CONFSTR } type;
85*7c478bd9Sstevel@tonic-gate 	int flag;
86*7c478bd9Sstevel@tonic-gate /* bit fields for sctab.flag member */
87*7c478bd9Sstevel@tonic-gate #define	NOFLAGS		0	/* no special indicators */
88*7c478bd9Sstevel@tonic-gate #define	UNDEFINED	1	/* value is known undefined at compile time */
89*7c478bd9Sstevel@tonic-gate #define	UNSIGNED_VALUE	2	/* value is an unsigned */
90*7c478bd9Sstevel@tonic-gate } sctab[] = {
91*7c478bd9Sstevel@tonic-gate /*
92*7c478bd9Sstevel@tonic-gate  * Some entries in this structure have both leading _ and non leading _
93*7c478bd9Sstevel@tonic-gate  * versions for compatibility with various versions of the specifications.
94*7c478bd9Sstevel@tonic-gate  * It is not expected that both forms will be required for new entries.
95*7c478bd9Sstevel@tonic-gate  */
96*7c478bd9Sstevel@tonic-gate 
97*7c478bd9Sstevel@tonic-gate 	/* POSIX.2-1992 table 2-17 */
98*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_BASE_MAX,	"POSIX2_BC_BASE_MAX",	SELFCONF,   NOFLAGS,
99*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_BASE_MAX,	"_POSIX2_BC_BASE_MAX",	SELFCONF,  NOFLAGS,
100*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_DIM_MAX,	"POSIX2_BC_DIM_MAX",	SELFCONF,   NOFLAGS,
101*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_DIM_MAX,	"_POSIX2_BC_DIM_MAX",	SELFCONF,  NOFLAGS,
102*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_SCALE_MAX,	"POSIX2_BC_SCALE_MAX",	SELFCONF,   NOFLAGS,
103*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_SCALE_MAX,	"_POSIX2_BC_SCALE_MAX",	SELFCONF,  NOFLAGS,
104*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_STRING_MAX,	"POSIX2_BC_STRING_MAX",	SELFCONF,   NOFLAGS,
105*7c478bd9Sstevel@tonic-gate 	_POSIX2_BC_STRING_MAX,	"_POSIX2_BC_STRING_MAX", SELFCONF, NOFLAGS,
106*7c478bd9Sstevel@tonic-gate 	_POSIX2_COLL_WEIGHTS_MAX, "POSIX2_COLL_WEIGHTS_MAX", SELFCONF,  NOFLAGS,
107*7c478bd9Sstevel@tonic-gate 	_POSIX2_COLL_WEIGHTS_MAX, "_POSIX2_COLL_WEIGHTS_MAX", SELFCONF, NOFLAGS,
108*7c478bd9Sstevel@tonic-gate 	_POSIX2_EXPR_NEST_MAX,	"POSIX2_EXPR_NEST_MAX",	SELFCONF,   NOFLAGS,
109*7c478bd9Sstevel@tonic-gate 	_POSIX2_EXPR_NEST_MAX,	"_POSIX2_EXPR_NEST_MAX", SELFCONF,   NOFLAGS,
110*7c478bd9Sstevel@tonic-gate 	_POSIX2_LINE_MAX,	"POSIX2_LINE_MAX",	SELFCONF,   NOFLAGS,
111*7c478bd9Sstevel@tonic-gate 	_POSIX2_LINE_MAX,	"_POSIX2_LINE_MAX",	SELFCONF,  NOFLAGS,
112*7c478bd9Sstevel@tonic-gate 	_POSIX2_RE_DUP_MAX,	"POSIX2_RE_DUP_MAX",	SELFCONF,   NOFLAGS,
113*7c478bd9Sstevel@tonic-gate 	_POSIX2_RE_DUP_MAX,	"_POSIX2_RE_DUP_MAX",	SELFCONF,   NOFLAGS,
114*7c478bd9Sstevel@tonic-gate 	/* See limits.h section below for _POSIX_RE_DUP_MAX */
115*7c478bd9Sstevel@tonic-gate 
116*7c478bd9Sstevel@tonic-gate 	/* UNIX 98 */
117*7c478bd9Sstevel@tonic-gate 	_POSIX_AIO_LISTIO_MAX,	"_POSIX_AIO_LISTIO_MAX", SELFCONF, 	NOFLAGS,
118*7c478bd9Sstevel@tonic-gate 	_POSIX_AIO_MAX,		"_POSIX_AIO_MAX",	 SELFCONF, 	NOFLAGS,
119*7c478bd9Sstevel@tonic-gate 	_POSIX_DELAYTIMER_MAX,	"_POSIX_DELAYTIMER_MAX", SELFCONF, 	NOFLAGS,
120*7c478bd9Sstevel@tonic-gate 	_POSIX_LOGIN_NAME_MAX,	"_POSIX_LOGIN_NAME_MAX", SELFCONF, 	NOFLAGS,
121*7c478bd9Sstevel@tonic-gate 	_POSIX_MQ_OPEN_MAX,	"_POSIX_MQ_OPEN_MAX",	 SELFCONF, 	NOFLAGS,
122*7c478bd9Sstevel@tonic-gate 	_POSIX_MQ_PRIO_MAX,	"_POSIX_MQ_PRIO_MAX",	 SELFCONF, 	NOFLAGS,
123*7c478bd9Sstevel@tonic-gate 	_POSIX_RTSIG_MAX,	"_POSIX_RTSIG_MAX",	 SELFCONF,	NOFLAGS,
124*7c478bd9Sstevel@tonic-gate 	_POSIX_SEM_NSEMS_MAX,	"_POSIX_SEM_NSEMS_MAX",	 SELFCONF,	NOFLAGS,
125*7c478bd9Sstevel@tonic-gate 	_POSIX_SEM_VALUE_MAX,	"_POSIX_SEM_VALUE_MAX",	 SELFCONF,	NOFLAGS,
126*7c478bd9Sstevel@tonic-gate 	_POSIX_SIGQUEUE_MAX,	"_POSIX_SIGQUEUE_MAX",	 SELFCONF,	NOFLAGS,
127*7c478bd9Sstevel@tonic-gate 	_POSIX_TTY_NAME_MAX,	"_POSIX_TTY_NAME_MAX",	 SELFCONF,	NOFLAGS,
128*7c478bd9Sstevel@tonic-gate 
129*7c478bd9Sstevel@tonic-gate 	/* UNIX 03 */
130*7c478bd9Sstevel@tonic-gate 	_POSIX_HOST_NAME_MAX,	"_POSIX_HOST_NAME_MAX",	  SELFCONF,   NOFLAGS,
131*7c478bd9Sstevel@tonic-gate 	_POSIX_RE_DUP_MAX,	"_POSIX_RE_DUP_MAX",	  SELFCONF,   NOFLAGS,
132*7c478bd9Sstevel@tonic-gate 	_POSIX_CLOCKRES_MIN,	"_POSIX_CLOCKRES_MIN",	  SELFCONF,   NOFLAGS,
133*7c478bd9Sstevel@tonic-gate 	_POSIX_SYMLINK_MAX,	"_POSIX_SYMLINK_MAX",	  SELFCONF,   NOFLAGS,
134*7c478bd9Sstevel@tonic-gate 	_POSIX_SYMLOOP_MAX,	"_POSIX_SYMLOOP_MAX",	  SELFCONF,   NOFLAGS,
135*7c478bd9Sstevel@tonic-gate 	CHARCLASS_NAME_MAX, "_POSIX2_CHARCLASS_NAME_MAX", SELFCONF,   NOFLAGS,
136*7c478bd9Sstevel@tonic-gate 
137*7c478bd9Sstevel@tonic-gate 	/* POSIX.2-1992 table 2-17 */
138*7c478bd9Sstevel@tonic-gate 	_SC_2_VERSION,		"POSIX2_VERSION",	SYSCONF,   NOFLAGS,
139*7c478bd9Sstevel@tonic-gate 	_SC_2_VERSION,		"_POSIX2_VERSION",	SYSCONF,   NOFLAGS,
140*7c478bd9Sstevel@tonic-gate 
141*7c478bd9Sstevel@tonic-gate 	/* POSIX.2-1992 table 2-18 */
142*7c478bd9Sstevel@tonic-gate 	_SC_BC_BASE_MAX,	"BC_BASE_MAX",		SYSCONF,   NOFLAGS,
143*7c478bd9Sstevel@tonic-gate 	_SC_BC_DIM_MAX,		"BC_DIM_MAX",		SYSCONF,   NOFLAGS,
144*7c478bd9Sstevel@tonic-gate 	_SC_BC_SCALE_MAX,	"BC_SCALE_MAX",		SYSCONF,   NOFLAGS,
145*7c478bd9Sstevel@tonic-gate 	_SC_BC_STRING_MAX,	"BC_STRING_MAX",	SYSCONF,   NOFLAGS,
146*7c478bd9Sstevel@tonic-gate 	_SC_COLL_WEIGHTS_MAX,	"COLL_WEIGHTS_MAX",	SYSCONF,   NOFLAGS,
147*7c478bd9Sstevel@tonic-gate 	_SC_EXPR_NEST_MAX,	"EXPR_NEST_MAX",	SYSCONF,   NOFLAGS,
148*7c478bd9Sstevel@tonic-gate 	_SC_LINE_MAX,		"LINE_MAX",		SYSCONF,   NOFLAGS,
149*7c478bd9Sstevel@tonic-gate 	_SC_RE_DUP_MAX,		"RE_DUP_MAX",		SYSCONF,   NOFLAGS,
150*7c478bd9Sstevel@tonic-gate 
151*7c478bd9Sstevel@tonic-gate 	/* POSIX.2-1992 table 2-19 */
152*7c478bd9Sstevel@tonic-gate 	_SC_2_C_BIND,		"POSIX2_C_BIND",	SYSCONF,   NOFLAGS,
153*7c478bd9Sstevel@tonic-gate 	_SC_2_C_BIND,		"_POSIX2_C_BIND",	SYSCONF,   NOFLAGS,
154*7c478bd9Sstevel@tonic-gate 	_SC_2_C_DEV,		"POSIX2_C_DEV",		SYSCONF,   NOFLAGS,
155*7c478bd9Sstevel@tonic-gate 	_SC_2_C_DEV,		"_POSIX2_C_DEV",	SYSCONF,   NOFLAGS,
156*7c478bd9Sstevel@tonic-gate 	_SC_2_CHAR_TERM,	"POSIX2_CHAR_TERM",	SYSCONF,   NOFLAGS,
157*7c478bd9Sstevel@tonic-gate 	_SC_2_CHAR_TERM,	"_POSIX2_CHAR_TERM",	SYSCONF,   NOFLAGS,
158*7c478bd9Sstevel@tonic-gate 	_SC_2_FORT_DEV,		"POSIX2_FORT_DEV",	SYSCONF,   NOFLAGS,
159*7c478bd9Sstevel@tonic-gate 	_SC_2_FORT_DEV,		"_POSIX2_FORT_DEV",	SYSCONF,   NOFLAGS,
160*7c478bd9Sstevel@tonic-gate 	_SC_2_FORT_RUN,		"POSIX2_FORT_RUN",	SYSCONF,   NOFLAGS,
161*7c478bd9Sstevel@tonic-gate 	_SC_2_FORT_RUN,		"_POSIX2_FORT_RUN",	SYSCONF,   NOFLAGS,
162*7c478bd9Sstevel@tonic-gate 	_SC_2_LOCALEDEF,	"POSIX2_LOCALEDEF",	SYSCONF,   NOFLAGS,
163*7c478bd9Sstevel@tonic-gate 	_SC_2_LOCALEDEF,	"_POSIX2_LOCALEDEF",	SYSCONF,   NOFLAGS,
164*7c478bd9Sstevel@tonic-gate 	_SC_2_SW_DEV,		"POSIX2_SW_DEV",	SYSCONF,   NOFLAGS,
165*7c478bd9Sstevel@tonic-gate 	_SC_2_SW_DEV,		"_POSIX2_SW_DEV",	SYSCONF,   NOFLAGS,
166*7c478bd9Sstevel@tonic-gate 	_SC_2_UPE,		"POSIX2_UPE",		SYSCONF,   NOFLAGS,
167*7c478bd9Sstevel@tonic-gate 	_SC_2_UPE,		"_POSIX2_UPE",		SYSCONF,   NOFLAGS,
168*7c478bd9Sstevel@tonic-gate 
169*7c478bd9Sstevel@tonic-gate 	/* POSIX.1-1990 table 2-3 */
170*7c478bd9Sstevel@tonic-gate 	_POSIX_ARG_MAX,		"_POSIX_ARG_MAX",	SELFCONF,   NOFLAGS,
171*7c478bd9Sstevel@tonic-gate 	_POSIX_CHILD_MAX,	"_POSIX_CHILD_MAX",	SELFCONF,   NOFLAGS,
172*7c478bd9Sstevel@tonic-gate 	_POSIX_LINK_MAX,	"_POSIX_LINK_MAX",	SELFCONF,   NOFLAGS,
173*7c478bd9Sstevel@tonic-gate 	_POSIX_MAX_CANON,	"_POSIX_MAX_CANON",	SELFCONF,   NOFLAGS,
174*7c478bd9Sstevel@tonic-gate 	_POSIX_MAX_INPUT,	"_POSIX_MAX_INPUT",	SELFCONF,   NOFLAGS,
175*7c478bd9Sstevel@tonic-gate 	_POSIX_NAME_MAX,	"_POSIX_NAME_MAX",	SELFCONF,   NOFLAGS,
176*7c478bd9Sstevel@tonic-gate 	_POSIX_NGROUPS_MAX,	"_POSIX_NGROUPS_MAX",	SELFCONF,   NOFLAGS,
177*7c478bd9Sstevel@tonic-gate 	_POSIX_OPEN_MAX,	"_POSIX_OPEN_MAX",	SELFCONF,   NOFLAGS,
178*7c478bd9Sstevel@tonic-gate 	_POSIX_PATH_MAX,	"_POSIX_PATH_MAX",	SELFCONF,   NOFLAGS,
179*7c478bd9Sstevel@tonic-gate 	_POSIX_PIPE_BUF,	"_POSIX_PIPE_BUF",	SELFCONF,   NOFLAGS,
180*7c478bd9Sstevel@tonic-gate 	_POSIX_SSIZE_MAX,	"_POSIX_SSIZE_MAX",	SELFCONF,   NOFLAGS,
181*7c478bd9Sstevel@tonic-gate 	_POSIX_STREAM_MAX,	"_POSIX_STREAM_MAX",	SELFCONF,   NOFLAGS,
182*7c478bd9Sstevel@tonic-gate 	_POSIX_TIMER_MAX,	"_POSIX_TIMER_MAX",	SELFCONF,   NOFLAGS,
183*7c478bd9Sstevel@tonic-gate 	_POSIX_THREAD_DESTRUCTOR_ITERATIONS,
184*7c478bd9Sstevel@tonic-gate 		"_POSIX_THREAD_DESTRUCTOR_ITERATIONS",	SELFCONF,   NOFLAGS,
185*7c478bd9Sstevel@tonic-gate 	_POSIX_THREAD_KEYS_MAX,
186*7c478bd9Sstevel@tonic-gate 		"_POSIX_THREAD_KEYS_MAX",		SELFCONF,   NOFLAGS,
187*7c478bd9Sstevel@tonic-gate 	_POSIX_THREAD_THREADS_MAX,
188*7c478bd9Sstevel@tonic-gate 		"_POSIX_THREAD_THREADS_MAX",		SELFCONF,   NOFLAGS,
189*7c478bd9Sstevel@tonic-gate 	_POSIX_TZNAME_MAX,	"_POSIX_TZNAME_MAX",	SELFCONF,   NOFLAGS,
190*7c478bd9Sstevel@tonic-gate 
191*7c478bd9Sstevel@tonic-gate 	/* POSIX.1-1990 table 4-2 */
192*7c478bd9Sstevel@tonic-gate 	_SC_ARG_MAX,		"ARG_MAX",		SYSCONF,   NOFLAGS,
193*7c478bd9Sstevel@tonic-gate 	_SC_CHILD_MAX,		"CHILD_MAX",		SYSCONF,   NOFLAGS,
194*7c478bd9Sstevel@tonic-gate 	_SC_CLK_TCK,		"CLK_TCK",		SYSCONF,   NOFLAGS,
195*7c478bd9Sstevel@tonic-gate 	_SC_JOB_CONTROL,	"_POSIX_JOB_CONTROL",	SYSCONF,   NOFLAGS,
196*7c478bd9Sstevel@tonic-gate 	_SC_NGROUPS_MAX,	"NGROUPS_MAX",		SYSCONF,   NOFLAGS,
197*7c478bd9Sstevel@tonic-gate 	_SC_OPEN_MAX,		"OPEN_MAX",		SYSCONF,   NOFLAGS,
198*7c478bd9Sstevel@tonic-gate 	_SC_SAVED_IDS,		"_POSIX_SAVED_IDS",	SYSCONF,   NOFLAGS,
199*7c478bd9Sstevel@tonic-gate 	_SC_STREAM_MAX,		"STREAM_MAX",		SYSCONF,   NOFLAGS,
200*7c478bd9Sstevel@tonic-gate 	_SC_TZNAME_MAX,		"TZNAME_MAX",		SYSCONF,   NOFLAGS,
201*7c478bd9Sstevel@tonic-gate 	_SC_VERSION,		"_POSIX_VERSION",	SYSCONF,   NOFLAGS,
202*7c478bd9Sstevel@tonic-gate 
203*7c478bd9Sstevel@tonic-gate 	/* pathconf() variables */
204*7c478bd9Sstevel@tonic-gate 
205*7c478bd9Sstevel@tonic-gate 	/* POSIX.1-1990 table 5-2 */
206*7c478bd9Sstevel@tonic-gate 
207*7c478bd9Sstevel@tonic-gate 	_PC_LINK_MAX,		"LINK_MAX",		PATHCONF,  NOFLAGS,
208*7c478bd9Sstevel@tonic-gate 	_PC_MAX_CANON,		"MAX_CANON",		PATHCONF,  NOFLAGS,
209*7c478bd9Sstevel@tonic-gate 	_PC_MAX_INPUT,		"MAX_INPUT",		PATHCONF,  NOFLAGS,
210*7c478bd9Sstevel@tonic-gate 	_PC_NAME_MAX,		"NAME_MAX",		PATHCONF,  NOFLAGS,
211*7c478bd9Sstevel@tonic-gate 	_PC_PATH_MAX,		"PATH_MAX",		PATHCONF,  NOFLAGS,
212*7c478bd9Sstevel@tonic-gate 	_PC_PIPE_BUF,		"PIPE_BUF",		PATHCONF,  NOFLAGS,
213*7c478bd9Sstevel@tonic-gate 	_PC_CHOWN_RESTRICTED,	"_POSIX_CHOWN_RESTRICTED", PATHCONF,  NOFLAGS,
214*7c478bd9Sstevel@tonic-gate 	_PC_NO_TRUNC,		"_POSIX_NO_TRUNC",	PATHCONF,  NOFLAGS,
215*7c478bd9Sstevel@tonic-gate 	_PC_VDISABLE,		"_POSIX_VDISABLE",	PATHCONF,  NOFLAGS,
216*7c478bd9Sstevel@tonic-gate 
217*7c478bd9Sstevel@tonic-gate 	/* UNIX 98 additions */
218*7c478bd9Sstevel@tonic-gate 
219*7c478bd9Sstevel@tonic-gate 	_PC_ASYNC_IO,		"_POSIX_ASYNC_IO",	PATHCONF,  NOFLAGS,
220*7c478bd9Sstevel@tonic-gate 	_PC_PRIO_IO,		"_POSIX_PRIO_IO",	PATHCONF,  NOFLAGS,
221*7c478bd9Sstevel@tonic-gate 	_PC_SYNC_IO,		"_POSIX_SYNC_IO",	PATHCONF,  NOFLAGS,
222*7c478bd9Sstevel@tonic-gate 
223*7c478bd9Sstevel@tonic-gate 	/* Large File Summit name (UNIX 98) */
224*7c478bd9Sstevel@tonic-gate 
225*7c478bd9Sstevel@tonic-gate 	_PC_FILESIZEBITS,	"FILESIZEBITS",		PATHCONF,  NOFLAGS,
226*7c478bd9Sstevel@tonic-gate 
227*7c478bd9Sstevel@tonic-gate 	/* UNIX 03 Additions */
228*7c478bd9Sstevel@tonic-gate 
229*7c478bd9Sstevel@tonic-gate 	/* Not supporting the Advisory Information (ADV) at this time.  */
230*7c478bd9Sstevel@tonic-gate 	_PC_ALLOC_SIZE_MIN,	"POSIX_ALLOC_SIZE_MIN",	PATHCONF,  NOFLAGS,
231*7c478bd9Sstevel@tonic-gate 	_PC_REC_INCR_XFER_SIZE,	"POSIX_REC_INCR_XFER_SIZE", PATHCONF,  NOFLAGS,
232*7c478bd9Sstevel@tonic-gate 	_PC_REC_MAX_XFER_SIZE,	"POSIX_REC_MAX_XFER_SIZE",  PATHCONF,  NOFLAGS,
233*7c478bd9Sstevel@tonic-gate 	_PC_REC_MIN_XFER_SIZE,	"POSIX_REC_MIN_XFER_SIZE",  PATHCONF,  NOFLAGS,
234*7c478bd9Sstevel@tonic-gate 	_PC_REC_XFER_ALIGN,	"POSIX_REC_XFER_ALIGN",	PATHCONF,  NOFLAGS,
235*7c478bd9Sstevel@tonic-gate 
236*7c478bd9Sstevel@tonic-gate 	_PC_2_SYMLINKS,		"POSIX2_SYMLINKS",	PATHCONF,  NOFLAGS,
237*7c478bd9Sstevel@tonic-gate 	_PC_SYMLINK_MAX,	"SYMLINK_MAX",		PATHCONF,  NOFLAGS,
238*7c478bd9Sstevel@tonic-gate 
239*7c478bd9Sstevel@tonic-gate 	/* confstr() variables */
240*7c478bd9Sstevel@tonic-gate 
241*7c478bd9Sstevel@tonic-gate 	/* POSIX.2-1992 description of getconf utility */
242*7c478bd9Sstevel@tonic-gate 	_CS_PATH,		"PATH",			CONFSTR,   NOFLAGS,
243*7c478bd9Sstevel@tonic-gate 
244*7c478bd9Sstevel@tonic-gate 	/* POSIX.2-1992 table B-18 */
245*7c478bd9Sstevel@tonic-gate 	_CS_PATH,		"CS_PATH",		CONFSTR,   NOFLAGS,
246*7c478bd9Sstevel@tonic-gate 	_CS_PATH,		"_CS_PATH",		CONFSTR,   NOFLAGS,
247*7c478bd9Sstevel@tonic-gate 
248*7c478bd9Sstevel@tonic-gate 	/* command names for large file configuration information */
249*7c478bd9Sstevel@tonic-gate 	/* large file compilation environment configuration */
250*7c478bd9Sstevel@tonic-gate 
251*7c478bd9Sstevel@tonic-gate 	_CS_LFS_CFLAGS,		"LFS_CFLAGS",		CONFSTR,   NOFLAGS,
252*7c478bd9Sstevel@tonic-gate 	_CS_LFS_LDFLAGS,	"LFS_LDFLAGS",		CONFSTR,   NOFLAGS,
253*7c478bd9Sstevel@tonic-gate 	_CS_LFS_LIBS,		"LFS_LIBS",		CONFSTR,   NOFLAGS,
254*7c478bd9Sstevel@tonic-gate 	_CS_LFS_LINTFLAGS,	"LFS_LINTFLAGS",	CONFSTR,   NOFLAGS,
255*7c478bd9Sstevel@tonic-gate 
256*7c478bd9Sstevel@tonic-gate 	/* transitional large file interface configuration */
257*7c478bd9Sstevel@tonic-gate 
258*7c478bd9Sstevel@tonic-gate 	_CS_LFS64_CFLAGS,	"LFS64_CFLAGS",		CONFSTR,   NOFLAGS,
259*7c478bd9Sstevel@tonic-gate 	_CS_LFS64_LDFLAGS,	"LFS64_LDFLAGS",	CONFSTR,   NOFLAGS,
260*7c478bd9Sstevel@tonic-gate 	_CS_LFS64_LIBS,		"LFS64_LIBS",		CONFSTR,   NOFLAGS,
261*7c478bd9Sstevel@tonic-gate 	_CS_LFS64_LINTFLAGS,	"LFS64_LINTFLAGS",	CONFSTR,   NOFLAGS,
262*7c478bd9Sstevel@tonic-gate 
263*7c478bd9Sstevel@tonic-gate 	/*
264*7c478bd9Sstevel@tonic-gate 	 *  UNIX 98:
265*7c478bd9Sstevel@tonic-gate 	 *  confstr additions, these support
266*7c478bd9Sstevel@tonic-gate 	 *  programming specifications/environments.
267*7c478bd9Sstevel@tonic-gate 	 *
268*7c478bd9Sstevel@tonic-gate 	 * Unfortunately there is some uncertainty with
269*7c478bd9Sstevel@tonic-gate 	 * the standard at this point about the constant
270*7c478bd9Sstevel@tonic-gate 	 * name, thus we need to recognize BOTH with and
271*7c478bd9Sstevel@tonic-gate 	 * without the initial underscore.
272*7c478bd9Sstevel@tonic-gate 	 */
273*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_CFLAGS,	"XBS5_ILP32_OFF32_CFLAGS",
274*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
275*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_CFLAGS,	"_XBS5_ILP32_OFF32_CFLAGS",
276*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
277*7c478bd9Sstevel@tonic-gate 
278*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_LDFLAGS,	"XBS5_ILP32_OFF32_LDFLAGS",
279*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
280*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_LDFLAGS,	"_XBS5_ILP32_OFF32_LDFLAGS",
281*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
282*7c478bd9Sstevel@tonic-gate 
283*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_LIBS,	"XBS5_ILP32_OFF32_LIBS",
284*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
285*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_LIBS,	"_XBS5_ILP32_OFF32_LIBS",
286*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
287*7c478bd9Sstevel@tonic-gate 
288*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_LINTFLAGS,	"XBS5_ILP32_OFF32_LINTFLAGS",
289*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
290*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFF32_LINTFLAGS,	"_XBS5_ILP32_OFF32_LINTFLAGS",
291*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
292*7c478bd9Sstevel@tonic-gate 
293*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_CFLAGS,	"XBS5_ILP32_OFFBIG_CFLAGS",
294*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
295*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_CFLAGS,	"_XBS5_ILP32_OFFBIG_CFLAGS",
296*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
297*7c478bd9Sstevel@tonic-gate 
298*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_LDFLAGS,	"XBS5_ILP32_OFFBIG_LDFLAGS",
299*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
300*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_LDFLAGS,	"_XBS5_ILP32_OFFBIG_LDFLAGS",
301*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
302*7c478bd9Sstevel@tonic-gate 
303*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_LIBS,	"XBS5_ILP32_OFFBIG_LIBS",
304*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
305*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_LIBS,	"_XBS5_ILP32_OFFBIG_LIBS",
306*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
307*7c478bd9Sstevel@tonic-gate 
308*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS, "XBS5_ILP32_OFFBIG_LINTFLAGS",
309*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
310*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS, "_XBS5_ILP32_OFFBIG_LINTFLAGS",
311*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
312*7c478bd9Sstevel@tonic-gate 
313*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_CFLAGS,	"XBS5_LP64_OFF64_CFLAGS",
314*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
315*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_CFLAGS,	"_XBS5_LP64_OFF64_CFLAGS",
316*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
317*7c478bd9Sstevel@tonic-gate 
318*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_LDFLAGS,	"XBS5_LP64_OFF64_LDFLAGS",
319*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
320*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_LDFLAGS,	"_XBS5_LP64_OFF64_LDFLAGS",
321*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
322*7c478bd9Sstevel@tonic-gate 
323*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_LIBS,	"XBS5_LP64_OFF64_LIBS",
324*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
325*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_LIBS,	"_XBS5_LP64_OFF64_LIBS",
326*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
327*7c478bd9Sstevel@tonic-gate 
328*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_LINTFLAGS,	"XBS5_LP64_OFF64_LINTFLAGS",
329*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
330*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LP64_OFF64_LINTFLAGS,	"_XBS5_LP64_OFF64_LINTFLAGS",
331*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
332*7c478bd9Sstevel@tonic-gate 
333*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_CFLAGS,	"XBS5_LPBIG_OFFBIG_CFLAGS",
334*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
335*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_CFLAGS,	"_XBS5_LPBIG_OFFBIG_CFLAGS",
336*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
337*7c478bd9Sstevel@tonic-gate 
338*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,	"XBS5_LPBIG_OFFBIG_LDFLAGS",
339*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
340*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,	"_XBS5_LPBIG_OFFBIG_LDFLAGS",
341*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
342*7c478bd9Sstevel@tonic-gate 
343*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_LIBS,	"XBS5_LPBIG_OFFBIG_LIBS",
344*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
345*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_LIBS,	"_XBS5_LPBIG_OFFBIG_LIBS",
346*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
347*7c478bd9Sstevel@tonic-gate 
348*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, "XBS5_LPBIG_OFFBIG_LINTFLAGS",
349*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
350*7c478bd9Sstevel@tonic-gate 	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, "_XBS5_LPBIG_OFFBIG_LINTFLAGS",
351*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
352*7c478bd9Sstevel@tonic-gate 
353*7c478bd9Sstevel@tonic-gate 	/*
354*7c478bd9Sstevel@tonic-gate 	 * UNIX 03 confstr() additions for compilation environments
355*7c478bd9Sstevel@tonic-gate 	 */
356*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_ILP32_OFF32_CFLAGS, "POSIX_V6_ILP32_OFF32_CFLAGS",
357*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
358*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS, "POSIX_V6_ILP32_OFF32_LDFLAGS",
359*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
360*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_ILP32_OFF32_LIBS, "POSIX_V6_ILP32_OFF32_LIBS",
361*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
362*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, "POSIX_V6_ILP32_OFFBIG_CFLAGS",
363*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
364*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, "POSIX_V6_ILP32_OFFBIG_LDFLAGS",
365*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
366*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_ILP32_OFFBIG_LIBS, "POSIX_V6_ILP32_OFFBIG_LIBS",
367*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
368*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_LP64_OFF64_CFLAGS, "POSIX_V6_LP64_OFF64_CFLAGS",
369*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
370*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_LP64_OFF64_LDFLAGS, "POSIX_V6_LP64_OFF64_LDFLAGS",
371*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
372*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_LP64_OFF64_LIBS, "POSIX_V6_LP64_OFF64_LIBS",
373*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
374*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, "POSIX_V6_LPBIG_OFFBIG_CFLAGS",
375*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
376*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, "POSIX_V6_LPBIG_OFFBIG_LDFLAGS",
377*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
378*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS, "POSIX_V6_LPBIG_OFFBIG_LIBS",
379*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
380*7c478bd9Sstevel@tonic-gate 	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS, "POSIX_V6_WIDTH_RESTRICTED_ENVS",
381*7c478bd9Sstevel@tonic-gate 		CONFSTR,	NOFLAGS,
382*7c478bd9Sstevel@tonic-gate 	/* End of UNIX 03 compilation environments */
383*7c478bd9Sstevel@tonic-gate 
384*7c478bd9Sstevel@tonic-gate #ifdef  _SC_2_C_VERSION		/* POSIX.2 table B-4 */
385*7c478bd9Sstevel@tonic-gate 	_SC_2_C_VERSION,	"_POSIX2_C_VERSION",	SYSCONF,   NOFLAGS,
386*7c478bd9Sstevel@tonic-gate #else
387*7c478bd9Sstevel@tonic-gate 	_POSIX2_C_VERSION,	"_POSIX2_C_VERSION",	SELFCONF,   NOFLAGS,
388*7c478bd9Sstevel@tonic-gate #endif
389*7c478bd9Sstevel@tonic-gate 
390*7c478bd9Sstevel@tonic-gate /*
391*7c478bd9Sstevel@tonic-gate  * XPG4 support BEGINS
392*7c478bd9Sstevel@tonic-gate  */
393*7c478bd9Sstevel@tonic-gate 
394*7c478bd9Sstevel@tonic-gate #ifndef CHARCLASS_NAME_MAX
395*7c478bd9Sstevel@tonic-gate #define	CHARCLASS_NAME_MAX	-1
396*7c478bd9Sstevel@tonic-gate #endif
397*7c478bd9Sstevel@tonic-gate #ifndef CHAR_BIT
398*7c478bd9Sstevel@tonic-gate #define	CHAR_BIT	-1
399*7c478bd9Sstevel@tonic-gate #endif
400*7c478bd9Sstevel@tonic-gate #ifndef CHAR_MAX
401*7c478bd9Sstevel@tonic-gate #define	CHAR_MAX	-1
402*7c478bd9Sstevel@tonic-gate #endif
403*7c478bd9Sstevel@tonic-gate #ifndef CHAR_MIN
404*7c478bd9Sstevel@tonic-gate #define	CHAR_MIN	-1
405*7c478bd9Sstevel@tonic-gate #endif
406*7c478bd9Sstevel@tonic-gate #ifndef INT_MAX
407*7c478bd9Sstevel@tonic-gate #define	INT_MAX	-1
408*7c478bd9Sstevel@tonic-gate #endif
409*7c478bd9Sstevel@tonic-gate #ifndef INT_MIN
410*7c478bd9Sstevel@tonic-gate #define	INT_MIN	-1
411*7c478bd9Sstevel@tonic-gate #endif
412*7c478bd9Sstevel@tonic-gate #ifndef LONG_BIT
413*7c478bd9Sstevel@tonic-gate #define	LONG_BIT	-1
414*7c478bd9Sstevel@tonic-gate #endif
415*7c478bd9Sstevel@tonic-gate #ifndef LONG_MAX
416*7c478bd9Sstevel@tonic-gate #define	LONG_MAX	-1
417*7c478bd9Sstevel@tonic-gate #endif
418*7c478bd9Sstevel@tonic-gate #ifndef LONG_MIN
419*7c478bd9Sstevel@tonic-gate #define	LONG_MIN	-1
420*7c478bd9Sstevel@tonic-gate #endif
421*7c478bd9Sstevel@tonic-gate #ifndef MB_LEN_MAX
422*7c478bd9Sstevel@tonic-gate #define	MB_LEN_MAX	-1
423*7c478bd9Sstevel@tonic-gate #endif
424*7c478bd9Sstevel@tonic-gate #ifndef NL_NMAX
425*7c478bd9Sstevel@tonic-gate #define	NL_NMAX	-1
426*7c478bd9Sstevel@tonic-gate #endif
427*7c478bd9Sstevel@tonic-gate #ifndef NL_ARGMAX
428*7c478bd9Sstevel@tonic-gate #define	NL_ARGMAX	-1
429*7c478bd9Sstevel@tonic-gate #endif
430*7c478bd9Sstevel@tonic-gate #ifndef NL_LANGMAX
431*7c478bd9Sstevel@tonic-gate #define	NL_LANGMAX	-1
432*7c478bd9Sstevel@tonic-gate #endif
433*7c478bd9Sstevel@tonic-gate #ifndef NL_MSGMAX
434*7c478bd9Sstevel@tonic-gate #define	NL_MSGMAX	-1
435*7c478bd9Sstevel@tonic-gate #endif
436*7c478bd9Sstevel@tonic-gate #ifndef NL_SETMAX
437*7c478bd9Sstevel@tonic-gate #define	NL_SETMAX	-1
438*7c478bd9Sstevel@tonic-gate #endif
439*7c478bd9Sstevel@tonic-gate #ifndef NL_TEXTMAX
440*7c478bd9Sstevel@tonic-gate #define	NL_TEXTMAX	-1
441*7c478bd9Sstevel@tonic-gate #endif
442*7c478bd9Sstevel@tonic-gate #ifndef NZERO
443*7c478bd9Sstevel@tonic-gate #define	NZERO	-1
444*7c478bd9Sstevel@tonic-gate #endif
445*7c478bd9Sstevel@tonic-gate #ifndef SCHAR_MAX
446*7c478bd9Sstevel@tonic-gate #define	SCHAR_MAX	-1
447*7c478bd9Sstevel@tonic-gate #endif
448*7c478bd9Sstevel@tonic-gate #ifndef SCHAR_MIN
449*7c478bd9Sstevel@tonic-gate #define	SCHAR_MIN	-1
450*7c478bd9Sstevel@tonic-gate #endif
451*7c478bd9Sstevel@tonic-gate #ifndef SHRT_MAX
452*7c478bd9Sstevel@tonic-gate #define	SHRT_MAX	-1
453*7c478bd9Sstevel@tonic-gate #endif
454*7c478bd9Sstevel@tonic-gate #ifndef SHRT_MIN
455*7c478bd9Sstevel@tonic-gate #define	SHRT_MIN	-1
456*7c478bd9Sstevel@tonic-gate #endif
457*7c478bd9Sstevel@tonic-gate #ifndef TMP_MAX
458*7c478bd9Sstevel@tonic-gate #define	TMP_MAX	-1
459*7c478bd9Sstevel@tonic-gate #endif
460*7c478bd9Sstevel@tonic-gate #ifndef WORD_BIT
461*7c478bd9Sstevel@tonic-gate #define	WORD_BIT	-1
462*7c478bd9Sstevel@tonic-gate #endif
463*7c478bd9Sstevel@tonic-gate 
464*7c478bd9Sstevel@tonic-gate 
465*7c478bd9Sstevel@tonic-gate #ifndef	_XOPEN_XPG2
466*7c478bd9Sstevel@tonic-gate #define	_XOPEN_XPG2	-1
467*7c478bd9Sstevel@tonic-gate #endif
468*7c478bd9Sstevel@tonic-gate #ifndef	_XOPEN_XPG3
469*7c478bd9Sstevel@tonic-gate #define	_XOPEN_XPG3	-1
470*7c478bd9Sstevel@tonic-gate #endif
471*7c478bd9Sstevel@tonic-gate #ifndef	_XOPEN_XPG4
472*7c478bd9Sstevel@tonic-gate #define	_XOPEN_XPG4	-1
473*7c478bd9Sstevel@tonic-gate #endif
474*7c478bd9Sstevel@tonic-gate 
475*7c478bd9Sstevel@tonic-gate 	/*
476*7c478bd9Sstevel@tonic-gate 	 * the following are values that we should find in <limits.h>
477*7c478bd9Sstevel@tonic-gate 	 * so we use SELFCONF here.
478*7c478bd9Sstevel@tonic-gate 	 *
479*7c478bd9Sstevel@tonic-gate 	 */
480*7c478bd9Sstevel@tonic-gate 
481*7c478bd9Sstevel@tonic-gate 	/* POSIX.1-1990 */
482*7c478bd9Sstevel@tonic-gate 	CHARCLASS_NAME_MAX,	"CHARCLASS_NAME_MAX",	  SELFCONF,   NOFLAGS,
483*7c478bd9Sstevel@tonic-gate 	_POSIX_SSIZE_MAX,	"SSIZE_MAX",	SELFCONF,   NOFLAGS,
484*7c478bd9Sstevel@tonic-gate 
485*7c478bd9Sstevel@tonic-gate 	/* POSIX.1-1988 */
486*7c478bd9Sstevel@tonic-gate 	CHAR_BIT,		"CHAR_BIT",	SELFCONF,   NOFLAGS,
487*7c478bd9Sstevel@tonic-gate 	CHAR_MAX,		"CHAR_MAX",	SELFCONF,   NOFLAGS,
488*7c478bd9Sstevel@tonic-gate 	CHAR_MIN,		"CHAR_MIN",	SELFCONF,   NOFLAGS,
489*7c478bd9Sstevel@tonic-gate 	INT_MAX,		"INT_MAX",	SELFCONF,   NOFLAGS,
490*7c478bd9Sstevel@tonic-gate 	INT_MIN,		"INT_MIN",	SELFCONF,   NOFLAGS,
491*7c478bd9Sstevel@tonic-gate 	LONG_BIT,		"LONG_BIT",	SELFCONF,   NOFLAGS,
492*7c478bd9Sstevel@tonic-gate 	LONG_MAX,		"LONG_MAX",	SELFCONF,   NOFLAGS,
493*7c478bd9Sstevel@tonic-gate 	LONG_MIN,		"LONG_MIN",	SELFCONF,   NOFLAGS,
494*7c478bd9Sstevel@tonic-gate 	MB_LEN_MAX,		"MB_LEN_MAX",	SELFCONF,   NOFLAGS,
495*7c478bd9Sstevel@tonic-gate 	NL_NMAX,		"NL_NMAX",	SELFCONF,   NOFLAGS,
496*7c478bd9Sstevel@tonic-gate 	NL_ARGMAX,		"NL_ARGMAX",	SELFCONF,   NOFLAGS,
497*7c478bd9Sstevel@tonic-gate 	NL_LANGMAX,		"NL_LANGMAX",	SELFCONF,   NOFLAGS,
498*7c478bd9Sstevel@tonic-gate 	NL_MSGMAX,		"NL_MSGMAX",	SELFCONF,   NOFLAGS,
499*7c478bd9Sstevel@tonic-gate 	NL_SETMAX,		"NL_SETMAX",	SELFCONF,   NOFLAGS,
500*7c478bd9Sstevel@tonic-gate 	NL_TEXTMAX,		"NL_TEXTMAX",	SELFCONF,   NOFLAGS,
501*7c478bd9Sstevel@tonic-gate 	NZERO,			"NZERO",	SELFCONF,   NOFLAGS,
502*7c478bd9Sstevel@tonic-gate 	SCHAR_MAX,		"SCHAR_MAX",	SELFCONF,   NOFLAGS,
503*7c478bd9Sstevel@tonic-gate 	SCHAR_MIN,		"SCHAR_MIN",	SELFCONF,   NOFLAGS,
504*7c478bd9Sstevel@tonic-gate 	SHRT_MAX,		"SHRT_MAX",	SELFCONF,   NOFLAGS,
505*7c478bd9Sstevel@tonic-gate 	SHRT_MIN,		"SHRT_MIN",	SELFCONF,   NOFLAGS,
506*7c478bd9Sstevel@tonic-gate 	TMP_MAX,		"TMP_MAX",	SELFCONF,   NOFLAGS,
507*7c478bd9Sstevel@tonic-gate 
508*7c478bd9Sstevel@tonic-gate 	/*
509*7c478bd9Sstevel@tonic-gate 	 * for the unsigned maximums, we cannot rely on the value -1
510*7c478bd9Sstevel@tonic-gate 	 * to indicate "undefined".
511*7c478bd9Sstevel@tonic-gate 	 */
512*7c478bd9Sstevel@tonic-gate #ifndef UCHAR_MAX
513*7c478bd9Sstevel@tonic-gate 	0,			"UCHAR_MAX",	SELFCONF,   UNDEFINED,
514*7c478bd9Sstevel@tonic-gate #else
515*7c478bd9Sstevel@tonic-gate 	(long)UCHAR_MAX,	"UCHAR_MAX",	SELFCONF,   UNSIGNED_VALUE,
516*7c478bd9Sstevel@tonic-gate #endif /* UCHAR_MAX */
517*7c478bd9Sstevel@tonic-gate #ifndef UINT_MAX
518*7c478bd9Sstevel@tonic-gate 	0,			"UINT_MAX",	SELFCONF,   UNDEFINED,
519*7c478bd9Sstevel@tonic-gate #else
520*7c478bd9Sstevel@tonic-gate 	(long)UINT_MAX,		"UINT_MAX",	SELFCONF,   UNSIGNED_VALUE,
521*7c478bd9Sstevel@tonic-gate #endif /* UINT_MAX */
522*7c478bd9Sstevel@tonic-gate #ifndef ULONG_MAX
523*7c478bd9Sstevel@tonic-gate 	0,			"ULONG_MAX",	SELFCONF,   UNDEFINED,
524*7c478bd9Sstevel@tonic-gate #else
525*7c478bd9Sstevel@tonic-gate 	(long)ULONG_MAX,	"ULONG_MAX",	SELFCONF,   UNSIGNED_VALUE,
526*7c478bd9Sstevel@tonic-gate #endif /* ULONG_MAX */
527*7c478bd9Sstevel@tonic-gate #ifndef USHRT_MAX
528*7c478bd9Sstevel@tonic-gate 	0,			"USHRT_MAX",	SELFCONF,   UNDEFINED,
529*7c478bd9Sstevel@tonic-gate #else
530*7c478bd9Sstevel@tonic-gate 	(long)USHRT_MAX,	"USHRT_MAX",	SELFCONF,   UNSIGNED_VALUE,
531*7c478bd9Sstevel@tonic-gate #endif /* USHRT_MAX */
532*7c478bd9Sstevel@tonic-gate #ifndef SIZE_MAX
533*7c478bd9Sstevel@tonic-gate 	0,			"SIZE_MAX",	SELFCONF,   UNDEFINED,
534*7c478bd9Sstevel@tonic-gate #else
535*7c478bd9Sstevel@tonic-gate 	(long)SIZE_MAX,		"SIZE_MAX",	SELFCONF,   UNSIGNED_VALUE,
536*7c478bd9Sstevel@tonic-gate #endif /* SIZE_MAX */
537*7c478bd9Sstevel@tonic-gate 
538*7c478bd9Sstevel@tonic-gate 	WORD_BIT,		"WORD_BIT",	SELFCONF,   NOFLAGS,
539*7c478bd9Sstevel@tonic-gate 
540*7c478bd9Sstevel@tonic-gate 	/* XPG4 Version 2 */
541*7c478bd9Sstevel@tonic-gate 	_XOPEN_IOV_MAX,		"_XOPEN_IOV_MAX",  SELFCONF, NOFLAGS,
542*7c478bd9Sstevel@tonic-gate 
543*7c478bd9Sstevel@tonic-gate 	/* UNIX 03 */
544*7c478bd9Sstevel@tonic-gate 	_XOPEN_NAME_MAX,	"_XOPEN_NAME_MAX", SELFCONF, NOFLAGS,
545*7c478bd9Sstevel@tonic-gate 	_XOPEN_PATH_MAX,	"_XOPEN_PATH_MAX", SELFCONF, NOFLAGS,
546*7c478bd9Sstevel@tonic-gate 
547*7c478bd9Sstevel@tonic-gate 	/*
548*7c478bd9Sstevel@tonic-gate 	 * The following are defined via sysconf().  These are considered
549*7c478bd9Sstevel@tonic-gate 	 * an extension to sysconf().
550*7c478bd9Sstevel@tonic-gate 	 * The -0 is needed if _XOPEN_XPG? is defined to be an empty string.
551*7c478bd9Sstevel@tonic-gate 	 */
552*7c478bd9Sstevel@tonic-gate 	_XOPEN_XPG2-0,		"_XOPEN_XPG2",	SELFCONF,    NOFLAGS,
553*7c478bd9Sstevel@tonic-gate 	_XOPEN_XPG3-0,		"_XOPEN_XPG3",	SELFCONF,    NOFLAGS,
554*7c478bd9Sstevel@tonic-gate 	_XOPEN_XPG4-0,		"_XOPEN_XPG4",	SELFCONF,    NOFLAGS,
555*7c478bd9Sstevel@tonic-gate 
556*7c478bd9Sstevel@tonic-gate 	/*
557*7c478bd9Sstevel@tonic-gate 	 * The following should be provided by sysconf() (e.g use SYSCONF),
558*7c478bd9Sstevel@tonic-gate 	 * so we  look for the appropriate _SC_* symbol in <unistd.h>.
559*7c478bd9Sstevel@tonic-gate 	 * If it is not defined, then we use SELFCONF with the value of -1.
560*7c478bd9Sstevel@tonic-gate 	 */
561*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_VERSION,	"_XOPEN_VERSION",	SYSCONF,   NOFLAGS,
562*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_XCU_VERSION,	"_XOPEN_XCU_VERSION",	SYSCONF,   NOFLAGS,
563*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_CRYPT,	"_XOPEN_CRYPT",		SYSCONF,   NOFLAGS,
564*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_ENH_I18N,	"_XOPEN_ENH_I18N",	SYSCONF,   NOFLAGS,
565*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_SHM,		"_XOPEN_SHM",		SYSCONF,   NOFLAGS,
566*7c478bd9Sstevel@tonic-gate 
567*7c478bd9Sstevel@tonic-gate /*
568*7c478bd9Sstevel@tonic-gate  * XPG4 support ends
569*7c478bd9Sstevel@tonic-gate  */
570*7c478bd9Sstevel@tonic-gate 
571*7c478bd9Sstevel@tonic-gate /* XPG4, Version 2 support */
572*7c478bd9Sstevel@tonic-gate 
573*7c478bd9Sstevel@tonic-gate 	_SC_ATEXIT_MAX, 	"ATEXIT_MAX",		SYSCONF,	NOFLAGS,
574*7c478bd9Sstevel@tonic-gate 	_SC_PAGESIZE,		"PAGESIZE",		SYSCONF,	NOFLAGS,
575*7c478bd9Sstevel@tonic-gate 	_SC_PAGE_SIZE,		"PAGE_SIZE",		SYSCONF,	NOFLAGS,
576*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_UNIX,		"_XOPEN_UNIX",		SYSCONF,	NOFLAGS,
577*7c478bd9Sstevel@tonic-gate 	_SC_IOV_MAX,		"IOV_MAX",		SYSCONF, 	NOFLAGS,
578*7c478bd9Sstevel@tonic-gate 
579*7c478bd9Sstevel@tonic-gate /*
580*7c478bd9Sstevel@tonic-gate  * UNIX 98 - XPG5 additions
581*7c478bd9Sstevel@tonic-gate  */
582*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_LEGACY,	"_XOPEN_LEGACY",	SYSCONF, 	NOFLAGS,
583*7c478bd9Sstevel@tonic-gate 	_SC_PASS_MAX,		"PASS_MAX",		SYSCONF, 	NOFLAGS,
584*7c478bd9Sstevel@tonic-gate 	_SC_AIO_LISTIO_MAX,	"AIO_LISTIO_MAX",	SYSCONF, 	NOFLAGS,
585*7c478bd9Sstevel@tonic-gate 	_SC_AIO_MAX,		"AIO_MAX",		SYSCONF, 	NOFLAGS,
586*7c478bd9Sstevel@tonic-gate 	_SC_AIO_PRIO_DELTA_MAX,	"AIO_PRIO_DELTA_MAX",	SYSCONF, 	NOFLAGS,
587*7c478bd9Sstevel@tonic-gate 	_SC_DELAYTIMER_MAX,	"DELAYTIMER_MAX",	SYSCONF, 	NOFLAGS,
588*7c478bd9Sstevel@tonic-gate 	_SC_MQ_OPEN_MAX,	"MQ_OPEN_MAX",		SYSCONF, 	NOFLAGS,
589*7c478bd9Sstevel@tonic-gate 	_SC_MQ_PRIO_MAX,	"MQ_PRIO_MAX",		SYSCONF, 	NOFLAGS,
590*7c478bd9Sstevel@tonic-gate 	_SC_RTSIG_MAX,		"RTSIG_MAX",		SYSCONF, 	NOFLAGS,
591*7c478bd9Sstevel@tonic-gate 	_SC_SEM_NSEMS_MAX,	"SEM_NSEMS_MAX",	SYSCONF, 	NOFLAGS,
592*7c478bd9Sstevel@tonic-gate 	_SC_SEM_VALUE_MAX,	"SEM_VALUE_MAX",	SYSCONF, 	NOFLAGS,
593*7c478bd9Sstevel@tonic-gate 	_SC_SIGQUEUE_MAX,	"SIGQUEUE_MAX",		SYSCONF, 	NOFLAGS,
594*7c478bd9Sstevel@tonic-gate 	_SC_TIMER_MAX,		"TIMER_MAX",		SYSCONF, 	NOFLAGS,
595*7c478bd9Sstevel@tonic-gate 
596*7c478bd9Sstevel@tonic-gate 	_SC_ASYNCHRONOUS_IO,	"_POSIX_ASYNCHRONOUS_IO", SYSCONF, 	NOFLAGS,
597*7c478bd9Sstevel@tonic-gate 	_SC_FSYNC,		"_POSIX_FSYNC",		SYSCONF,	NOFLAGS,
598*7c478bd9Sstevel@tonic-gate 	_SC_MAPPED_FILES,	"_POSIX_MAPPED_FILES",	SYSCONF, 	NOFLAGS,
599*7c478bd9Sstevel@tonic-gate 	_SC_MEMLOCK,		"_POSIX_MEMLOCK",	SYSCONF, 	NOFLAGS,
600*7c478bd9Sstevel@tonic-gate 	_SC_MEMLOCK_RANGE,	"_POSIX_MEMLOCK_RANGE",	SYSCONF, 	NOFLAGS,
601*7c478bd9Sstevel@tonic-gate 	_SC_MEMORY_PROTECTION,	"_POSIX_MEMORY_PROTECTION", SYSCONF, 	NOFLAGS,
602*7c478bd9Sstevel@tonic-gate 	_SC_MESSAGE_PASSING,	"_POSIX_MESSAGE_PASSING", SYSCONF, 	NOFLAGS,
603*7c478bd9Sstevel@tonic-gate 	_SC_PRIORITIZED_IO,	"_POSIX_PRIORITIZED_IO", SYSCONF, 	NOFLAGS,
604*7c478bd9Sstevel@tonic-gate 	_SC_PRIORITY_SCHEDULING, "_POSIX_PRIORITY_SCHEDULING", SYSCONF, NOFLAGS,
605*7c478bd9Sstevel@tonic-gate 	_SC_REALTIME_SIGNALS,	"_POSIX_REALTIME_SIGNALS", SYSCONF, 	NOFLAGS,
606*7c478bd9Sstevel@tonic-gate 	_SC_SEMAPHORES,		"_POSIX_SEMAPHORES",	SYSCONF, 	NOFLAGS,
607*7c478bd9Sstevel@tonic-gate 
608*7c478bd9Sstevel@tonic-gate 	_SC_SHARED_MEMORY_OBJECTS, "_POSIX_SHARED_MEMORY_OBJECTS",
609*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
610*7c478bd9Sstevel@tonic-gate 
611*7c478bd9Sstevel@tonic-gate 	_SC_SYNCHRONIZED_IO,	"_POSIX_SYNCHRONIZED_IO", SYSCONF, 	NOFLAGS,
612*7c478bd9Sstevel@tonic-gate 	_SC_TIMERS,		"_POSIX_TIMERS",	SYSCONF, 	NOFLAGS,
613*7c478bd9Sstevel@tonic-gate 
614*7c478bd9Sstevel@tonic-gate 	_SC_LOGIN_NAME_MAX,	"LOGIN_NAME_MAX",	SYSCONF, 	NOFLAGS,
615*7c478bd9Sstevel@tonic-gate 
616*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_DESTRUCTOR_ITERATIONS, "PTHREAD_DESTRUCTOR_ITERATIONS",
617*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
618*7c478bd9Sstevel@tonic-gate 
619*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_KEYS_MAX,	"PTHREAD_KEYS_MAX",	SYSCONF, 	NOFLAGS,
620*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_STACK_MIN,	"PTHREAD_STACK_MIN",	SYSCONF, 	NOFLAGS,
621*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_THREADS_MAX,	"PTHREAD_THREADS_MAX",	SYSCONF, 	NOFLAGS,
622*7c478bd9Sstevel@tonic-gate 
623*7c478bd9Sstevel@tonic-gate 	_SC_THREADS,		"_POSIX_THREADS",	SYSCONF, 	NOFLAGS,
624*7c478bd9Sstevel@tonic-gate 
625*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_ATTR_STACKADDR, "POSIX_THREAD_ATTR_STACKADDR",
626*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
627*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_ATTR_STACKADDR, "_POSIX_THREAD_ATTR_STACKADDR",
628*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
629*7c478bd9Sstevel@tonic-gate 
630*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_ATTR_STACKSIZE, "POSIX_THREAD_ATTR_STACKSIZE",
631*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
632*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_ATTR_STACKSIZE, "_POSIX_THREAD_ATTR_STACKSIZE",
633*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
634*7c478bd9Sstevel@tonic-gate 
635*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PRIORITY_SCHEDULING, "POSIX_THREAD_PRIORITY_SCHEDULING",
636*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
637*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PRIORITY_SCHEDULING, "_POSIX_THREAD_PRIORITY_SCHEDULING",
638*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
639*7c478bd9Sstevel@tonic-gate 
640*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PRIO_INHERIT, "POSIX_THREAD_PRIO_INHERIT",
641*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
642*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PRIO_INHERIT, "_POSIX_THREAD_PRIO_INHERIT",
643*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
644*7c478bd9Sstevel@tonic-gate 
645*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PRIO_PROTECT, "POSIX_THREAD_PRIO_PROTECT",
646*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
647*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PRIO_PROTECT, "_POSIX_THREAD_PRIO_PROTECT",
648*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
649*7c478bd9Sstevel@tonic-gate 
650*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PROCESS_SHARED, "POSIX_THREAD_PROCESS_SHARED",
651*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
652*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_PROCESS_SHARED, "_POSIX_THREAD_PROCESS_SHARED",
653*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
654*7c478bd9Sstevel@tonic-gate 
655*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_SAFE_FUNCTIONS, "POSIX_THREAD_SAFE_FUNCTIONS",
656*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
657*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_SAFE_FUNCTIONS, "_POSIX_THREAD_SAFE_FUNCTIONS",
658*7c478bd9Sstevel@tonic-gate 	    SYSCONF, 	NOFLAGS,
659*7c478bd9Sstevel@tonic-gate 
660*7c478bd9Sstevel@tonic-gate 	_SC_TTY_NAME_MAX,	"TTY_NAME_MAX",		SYSCONF,	NOFLAGS,
661*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_REALTIME,	"_XOPEN_REALTIME",	SYSCONF, 	NOFLAGS,
662*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_REALTIME_THREADS, "_XOPEN_REALTIME_THREADS", SYSCONF, NOFLAGS,
663*7c478bd9Sstevel@tonic-gate 
664*7c478bd9Sstevel@tonic-gate 	/*
665*7c478bd9Sstevel@tonic-gate 	 * Due to ambiguity in the standard we need
666*7c478bd9Sstevel@tonic-gate 	 * to recognize both the underscored name
667*7c478bd9Sstevel@tonic-gate 	 * and the non-underscored version in the
668*7c478bd9Sstevel@tonic-gate 	 * following variables.
669*7c478bd9Sstevel@tonic-gate 	 */
670*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_ILP32_OFF32,	"XBS5_ILP32_OFF32",	SYSCONF, 	NOFLAGS,
671*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_ILP32_OFF32,	"_XBS5_ILP32_OFF32",	SYSCONF, 	NOFLAGS,
672*7c478bd9Sstevel@tonic-gate 
673*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_ILP32_OFFBIG,	"XBS5_ILP32_OFFBIG",	SYSCONF, 	NOFLAGS,
674*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_ILP32_OFFBIG,	"_XBS5_ILP32_OFFBIG",	SYSCONF, 	NOFLAGS,
675*7c478bd9Sstevel@tonic-gate 
676*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_LP64_OFF64,	"XBS5_LP64_OFF64",	SYSCONF, 	NOFLAGS,
677*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_LP64_OFF64,	"_XBS5_LP64_OFF64",	SYSCONF, 	NOFLAGS,
678*7c478bd9Sstevel@tonic-gate 
679*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_LPBIG_OFFBIG,	"XBS5_LPBIG_OFFBIG",	SYSCONF, 	NOFLAGS,
680*7c478bd9Sstevel@tonic-gate 	_SC_XBS5_LPBIG_OFFBIG,	"_XBS5_LPBIG_OFFBIG",	SYSCONF, 	NOFLAGS,
681*7c478bd9Sstevel@tonic-gate 
682*7c478bd9Sstevel@tonic-gate /*
683*7c478bd9Sstevel@tonic-gate  * UNIX 03 additions for sysconf() names, and names that are not in interfaces
684*7c478bd9Sstevel@tonic-gate  */
685*7c478bd9Sstevel@tonic-gate 	_SC_REGEXP,		"_POSIX_REGEXP",	  SYSCONF,	NOFLAGS,
686*7c478bd9Sstevel@tonic-gate 	_SC_SHELL,		"_POSIX_SHELL",		  SYSCONF,	NOFLAGS,
687*7c478bd9Sstevel@tonic-gate 	_SC_HOST_NAME_MAX,	"HOST_NAME_MAX",	  SYSCONF,	NOFLAGS,
688*7c478bd9Sstevel@tonic-gate 	_SC_READER_WRITER_LOCKS, "_POSIX_READER_WRITER_LOCKS", SYSCONF,	NOFLAGS,
689*7c478bd9Sstevel@tonic-gate 	_SC_IPV6,		"_POSIX_IPV6",		  SYSCONF,	NOFLAGS,
690*7c478bd9Sstevel@tonic-gate 	_SC_RAW_SOCKETS,	"_POSIX_RAW_SOCKETS",	  SYSCONF,	NOFLAGS,
691*7c478bd9Sstevel@tonic-gate 	_SC_XOPEN_STREAMS, 	"_XOPEN_STREAMS",	  SYSCONF,	NOFLAGS,
692*7c478bd9Sstevel@tonic-gate 	_SC_SYMLOOP_MAX,	"SYMLOOP_MAX",		  SYSCONF,	NOFLAGS,
693*7c478bd9Sstevel@tonic-gate 	_SC_2_PBS,		"_POSIX2_PBS",		  SYSCONF,	NOFLAGS,
694*7c478bd9Sstevel@tonic-gate 	_SC_2_PBS_ACCOUNTING,   "_POSIX2_PBS_ACCOUNTING", SYSCONF,	NOFLAGS,
695*7c478bd9Sstevel@tonic-gate 	_SC_2_PBS_CHECKPOINT,   "_POSIX2_PBS_CHECKPOINT", SYSCONF,	NOFLAGS,
696*7c478bd9Sstevel@tonic-gate 	_SC_2_PBS_LOCATE,	"_POSIX2_PBS_LOCATE",	  SYSCONF,	NOFLAGS,
697*7c478bd9Sstevel@tonic-gate 	_SC_2_PBS_MESSAGE,	"_POSIX2_PBS_MESSAGE",	  SYSCONF,	NOFLAGS,
698*7c478bd9Sstevel@tonic-gate 	_SC_2_PBS_TRACK,	"_POSIX2_PBS_TRACK",	  SYSCONF,	NOFLAGS,
699*7c478bd9Sstevel@tonic-gate 
700*7c478bd9Sstevel@tonic-gate 	_SC_ADVISORY_INFO,	"_POSIX_ADVISORY_INFO",   SYSCONF,	NOFLAGS,
701*7c478bd9Sstevel@tonic-gate 	_SC_BARRIERS,		"_POSIX_BARRIERS",	  SYSCONF,	NOFLAGS,
702*7c478bd9Sstevel@tonic-gate 	_SC_CLOCK_SELECTION,	"_POSIX_CLOCK_SELECTION", SYSCONF,	NOFLAGS,
703*7c478bd9Sstevel@tonic-gate 	_SC_CPUTIME,		"_POSIX_CPUTIME",	  SYSCONF,	NOFLAGS,
704*7c478bd9Sstevel@tonic-gate 	_SC_MONOTONIC_CLOCK,	"_POSIX_MONOTONIC_CLOCK", SYSCONF,	NOFLAGS,
705*7c478bd9Sstevel@tonic-gate 	_SC_SPAWN,		"_POSIX_SPAWN",		  SYSCONF,	NOFLAGS,
706*7c478bd9Sstevel@tonic-gate 	_SC_SPIN_LOCKS,		"_POSIX_SPIN_LOCKS",	  SYSCONF,	NOFLAGS,
707*7c478bd9Sstevel@tonic-gate 	_SC_SPORADIC_SERVER,	"_POSIX_SPORADIC_SERVER", SYSCONF,	NOFLAGS,
708*7c478bd9Sstevel@tonic-gate 	_SC_SS_REPL_MAX,	"_POSIX_SS_REPL_MAX",	  SYSCONF,	NOFLAGS,
709*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_CPUTIME,	"_POSIX_THREAD_CPUTIME",   SYSCONF,	NOFLAGS,
710*7c478bd9Sstevel@tonic-gate 	_SC_THREAD_SPORADIC_SERVER, "_POSIX_THREAD_SPORADIC_SERVER", 	SYSCONF,
711*7c478bd9Sstevel@tonic-gate 		NOFLAGS,
712*7c478bd9Sstevel@tonic-gate 	_SC_TIMEOUTS,		"_POSIX_TIMEOUTS",	  SYSCONF,	NOFLAGS,
713*7c478bd9Sstevel@tonic-gate 	_SC_TRACE,		"_POSIX_TRACE",		  SYSCONF,	NOFLAGS,
714*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_EVENT_FILTER, "_POSIX_TRACE_EVENT_FILTER", SYSCONF, 	NOFLAGS,
715*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_EVENT_NAME_MAX, "_POSIX_TRACE_EVENT_NAME_MAX", SYSCONF,
716*7c478bd9Sstevel@tonic-gate 									NOFLAGS,
717*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_INHERIT,	"_POSIX_TRACE_INHERIT",   SYSCONF,	NOFLAGS,
718*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_LOG,		"_POSIX_TRACE_LOG",	  SYSCONF,	NOFLAGS,
719*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_NAME_MAX,	"_POSIX_TRACE_NAME_MAX",  SYSCONF,	NOFLAGS,
720*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_SYS_MAX,	"_POSIX_TRACE_SYS_MAX",	  SYSCONF,	NOFLAGS,
721*7c478bd9Sstevel@tonic-gate 	_SC_TRACE_USER_EVENT_MAX, "_POSIX_TRACE_USER_EVENT_MAX", SYSCONF,
722*7c478bd9Sstevel@tonic-gate 									NOFLAGS,
723*7c478bd9Sstevel@tonic-gate 	_SC_TYPED_MEMORY_OBJECTS, "_POSIX_TYPED_MEMORY_OBJECTS",	SYSCONF,
724*7c478bd9Sstevel@tonic-gate 		NOFLAGS,
725*7c478bd9Sstevel@tonic-gate 
726*7c478bd9Sstevel@tonic-gate 	/*
727*7c478bd9Sstevel@tonic-gate 	 * Due to an ambiguity in the specification, we need to recognize both
728*7c478bd9Sstevel@tonic-gate 	 * the underscored POSIX name and the non-underscored name. In addition,
729*7c478bd9Sstevel@tonic-gate 	 * we need to permit the use of the _V6_* environment names specified
730*7c478bd9Sstevel@tonic-gate 	 * in unistd.h.
731*7c478bd9Sstevel@tonic-gate 	 */
732*7c478bd9Sstevel@tonic-gate 	_SC_V6_ILP32_OFF32,	"_V6_ILP32_OFF32", 	SYSCONF,	NOFLAGS,
733*7c478bd9Sstevel@tonic-gate 	_SC_V6_ILP32_OFF32,	"_POSIX_V6_ILP32_OFF32", SYSCONF,	NOFLAGS,
734*7c478bd9Sstevel@tonic-gate 	_SC_V6_ILP32_OFF32,	"POSIX_V6_ILP32_OFF32", SYSCONF,	NOFLAGS,
735*7c478bd9Sstevel@tonic-gate 
736*7c478bd9Sstevel@tonic-gate 	_SC_V6_ILP32_OFFBIG,	"_V6_ILP32_OFFBIG", 	SYSCONF,	NOFLAGS,
737*7c478bd9Sstevel@tonic-gate 	_SC_V6_ILP32_OFFBIG,	"_POSIX_V6_ILP32_OFFBIG", SYSCONF,	NOFLAGS,
738*7c478bd9Sstevel@tonic-gate 	_SC_V6_ILP32_OFFBIG,	"POSIX_V6_ILP32_OFFBIG", SYSCONF,	NOFLAGS,
739*7c478bd9Sstevel@tonic-gate 
740*7c478bd9Sstevel@tonic-gate 	_SC_V6_LP64_OFF64,	"_V6_LP64_OFF64", 	SYSCONF,	NOFLAGS,
741*7c478bd9Sstevel@tonic-gate 	_SC_V6_LP64_OFF64,	"_POSIX_V6_LP64_OFF64",	SYSCONF,	NOFLAGS,
742*7c478bd9Sstevel@tonic-gate 	_SC_V6_LP64_OFF64,	"POSIX_V6_LP64_OFF64", 	SYSCONF,	NOFLAGS,
743*7c478bd9Sstevel@tonic-gate 
744*7c478bd9Sstevel@tonic-gate 	_SC_V6_LPBIG_OFFBIG,	"_V6_LPBIG_OFFBIG", 	SYSCONF,	NOFLAGS,
745*7c478bd9Sstevel@tonic-gate 	_SC_V6_LPBIG_OFFBIG,	"_POSIX_V6_LPBIG_OFFBIG", SYSCONF,	NOFLAGS,
746*7c478bd9Sstevel@tonic-gate 	_SC_V6_LPBIG_OFFBIG,	"POSIX_V6_LPBIG_OFFBIG",  SYSCONF,	NOFLAGS,
747*7c478bd9Sstevel@tonic-gate 	0,		NULL,	0,	0		/* end of table */
748*7c478bd9Sstevel@tonic-gate };
749*7c478bd9Sstevel@tonic-gate 
750*7c478bd9Sstevel@tonic-gate 
751*7c478bd9Sstevel@tonic-gate /*
752*7c478bd9Sstevel@tonic-gate  * Print usage message.
753*7c478bd9Sstevel@tonic-gate  */
754*7c478bd9Sstevel@tonic-gate static int
755*7c478bd9Sstevel@tonic-gate usage()
756*7c478bd9Sstevel@tonic-gate {
757*7c478bd9Sstevel@tonic-gate 
758*7c478bd9Sstevel@tonic-gate 	(void) fputs(gettext(
759*7c478bd9Sstevel@tonic-gate 		"usage:\tgetconf [-v specification] system_var\n"
760*7c478bd9Sstevel@tonic-gate 		"\tgetconf [-v specification] path_var pathname\n"
761*7c478bd9Sstevel@tonic-gate 		"\tgetconf -a\n"), stderr);
762*7c478bd9Sstevel@tonic-gate 	return (2);
763*7c478bd9Sstevel@tonic-gate }
764*7c478bd9Sstevel@tonic-gate 
765*7c478bd9Sstevel@tonic-gate 
766*7c478bd9Sstevel@tonic-gate static int
767*7c478bd9Sstevel@tonic-gate namecmp(const void *a, const void *b)
768*7c478bd9Sstevel@tonic-gate {
769*7c478bd9Sstevel@tonic-gate 	return (strcoll(((const struct sctab *)a)->name,
770*7c478bd9Sstevel@tonic-gate 	    ((const struct sctab *)b)->name));
771*7c478bd9Sstevel@tonic-gate }
772*7c478bd9Sstevel@tonic-gate 
773*7c478bd9Sstevel@tonic-gate 
774*7c478bd9Sstevel@tonic-gate static int
775*7c478bd9Sstevel@tonic-gate getconf(struct sctab *scp, int argc, char *name, char *file)
776*7c478bd9Sstevel@tonic-gate {
777*7c478bd9Sstevel@tonic-gate 	register size_t len;
778*7c478bd9Sstevel@tonic-gate 	register char *buffer;
779*7c478bd9Sstevel@tonic-gate 	long value;
780*7c478bd9Sstevel@tonic-gate 
781*7c478bd9Sstevel@tonic-gate 	switch (scp->type) {
782*7c478bd9Sstevel@tonic-gate 	case SELFCONF:
783*7c478bd9Sstevel@tonic-gate 		if (argc > 2)
784*7c478bd9Sstevel@tonic-gate 			return (usage());
785*7c478bd9Sstevel@tonic-gate 		if (scp->flag & UNDEFINED ||
786*7c478bd9Sstevel@tonic-gate 		    (!(scp->flag&UNSIGNED_VALUE) && scp->value == -1)) {
787*7c478bd9Sstevel@tonic-gate 			/* DO NOT TRANSLATE */
788*7c478bd9Sstevel@tonic-gate 			(void) printf("undefined\n");
789*7c478bd9Sstevel@tonic-gate 		} else
790*7c478bd9Sstevel@tonic-gate 			if (scp->flag & UNSIGNED_VALUE)
791*7c478bd9Sstevel@tonic-gate 				(void) printf("%lu\n", scp->value);
792*7c478bd9Sstevel@tonic-gate 			else
793*7c478bd9Sstevel@tonic-gate 				(void) printf("%ld\n", scp->value);
794*7c478bd9Sstevel@tonic-gate 		break;
795*7c478bd9Sstevel@tonic-gate 
796*7c478bd9Sstevel@tonic-gate 	case SYSCONF:
797*7c478bd9Sstevel@tonic-gate 		if (argc > 2)
798*7c478bd9Sstevel@tonic-gate 			return (usage());
799*7c478bd9Sstevel@tonic-gate 		errno = 0;
800*7c478bd9Sstevel@tonic-gate 		if (scp->flag & UNDEFINED ||
801*7c478bd9Sstevel@tonic-gate 		    (value = sysconf((int)scp->value)) == -1) {
802*7c478bd9Sstevel@tonic-gate 			if (errno == EINVAL) {
803*7c478bd9Sstevel@tonic-gate 				(void) fprintf(stderr,
804*7c478bd9Sstevel@tonic-gate 				    gettext(INVAL_ARG), name);
805*7c478bd9Sstevel@tonic-gate 				return (1);
806*7c478bd9Sstevel@tonic-gate 			} else {
807*7c478bd9Sstevel@tonic-gate 				/* DO NOT TRANSLATE */
808*7c478bd9Sstevel@tonic-gate 				(void) printf("undefined\n");
809*7c478bd9Sstevel@tonic-gate 				return (0);
810*7c478bd9Sstevel@tonic-gate 			}
811*7c478bd9Sstevel@tonic-gate 		} else
812*7c478bd9Sstevel@tonic-gate 			(void) printf("%ld\n", value);
813*7c478bd9Sstevel@tonic-gate 		break;
814*7c478bd9Sstevel@tonic-gate 
815*7c478bd9Sstevel@tonic-gate 	case CONFSTR:
816*7c478bd9Sstevel@tonic-gate 		if (argc > 2)
817*7c478bd9Sstevel@tonic-gate 			return (usage());
818*7c478bd9Sstevel@tonic-gate 		errno = 0;
819*7c478bd9Sstevel@tonic-gate 		len = confstr((int)scp->value, NULL, (size_t)0);
820*7c478bd9Sstevel@tonic-gate 		if (len == 0)
821*7c478bd9Sstevel@tonic-gate 			if (errno == EINVAL) {
822*7c478bd9Sstevel@tonic-gate 				(void) fprintf(stderr, gettext(INVAL_ARG),
823*7c478bd9Sstevel@tonic-gate 				    name);
824*7c478bd9Sstevel@tonic-gate 				return (1);
825*7c478bd9Sstevel@tonic-gate 			} else {
826*7c478bd9Sstevel@tonic-gate 				/* DO NOT TRANSLATE */
827*7c478bd9Sstevel@tonic-gate 				(void) printf("undefined\n");
828*7c478bd9Sstevel@tonic-gate 				return (0);
829*7c478bd9Sstevel@tonic-gate 			}
830*7c478bd9Sstevel@tonic-gate 		/*
831*7c478bd9Sstevel@tonic-gate 		 * allocate space to store result of constr() into
832*7c478bd9Sstevel@tonic-gate 		 */
833*7c478bd9Sstevel@tonic-gate 		if ((buffer = malloc(len)) == NULL) {
834*7c478bd9Sstevel@tonic-gate 			(void) fprintf(stderr,
835*7c478bd9Sstevel@tonic-gate 			    gettext("insufficient memory available"));
836*7c478bd9Sstevel@tonic-gate 			return (1);
837*7c478bd9Sstevel@tonic-gate 		}
838*7c478bd9Sstevel@tonic-gate 
839*7c478bd9Sstevel@tonic-gate 		assert(confstr((int)scp->value, buffer, len) != 0);
840*7c478bd9Sstevel@tonic-gate 
841*7c478bd9Sstevel@tonic-gate 		(void) printf("%s\n", buffer);
842*7c478bd9Sstevel@tonic-gate 		free(buffer);
843*7c478bd9Sstevel@tonic-gate 		break;
844*7c478bd9Sstevel@tonic-gate 
845*7c478bd9Sstevel@tonic-gate 	case PATHCONF:
846*7c478bd9Sstevel@tonic-gate 		if (argc != 3)
847*7c478bd9Sstevel@tonic-gate 			return (usage());
848*7c478bd9Sstevel@tonic-gate 		errno = 0;
849*7c478bd9Sstevel@tonic-gate 		if ((value = pathconf(file, (int)scp->value)) == -1) {
850*7c478bd9Sstevel@tonic-gate 			if (errno == EINVAL || errno == 0) {
851*7c478bd9Sstevel@tonic-gate 				/* Does not support the association */
852*7c478bd9Sstevel@tonic-gate 				/* DO NOT TRANSLATE */
853*7c478bd9Sstevel@tonic-gate 				(void) printf("undefined\n");
854*7c478bd9Sstevel@tonic-gate 				return (0);
855*7c478bd9Sstevel@tonic-gate 			} else {
856*7c478bd9Sstevel@tonic-gate 				/* Probably problems with the pathname itself */
857*7c478bd9Sstevel@tonic-gate 				if (aflag) {
858*7c478bd9Sstevel@tonic-gate 					(void) printf("%s\n", file);
859*7c478bd9Sstevel@tonic-gate 				} else {
860*7c478bd9Sstevel@tonic-gate 					(void) printf("%s", file);
861*7c478bd9Sstevel@tonic-gate 				}
862*7c478bd9Sstevel@tonic-gate 				return (1);
863*7c478bd9Sstevel@tonic-gate 			}
864*7c478bd9Sstevel@tonic-gate 		}
865*7c478bd9Sstevel@tonic-gate 		(void) printf("%ld\n", value);
866*7c478bd9Sstevel@tonic-gate 		break;
867*7c478bd9Sstevel@tonic-gate 	}
868*7c478bd9Sstevel@tonic-gate 	return (0);
869*7c478bd9Sstevel@tonic-gate }
870*7c478bd9Sstevel@tonic-gate 
871*7c478bd9Sstevel@tonic-gate int
872*7c478bd9Sstevel@tonic-gate main(int argc, char **argv)
873*7c478bd9Sstevel@tonic-gate {
874*7c478bd9Sstevel@tonic-gate 	register struct sctab *scp;
875*7c478bd9Sstevel@tonic-gate 	int c;
876*7c478bd9Sstevel@tonic-gate 	int exstat = 0;
877*7c478bd9Sstevel@tonic-gate 
878*7c478bd9Sstevel@tonic-gate 	(void) setlocale(LC_ALL, "");
879*7c478bd9Sstevel@tonic-gate #if	!defined(TEXT_DOMAIN)	/* Should be defined by cc -D */
880*7c478bd9Sstevel@tonic-gate #define	TEXT_DOMAIN "SYS_TEST"
881*7c478bd9Sstevel@tonic-gate #endif
882*7c478bd9Sstevel@tonic-gate 	(void) textdomain(TEXT_DOMAIN);
883*7c478bd9Sstevel@tonic-gate 
884*7c478bd9Sstevel@tonic-gate 	while ((c = getopt(argc, argv, "av:")) != -1)
885*7c478bd9Sstevel@tonic-gate 		switch (c) {
886*7c478bd9Sstevel@tonic-gate 		case 'a':
887*7c478bd9Sstevel@tonic-gate 			aflag = 1;
888*7c478bd9Sstevel@tonic-gate 			break;
889*7c478bd9Sstevel@tonic-gate 		case 'v':
890*7c478bd9Sstevel@tonic-gate 			/*
891*7c478bd9Sstevel@tonic-gate 			 * Unix98 adds the -v option to allow
892*7c478bd9Sstevel@tonic-gate 			 * programming 'specifications' to be
893*7c478bd9Sstevel@tonic-gate 			 * indicated, for present purposes
894*7c478bd9Sstevel@tonic-gate 			 * the specification isn't really
895*7c478bd9Sstevel@tonic-gate 			 * doing anything of value, so for
896*7c478bd9Sstevel@tonic-gate 			 * the moment getopt just processes the
897*7c478bd9Sstevel@tonic-gate 			 * option value and argv[1] is adjusted.
898*7c478bd9Sstevel@tonic-gate 			 *
899*7c478bd9Sstevel@tonic-gate 			 * At some later date we might want to
900*7c478bd9Sstevel@tonic-gate 			 * do specification processing at this
901*7c478bd9Sstevel@tonic-gate 			 * point.
902*7c478bd9Sstevel@tonic-gate 			 */
903*7c478bd9Sstevel@tonic-gate 			break;
904*7c478bd9Sstevel@tonic-gate 		case '?':
905*7c478bd9Sstevel@tonic-gate 			return (usage());
906*7c478bd9Sstevel@tonic-gate 		}
907*7c478bd9Sstevel@tonic-gate 	argc -= optind-1;
908*7c478bd9Sstevel@tonic-gate 	argv += optind-1;
909*7c478bd9Sstevel@tonic-gate 
910*7c478bd9Sstevel@tonic-gate 	if ((aflag && argc >= 2) || (!aflag && argc < 2))
911*7c478bd9Sstevel@tonic-gate 		return (usage());
912*7c478bd9Sstevel@tonic-gate 	if (aflag) {
913*7c478bd9Sstevel@tonic-gate 
914*7c478bd9Sstevel@tonic-gate #define	TabStop		8
915*7c478bd9Sstevel@tonic-gate #define	RightColumn	32
916*7c478bd9Sstevel@tonic-gate #define	DefPathName	"."
917*7c478bd9Sstevel@tonic-gate 
918*7c478bd9Sstevel@tonic-gate 		/*
919*7c478bd9Sstevel@tonic-gate 		 * sort the table by the "name" field
920*7c478bd9Sstevel@tonic-gate 		 * so we print it in sorted order
921*7c478bd9Sstevel@tonic-gate 		 */
922*7c478bd9Sstevel@tonic-gate 	qsort(&sctab[0], (sizeof (sctab)/sizeof (struct sctab))-1,
923*7c478bd9Sstevel@tonic-gate 	    sizeof (struct sctab), namecmp);
924*7c478bd9Sstevel@tonic-gate 
925*7c478bd9Sstevel@tonic-gate 		/*
926*7c478bd9Sstevel@tonic-gate 		 * print all the known symbols and their values
927*7c478bd9Sstevel@tonic-gate 		 */
928*7c478bd9Sstevel@tonic-gate 		for (scp = &sctab[0]; scp->name != NULL; ++scp) {
929*7c478bd9Sstevel@tonic-gate 			int stat;
930*7c478bd9Sstevel@tonic-gate 
931*7c478bd9Sstevel@tonic-gate 			/*
932*7c478bd9Sstevel@tonic-gate 			 * create 2 columns:
933*7c478bd9Sstevel@tonic-gate 			 *   variable name in the left column,
934*7c478bd9Sstevel@tonic-gate 			 *   value in the right column.
935*7c478bd9Sstevel@tonic-gate 			 * The right column starts at a tab stop.
936*7c478bd9Sstevel@tonic-gate 			 */
937*7c478bd9Sstevel@tonic-gate 			(void) printf("%s:\t", scp->name);
938*7c478bd9Sstevel@tonic-gate 
939*7c478bd9Sstevel@tonic-gate 			c = strlen(scp->name) + 1;
940*7c478bd9Sstevel@tonic-gate 			c = (c+TabStop) / TabStop, c *= TabStop;
941*7c478bd9Sstevel@tonic-gate 			for (; c < RightColumn; c += TabStop)
942*7c478bd9Sstevel@tonic-gate 				(void) putchar('\t');
943*7c478bd9Sstevel@tonic-gate 
944*7c478bd9Sstevel@tonic-gate 			/*
945*7c478bd9Sstevel@tonic-gate 			 * for pathconf() related variables that require
946*7c478bd9Sstevel@tonic-gate 			 * a pathname, use "."
947*7c478bd9Sstevel@tonic-gate 			 */
948*7c478bd9Sstevel@tonic-gate 			stat = getconf(scp, scp->type == PATHCONF ? 3 : 2,
949*7c478bd9Sstevel@tonic-gate 			    scp->name, DefPathName);
950*7c478bd9Sstevel@tonic-gate 
951*7c478bd9Sstevel@tonic-gate 			exstat |= stat;
952*7c478bd9Sstevel@tonic-gate 
953*7c478bd9Sstevel@tonic-gate 			/*
954*7c478bd9Sstevel@tonic-gate 			 * if stat != 0, then an error message was already
955*7c478bd9Sstevel@tonic-gate 			 * printed in getconf(),
956*7c478bd9Sstevel@tonic-gate 			 * so don't need to print one here
957*7c478bd9Sstevel@tonic-gate 			 */
958*7c478bd9Sstevel@tonic-gate 		}
959*7c478bd9Sstevel@tonic-gate 	} else {
960*7c478bd9Sstevel@tonic-gate 
961*7c478bd9Sstevel@tonic-gate 		/*
962*7c478bd9Sstevel@tonic-gate 		 * find the name of the specified variable (argv[1])
963*7c478bd9Sstevel@tonic-gate 		 * and print its value.
964*7c478bd9Sstevel@tonic-gate 		 */
965*7c478bd9Sstevel@tonic-gate 		for (scp = &sctab[0]; scp->name != NULL; ++scp)
966*7c478bd9Sstevel@tonic-gate 			if (strcmp(argv[1], scp->name) == 0) {
967*7c478bd9Sstevel@tonic-gate 				exstat = getconf(scp, argc, argv[1], argv[2]);
968*7c478bd9Sstevel@tonic-gate 				break;
969*7c478bd9Sstevel@tonic-gate 			}
970*7c478bd9Sstevel@tonic-gate 
971*7c478bd9Sstevel@tonic-gate 		/*
972*7c478bd9Sstevel@tonic-gate 		 * if at last entry in table, then the user specified
973*7c478bd9Sstevel@tonic-gate 		 * variable is invalid
974*7c478bd9Sstevel@tonic-gate 		 */
975*7c478bd9Sstevel@tonic-gate 		if (scp->name == NULL) {
976*7c478bd9Sstevel@tonic-gate 			errno = EINVAL;
977*7c478bd9Sstevel@tonic-gate 			(void) fprintf(stderr, gettext(INVAL_ARG), argv[1]);
978*7c478bd9Sstevel@tonic-gate 			return (1);
979*7c478bd9Sstevel@tonic-gate 		}
980*7c478bd9Sstevel@tonic-gate 	}
981*7c478bd9Sstevel@tonic-gate 	return (exstat);
982*7c478bd9Sstevel@tonic-gate }
983