📄 getconf.c
字号:
/* * ORIGINAL COPYRIGHT STATEMENT: * * Copyright (c) 1994 Winning Strategies, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by Winning Strategies, Inc. * 4. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *//* * POSIX.2 getconf utility * * Originally Written by: * J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. * * Heavily modified for inclusion in bash by * Chet Ramey <chet@po.cwru.edu> */#include <stdio.h>#include <limits.h>#include <locale.h>#include <unistd.h>#include <errno.h>#include "bashansi.h"#include "shell.h"#include "builtins.h"#include "stdc.h"#include "common.h"#include "bashgetopt.h"struct conf_variable{ const char *name; enum { SYSCONF, CONFSTR, PATHCONF, CONSTANT } type; long value;};/* Some systems do not define these; use POSIX.2 minimum recommended values. */#ifndef _POSIX2_COLL_WEIGHTS_MAX# define _POSIX2_COLL_WEIGHTS_MAX 2#endifstatic const struct conf_variable conf_table[] ={ /* POSIX.2 Configurable Variable Values */ { "PATH", CONFSTR, _CS_PATH }, { "CS_PATH", CONFSTR, _CS_PATH }, /* POSIX.1 Configurable Variable Values (only Solaris?) */#if defined (_CS_LFS_CFLAGS) { "LFS_CFLAGS", CONFSTR, _CS_LFS_CFLAGS }, { "LFS_LDFLAGS", CONFSTR, _CS_LFS_LDFLAGS }, { "LFS_LIBS", CONFSTR, _CS_LFS_LIBS }, { "LFS_LINTFLAGS", CONFSTR, _CS_LFS_LINTFLAGS },#endif#if defined (_CS_LFS64_CFLAGS) { "LFS64_CFLAGS", CONFSTR, _CS_LFS64_CFLAGS }, { "LFS64_LDFLAGS", CONFSTR, _CS_LFS64_LDFLAGS }, { "LFS64_LIBS", CONFSTR, _CS_LFS64_LIBS }, { "LFS64_LINTFLAGS", CONFSTR, _CS_LFS64_LINTFLAGS },#endif /* Single UNIX Specification version 2 Configurable Variable Values */#if defined (_CS_XBS5_ILP32_OFF32_CFLAGS) { "XBS5_ILP32_OFF32_CFLAGS", CONFSTR, _CS_XBS5_ILP32_OFF32_CFLAGS }, { "XBS5_ILP32_OFF32_LDFLAGS", CONFSTR, _CS_XBS5_ILP32_OFF32_LDFLAGS }, { "XBS5_ILP32_OFF32_LIBS", CONFSTR, _CS_XBS5_ILP32_OFF32_LIBS }, { "XBS5_ILP32_OFF32_LINTFLAGS", CONFSTR, _CS_XBS5_ILP32_OFF32_LINTFLAGS }, { "XBS5_ILP32_OFFBIG_CFLAGS", CONFSTR, _CS_XBS5_ILP32_OFFBIG_CFLAGS }, { "XBS5_ILP32_OFFBIG_LDFLAGS", CONFSTR, _CS_XBS5_ILP32_OFFBIG_LDFLAGS }, { "XBS5_ILP32_OFFBIG_LIBS", CONFSTR, _CS_XBS5_ILP32_OFFBIG_LIBS }, { "XBS5_ILP32_OFFBIG_LINTFLAGS", CONFSTR, _CS_XBS5_ILP32_OFFBIG_LINTFLAGS }, { "XBS5_LP64_OFF64_CFLAGS", CONFSTR, _CS_XBS5_LP64_OFF64_CFLAGS }, { "XBS5_LP64_OFF64_LDFLAGS", CONFSTR, _CS_XBS5_LP64_OFF64_LDFLAGS }, { "XBS5_LP64_OFF64_LIBS", CONFSTR, _CS_XBS5_LP64_OFF64_LIBS }, { "XBS5_LP64_OFF64_LINTFLAGS", CONFSTR, _CS_XBS5_LP64_OFF64_LINTFLAGS }, { "XBS5_LPBIG_OFFBIG_CFLAGS", CONFSTR, _CS_XBS5_LPBIG_OFFBIG_CFLAGS }, { "XBS5_LPBIG_OFFBIG_LDFLAGS", CONFSTR, _CS_XBS5_LPBIG_OFFBIG_LDFLAGS }, { "XBS5_LPBIG_OFFBIG_LIBS", CONFSTR, _CS_XBS5_LPBIG_OFFBIG_LIBS }, { "XBS5_LPBIG_OFFBIG_LINTFLAGS", CONFSTR, _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS },#endif /* _CS_XBS5_ILP32_OFF32_CFLAGS */ /* POSIX.2 Utility Limit Minimum Values */ { "POSIX2_BC_BASE_MAX", CONSTANT, _POSIX2_BC_BASE_MAX }, { "POSIX2_BC_DIM_MAX", CONSTANT, _POSIX2_BC_DIM_MAX }, { "POSIX2_BC_SCALE_MAX", CONSTANT, _POSIX2_BC_SCALE_MAX }, { "POSIX2_BC_STRING_MAX", CONSTANT, _POSIX2_BC_STRING_MAX }, { "POSIX2_COLL_WEIGHTS_MAX", CONSTANT, _POSIX2_COLL_WEIGHTS_MAX },#if defined (_POSIX2_EQUIV_CLASS_MAX) { "POSIX2_EQUIV_CLASS_MAX", CONSTANT, _POSIX2_EQUIV_CLASS_MAX },#endif { "POSIX2_EXPR_NEST_MAX", CONSTANT, _POSIX2_EXPR_NEST_MAX }, { "POSIX2_LINE_MAX", CONSTANT, _POSIX2_LINE_MAX }, { "POSIX2_RE_DUP_MAX", CONSTANT, _POSIX2_RE_DUP_MAX },#if defined (_POSIX2_VERSION) { "POSIX2_VERSION", CONSTANT, _POSIX2_VERSION },#endif /* POSIX.1 Minimum Values */ { "_POSIX_ARG_MAX", CONSTANT, _POSIX_ARG_MAX }, { "_POSIX_CHILD_MAX", CONSTANT, _POSIX_CHILD_MAX }, { "_POSIX_LINK_MAX", CONSTANT, _POSIX_LINK_MAX }, { "_POSIX_MAX_CANON", CONSTANT, _POSIX_MAX_CANON }, { "_POSIX_MAX_INPUT", CONSTANT, _POSIX_MAX_INPUT }, { "_POSIX_NAME_MAX", CONSTANT, _POSIX_NAME_MAX }, { "_POSIX_NGROUPS_MAX", CONSTANT, _POSIX_NGROUPS_MAX }, { "_POSIX_OPEN_MAX", CONSTANT, _POSIX_OPEN_MAX }, { "_POSIX_PATH_MAX", CONSTANT, _POSIX_PIPE_BUF }, { "_POSIX_PIPE_BUF", CONSTANT, _POSIX_PIPE_BUF }, { "_POSIX_SSIZE_MAX", CONSTANT, _POSIX_SSIZE_MAX }, { "_POSIX_STREAM_MAX", CONSTANT, _POSIX_STREAM_MAX }, { "_POSIX_TZNAME_MAX", CONSTANT, _POSIX_TZNAME_MAX }, /* POSIX.2 Symbolic Utility Limits */ { "BC_BASE_MAX", SYSCONF, _SC_BC_BASE_MAX }, { "BC_DIM_MAX", SYSCONF, _SC_BC_DIM_MAX }, { "BC_SCALE_MAX", SYSCONF, _SC_BC_SCALE_MAX }, { "BC_STRING_MAX", SYSCONF, _SC_BC_STRING_MAX }, { "COLL_WEIGHTS_MAX", SYSCONF, _SC_COLL_WEIGHTS_MAX }, { "EXPR_NEST_MAX", SYSCONF, _SC_EXPR_NEST_MAX }, { "LINE_MAX", SYSCONF, _SC_LINE_MAX }, { "RE_DUP_MAX", SYSCONF, _SC_RE_DUP_MAX }, /* POSIX.2 Optional Facility Configuration Values */ { "POSIX2_C_BIND", SYSCONF, _SC_2_C_BIND }, { "POSIX2_C_DEV", SYSCONF, _SC_2_C_DEV },#if defined (_SC_2_C_VERSION) { "POSIX2_C_VERSION", SYSCONF, _SC_2_C_VERSION },#endif#if defined (_SC_2_CHAR_TERM) { "POSIX2_CHAR_TERM", SYSCONF, _SC_2_CHAR_TERM },#endif { "POSIX2_FORT_DEV", SYSCONF, _SC_2_FORT_DEV }, { "POSIX2_FORT_RUN", SYSCONF, _SC_2_FORT_RUN }, { "POSIX2_LOCALEDEF", SYSCONF, _SC_2_LOCALEDEF }, { "POSIX2_SW_DEV", SYSCONF, _SC_2_SW_DEV },#if defined (_SC2_UPE) { "POSIX2_UPE", SYSCONF, _SC_2_UPE },#endif#if !defined (_POSIX2_VERSION) && defined (_SC_2_VERSION) { "POSIX2_VERSION" SYSCONF, _SC_2_VERSION },#endif /* POSIX.1 Configurable System Variables */ { "ARG_MAX", SYSCONF, _SC_ARG_MAX }, { "CHILD_MAX", SYSCONF, _SC_CHILD_MAX }, { "CLK_TCK", SYSCONF, _SC_CLK_TCK }, { "NGROUPS_MAX", SYSCONF, _SC_NGROUPS_MAX }, { "OPEN_MAX", SYSCONF, _SC_OPEN_MAX }, { "STREAM_MAX", SYSCONF, _SC_STREAM_MAX }, { "TZNAME_MAX", SYSCONF, _SC_TZNAME_MAX }, { "_POSIX_JOB_CONTROL", SYSCONF, _SC_JOB_CONTROL }, { "_POSIX_SAVED_IDS", SYSCONF, _SC_SAVED_IDS }, { "_POSIX_VERSION", SYSCONF, _SC_VERSION }, /* POSIX.1 Optional Facility Configuration Values */#if defined (_SC_ASYNCHRONOUS_IO) { "_POSIX_ASYNCHRONOUS_IO", SYSCONF, _SC_ASYNCHRONOUS_IO },#endif#if defined (_SC_FSYNC) { "_POSIX_FSYNC", SYSCONF, _SC_FSYNC },#endif#if defined (_SC_MAPPED_FILES) { "_POSIX_MAPPED_FILES", SYSCONF, _SC_MAPPED_FILES },#endif#if defined (_SC_MEMLOCK) { "_POSIX_MEMLOCK", SYSCONF, _SC_MEMLOCK },#endif#if defined (_SC_MEMLOCK_RANGE) { "_POSIX_MEMLOCK_RANGE", SYSCONF, _SC_MEMLOCK_RANGE },#endif#if defined (_SC_MEMORY_PROTECTION) { "_POSIX_MEMORY_PROTECTION", SYSCONF, _SC_MEMORY_PROTECTION },#endif#if defined (_SC_MESSAGE_PASSING) { "_POSIX_MESSAGE_PASSING", SYSCONF, _SC_MESSAGE_PASSING },#endif#if defined (SC_PRIORITIZED_IO) { "_POSIX_PRIORITIZED_IO", SYSCONF, _SC_PRIORITIZED_IO },#endif#if defined (_SC_PRIORITY_SCHEDULING) { "_POSIX_PRIORITY_SCHEDULING", SYSCONF, _SC_PRIORITY_SCHEDULING },#endif#if defined (_SC_REALTIME_SIGNALS) { "_POSIX_REALTIME_SIGNALS", SYSCONF, _SC_REALTIME_SIGNALS },#endif#if defined (_SC_SEMAPHORES) { "_POSIX_SEMAPHORES", SYSCONF, _SC_SEMAPHORES },#endif#if defined (_SC_SHARED_MEMORY_OBJECTS) { "_POSIX_SHARED_MEMORY_OBJECTS", SYSCONF, _SC_SHARED_MEMORY_OBJECTS },#endif#if defined (_SC_SYNCHRONIZED_IO) { "_POSIX_SYNCHRONIZED_IO", SYSCONF, _SC_SYNCHRONIZED_IO },#endif#if defined (_SC_TIMERS) { "_POSIX_TIMERS", SYSCONF, _SC_TIMERS },#endif#if defined (_SC_THREADS) { "_POSIX_THREADS", SYSCONF, _SC_THREADS },#endif#if defined (_SC_THREADS) { "_POSIX_THREAD_ATTR_STACKADDR", SYSCONF, _SC_THREAD_ATTR_STACKADDR },#endif#if defined (_SC_THREAD_ATTR_STACKSIZE) { "_POSIX_THREAD_ATTR_STACKSIZE", SYSCONF, _SC_THREAD_ATTR_STACKSIZE },#endif#if defined (_SC_THREAD_PRIORITY_SCHEDULING) { "_POSIX_THREAD_PRIORITY_SCHEDULING", SYSCONF, _SC_THREAD_PRIORITY_SCHEDULING },#endif#if defined (_SC_THREAD_PRIO_INHERIT) { "_POSIX_THREAD_PRIO_INHERIT", SYSCONF, _SC_THREAD_PRIO_INHERIT },#endif#if defined (_SC_THREAD_PRIO_PROTECT) { "_POSIX_THREAD_PRIO_PROTECT", SYSCONF, _SC_THREAD_PRIO_PROTECT },#endif#if defined (_SC_THREAD_PROCESS_SHARED) { "_POSIX_THREAD_PROCESS_SHARED", SYSCONF, _SC_THREAD_PROCESS_SHARED },#endif#if defined (_SC_THREAD_SAFE_FUNCTIONS) { "_POSIX_THREAD_SAFE_FUNCTIONS", SYSCONF, _SC_THREAD_SAFE_FUNCTIONS },#endif /* XPG 4.2 Configurable System Variables. */#if defined (_SC_ATEXIT_MAX) { "ATEXIT_MAX", SYSCONF, _SC_ATEXIT_MAX },#endif#if defined (_SC_IOV_MAX) { "IOV_MAX", SYSCONF, _SC_IOV_MAX },#endif#if defined (_SC_PAGESIZE) { "PAGESIZE", SYSCONF, _SC_PAGESIZE },#endif#if defined (_SC_PAGE_SIZE) { "PAGE_SIZE", SYSCONF, _SC_PAGE_SIZE },#endif#if defined (_SC_AIO_LISTIO_MAX) { "AIO_LISTIO_MAX", SYSCONF, _SC_AIO_LISTIO_MAX },#endif#if defined (_SC_AIO_MAX) { "AIO_MAX", SYSCONF, _SC_AIO_MAX },#endif#if defined (_SC_AIO_PRIO_DELTA_MAX) { "AIO_PRIO_DELTA_MAX", SYSCONF, _SC_AIO_PRIO_DELTA_MAX },#endif#if defined (_SC_DELAYTIMER_MAX) { "DELAYTIMER_MAX", SYSCONF, _SC_DELAYTIMER_MAX },#endif#if defined (_SC_GETGR_R_SIZE_MAX) { "GETGR_R_SIZE_MAX", SYSCONF, _SC_GETGR_R_SIZE_MAX },#endif#if defined (_SC_GETPW_R_SIZE_MAX) { "GETPW_R_SIZE_MAX", SYSCONF, _SC_GETPW_R_SIZE_MAX },#endif#if defined (_SC_MQ_OPEN_MAX) { "MQ_OPEN_MAX", SYSCONF, _SC_MQ_OPEN_MAX },#endif#if defined (_SC_MQ_PRIO_MAX) { "MQ_PRIO_MAX", SYSCONF, _SC_MQ_PRIO_MAX },#endif#if defined (_SC_RTSIG_MAX) { "RTSIG_MAX", SYSCONF, _SC_RTSIG_MAX },#endif#if defined (_SC_SEM_NSEMS_MAX)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -