⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getconf.c

📁 UNIX下SH的实现源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * 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 + -