diff options
Diffstat (limited to 'posix')
-rw-r--r-- | posix/confstr.c | 21 | ||||
-rw-r--r-- | posix/getconf.c | 114 |
2 files changed, 130 insertions, 5 deletions
diff --git a/posix/confstr.c b/posix/confstr.c index 6ab76e8bed..487e5fe28a 100644 --- a/posix/confstr.c +++ b/posix/confstr.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1996, 1997, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1996, 1997, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -45,8 +45,9 @@ confstr (name, buf, len) break; case _CS_XBS5_ILP32_OFFBIG_CFLAGS: + case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS: case _CS_LFS_CFLAGS: -#if defined _XBS5_ILP32_OFF32 && !defined _XBS5_ILP32_OFFBIG +#if _XBS5_LP64_OFF64 == -1 && _XBS5_LPBIG_OFFBIG == -1 && _XBS5_ILP32_OFFBIG == 1 /* Signal that we want the new ABI. */ { static const char file_offset[] = "-D_FILE_OFFSET_BITS=64"; @@ -79,6 +80,22 @@ confstr (name, buf, len) case _CS_XBS5_LPBIG_OFFBIG_LDFLAGS: case _CS_XBS5_LPBIG_OFFBIG_LIBS: case _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS: + + case _CS_POSIX_V6_ILP32_OFF32_CFLAGS: + case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS: + case _CS_POSIX_V6_ILP32_OFF32_LIBS: + case _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS: + case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS: + case _CS_POSIX_V6_ILP32_OFFBIG_LIBS: + case _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS: + case _CS_POSIX_V6_LP64_OFF64_CFLAGS: + case _CS_POSIX_V6_LP64_OFF64_LDFLAGS: + case _CS_POSIX_V6_LP64_OFF64_LIBS: + case _CS_POSIX_V6_LP64_OFF64_LINTFLAGS: + case _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS: + case _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS: + case _CS_POSIX_V6_LPBIG_OFFBIG_LIBS: + case _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS: /* GNU libc does not require special actions to use LFS functions. */ string = ""; string_len = 1; diff --git a/posix/getconf.c b/posix/getconf.c index a1eb7ae6a5..903ad02af2 100644 --- a/posix/getconf.c +++ b/posix/getconf.c @@ -496,8 +496,6 @@ static const struct conf vars[] = #ifdef _CS_PATH { "PATH", _CS_PATH, CONFSTR }, -#endif -#ifdef _CS_PATH { "CS_PATH", _CS_PATH, CONFSTR }, #endif @@ -592,6 +590,70 @@ static const struct conf vars[] = { "XBS5_LPBIG_OFFBIG_LINTFLAGS", _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, CONFSTR }, #endif +#ifdef _SC_V6_ILP32_OFF32 + { "_POSIX_V6_ILP32_OFF32", _SC_V6_ILP32_OFF32, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS + { "POSIX_V6_ILP32_OFF32_CFLAGS", _CS_POSIX_V6_ILP32_OFF32_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS + { "POSIX_V6_ILP32_OFF32_LDFLAGS", _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS + { "POSIX_V6_ILP32_OFF32_LIBS", _CS_POSIX_V6_ILP32_OFF32_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + { "POSIX_V6_ILP32_OFF32_LINTFLAGS", _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V6_ILP32_OFFBIG + { "_POSIX_V6_ILP32_OFFBIG", _SC_V6_ILP32_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + { "POSIX_V6_ILP32_OFFBIG_CFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + { "POSIX_V6_ILP32_OFFBIG_LDFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFFBIG_LIBS + { "POSIX_V6_ILP32_OFFBIG_LIBS", _CS_POSIX_V6_ILP32_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS + { "POSIX_V6_ILP32_OFFBIG_LINTFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V6_LP64_OFF64 + { "_POSIX_V6_LP64_OFF64", _SC_V6_LP64_OFF64, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS + { "POSIX_V6_LP64_OFF64_CFLAGS", _CS_POSIX_V6_LP64_OFF64_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS + { "POSIX_V6_LP64_OFF64_LDFLAGS", _CS_POSIX_V6_LP64_OFF64_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_LIBS + { "POSIX_V6_LP64_OFF64_LIBS", _CS_POSIX_V6_LP64_OFF64_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS + { "POSIX_V6_LP64_OFF64_LINTFLAGS", _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V6_LPBIG_OFFBIG + { "_POSIX_V6_LPBIG_OFFBIG", _SC_V6_LPBIG_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + { "POSIX_V6_LPBIG_OFFBIG_CFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + { "POSIX_V6_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS + { "POSIX_V6_LPBIG_OFFBIG_LIBS", _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAG + { "POSIX_V6_LPBIG_OFFBIG_LINTFLAG", _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAG, CONFSTR }, +#endif + #ifdef _SC_ADVISORY_INFO { "ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF }, #endif @@ -722,13 +784,25 @@ static const struct conf vars[] = { NULL, 0, SYSCONF } }; + +static const char *specs[] = + { + "POSIX_V6_ILP32_OFF32", + "POSIX_V6_ILP32_OFFBIG", + "POSIX_V6_LP64_OFF64", + "POSIX_V6_LPBIG_OFFBIG" + }; +static const int nspecs = sizeof (specs) / sizeof (specs[0]); + extern const char *__progname; static void usage (void) { - fprintf (stderr, _("Usage: %s variable_name [pathname]\n"), __progname); + fprintf (stderr, + _("Usage: %s [-v specification] variable_name [pathname]\n"), + __progname); exit (2); } @@ -757,6 +831,40 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ return 0; } + if (argc > 1 && strncmp (argv[1], "-v", 2) == 0) + { + const char *spec; + int i; + + if (argv[1][2] == '\0') + { + if (argc < 3) + usage (); + + spec = argv[2]; + argv += 2; + argc -= 2; + } + else + { + spec = &argv[1][2]; + argv += 1; + argc += 1; + } + + /* Check for the specifications we know. This is simple in the + moment. */ + for (i = 0; i < nspecs; ++i) + if (strcmp (spec, specs[i]) == 0) + break; + + if (i == nspecs) + error (2, 0, _("unknown specification \"%s\""), spec); + + /* And now we forget the specification. We don't do anything different + with or without it. */ + } + if (argc < 2 || argc > 3) usage (); |