mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-05 19:35:52 +03:00
Handle -- on getconf command line.
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
|
2009-09-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* posix/getconf.c (main): Handle -- on command line.
|
||||||
|
|
||||||
2009-09-05 H.J. Lu <hongjiu.lu@intel.com>
|
2009-09-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* configure.in: Support binutils 2.100 and 3.0.
|
* configure.in: Support binutils 2.100 and 3.0.
|
||||||
|
@@ -1052,34 +1052,34 @@ print_all (const char *path)
|
|||||||
printf("%-35s", c->name);
|
printf("%-35s", c->name);
|
||||||
switch (c->call) {
|
switch (c->call) {
|
||||||
case PATHCONF:
|
case PATHCONF:
|
||||||
value = pathconf (path, c->call_name);
|
value = pathconf (path, c->call_name);
|
||||||
if (value != -1) {
|
if (value != -1) {
|
||||||
printf("%ld", value);
|
printf("%ld", value);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
break;
|
break;
|
||||||
case SYSCONF:
|
case SYSCONF:
|
||||||
value = sysconf (c->call_name);
|
value = sysconf (c->call_name);
|
||||||
if (value == -1l) {
|
if (value == -1l) {
|
||||||
if (c->call_name == _SC_UINT_MAX
|
if (c->call_name == _SC_UINT_MAX
|
||||||
|| c->call_name == _SC_ULONG_MAX)
|
|| c->call_name == _SC_ULONG_MAX)
|
||||||
printf ("%lu", value);
|
printf ("%lu", value);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf ("%ld", value);
|
printf ("%ld", value);
|
||||||
}
|
}
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
break;
|
break;
|
||||||
case CONFSTR:
|
case CONFSTR:
|
||||||
clen = confstr (c->call_name, (char *) NULL, 0);
|
clen = confstr (c->call_name, (char *) NULL, 0);
|
||||||
cvalue = (char *) malloc (clen);
|
cvalue = (char *) malloc (clen);
|
||||||
if (cvalue == NULL)
|
if (cvalue == NULL)
|
||||||
error (3, 0, _("memory exhausted"));
|
error (3, 0, _("memory exhausted"));
|
||||||
if (confstr (c->call_name, cvalue, clen) != clen)
|
if (confstr (c->call_name, cvalue, clen) != clen)
|
||||||
error (3, errno, "confstr");
|
error (3, errno, "confstr");
|
||||||
printf ("%.*s\n", (int) clen, cvalue);
|
printf ("%.*s\n", (int) clen, cvalue);
|
||||||
free (cvalue);
|
free (cvalue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exit (0);
|
exit (0);
|
||||||
@@ -1239,13 +1239,17 @@ environment SPEC.\n\n"));
|
|||||||
usage ();
|
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 ();
|
usage ();
|
||||||
|
|
||||||
for (c = vars; c->name != NULL; ++c)
|
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
|
|| (strncmp (c->name, "_POSIX_", 7) == 0
|
||||||
&& strcmp (c->name + 7, argv[1]) == 0))
|
&& strcmp (c->name + 7, argv[ai]) == 0))
|
||||||
{
|
{
|
||||||
long int value;
|
long int value;
|
||||||
size_t clen;
|
size_t clen;
|
||||||
@@ -1253,14 +1257,14 @@ environment SPEC.\n\n"));
|
|||||||
switch (c->call)
|
switch (c->call)
|
||||||
{
|
{
|
||||||
case PATHCONF:
|
case PATHCONF:
|
||||||
if (argc < 3)
|
if (argc - ai < 2)
|
||||||
usage ();
|
usage ();
|
||||||
errno = 0;
|
errno = 0;
|
||||||
value = pathconf (argv[2], c->call_name);
|
value = pathconf (argv[ai + 1], c->call_name);
|
||||||
if (value == -1)
|
if (value == -1)
|
||||||
{
|
{
|
||||||
if (errno)
|
if (errno)
|
||||||
error (3, errno, "pathconf: %s", argv[2]);
|
error (3, errno, "pathconf: %s", argv[ai + 1]);
|
||||||
else
|
else
|
||||||
puts (_("undefined"));
|
puts (_("undefined"));
|
||||||
}
|
}
|
||||||
@@ -1269,7 +1273,7 @@ environment SPEC.\n\n"));
|
|||||||
exit (0);
|
exit (0);
|
||||||
|
|
||||||
case SYSCONF:
|
case SYSCONF:
|
||||||
if (argc > 2)
|
if (argc - ai > 1)
|
||||||
usage ();
|
usage ();
|
||||||
value = sysconf (c->call_name);
|
value = sysconf (c->call_name);
|
||||||
if (value == -1l)
|
if (value == -1l)
|
||||||
@@ -1285,7 +1289,7 @@ environment SPEC.\n\n"));
|
|||||||
exit (0);
|
exit (0);
|
||||||
|
|
||||||
case CONFSTR:
|
case CONFSTR:
|
||||||
if (argc > 2)
|
if (argc - ai > 1)
|
||||||
usage ();
|
usage ();
|
||||||
clen = confstr (c->call_name, (char *) NULL, 0);
|
clen = confstr (c->call_name, (char *) NULL, 0);
|
||||||
cvalue = (char *) malloc (clen);
|
cvalue = (char *) malloc (clen);
|
||||||
@@ -1300,7 +1304,7 @@ environment SPEC.\n\n"));
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
error (2, 0, _("Unrecognized variable `%s'"), argv[1]);
|
error (2, 0, _("Unrecognized variable `%s'"), argv[ai]);
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user