diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2009-09-30 15:40:23 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2009-09-30 15:40:23 +0000 |
commit | 7ae8efaf2900de04894ce21f75e40031639c505c (patch) | |
tree | ccc6d9fbca8f6b1717914f300ceabbf9b96d40c2 /libc/posix | |
parent | 71da3315b161cfa17dafd12ed2b048da3af3dcd4 (diff) | |
download | eglibc2-7ae8efaf2900de04894ce21f75e40031639c505c.tar.gz |
Merge changes between r8915 and r9028 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@9029 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/posix')
-rw-r--r-- | libc/posix/getconf.c | 73 |
1 files changed, 39 insertions, 34 deletions
diff --git a/libc/posix/getconf.c b/libc/posix/getconf.c index 13f2cd8bd..74b762146 100644 --- a/libc/posix/getconf.c +++ b/libc/posix/getconf.c @@ -484,6 +484,7 @@ static const struct conf vars[] = #endif #ifdef _SC_LINE_MAX { "_POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF }, + { "POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF }, #endif #ifdef _SC_2_LOCALEDEF { "POSIX2_LOCALEDEF", _SC_2_LOCALEDEF, SYSCONF }, @@ -1051,34 +1052,34 @@ print_all (const char *path) printf("%-35s", c->name); switch (c->call) { case PATHCONF: - value = pathconf (path, c->call_name); - if (value != -1) { - printf("%ld", value); - } - printf("\n"); - break; + value = pathconf (path, c->call_name); + if (value != -1) { + printf("%ld", value); + } + printf("\n"); + break; case SYSCONF: - value = sysconf (c->call_name); - if (value == -1l) { - if (c->call_name == _SC_UINT_MAX - || c->call_name == _SC_ULONG_MAX) - printf ("%lu", value); - } - else { - printf ("%ld", value); - } - printf ("\n"); - break; + value = sysconf (c->call_name); + if (value == -1l) { + if (c->call_name == _SC_UINT_MAX + || c->call_name == _SC_ULONG_MAX) + printf ("%lu", value); + } + else { + printf ("%ld", value); + } + printf ("\n"); + break; case CONFSTR: - clen = confstr (c->call_name, (char *) NULL, 0); - cvalue = (char *) malloc (clen); - if (cvalue == NULL) - error (3, 0, _("memory exhausted")); - if (confstr (c->call_name, cvalue, clen) != clen) - error (3, errno, "confstr"); - printf ("%.*s\n", (int) clen, cvalue); + clen = confstr (c->call_name, (char *) NULL, 0); + cvalue = (char *) malloc (clen); + if (cvalue == NULL) + error (3, 0, _("memory exhausted")); + if (confstr (c->call_name, cvalue, clen) != clen) + error (3, errno, "confstr"); + printf ("%.*s\n", (int) clen, cvalue); free (cvalue); - break; + break; } } exit (0); @@ -1238,13 +1239,17 @@ environment SPEC.\n\n")); usage (); } - if (argc < 2 || argc > 3) + int ai = 1; + if (argc > ai && strcmp (argv[ai], "--") == 0) + ++ai; + + if (argc - ai < 1 || argc - ai > 2) usage (); for (c = vars; c->name != NULL; ++c) - if (strcmp (c->name, argv[1]) == 0 + if (strcmp (c->name, argv[ai]) == 0 || (strncmp (c->name, "_POSIX_", 7) == 0 - && strcmp (c->name + 7, argv[1]) == 0)) + && strcmp (c->name + 7, argv[ai]) == 0)) { long int value; size_t clen; @@ -1252,14 +1257,14 @@ environment SPEC.\n\n")); switch (c->call) { case PATHCONF: - if (argc < 3) + if (argc - ai < 2) usage (); errno = 0; - value = pathconf (argv[2], c->call_name); + value = pathconf (argv[ai + 1], c->call_name); if (value == -1) { if (errno) - error (3, errno, "pathconf: %s", argv[2]); + error (3, errno, "pathconf: %s", argv[ai + 1]); else puts (_("undefined")); } @@ -1268,7 +1273,7 @@ environment SPEC.\n\n")); exit (0); case SYSCONF: - if (argc > 2) + if (argc - ai > 1) usage (); value = sysconf (c->call_name); if (value == -1l) @@ -1284,7 +1289,7 @@ environment SPEC.\n\n")); exit (0); case CONFSTR: - if (argc > 2) + if (argc - ai > 1) usage (); clen = confstr (c->call_name, (char *) NULL, 0); cvalue = (char *) malloc (clen); @@ -1299,7 +1304,7 @@ environment SPEC.\n\n")); } } - error (2, 0, _("Unrecognized variable `%s'"), argv[1]); + error (2, 0, _("Unrecognized variable `%s'"), argv[ai]); /* NOTREACHED */ return 2; } |