Skip to content

Commit

Permalink
Handle -- on getconf command line.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ulrich Drepper committed Sep 10, 2009
1 parent 0549ce8 commit 02bf610
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 34 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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>

* configure.in: Support binutils 2.100 and 3.0.
Expand Down
72 changes: 38 additions & 34 deletions posix/getconf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1052,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);
Expand Down Expand Up @@ -1239,28 +1239,32 @@ 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;
char *cvalue;
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"));
}
Expand All @@ -1269,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)
Expand All @@ -1285,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);
Expand All @@ -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 */
return 2;
}

0 comments on commit 02bf610

Please sign in to comment.