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