📄 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> */#ifdef HAVE_CONFIG_H# include <config.h>#endif#ifdef HAVE_SYS_PARAM_H# include <sys/param.h>#endif#include <stdio.h>#ifdef HAVE_LIMITS_H#include <limits.h>#endif#ifdef HAVE_LOCALE_H#include <locale.h>#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#include <errno.h>#include "typemax.h"#include "bashansi.h"#include "shell.h"#include "builtins.h"#include "stdc.h"#include "common.h"#include "bashgetopt.h"#include "getconf.h"#ifndef errnoextern int errno;#endifstruct conf_variable{ const char *name; enum { SYSCONF, CONFSTR, PATHCONF, CONSTANT, LLCONST, G_UNDEF } type; long value;};#ifndef HAVE_CONFSTRstatic size_t confstr __P((int, char *, size_t));#endif#ifndef HAVE_SYSCONFstatic long sysconf __P((int));#endif#ifndef HAVE_PATHCONFstatic long pathconf __P((const char *, int));#endif/* Hack to `encode' values wider than long into a conf_variable */#define VAL_LLONG_MIN -1000#define VAL_LLONG_MAX -1001#define VAL_ULLONG_MAX -1002static 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. The SYSCONF variables say whether or not the appropriate CONFSTR variables are available. */#if defined (_SC_XBS5_ILP32_OFF32) { "XBS5_ILP32_OFF32", SYSCONF, _SC_XBS5_ILP32_OFF32 }, { "_XBS5_ILP32_OFF32", SYSCONF, _SC_XBS5_ILP32_OFF32 },#endif#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 },#endif#if defined (_SC_XBS5_ILP32_OFFBIG) { "XBS5_ILP32_OFFBIG", SYSCONF, _SC_XBS5_ILP32_OFFBIG }, { "_XBS5_ILP32_OFFBIG", SYSCONF, _SC_XBS5_ILP32_OFFBIG },#endif#if defined (_CS_XBS5_ILP32_OFFBIG_CFLAGS) { "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 },#endif#if defined (_SC_XBS5_LP64_OFF64) { "XBS5_LP64_OFF64", SYSCONF, _SC_XBS5_LP64_OFF64 }, { "_XBS5_LP64_OFF64", SYSCONF, _SC_XBS5_LP64_OFF64 },#endif#if defined (_CS_XBS5_LP64_OFF64_CFLAGS) { "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 },#endif#if defined (_SC_XBS5_LPBIG_OFFBIG) { "XBS5_LPBIG_OFFBIG", SYSCONF, _SC_XBS5_LPBIG_OFFBIG }, { "_XBS5_LPBIG_OFFBIG", SYSCONF, _SC_XBS5_LPBIG_OFFBIG },#endif#if defined (_CS_XBS5_LPBIG_OFFBIG_CFLAGS) { "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 /* Single UNIX Specification version 3 (POSIX.1-200x) Configurable Variable Values. The SYSCONF variables say whether or not the appropriate CONFSTR variables are available. */#if defined (_SC_POSIX_V6_ILP32_OFF32) { "_POSIX_V6_ILP32_OFF32", SYSCONF, _SC_POSIX_V6_ILP32_OFF32 },#endif#if defined (_CS_POSIX_V6_ILP32_OFF32_CFLAGS) { "POSIX_V6_ILP32_OFF32_CFLAGS", CONFSTR, _CS_POSIX_V6_ILP32_OFF32_CFLAGS }, { "POSIX_V6_ILP32_OFF32_LDFLAGS", CONFSTR, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS }, { "POSIX_V6_ILP32_OFF32_LIBS", CONFSTR, _CS_POSIX_V6_ILP32_OFF32_LIBS },#endif#if defined (_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS) { "POSIX_V6_ILP32_OFF32_LINTFLAGS", CONFSTR, _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS },#endif#if defined (_SC_POSIX_V6_ILP32_OFFBIG) { "_POSIX_V6_ILP32_OFFBIG", SYSCONF, _SC_POSIX_V6_ILP32_OFFBIG },#endif#if defined (_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS) { "POSIX_V6_ILP32_OFFBIG_CFLAGS", CONFSTR, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS }, { "POSIX_V6_ILP32_OFFBIG_LDFLAGS", CONFSTR, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS }, { "POSIX_V6_ILP32_OFFBIG_LIBS", CONFSTR, _CS_POSIX_V6_ILP32_OFFBIG_LIBS },#endif#if defined (_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS) { "POSIX_V6_ILP32_OFFBIG_LINTFLAGS", CONFSTR, _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS },#endif#if defined (_SC_POSIX_V6_LP64_OFF64) { "_POSIX_V6_LP64_OFF64", SYSCONF, _SC_POSIX_V6_LP64_OFF64 },#endif#if defined (_CS_POSIX_V6_LP64_OFF64_CFLAGS) { "POSIX_V6_LP64_OFF64_CFLAGS", CONFSTR, _CS_POSIX_V6_LP64_OFF64_CFLAGS }, { "POSIX_V6_LP64_OFF64_LDFLAGS", CONFSTR, _CS_POSIX_V6_LP64_OFF64_LDFLAGS }, { "POSIX_V6_LP64_OFF64_LIBS", CONFSTR, _CS_POSIX_V6_LP64_OFF64_LIBS },#endif#if defined (CS_POSIX_V6_LP64_OFF64_LINTFLAGS) { "POSIX_V6_LP64_OFF64_LINTFLAGS", CONFSTR, _CS_POSIX_V6_LP64_OFF64_LINTFLAGS },#endif#if defined (_SC_POSIX_V6_LPBIG_OFFBIG) { "_POSIX_V6_LPBIG_OFFBIG", SYSCONF, _SC_POSIX_V6_LPBIG_OFFBIG },#endif#if defined (_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS) { "POSIX_V6_LPBIG_OFFBIG_CFLAGS", CONFSTR, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS }, { "POSIX_V6_LPBIG_OFFBIG_LDFLAGS", CONFSTR, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS }, { "POSIX_V6_LPBIG_OFFBIG_LIBS", CONFSTR, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS },#endif#if defined (_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS) { "POSIX_V6_LPBIG_OFFBIG_LINTFLAGS", CONFSTR, _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS },#endif#if defined (_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS) { "POSIX_6_WIDTH_RESTRICTED_ENVS", CONFSTR, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS },#endif /* POSIX.2 Utility Limit Minimum Values */#ifdef _POSIX2_BC_BASE_MAX { "POSIX2_BC_BASE_MAX", CONSTANT, _POSIX2_BC_BASE_MAX },#else { "POSIX2_BC_BASE_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_BC_DIM_MAX { "POSIX2_BC_DIM_MAX", CONSTANT, _POSIX2_BC_DIM_MAX },#else { "POSIX2_BC_DIM_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_BC_SCALE_MAX { "POSIX2_BC_SCALE_MAX", CONSTANT, _POSIX2_BC_SCALE_MAX },#else { "POSIX2_BC_SCALE_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_BC_STRING_MAX { "POSIX2_BC_STRING_MAX", CONSTANT, _POSIX2_BC_STRING_MAX },#else { "POSIX2_BC_STRING_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_CHARCLASS_NAME_MAX { "POSIX2_CHARCLASS_NAME_MAX", CONSTANT, _POSIX2_CHARCLASS_NAME_MAX },#else { "POSIX2_CHARCLASS_NAME_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_COLL_WEIGHTS_MAX { "POSIX2_COLL_WEIGHTS_MAX", CONSTANT, _POSIX2_COLL_WEIGHTS_MAX },#else { "POSIX2_COLL_WEIGHTS_MAX", G_UNDEF, -1 },#endif#if defined (_POSIX2_EQUIV_CLASS_MAX) { "POSIX2_EQUIV_CLASS_MAX", CONSTANT, _POSIX2_EQUIV_CLASS_MAX },#endif#ifdef _POSIX2_EXPR_NEST_MAX { "POSIX2_EXPR_NEST_MAX", CONSTANT, _POSIX2_EXPR_NEST_MAX },#else { "POSIX2_EXPR_NEST_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_LINE_MAX { "POSIX2_LINE_MAX", CONSTANT, _POSIX2_LINE_MAX },#else { "POSIX2_LINE_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_RE_DUP_MAX { "POSIX2_RE_DUP_MAX", CONSTANT, _POSIX2_RE_DUP_MAX },#else { "POSIX2_RE_DUP_MAX", G_UNDEF, -1 },#endif#if defined (_POSIX2_VERSION) { "POSIX2_VERSION", CONSTANT, _POSIX2_VERSION },#else# if !defined (_SC_2_VERSION) { "POSIX2_VERSION", G_UNDEF, -1 },# endif#endif#ifdef _POSIX2_BC_BASE_MAX { "_POSIX2_BC_BASE_MAX", CONSTANT, _POSIX2_BC_BASE_MAX },#else { "_POSIX2_BC_BASE_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_BC_DIM_MAX { "_POSIX2_BC_DIM_MAX", CONSTANT, _POSIX2_BC_DIM_MAX },#else { "_POSIX2_BC_DIM_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_BC_SCALE_MAX { "_POSIX2_BC_SCALE_MAX", CONSTANT, _POSIX2_BC_SCALE_MAX },#else { "_POSIX2_BC_SCALE_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_BC_STRING_MAX { "_POSIX2_BC_STRING_MAX", CONSTANT, _POSIX2_BC_STRING_MAX },#else { "_POSIX2_BC_STRING_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_CHARCLASS_NAME_MAX { "_POSIX2_CHARCLASS_NAME_MAX", CONSTANT, _POSIX2_CHARCLASS_NAME_MAX },#else { "_POSIX2_CHARCLASS_NAME_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_COLL_WEIGHTS_MAX { "_POSIX2_COLL_WEIGHTS_MAX", CONSTANT, _POSIX2_COLL_WEIGHTS_MAX },#else { "_POSIX2_COLL_WEIGHTS_MAX", G_UNDEF, -1 },#endif#if defined (_POSIX2_EQUIV_CLASS_MAX) { "POSIX2_EQUIV_CLASS_MAX", CONSTANT, _POSIX2_EQUIV_CLASS_MAX },#endif#ifdef _POSIX2_EXPR_NEST_MAX { "_POSIX2_EXPR_NEST_MAX", CONSTANT, _POSIX2_EXPR_NEST_MAX },#else { "_POSIX2_EXPR_NEST_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_LINE_MAX { "_POSIX2_LINE_MAX", CONSTANT, _POSIX2_LINE_MAX },#else { "_POSIX2_LINE_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX2_RE_DUP_MAX { "_POSIX2_RE_DUP_MAX", CONSTANT, _POSIX2_RE_DUP_MAX },#else { "_POSIX2_RE_DUP_MAX", G_UNDEF, -1 },#endif /* X/OPEN Maxmimum Values */#ifdef _XOPEN_IOV_MAX { "_XOPEN_IOV_MAX", CONSTANT, _XOPEN_IOV_MAX },#else { "_XOPEN_IOV_MAX", G_UNDEF, -1 },#endif#ifdef _XOPEN_NAME_MAX { "_XOPEN_NAME_MAX", CONSTANT, _XOPEN_NAME_MAX },#else { "_XOPEN_NAME_MAX", G_UNDEF, -1 },#endif#ifdef _XOPEN_PATH_MAX { "_XOPEN_PATH_MAX", CONSTANT, _XOPEN_PATH_MAX },#else { "_XOPEN_PATH_MAX", G_UNDEF, -1 },#endif /* POSIX.1 Minimum Values */#ifdef _POSIX_AIO_LISTIO_MAX { "_POSIX_AIO_LISTIO_MAX", CONSTANT, _POSIX_AIO_LISTIO_MAX },#else { "_POSIX_AIO_LISTIO_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX_AIO_MAX { "_POSIX_AIO_MAX", CONSTANT, _POSIX_AIO_MAX },#else { "_POSIX_AIO_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX_ARG_MAX { "_POSIX_ARG_MAX", CONSTANT, _POSIX_ARG_MAX },#else { "_POSIX_ARG_MAX", G_UNDEF, -1 },#endif#ifdef _POSIX_CHILD_MAX { "_POSIX_CHILD_MAX", CONSTANT, _POSIX_CHILD_MAX },#else { "_POSIX_CHILD_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_DELAYTIMER_MAX { "_POSIX_DELAYTIMER_MAX", CONSTANT, _POSIX_DELAYTIMER_MAX },#else { "_POSIX_DELAYTIMER_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_HOST_NAME_MAX { "_POSIX_HOST_NAME_MAX", CONSTANT, _POSIX_HOST_NAME_MAX },#else { "_POSIX_HOST_NAME_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_LINK_MAX { "_POSIX_LINK_MAX", CONSTANT, _POSIX_LINK_MAX },#else { "_POSIX_LINK_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_LOGIN_NAME_MAX { "_POSIX_LOGIN_NAME_MAX", CONSTANT, _POSIX_LOGIN_NAME_MAX },#else { "_POSIX_LOGIN_NAME_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_MAX_CANON { "_POSIX_MAX_CANON", CONSTANT, _POSIX_MAX_CANON },#else { "_POSIX_MAX_CANON", G_UNDEF, -1 },#endif #ifdef _POSIX_MAX_INPUT { "_POSIX_MAX_INPUT", CONSTANT, _POSIX_MAX_INPUT },#else { "_POSIX_MAX_INPUT", G_UNDEF, -1 },#endif #ifdef _POSIX_MQ_OPEN_MAX { "_POSIX_MQ_OPEN_MAX", CONSTANT, _POSIX_MQ_OPEN_MAX },#else { "_POSIX_MQ_OPEN_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_MQ_PRIO_MAX { "_POSIX_MQ_PRIO_MAX", CONSTANT, _POSIX_MQ_PRIO_MAX },#else { "_POSIX_MQ_PRIO_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_NAME_MAX { "_POSIX_NAME_MAX", CONSTANT, _POSIX_NAME_MAX },#else { "_POSIX_NAME_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_NGROUPS_MAX { "_POSIX_NGROUPS_MAX", CONSTANT, _POSIX_NGROUPS_MAX },#else { "_POSIX_NGROUPS_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_OPEN_MAX { "_POSIX_OPEN_MAX", CONSTANT, _POSIX_OPEN_MAX },#else { "_POSIX_OPEN_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_PATH_MAX { "_POSIX_PATH_MAX", CONSTANT, _POSIX_PATH_MAX },#else { "_POSIX_PATH_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_PIPE_BUF { "_POSIX_PIPE_BUF", CONSTANT, _POSIX_PIPE_BUF },#else { "_POSIX_PIPE_BUF", G_UNDEF, -1 },#endif #ifdef _POSIX_RE_DUP_MAX { "_POSIX_RE_DUP_MAX", CONSTANT, _POSIX_RE_DUP_MAX },#else { "_POSIX_RE_DUP_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_RTSIG_MAX { "_POSIX_RTSIG_MAX", CONSTANT, _POSIX_RTSIG_MAX },#else { "_POSIX_RTSIG_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SEM_NSEMS_MAX { "_POSIX_SEM_NSEMS_MAX", CONSTANT, _POSIX_SEM_NSEMS_MAX },#else { "_POSIX_SEM_NSEMS_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SEM_VALUE_MAX { "_POSIX_SEM_VALUE_MAX", CONSTANT, _POSIX_SEM_VALUE_MAX },#else { "_POSIX_SEM_VALUE_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SIGQUEUE_MAX { "_POSIX_SIGQUEUE_MAX", CONSTANT, _POSIX_SIGQUEUE_MAX },#else { "_POSIX_SIGQUEUE_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SSIZE_MAX { "_POSIX_SSIZE_MAX", CONSTANT, _POSIX_SSIZE_MAX },#else { "_POSIX_SSIZE_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SS_REPL_MAX { "_POSIX_SS_REPL_MAX", CONSTANT, _POSIX_SS_REPL_MAX },#else { "_POSIX_SS_REPL_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_STREAM_MAX { "_POSIX_STREAM_MAX", CONSTANT, _POSIX_STREAM_MAX },#else { "_POSIX_STREAM_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SYMLINK_MAX { "_POSIX_SYMLINK_MAX", CONSTANT, _POSIX_SYMLINK_MAX },#else { "_POSIX_SYMLINK_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_SYMLOOP_MAX { "_POSIX_SYMLOOP_MAX", CONSTANT, _POSIX_SYMLOOP_MAX },#else { "_POSIX_SYMLOOP_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_THREAD_DESTRUCTOR_ITERATIONS { "_POSIX_THREAD_DESTRUCTOR_ITERATIONS", CONSTANT, _POSIX_THREAD_DESTRUCTOR_ITERATIONS },#else { "_POSIX_THREAD_DESTRUCTOR_ITERATIONS", G_UNDEF, -1 },#endif #ifdef _POSIX_THREAD_KEYS_MAX { "_POSIX_THREAD_KEYS_MAX", CONSTANT, _POSIX_THREAD_KEYS_MAX },#else { "_POSIX_THREAD_KEYS_MAX", G_UNDEF, -1 },#endif #ifdef _POSIX_THREAD_THREADS_MAX { "_POSIX_THREAD_THREADS_MAX",CONSTANT, _POSIX_THREAD_THREADS_MAX },#else { "_POSIX_THREAD_THREADS_MAX",G_UNDEF, -1 },#endif #ifdef _POSIX_TIMER_MAX { "_POSIX_TIMER_MAX", CONSTANT, _POSIX_TIMER_MAX },#else { "_POSIX_TIMER_MAX", G_UNDEF, -1 },#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -