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

📄 getconf.c

📁 android-w.song.android.widget
💻 C
📖 第 1 页 / 共 3 页
字号:
#if defined (_SC_XOPEN_LEGACY)  { "_XOPEN_LEGACY",		SYSCONF,	_SC_XOPEN_LEGACY	},#endif /* _SC_XOPEN_LEGACY */#if defined (_SC_XOPEN_REALTIME)  { "_XOPEN_REALTIME",		SYSCONF,	_SC_XOPEN_REALTIME	},#endif#if defined (_SC_XOPEN_REALTIME_THREADS)  { "_XOPEN_REALTIME_THREADS",	SYSCONF,	_SC_XOPEN_REALTIME_THREADS },#endif#if defined (_SC_XOPEN_SHM)  { "_XOPEN_SHM",		SYSCONF,	_SC_XOPEN_SHM		},#endif#if defined (_SC_XOPEN_STREAMS)  { "_XOPEN_STREAMS",		SYSCONF,	_SC_XOPEN_STREAMS	},#endif#if defined (_SC_XOPEN_UNIX)  { "_XOPEN_UNIX",		SYSCONF,	_SC_XOPEN_UNIX		},#endif#if defined (_SC_XOPEN_VERSION)  { "_XOPEN_VERSION",		SYSCONF,	_SC_XOPEN_VERSION	},#endif#if defined (_SC_XOPEN_XCU_VERSION)  { "_XOPEN_XCU_VERSION",	SYSCONF,	_SC_XOPEN_XCU_VERSION	},#endif#if defined (_SC_XOPEN_XPG2)  { "_XOPEN_XPG2",		SYSCONF,	_SC_XOPEN_XPG2		},#endif#if defined (_SC_XOPEN_XPG3)  { "_XOPEN_XPG3",		SYSCONF,	_SC_XOPEN_XPG3		},#endif#if defined (_SC_XOPEN_XPG4)  { "_XOPEN_XPG4",		SYSCONF,	_SC_XOPEN_XPG4		},#endif#if defined (_SC_XOPEN_XPG5)  { "_XOPEN_XPG5",		SYSCONF,	_SC_XOPEN_XPG5		},#endif  /* POSIX.1 Configurable Pathname Values */#ifdef _PC_LINK_MAX  { "LINK_MAX",			PATHCONF,	_PC_LINK_MAX		},#endif#ifdef _PC_MAX_CANON  { "MAX_CANON",		PATHCONF,	_PC_MAX_CANON		},#endif#ifdef _PC_MAX_INPUT  { "MAX_INPUT",		PATHCONF,	_PC_MAX_INPUT		},#endif#ifdef _PC_NAME_MAX  { "NAME_MAX",			PATHCONF,	_PC_NAME_MAX		},#endif#ifdef _PC_PATH_MAX  { "PATH_MAX",			PATHCONF,	_PC_PATH_MAX		},#endif#ifdef _PC_PIPE_BUF  { "PIPE_BUF",			PATHCONF,	_PC_PIPE_BUF		},#endif#ifdef _PC_SYMLINK_MAX  { "SYMLINK_MAX",		PATHCONF,	_PC_SYMLINK_MAX		},#endif#ifdef _PC_CHOWN_RESTRICTED  { "_POSIX_CHOWN_RESTRICTED",	PATHCONF,	_PC_CHOWN_RESTRICTED	},#endif#ifdef _PC_NO_TRUNC  { "_POSIX_NO_TRUNC",		PATHCONF,	_PC_NO_TRUNC		},#endif#ifdef _PC_VDISABLE  { "_POSIX_VDISABLE",		PATHCONF,	_PC_VDISABLE		},#endif  /* XPG 4.2 Configurable Pathname Values */#if defined (_PC_FILESIZEBITS)  { "FILESIZEBITS",		PATHCONF,	_PC_FILESIZEBITS },#endif#if defined (_PC_ASYNC_IO)  { "_POSIX_ASYNC_IO",		PATHCONF,	_PC_ASYNC_IO },#endif#if defined (_PC_PRIO_IO)  { "_POSIX_PRIO_IO",		PATHCONF,	_PC_PRIO_IO },#endif#if defined (_PC_SYNC_IO)  { "_POSIX_SYNC_IO",		PATHCONF,	_PC_SYNC_IO },#endif  /* POSIX.1-200x configurable pathname values */#if defined (_PC_ALLOC_SIZE_MIN)  { "POSIX_ALLOC_SIZE_MIN",	PATHCONF,	_PC_ALLOC_SIZE_MIN },  { "POSIX_REC_INCR_XFER_SIZE",	PATHCONF,	_PC_REC_INCR_XFER_SIZE },  { "POSIX_REC_MAX_XFER_SIZE",	PATHCONF,	_PC_REC_MAX_XFER_SIZE },  { "POSIX_REC_MIN_XFER_SIZE",	PATHCONF,	_PC_REC_MIN_XFER_SIZE },  { "POSIX_REC_XFER_ALIGN",	PATHCONF,	_PC_REC_XFER_ALIGN },#endif  /* ANSI/ISO C, POSIX.1-200x, XPG 4.2 (and later) C language type limits. */  { "CHAR_BIT",			CONSTANT,	CHAR_BIT	},  { "CHAR_MAX",			CONSTANT,	CHAR_MAX	},  { "CHAR_MIN",			CONSTANT,	CHAR_MIN	},  { "INT_BIT",			CONSTANT,	INT_BIT		},  { "INT_MAX",			CONSTANT,	INT_MAX		},  { "INT_MIN",			CONSTANT,	INT_MIN		},#ifdef LLONG_MAX  { "LLONG_MAX",		LLCONST,	VAL_LLONG_MAX	},  { "LLONG_MIN",		LLCONST,	VAL_LLONG_MIN	},#endif  { "LONG_BIT",			CONSTANT,	LONG_BIT	},  { "LONG_MAX",			CONSTANT,	LONG_MAX	},  { "LONG_MIN",			CONSTANT,	LONG_MIN	},#ifdef MB_LEN_MAX  { "MB_LEN_MAX",		CONSTANT,	MB_LEN_MAX	},#endif  { "SCHAR_MAX",		CONSTANT,	SCHAR_MAX	},  { "SCHAR_MIN",		CONSTANT,	SCHAR_MIN	},  { "SHRT_MAX",			CONSTANT,	SHRT_MAX	},  { "SHRT_MIN",			CONSTANT,	SHRT_MIN	},  { "SIZE_MAX",			CONSTANT,	SIZE_MAX	},  { "SSIZE_MAX",		CONSTANT,	SSIZE_MAX	},  { "UCHAR_MAX",		CONSTANT,	UCHAR_MAX	},  { "UINT_MAX",			CONSTANT,	UINT_MAX	},#ifdef ULLONG_MAX  { "ULLONG_MAX",		LLCONST,	VAL_ULLONG_MAX	},#endif  { "ULONG_MAX",		CONSTANT,	ULONG_MAX	},  { "USHRT_MAX",		CONSTANT,	USHRT_MAX	},  { "WORD_BIT",			CONSTANT,	WORD_BIT	},  { NULL }};static int num_getconf_variables = sizeof(conf_table) / sizeof(struct conf_variable) - 1;extern char *this_command_name;extern char **make_builtin_argv ();static void getconf_help ();static int getconf_print ();static int getconf_one ();static int getconf_all ();intgetconf_builtin (list)     WORD_LIST *list;{  int c, r, opt, aflag;  char **v;  aflag = 0;  reset_internal_getopt();  while ((opt = internal_getopt (list, "ahv:")) != -1) {  	switch (opt) {  	case 'a':  		aflag = 1;  		break;  	case 'h':  		getconf_help();  		return(EXECUTION_SUCCESS);  	case 'v':  		break;		/* ignored */  	default:  		builtin_usage();  		return(EX_USAGE);  	}  }   list = loptend;  if ((aflag == 0 && list == 0) || (aflag && list) || list_length(list) > 2) {  	builtin_usage();  	return(EX_USAGE);  }  r = aflag ? getconf_all() : getconf_one(list);  return r;}static voidgetconf_help(){	const struct conf_variable *cp;	register int i, column;	builtin_usage();	printf("Acceptable variable names are:\n");	for (cp = conf_table; cp->name != NULL; cp++) {		if (cp->type == PATHCONF)			printf("%s pathname\n", cp->name);		else			printf("%s\n", cp->name);	}}static intgetconf_print(cp, vpath, all)struct conf_variable *cp;char *vpath;int all;{	long val;	char *sval;	size_t slen;	switch (cp->type) {	case G_UNDEF:		printf("undefined\n");		break;#ifdef LLONG_MAX	case LLCONST:		switch (cp->value) {			default:			case VAL_LLONG_MIN:				printf ("%lld\n", LLONG_MIN);				break;			case VAL_LLONG_MAX:				printf ("%lld\n", LLONG_MAX);				break;#  if (ULLONG_MAX != LLONG_MAX)			case VAL_ULLONG_MAX:				printf ("%llu\n", ULLONG_MAX);				break;#  endif		}		break;#endif	case CONSTANT:		switch (cp->value) {			case UCHAR_MAX:			case USHRT_MAX:			case UINT_MAX:#if (ULONG_MAX != UINT_MAX)						case ULONG_MAX:#endif#if (SIZE_MAX != UINT_MAX) && (SIZE_MAX != ULONG_MAX)			case SIZE_MAX:#endif				printf("%lu\n", cp->value);				break;			default:				printf("%ld\n", cp->value);				break;		}		break;	case CONFSTR:		errno = 0;		slen = confstr (cp->value, (char *) 0, (size_t) 0);		if (slen == 0) {			if (errno != 0) {				if (all)					printf ("getconf: %s\n", strerror(errno));				else					builtin_error ("%s", strerror(errno));			} else				printf ("undefined\n");			return (EXECUTION_FAILURE);		}		sval = xmalloc(slen);		confstr(cp->value, sval, slen);		printf("%s\n", sval);		free(sval);		break;	case SYSCONF:		errno = 0;		if ((val = sysconf(cp->value)) == -1) {			if (errno != 0) {				if (all)					printf("getconf: %s\n", strerror (errno));				else					builtin_error ("%s", strerror (errno));				return (EXECUTION_FAILURE);			}			printf ("undefined\n");		} else {			printf("%ld\n", val);		}		break;	case PATHCONF:		errno = 0;		if ((val = pathconf(vpath, cp->value)) == -1) {			if (errno != 0) {				if (all)					printf("getconf: %s: %s\n", vpath, strerror (errno));				else					builtin_error ("%s: %s", vpath, strerror (errno));				return (EXECUTION_FAILURE);			}			printf ("undefined\n");		} else {			printf ("%ld\n", val);		}		break;	}	return (ferror(stdout) ? EXECUTION_FAILURE : EXECUTION_SUCCESS);}static intgetconf_all(){	const struct conf_variable *cp;	int ret;	ret = EXECUTION_SUCCESS;	for (cp = conf_table; cp->name != NULL; cp++) {		printf("%-35s", cp->name);		if (getconf_print(cp, "/", 1) == EXECUTION_FAILURE)			ret = EXECUTION_FAILURE;	}	return ret;}static intgetconf_one(list)	WORD_LIST *list;{	const struct conf_variable *cp;	char *vname, *vpath;	vname = list->word->word;	vpath = (list->next && list->next->word) ? list->next->word->word						 : (char *)NULL;	for (cp = conf_table; cp->name != NULL; cp++) {		if (strcmp(vname, cp->name) == 0)			break;	}	if (cp->name == NULL) {		builtin_error ("%s: unknown variable", vname);		return (EXECUTION_FAILURE);	}	if (cp->type == PATHCONF) {		if (list->next == 0) {			builtin_usage();			return(EX_USAGE);		}	} else {		if (list->next) {			builtin_usage();			return(EX_USAGE);		}	}	return (getconf_print(cp, vpath, 0));}static char *getconf_doc[] = {	"Display values of system limits and options.",	"",	"getconf writes the current value of a configurable system limit or",	"option variable to the standard output.",	(char *)NULL};struct builtin getconf_struct = {	"getconf",	getconf_builtin,	BUILTIN_ENABLED,	getconf_doc,	"getconf -[ah] or getconf [-v spec] sysvar or getconf [-v spec] pathvar pathname",	0};#ifndef HAVE_CONFSTRstatic size_tconfstr (name, buf, len)     int name;     char *buf;     size_t len;{  switch (name)    {    case _CS_PATH:      if (len > 0 && buf)	{          strncpy (buf, STANDARD_UTILS_PATH, len - 1);          buf[len - 1] = '\0';	}      return (sizeof (STANDARD_UTILS_PATH) + 1);    default:      errno = EINVAL;      return 0;    }}#endif#ifndef HAVE_SYSCONFextern long get_clk_tck __P((void));static longsysconf (name)     int name;{#  if defined (_POSIX_VERSION)  switch (name)    {    case _SC_ARG_MAX:      return _POSIX_ARG_MAX;    case _SC_CHILD_MAX:      return _POSIX_CHILD_MAX;    case _SC_CLK_TCK:      return get_clk_tck();    case _SC_NGROUPS_MAX:      return _POSIX_NGROUPS_MAX;    case _SC_OPEN_MAX:      return _POSIX_OPEN_MAX;    case _SC_JOB_CONTROL:      return _POSIX_JOB_CONTROL;    case _SC_SAVED_IDS:      return _POSIX_SAVED_IDS;    case _SC_VERSION:      return _POSIX_VERSION;    case _SC_BC_BASE_MAX:      return _POSIX2_BC_BASE_MAX;    case _SC_BC_DIM_MAX:      return _POSIX2_BC_DIM_MAX;    case _SC_BC_SCALE_MAX:      return  _POSIX2_BC_SCALE_MAX;    case _SC_BC_STRING_MAX:      return _POSIX2_BC_STRING_MAX;    case _SC_COLL_WEIGHTS_MAX:      return  -1;    case _SC_EXPR_NEST_MAX:      return _POSIX2_EXPR_NEST_MAX;    case _SC_LINE_MAX:      return _POSIX2_LINE_MAX;    case _SC_RE_DUP_MAX:      return _POSIX2_RE_DUP_MAX;    case _SC_STREAM_MAX:      return _POSIX_STREAM_MAX;    case _SC_TZNAME_MAX:      return _POSIX_TZNAME_MAX;    default:      errno = EINVAL;      return -1;    }#else  errno = EINVAL;  return -1;#endif}#endif#ifndef HAVE_PATHCONFstatic longpathconf (path, name)     const char *path;     int name;{#if defined (_POSIX_VERSION)  switch (name)    {    case _PC_LINK_MAX:      return _POSIX_LINK_MAX;    case _PC_MAX_CANON:      return _POSIX_MAX_CANON;    case _PC_MAX_INPUT:      return _POSIX_MAX_INPUT;    case _PC_NAME_MAX:      return _POSIX_NAME_MAX;    case _PC_PATH_MAX:      return _POSIX_PATH_MAX;    case _PC_PIPE_BUF:      return _POSIX_PIPE_BUF;    case _PC_CHOWN_RESTRICTED:#ifdef _POSIX_CHOWN_RESTRICTED      return _POSIX_CHOWN_RESTRICTED;#else      return -1;#endif    case _PC_NO_TRUNC:#ifdef _POSIX_NO_TRUNC      return _POSIX_NO_TRUNC;#else      return -1;#endif    case _PC_VDISABLE:#ifdef _POSIX_VDISABLE      return _POSIX_VDISABLE;#else      return -1;#endif    default:      errno = EINVAL;      return -1;    }#else  errno = EINVAL;  return -1;#endif}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -