Revert "Add getconf(1) from FreeBSD r259958"
This reverts commit 5a39a9feac
.
This commit is contained in:
parent
5115f7c632
commit
94c2eb2092
@ -265,7 +265,6 @@ SubInclude HAIKU_TOP src bin findutils ;
|
||||
SubInclude HAIKU_TOP src bin fwcontrol ;
|
||||
SubInclude HAIKU_TOP src bin gawk ;
|
||||
SubInclude HAIKU_TOP src bin gdb ;
|
||||
SubInclude HAIKU_TOP src bin getconf ;
|
||||
SubInclude HAIKU_TOP src bin hid_decode ;
|
||||
SubInclude HAIKU_TOP src bin ideinfo ;
|
||||
SubInclude HAIKU_TOP src bin keymap ;
|
||||
|
@ -1,37 +0,0 @@
|
||||
SubDir HAIKU_TOP src bin getconf ;
|
||||
|
||||
UseHeaders [ FDirName $(HAIKU_TOP) headers compatibility bsd ] : true ;
|
||||
|
||||
rule GetConfKeysGen
|
||||
{
|
||||
SEARCH on $(2) = $(SEARCH_SOURCE) ;
|
||||
SEARCH on $(3) = $(SEARCH_SOURCE) ;
|
||||
|
||||
Depends $(1) : $(2) $(3) ;
|
||||
MakeLocateArch $(<) ;
|
||||
GetConfKeysGen1 $(1) : $(2) $(3) ;
|
||||
LocalClean clean : $(<) ;
|
||||
}
|
||||
|
||||
actions GetConfKeysGen1
|
||||
{
|
||||
LC_ALL=C gawk -f $(2[2]) $(2[1]) > $(1)
|
||||
}
|
||||
|
||||
GetConfKeysGen [ FGristFiles confstr.c ] : confstr.gperf : fake-gperf.awk ;
|
||||
GetConfKeysGen [ FGristFiles limits.c ] : limits.gperf : fake-gperf.awk ;
|
||||
GetConfKeysGen [ FGristFiles pathconf.c ] : pathconf.gperf : fake-gperf.awk ;
|
||||
GetConfKeysGen [ FGristFiles progenv.c ] : progenv.gperf : fake-gperf.awk ;
|
||||
GetConfKeysGen [ FGristFiles sysconf.c ] : sysconf.gperf : fake-gperf.awk ;
|
||||
|
||||
BinCommand getconf :
|
||||
getconf.c
|
||||
confstr.c
|
||||
limits.c
|
||||
pathconf.c
|
||||
progenv.c
|
||||
sysconf.c
|
||||
: libbsd.so
|
||||
;
|
||||
|
||||
|
@ -1,37 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= getconf
|
||||
|
||||
SRCS= confstr.c getconf.c limits.c pathconf.c progenv.c sysconf.c
|
||||
CFLAGS+= -I${.CURDIR}
|
||||
CLEANFILES+= confstr.c limits.c pathconf.c progenv.c sysconf.c \
|
||||
confstr.names limits.names pathconf.names sysconf.names \
|
||||
conflicting.names unique.names
|
||||
|
||||
.SUFFIXES: .gperf .names
|
||||
.PHONY: conflicts
|
||||
|
||||
all: conflicts
|
||||
|
||||
.gperf.c:
|
||||
LC_ALL=C awk -f ${.CURDIR}/fake-gperf.awk ${.IMPSRC} >${.TARGET}
|
||||
|
||||
.gperf.names:
|
||||
LC_ALL=C awk '/^[_A-Z]/ { print; }' ${.IMPSRC} | \
|
||||
sed -e 's/,$$//' >${.TARGET}
|
||||
|
||||
conflicts: conflicting.names unique.names
|
||||
@if test `wc -l <conflicting.names` != `wc -l <unique.names`; then \
|
||||
echo "Name conflicts found!" >&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
# pathconf.names is not included here because pathconf names are
|
||||
# syntactically distinct from the other kinds.
|
||||
conflicting.names: confstr.names limits.names sysconf.names
|
||||
cat ${.ALLSRC} >${.TARGET}
|
||||
|
||||
unique.names: conflicting.names
|
||||
LC_ALL=C sort -u ${.ALLSRC} >${.TARGET}
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,70 +0,0 @@
|
||||
%{
|
||||
/*
|
||||
* Copyright is disclaimed as to the contents of this file.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "getconf.h"
|
||||
|
||||
/*
|
||||
* Override gperf's built-in external scope.
|
||||
*/
|
||||
static const struct map *in_word_set(const char *str);
|
||||
|
||||
/*
|
||||
* The Standard seems a bit ambiguous over whether the POSIX_V6_*
|
||||
* are specified with or without a leading underscore, so we just
|
||||
* use both.
|
||||
*/
|
||||
%}
|
||||
struct map { const char *name; int key; int valid; };
|
||||
%%
|
||||
PATH, _CS_PATH
|
||||
POSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS
|
||||
POSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
|
||||
POSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LIBS
|
||||
POSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
|
||||
POSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
|
||||
POSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS
|
||||
POSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS
|
||||
POSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS
|
||||
POSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LIBS
|
||||
POSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
|
||||
POSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
|
||||
POSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
|
||||
POSIX_V6_WIDTH_RESTRICTED_ENVS, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
|
||||
_POSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS
|
||||
_POSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
|
||||
_POSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LIBS
|
||||
_POSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
|
||||
_POSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
|
||||
_POSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS
|
||||
_POSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS
|
||||
_POSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS
|
||||
_POSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LIBS
|
||||
_POSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
|
||||
_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
|
||||
_POSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
|
||||
_POSIX_V6_WIDTH_RESTRICTED_ENVS, _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
|
||||
%%
|
||||
int
|
||||
find_confstr(const char *name, int *key)
|
||||
{
|
||||
const struct map *rv;
|
||||
|
||||
rv = in_word_set(name);
|
||||
if (rv != NULL) {
|
||||
if (rv->valid) {
|
||||
*key = rv->key;
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
#!/usr/bin/awk -f
|
||||
# $FreeBSD$
|
||||
BEGIN {
|
||||
state = 0;
|
||||
struct_seen = "";
|
||||
}
|
||||
/^%{$/ && state == 0 {
|
||||
state = 1;
|
||||
next;
|
||||
}
|
||||
/^%}$/ && state == 1 {
|
||||
state = 0;
|
||||
next;
|
||||
}
|
||||
state == 1 { print; next; }
|
||||
/^struct/ && state == 0 {
|
||||
print;
|
||||
struct_seen = $2;
|
||||
next;
|
||||
}
|
||||
/^%%$/ && state == 0 {
|
||||
state = 2;
|
||||
if (struct_seen !~ /^$/) {
|
||||
print "static const struct", struct_seen, "wordlist[] = {";
|
||||
} else {
|
||||
print "static const struct map {";
|
||||
print "\tconst char *name;";
|
||||
print "\tint key;";
|
||||
print "\tint valid;";
|
||||
print "} wordlist[] = {";
|
||||
struct_seen = "map";
|
||||
}
|
||||
next;
|
||||
}
|
||||
/^%%$/ && state == 2 {
|
||||
state = 3;
|
||||
print "\t{ NULL, 0, 0 }";
|
||||
print "};";
|
||||
print "#define\tNWORDS\t(sizeof(wordlist)/sizeof(wordlist[0]) - 1)";
|
||||
print "static const struct map *";
|
||||
print "in_word_set(const char *word)";
|
||||
print "{";
|
||||
print "\tconst struct", struct_seen, "*mp;";
|
||||
print "";
|
||||
print "\tfor (mp = wordlist; mp < &wordlist[NWORDS]; mp++) {";
|
||||
print "\t\tif (strcmp(word, mp->name) == 0)";
|
||||
print "\t\t\treturn (mp);";
|
||||
print "\t}";
|
||||
print "\treturn (NULL);";
|
||||
print "}";
|
||||
print "";
|
||||
next;
|
||||
}
|
||||
state == 2 && NF == 2 {
|
||||
name = substr($1, 1, length($1) - 1);
|
||||
printf "#ifdef %s\n", $2;
|
||||
printf "\t{ \"%s\", %s, 1 },\n", name, $2;
|
||||
print "#else";
|
||||
printf "\t{ \"%s\", 0, 0 },\n", name, $2;
|
||||
print "#endif"
|
||||
next;
|
||||
}
|
||||
state == 3 { print; next; }
|
||||
{
|
||||
# eat anything not matched.
|
||||
}
|
@ -1,207 +0,0 @@
|
||||
.\"
|
||||
.\" Copyright 2000 Massachusetts Institute of Technology
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and distribute this software and
|
||||
.\" its documentation for any purpose and without fee is hereby
|
||||
.\" granted, provided that both the above copyright notice and this
|
||||
.\" permission notice appear in all copies, that both the above
|
||||
.\" copyright notice and this permission notice appear in all
|
||||
.\" supporting documentation, and that the name of M.I.T. not be used
|
||||
.\" in advertising or publicity pertaining to distribution of the
|
||||
.\" software without specific, written prior permission. M.I.T. makes
|
||||
.\" no representations about the suitability of this software for any
|
||||
.\" purpose. It is provided "as is" without express or implied
|
||||
.\" warranty.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
|
||||
.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
|
||||
.\" SHALL M.I.T. 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.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd September 18, 2002
|
||||
.Dt GETCONF 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm getconf
|
||||
.Nd retrieve standard configuration variables
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl v Ar environment
|
||||
.Ar path_var
|
||||
.Ar file
|
||||
.Nm
|
||||
.Op Fl v Ar environment
|
||||
.Ar system_var
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility prints the value of a
|
||||
.Tn POSIX
|
||||
or
|
||||
.Tn X/Open
|
||||
path or system configuration variable to the standard output.
|
||||
If the specified variable is undefined, the string
|
||||
.Dq Li undefined
|
||||
is output.
|
||||
.Pp
|
||||
The first form of the command, with two mandatory
|
||||
arguments, retrieves file- and file system-specific
|
||||
configuration variables using
|
||||
.Xr pathconf 2 .
|
||||
The second form, with a single argument, retrieves system
|
||||
configuration variables using
|
||||
.Xr confstr 3
|
||||
and
|
||||
.Xr sysconf 3 ,
|
||||
depending on the type of variable.
|
||||
As an extension, the second form can also be used to query static limits from
|
||||
.In limits.h .
|
||||
.Pp
|
||||
All
|
||||
.Xr sysconf 3
|
||||
and
|
||||
.Xr pathconf 2
|
||||
variables use the same name as the manifest constants defined in
|
||||
the relevant standard C-language bindings, including any leading
|
||||
underscore or prefix.
|
||||
That is to say,
|
||||
.Ar system_var
|
||||
might be
|
||||
.Dv ARG_MAX
|
||||
or
|
||||
.Dv _POSIX_VERSION ,
|
||||
as opposed to the
|
||||
.Xr sysconf 3
|
||||
names
|
||||
.Dv _SC_ARG_MAX
|
||||
or
|
||||
.Dv _SC_POSIX_VERSION .
|
||||
Variables retrieved from
|
||||
.Xr confstr 3
|
||||
have the leading
|
||||
.Ql _CS_
|
||||
stripped off; thus,
|
||||
.Dv _CS_PATH
|
||||
is queried by a
|
||||
.Ar system_var
|
||||
of
|
||||
.Dq Li PATH .
|
||||
.Ss Programming Environments
|
||||
The
|
||||
.Fl v Ar environment
|
||||
option specifies a
|
||||
.St -p1003.1-2001
|
||||
programming environment under which the values are to be queried.
|
||||
This option currently does nothing, but may in the future be used
|
||||
to select between 32-bit and 64-bit execution environments on platforms
|
||||
which support both.
|
||||
Specifying an environment which is not supported on the current execution
|
||||
platform gives undefined results.
|
||||
.Pp
|
||||
The standard programming environments are as follows:
|
||||
.Bl -tag -width ".Li POSIX_V6_LPBIG_OFFBIG" -offset indent
|
||||
.It Li POSIX_V6_ILP32_OFF32
|
||||
Exactly 32-bit integer, long, pointer, and file offset.
|
||||
.Sy Supported platforms :
|
||||
None.
|
||||
.It Li POSIX_V6_ILP32_OFFBIG
|
||||
Exactly 32-bit integer, long, and pointer; at least 64-bit file offset.
|
||||
.Sy Supported platforms :
|
||||
.Tn IA32 ,
|
||||
.Tn PowerPC .
|
||||
.It Li POSIX_V6_LP64_OFF64
|
||||
Exactly 32-bit integer; exactly 64-bit long, pointer, and file offset.
|
||||
.Sy Supported platforms :
|
||||
.Tn Alpha ,
|
||||
.Tn SPARC64 .
|
||||
.It Li POSIX_V6_LPBIG_OFFBIG
|
||||
At least 32-bit integer; at least 64-bit long, pointer, and file offset.
|
||||
.Sy Supported platforms :
|
||||
None.
|
||||
.El
|
||||
.Pp
|
||||
The command:
|
||||
.Pp
|
||||
.Dl "getconf POSIX_V6_WIDTH_RESTRICTED_ENVS"
|
||||
.Pp
|
||||
returns a newline-separated list of environments in which the width
|
||||
of certain fundamental types is no greater than the width of the native
|
||||
C type
|
||||
.Vt long .
|
||||
At present, all programming environments supported by
|
||||
.Fx
|
||||
have this property.
|
||||
Several of the
|
||||
.Xr confstr 3
|
||||
variables provide information on the necessary compiler and linker flags
|
||||
to use the standard programming environments described above.
|
||||
.Sh EXIT STATUS
|
||||
.Ex -std
|
||||
.Sh EXAMPLES
|
||||
The command:
|
||||
.Pp
|
||||
.Dl "getconf PATH"
|
||||
.Pp
|
||||
will display the system default setting for the
|
||||
.Ev PATH
|
||||
environment variable.
|
||||
.Pp
|
||||
The command:
|
||||
.Pp
|
||||
.Dl "getconf NAME_MAX /tmp"
|
||||
.Pp
|
||||
will display the maximum length of a filename in the
|
||||
.Pa /tmp
|
||||
directory.
|
||||
.Pp
|
||||
The command:
|
||||
.Pp
|
||||
.Dl "getconf -v POSIX_V6_LPBIG_OFFBIG LONG_MAX"
|
||||
.Pp
|
||||
will display the maximum value of the C type
|
||||
.Vt long
|
||||
in the
|
||||
.Li POSIX_V6_LPBIG_OFFBIG
|
||||
programming environment,
|
||||
if the system supports that environment.
|
||||
.Sh DIAGNOSTICS
|
||||
Use of a
|
||||
.Ar system_var
|
||||
or
|
||||
.Ar path_var
|
||||
which is completely unrecognized is considered an error,
|
||||
causing a diagnostic message to be written to standard error.
|
||||
One
|
||||
which is known but merely undefined does not result in an error
|
||||
indication.
|
||||
The
|
||||
.Nm
|
||||
utility recognizes all of the variables defined for
|
||||
.St -p1003.1-2001 ,
|
||||
including those which are not currently implemented.
|
||||
.Sh SEE ALSO
|
||||
.Xr pathconf 2 ,
|
||||
.Xr confstr 3 ,
|
||||
.Xr sysconf 3
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm
|
||||
utility is expected to be compliant with
|
||||
.St -p1003.1-2001 .
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
utility first appeared in
|
||||
.Fx 5.0 .
|
||||
.Sh AUTHORS
|
||||
.An Garrett A. Wollman Aq wollman@lcs.mit.edu
|
@ -1,190 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000 Massachusetts Institute of Technology
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and
|
||||
* its documentation for any purpose and without fee is hereby
|
||||
* granted, provided that both the above copyright notice and this
|
||||
* permission notice appear in all copies, that both the above
|
||||
* copyright notice and this permission notice appear in all
|
||||
* supporting documentation, and that the name of M.I.T. not be used
|
||||
* in advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission. M.I.T. makes
|
||||
* no representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied
|
||||
* warranty.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
|
||||
* ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
|
||||
* SHALL M.I.T. 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sysexits.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "getconf.h"
|
||||
|
||||
static void do_confstr(const char *name, int key);
|
||||
static void do_sysconf(const char *name, int key);
|
||||
static void do_pathconf(const char *name, int key, const char *path);
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: getconf [-v prog_env] system_var\n"
|
||||
" getconf [-v prog_env] path_var pathname\n");
|
||||
exit(EX_USAGE);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int c, key, valid;
|
||||
const char *name, *vflag, *alt_path;
|
||||
intmax_t limitval;
|
||||
|
||||
vflag = NULL;
|
||||
while ((c = getopt(argc, argv, "v:")) != -1) {
|
||||
switch (c) {
|
||||
case 'v':
|
||||
vflag = optarg;
|
||||
break;
|
||||
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
if ((name = argv[optind]) == NULL)
|
||||
usage();
|
||||
|
||||
if (vflag != NULL) {
|
||||
if ((valid = find_progenv(vflag, &alt_path)) == 0)
|
||||
errx(EX_USAGE, "invalid programming environment %s",
|
||||
vflag);
|
||||
if (valid > 0 && alt_path != NULL) {
|
||||
if (argv[optind + 1] == NULL)
|
||||
execl(alt_path, "getconf", argv[optind],
|
||||
(char *)NULL);
|
||||
else
|
||||
execl(alt_path, "getconf", argv[optind],
|
||||
argv[optind + 1], (char *)NULL);
|
||||
|
||||
err(EX_OSERR, "execl: %s", alt_path);
|
||||
}
|
||||
if (valid < 0)
|
||||
errx(EX_UNAVAILABLE, "environment %s is not available",
|
||||
vflag);
|
||||
}
|
||||
|
||||
if (argv[optind + 1] == NULL) { /* confstr or sysconf */
|
||||
if ((valid = find_limit(name, &limitval)) != 0) {
|
||||
if (valid > 0)
|
||||
printf("%" PRIdMAX "\n", limitval);
|
||||
else
|
||||
printf("undefined\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
if ((valid = find_confstr(name, &key)) != 0) {
|
||||
if (valid > 0)
|
||||
do_confstr(name, key);
|
||||
else
|
||||
printf("undefined\n");
|
||||
} else {
|
||||
valid = find_sysconf(name, &key);
|
||||
if (valid > 0) {
|
||||
do_sysconf(name, key);
|
||||
} else if (valid < 0) {
|
||||
printf("undefined\n");
|
||||
} else
|
||||
errx(EX_USAGE,
|
||||
"no such configuration parameter `%s'",
|
||||
name);
|
||||
}
|
||||
} else {
|
||||
valid = find_pathconf(name, &key);
|
||||
if (valid != 0) {
|
||||
if (valid > 0)
|
||||
do_pathconf(name, key, argv[optind + 1]);
|
||||
else
|
||||
printf("undefined\n");
|
||||
} else
|
||||
errx(EX_USAGE,
|
||||
"no such path configuration parameter `%s'",
|
||||
name);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
do_confstr(const char *name, int key)
|
||||
{
|
||||
size_t len;
|
||||
int savederr;
|
||||
|
||||
savederr = errno;
|
||||
errno = 0;
|
||||
len = confstr(key, 0, 0);
|
||||
if (len == 0) {
|
||||
if (errno)
|
||||
err(EX_OSERR, "confstr: %s", name);
|
||||
else
|
||||
printf("undefined\n");
|
||||
} else {
|
||||
char buf[len + 1];
|
||||
|
||||
confstr(key, buf, len);
|
||||
printf("%s\n", buf);
|
||||
}
|
||||
errno = savederr;
|
||||
}
|
||||
|
||||
static void
|
||||
do_sysconf(const char *name, int key)
|
||||
{
|
||||
long value;
|
||||
|
||||
errno = 0;
|
||||
value = sysconf(key);
|
||||
if (value == -1 && errno != 0)
|
||||
err(EX_OSERR, "sysconf: %s", name);
|
||||
else if (value == -1)
|
||||
printf("undefined\n");
|
||||
else
|
||||
printf("%ld\n", value);
|
||||
}
|
||||
|
||||
static void
|
||||
do_pathconf(const char *name, int key, const char *path)
|
||||
{
|
||||
long value;
|
||||
|
||||
errno = 0;
|
||||
value = pathconf(path, key);
|
||||
if (value == -1 && errno != 0)
|
||||
err(EX_OSERR, "pathconf: %s", name);
|
||||
else if (value == -1)
|
||||
printf("undefined\n");
|
||||
else
|
||||
printf("%ld\n", value);
|
||||
}
|
||||
|
@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000 Massachusetts Institute of Technology
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and
|
||||
* its documentation for any purpose and without fee is hereby
|
||||
* granted, provided that both the above copyright notice and this
|
||||
* permission notice appear in all copies, that both the above
|
||||
* copyright notice and this permission notice appear in all
|
||||
* supporting documentation, and that the name of M.I.T. not be used
|
||||
* in advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission. M.I.T. makes
|
||||
* no representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied
|
||||
* warranty.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
|
||||
* ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
|
||||
* SHALL M.I.T. 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.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifdef STABLE
|
||||
typedef long long intmax_t;
|
||||
#define PRIdMAX "lld"
|
||||
#else
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
|
||||
int find_confstr(const char *name, int *key);
|
||||
int find_limit(const char *name, intmax_t *value);
|
||||
int find_pathconf(const char *name, int *key);
|
||||
int find_progenv(const char *name, const char **alt_path);
|
||||
int find_sysconf(const char *name, int *key);
|
@ -1,118 +0,0 @@
|
||||
%{
|
||||
/*
|
||||
* Copyright is disclaimed as to the contents of this file.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include "getconf.h"
|
||||
|
||||
/*
|
||||
* Override gperf's built-in external scope.
|
||||
*/
|
||||
static const struct map *in_word_set(const char *str);
|
||||
|
||||
%}
|
||||
struct map { const char *name; intmax_t value; int valid; };
|
||||
%%
|
||||
_POSIX_CLOCKRES_MIN, _POSIX_CLOCKRES_MIN
|
||||
_POSIX_AIO_LISTIO_MAX, _POSIX_AIO_LISTIO_MAX
|
||||
_POSIX_AIO_MAX, _POSIX_AIO_MAX
|
||||
_POSIX_ARG_MAX, _POSIX_ARG_MAX
|
||||
_POSIX_CHILD_MAX, _POSIX_CHILD_MAX
|
||||
_POSIX_DELAYTIMER_MAX, _POSIX_DELAYTIMER_MAX
|
||||
_POSIX_HOST_NAME_MAX, _POSIX_HOST_NAME_MAX
|
||||
_POSIX_LINK_MAX, _POSIX_LINK_MAX
|
||||
_POSIX_LOGIN_NAME_MAX, _POSIX_LOGIN_NAME_MAX
|
||||
_POSIX_MAX_CANON, _POSIX_MAX_CANON
|
||||
_POSIX_MAX_INPUT, _POSIX_MAX_INPUT
|
||||
_POSIX_MQ_OPEN_MAX, _POSIX_MQ_OPEN_MAX
|
||||
_POSIX_MQ_PRIO_MAX, _POSIX_MQ_PRIO_MAX
|
||||
_POSIX_NAME_MAX, _POSIX_NAME_MAX
|
||||
_POSIX_NGROUPS_MAX, _POSIX_NGROUPS_MAX
|
||||
_POSIX_OPEN_MAX, _POSIX_OPEN_MAX
|
||||
_POSIX_PATH_MAX, _POSIX_PATH_MAX
|
||||
_POSIX_PIPE_BUF, __POSIX_PIPE_BUF
|
||||
_POSIX_RE_DUP_MAX, _POSIX_RE_DUP_MAX
|
||||
_POSIX_RTSIG_MAX, _POSIX_RTSIG_MAX
|
||||
_POSIX_SEM_NSEMS_MAX, _POSIX_SEM_NSEMS_MAX
|
||||
_POSIX_SEM_VALUE_MAX, _POSIX_SEM_VALUE_MAX
|
||||
_POSIX_SIGQUEUE_MAX, _POSIX_SIGQUEUE_MAX
|
||||
_POSIX_SSIZE_MAX, _POSIX_SSIZE_MAX
|
||||
_POSIX_STREAM_MAX, _POSIX_STREAM_MAX
|
||||
_POSIX_SS_REPL_MAX, _POSIX_SS_REPL_MAX
|
||||
_POSIX_SYMLINK_MAX, _POSIX_SYMLINK_MAX
|
||||
_POSIX_SYMLOOP_MAX, _POSIX_SYMLOOP_MAX
|
||||
_POSIX_THREAD_DESTRUCTOR_ITERATIONS, _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
_POSIX_THREAD_KEYS_MAX, _POSIX_THREAD_KEYS_MAX
|
||||
_POSIX_THREAD_THREADS_MAX, _POSIX_THREAD_THREADS_MAX
|
||||
_POSIX_TIMER_MAX, _POSIX_TIMER_MAX
|
||||
_POSIX_TRACE_EVENT_NAME_MAX, _POSIX_TRACE_EVENT_NAME_MAX
|
||||
_POSIX_TRACE_NAME_MAX, _POSIX_TRACE_NAME_MAX
|
||||
_POSIX_TRACE_SYS_MAX, _POSIX_TRACE_SYS_MAX
|
||||
_POSIX_TRACE_USER_EVENT_MAX, _POSIX_TRACE_USER_EVENT_MAX
|
||||
_POSIX_TTY_NAME_MAX, _POSIX_TTY_NAME_MAX
|
||||
_POSIX_TZNAME_MAX, _POSIX_TZNAME_MAX
|
||||
_POSIX2_BC_BASE_MAX, _POSIX2_BC_BASE_MAX
|
||||
_POSIX2_BC_DIM_MAX, _POSIX2_BC_DIM_MAX
|
||||
_POSIX2_BC_SCALE_MAX, _POSIX2_BC_SCALE_MAX
|
||||
_POSIX2_BC_STRING_MAX, _POSIX2_BC_STRING_MAX
|
||||
_POSIX2_CHARCLASS_NAME_MAX, _POSIX2_CHARCLASS_NAME_MAX
|
||||
_POSIX2_COLL_WEIGHTS_MAX, _POSIX2_COLL_WEIGHTS_MAX
|
||||
_POSIX2_EXPR_NEXT_MAX, _POSIX2_EXPR_NEST_MAX
|
||||
_POSIX2_LINE_MAX, _POSIX2_LINE_MAX
|
||||
_POSIX2_RE_DUP_MAX, _POSIX2_RE_DUP_MAX
|
||||
_XOPEN_IOV_MAX, _XOPEN_IOV_MAX
|
||||
_XOPEN_NAME_MAX, _XOPEN_NAME_MAX
|
||||
_XOPEN_PATH_MAX, _XOPEN_PATH_MAX
|
||||
CHAR_BIT, CHAR_BIT
|
||||
CHAR_MAX, CHAR_MAX
|
||||
CHAR_MIN, CHAR_MIN
|
||||
INT_MAX, INT_MAX
|
||||
INT_MIN, INT_MIN
|
||||
LLONG_MIN, LLONG_MIN
|
||||
LLONG_MAX, LLONG_MAX
|
||||
LONG_BIT, LONG_BIT
|
||||
LONG_MAX, LONG_MAX
|
||||
LONG_MIN, LONG_MIN
|
||||
MB_LEN_MAX, MB_LEN_MAX
|
||||
SCHAR_MAX, SCHAR_MAX
|
||||
SCHAR_MIN, SCHAR_MIN
|
||||
SHRT_MAX, SHRT_MAX
|
||||
SHRT_MIN, SHRT_MIN
|
||||
SSIZE_MAX, SSIZE_MAX
|
||||
UCHAR_MAX, UCHAR_MAX
|
||||
UINT_MAX, UINT_MAX
|
||||
ULLONG_MAX, ULLONG_MAX
|
||||
ULONG_MAX, ULONG_MAX
|
||||
USHRT_MAX, USHRT_MAX
|
||||
WORD_BIT, WORD_BIT
|
||||
CHARCLASS_NAME_MAX, CHARCLASS_NAME_MAX
|
||||
NL_ARGMAX, NL_ARGMAX
|
||||
ML_LANGMAX, NL_LANGMAX
|
||||
NL_MSGMAX, NL_MSGMAX
|
||||
NL_NMAX, NL_NMAX
|
||||
NL_SETMAX, NL_SETMAX
|
||||
NL_TEXTMAX, NL_TEXTMAX
|
||||
NZERO, NZERO
|
||||
%%
|
||||
int
|
||||
find_limit(const char *name, intmax_t *value)
|
||||
{
|
||||
const struct map *rv;
|
||||
|
||||
rv = in_word_set(name);
|
||||
if (rv != NULL) {
|
||||
if (rv->valid) {
|
||||
*value = rv->value;
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
%{
|
||||
/*
|
||||
* Copyright is disclaimed as to the contents of this file.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "getconf.h"
|
||||
|
||||
/*
|
||||
* Override gperf's built-in external scope.
|
||||
*/
|
||||
static const struct map *in_word_set(const char *str);
|
||||
|
||||
%}
|
||||
struct map { const char *name; int key; int valid; };
|
||||
%%
|
||||
FILESIZEBITS, _PC_FILESIZEBITS
|
||||
LINK_MAX, _PC_LINK_MAX
|
||||
MAX_CANON, _PC_MAX_CANON
|
||||
MAX_INPUT, _PC_MAX_INPUT
|
||||
NAME_MAX, _PC_NAME_MAX
|
||||
PATH_MAX, _PC_PATH_MAX
|
||||
PIPE_BUF, _PC_PIPE_BUF
|
||||
POSIX_ALLOC_SIZE_MIN, _PC_ALLOC_SIZE_MIN
|
||||
POSIX_REC_INCR_XFER_SIZE, _PC_REC_INCR_XFER_SIZE
|
||||
POSIX_REC_MAX_XFER_SIZE, _PC_REC_MAX_XFER_SIZE
|
||||
POSIX_REC_MIN_XFER_SIZE, _PC_REC_MIN_XFER_SIZE
|
||||
POSIX_REC_XFER_ALIGN, _PC_REC_XFER_ALIGN
|
||||
SYMLINK_MAX, _PC_SYMLINK_MAX
|
||||
TRUSTEDBSD_ACL_EXTENDED, _PC_ACL_EXTENDED
|
||||
TRUSTEDBSD_ACL_PATH_MAX, _PC_ACL_PATH_MAX
|
||||
TRUSTEDBSD_CAP_PRESENT, _PC_CAP_PRESENT
|
||||
TRUSTEDBSD_INF_PRESENT, _PC_INF_PRESENT
|
||||
TRUSTEDBSD_MAC_PRESENT, _PC_MAC_PRESENT
|
||||
_POSIX_CHOWN_RESTRICTED, _PC_CHOWN_RESTRICTED
|
||||
_POSIX_NO_TRUNC, _PC_NO_TRUNC
|
||||
_POSIX_VDISABLE, _PC_VDISABLE
|
||||
_POSIX_ASYNC_IO, _PC_ASYNC_IO
|
||||
_POSIX_PRIO_IO, _PC_PRIO_IO
|
||||
_POSIX_SYNC_IO, _PC_SYNC_IO
|
||||
%%
|
||||
int
|
||||
find_pathconf(const char *name, int *key)
|
||||
{
|
||||
const struct map *rv;
|
||||
|
||||
rv = in_word_set(name);
|
||||
if (rv != NULL) {
|
||||
if (rv->valid) {
|
||||
*key = rv->key;
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
%{
|
||||
/*
|
||||
* Copyright is disclaimed as to the contents of this file.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "getconf.h"
|
||||
|
||||
/*
|
||||
* Override gperf's built-in external scope.
|
||||
*/
|
||||
static const struct map *in_word_set(const char *str);
|
||||
|
||||
/*
|
||||
* The Standard seems a bit ambiguous over whether the POSIX_V6_*
|
||||
* are specified with or without a leading underscore, so we just
|
||||
* use both.
|
||||
*/
|
||||
/*
|
||||
* The alt_path member gives the path containing another `getconf'
|
||||
* executable which was compiled using the specified programming
|
||||
* environment. If it is NULL, the current executable is good enough.
|
||||
* If we ever support multiple environments, this table will need to
|
||||
* be updated. (We cheat here and define the supported environments
|
||||
* statically.)
|
||||
*/
|
||||
#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
|
||||
#define have_LP64_OFF64 NULL
|
||||
#endif
|
||||
|
||||
#if defined(__i386__) || defined(__powerpc__)
|
||||
#define have_ILP32_OFFBIG NULL
|
||||
#endif
|
||||
|
||||
%}
|
||||
struct map { const char *name; const char *alt_path; int valid; };
|
||||
%%
|
||||
POSIX_V6_ILP32_OFF32, notdef
|
||||
POSIX_V6_ILP32_OFFBIG, have_ILP32_OFFBIG
|
||||
POSIX_V6_LP64_OFF64, have_LP64_OFF64
|
||||
POSIX_V6_LPBIG_OFFBIG, notdef
|
||||
_POSIX_V6_ILP32_OFF32, notdef
|
||||
_POSIX_V6_ILP32_OFFBIG, have_ILP32_OFFBIG
|
||||
_POSIX_V6_LP64_OFF64, have_LP64_OFF64
|
||||
_POSIX_V6_LPBIG_OFFBIG, notdef
|
||||
%%
|
||||
int
|
||||
find_progenv(const char *name, const char **alt_path)
|
||||
{
|
||||
const struct map *rv;
|
||||
|
||||
rv = in_word_set(name);
|
||||
if (rv != NULL) {
|
||||
if (rv->valid) {
|
||||
*alt_path = rv->alt_path;
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,149 +0,0 @@
|
||||
%{
|
||||
/*
|
||||
* Copyright is disclaimed as to the contents of this file.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "getconf.h"
|
||||
|
||||
/*
|
||||
* Override gperf's built-in external scope.
|
||||
*/
|
||||
static const struct map *in_word_set(const char *str);
|
||||
|
||||
%}
|
||||
struct map { const char *name; int key; int valid; };
|
||||
%%
|
||||
AIO_LISTIO_MAX, _SC_AIO_LISTIO_MAX
|
||||
AIO_MAX, _SC_AIO_MAX
|
||||
AIO_PRIO_DELTA_MAX, _SC_AIO_PRIO_DELTA_MAX
|
||||
ARG_MAX, _SC_ARG_MAX
|
||||
ATEXIT_MAX, _SC_ATEXIT_MAX
|
||||
BC_BASE_MAX, _SC_BC_BASE_MAX
|
||||
BC_DIM_MAX, _SC_BC_DIM_MAX
|
||||
BC_SCALE_MAX, _SC_BC_SCALE_MAX
|
||||
BC_STRING_MAX, _SC_BC_STRING_MAX
|
||||
CHILD_MAX, _SC_CHILD_MAX
|
||||
CLK_TCK, _SC_CLK_TCK
|
||||
COLL_WEIGHTS_MAX, _SC_COLL_WEIGHTS_MAX
|
||||
DELAYTIMER_MAX, _SC_DELAYTIMER_MAX
|
||||
EXPR_NEST_MAX, _SC_EXPR_NEST_MAX
|
||||
GETGR_R_SIZE_MAX, _SC_GETGR_R_SIZE_MAX
|
||||
GETPW_R_SIZE_MAX, _SC_GETPW_R_SIZE_MAX
|
||||
HOST_NAME_MAX, _SC_HOST_NAME_MAX
|
||||
IOV_MAX, _SC_IOV_MAX
|
||||
LINE_MAX, _SC_LINE_MAX
|
||||
LOGIN_NAME_MAX, _SC_LOGIN_NAME_MAX
|
||||
MQ_OPEN_MAX, _SC_MQ_OPEN_MAX
|
||||
MQ_PRIO_MAX, _SC_MQ_PRIO_MAX
|
||||
NGROUPS_MAX, _SC_NGROUPS_MAX
|
||||
NPROCESSORS_CONF, _SC_NPROCESSORS_CONF
|
||||
NPROCESSORS_ONLN, _SC_NPROCESSORS_ONLN
|
||||
OPEN_MAX, _SC_OPEN_MAX
|
||||
PAGESIZE, _SC_PAGESIZE
|
||||
PAGE_SIZE, _SC_PAGESIZE
|
||||
PASS_MAX, _SC_PASS_MAX
|
||||
PTHREAD_DESTRUCTOR_ITERATIONS, _SC_THREAD_DESTRUCTOR_ITERATIONS
|
||||
PTHREAD_KEYS_MAX, _SC_THREAD_KEYS_MAX
|
||||
PTHREAD_STACK_MIN, _SC_THREAD_STACK_MIN
|
||||
PTHREAD_THREADS_MAX, _SC_THREAD_THREADS_MAX
|
||||
RE_DUP_MAX, _SC_RE_DUP_MAX
|
||||
RTSIG_MAX, _SC_RTSIG_MAX
|
||||
SEM_NSEMS_MAX, _SC_SEM_NSEMS_MAX
|
||||
SEM_VALUE_MAX, _SC_SEM_VALUE_MAX
|
||||
SIGQUEUE_MAX, _SC_SIGQUEUE_MAX
|
||||
STREAM_MAX, _SC_STREAM_MAX
|
||||
SYMLOOP_MAX, _SC_SYMLOOP_MAX
|
||||
TIMER_MAX, _SC_TIMER_MAX
|
||||
TTY_NAME_MAX, _SC_TTY_NAME_MAX
|
||||
TZNAME_MAX, _SC_TZNAME_MAX
|
||||
_POSIX2_CHAR_TERM, _SC_2_CHAR_TERM
|
||||
_POSIX2_C_BIND, _SC_2_C_BIND
|
||||
_POSIX2_C_DEV, _SC_2_C_DEV
|
||||
_POSIX2_C_VERSION, _SC_2_C_VERSION
|
||||
_POSIX2_FORT_DEV, _SC_2_FORT_DEV
|
||||
_POSIX2_FORT_RUN, _SC_2_FORT_RUN
|
||||
_POSIX2_LOCALEDEF, _SC_2_LOCALEDEF
|
||||
_POSIX2_SW_DEV, _SC_2_SW_DEV
|
||||
_POSIX2_UPE, _SC_2_UPE
|
||||
_POSIX2_VERSION, _SC_2_VERSION
|
||||
_POSIX_ASYNCHRONOUS_IO, _SC_ASYNCHRONOUS_IO
|
||||
_POSIX_BARRIERS, _SC_BARRIERS
|
||||
_POSIX_CLOCK_SELECTION, _SC_CLOCK_SELECTION
|
||||
_POSIX_CPUTIME, _SC_CPUTIME
|
||||
_POSIX_FILE_LOCKING, _SC_FILE_LOCKING
|
||||
_POSIX_FSYNC, _SC_FSYNC
|
||||
_POSIX_IPV6, _SC_IPV6
|
||||
_POSIX_JOB_CONTROL, _SC_JOB_CONTROL
|
||||
_POSIX_MAPPED_FILES, _SC_MAPPED_FILES
|
||||
_POSIX_MEMLOCK, _SC_MEMLOCK
|
||||
_POSIX_MEMLOCK_RANGE, _SC_MEMLOCK_RANGE
|
||||
_POSIX_MEMORY_PROTECTION, _SC_MEMORY_PROTECTION
|
||||
_POSIX_MESSAGE_PASSING, _SC_MESSAGE_PASSING
|
||||
_POSIX_MONOTONIC_CLOCK, _SC_MONOTONIC_CLOCK
|
||||
_POSIX_PRIORITIZED_IO, _SC_PRIORITIZED_IO
|
||||
_POSIX_PRIORITY_SCHEDULING, _SC_PRIORITY_SCHEDULING
|
||||
_POSIX_READER_WRITER_LOCKS, _SC_READER_WRITER_LOCKS
|
||||
_POSIX_REALTIME_SIGNALS, _SC_REALTIME_SIGNALS
|
||||
_POSIX_REGEXP, _SC_REGEXP
|
||||
_POSIX_SAVED_IDS, _SC_SAVED_IDS
|
||||
_POSIX_SEMAPHORES, _SC_SEMAPHORES
|
||||
_POSIX_SHARED_MEMORY_OBJECTS, _SC_SHARED_MEMORY_OBJECTS
|
||||
_POSIX_SHELL, _SC_SHELL
|
||||
_POSIX_SPAWN, _SC_SPAWN
|
||||
_POSIX_SPIN_LOCKS, _SC_SPIN_LOCKS
|
||||
_POSIX_SPORADIC_SERVER, _SC_SPORADIC_SERVER
|
||||
_POSIX_SYNCHRONIZED_IO, _SC_SYNCHRONIZED_IO
|
||||
_POSIX_THREADS, _SC_THREADS
|
||||
_POSIX_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKADDR
|
||||
_POSIX_THREAD_ATTR_STACKSIZE, _SC_THREAD_ATTR_STACKSIZE
|
||||
_POSIX_THREAD_CPUTIME, _SC_THREAD_CPUTIME
|
||||
_POSIX_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIORITY_SCHEDULING
|
||||
_POSIX_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_INHERIT
|
||||
_POSIX_THREAD_PRIO_PROTECT, _SC_THREAD_PRIO_PROTECT
|
||||
_POSIX_THREAD_PROCESS_SHARED, _SC_THREAD_PROCESS_SHARED
|
||||
_POSIX_THREAD_SAFE_FUNCTIONS, _SC_THREAD_SAFE_FUNCTIONS
|
||||
_POSIX_THREAD_SPORADIC_SERVER, _SC_THREAD_SPORADIC_SERVER
|
||||
_POSIX_TIMEOUTS, _SC_TIMEOUTS
|
||||
_POSIX_TRACE, _SC_TRACE
|
||||
_POSIX_TRACE_EVENT_FILTER, _SC_TRACE_EVENT_FILTER
|
||||
_POSIX_TRACE_INHERIT, _SC_TRACE_INHERIT
|
||||
_POSIX_TRACE_LOG, _SC_TRACE_LOG
|
||||
_POSIX_TIMERS, _SC_TIMERS
|
||||
_POSIX_TYPED_MEMORY_OBJECTS, _SC_TYPED_MEMORY_OBJECTS
|
||||
_POSIX_VERSION, _SC_VERSION
|
||||
_POSIX_V6_ILP32_OFF32, _SC_V6_ILP32_OFF32
|
||||
_POSIX_V6_ILP32_OFFBIG, _SC_V6_ILP32_OFFBIG
|
||||
_POSIX_V6_LP64_OFF64, _SC_V6_LP64_OFF64
|
||||
_POSIX_V6_LP64_OFFBIG, _SC_V6_LP64_OFFBIG
|
||||
_XOPEN_CRYPT, _SC_XOPEN_CRYPT
|
||||
_XOPEN_ENH_I18N, _SC_XOPEN_ENH_I18N
|
||||
_XOPEN_LEGACY, _SC_XOPEN_LEGACY
|
||||
_XOPEN_REALTIME, _SC_XOPEN_REALTIME
|
||||
_XOPEN_REALTIME_THREADS, _SC_XOPEN_REALTIME_THREADS
|
||||
_XOPEN_SHM, _SC_XOPEN_SHM
|
||||
_XOPEN_UNIX, _SC_XOPEN_UNIX
|
||||
_XOPEN_VERSION, _SC_XOPEN_VERSION
|
||||
_XOPEN_XCU_VERSION, _SC_XCU_VERSION
|
||||
%%
|
||||
int
|
||||
find_sysconf(const char *name, int *key)
|
||||
{
|
||||
const struct map *rv;
|
||||
|
||||
rv = in_word_set(name);
|
||||
if (rv != NULL) {
|
||||
if (rv->valid) {
|
||||
*key = rv->key;
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user