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