Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-10-10 18:57:48 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-10-10 18:57:48 +0400
commit92b499acff8a35d64ec0f9b27b5df06209656ca9 (patch)
tree028b13e0eb9c8522daa2a868f0593a76d32e5adb /winsup/utils/getconf.c
parent4fc8a5c90acb2501178613b04bca32492953884a (diff)
* Align usage output, version output, as well as usage and version
option handling to use the same style throughout all Cygwin utils. Throughout use program_invocation_short_name to refer to current process name in Cygwin executables. * utils.sgml: Align documentation to above change. Add missing sections for getconf, ldd, and setmetamode. * strace.cc (proc_child): Avoid compiler warning.
Diffstat (limited to 'winsup/utils/getconf.c')
-rw-r--r--winsup/utils/getconf.c67
1 files changed, 54 insertions, 13 deletions
diff --git a/winsup/utils/getconf.c b/winsup/utils/getconf.c
index 7bed16e28..e71c52043 100644
--- a/winsup/utils/getconf.c
+++ b/winsup/utils/getconf.c
@@ -36,6 +36,8 @@
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
+#include <getopt.h>
+#include <cygwin/version.h>
struct conf_variable
{
@@ -467,15 +469,48 @@ printvar (const struct conf_variable *cp, const char *pathname)
}
static void
-usage (void)
+usage (int ret)
{
- fprintf (stderr,
- "Usage: %s [-v specification] variable_name [pathname]\n"
- " %s -a [pathname]\n",
- program_invocation_short_name, program_invocation_short_name);
- exit (EXIT_FAILURE);
+ fprintf (ret ? stderr : stdout,
+"Usage: %1$s [-v specification] variable_name [pathname]\n"
+" %1$s -a [pathname]\n"
+"\n"
+"Get configuration values\n"
+"\n"
+" -v specification Indicate specific version for which configuration\n"
+" values shall be fetched.\n"
+" -a, --all Print all known configuration values\n"
+"\n"
+"Other options:\n"
+"\n"
+" -h, --help This text\n"
+" -V, --version Print program version and exit\n"
+"\n", program_invocation_short_name);
+ exit (ret);
}
+static void
+print_version ()
+{
+ printf ("getconf (cygwin) %d.%d.%d\n"
+ "Get configuration values\n"
+ "Copyright (C) 2011 - %s Red Hat, Inc.\n"
+ "This is free software; see the source for copying conditions. There is NO\n"
+ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
+ CYGWIN_VERSION_DLL_MAJOR / 1000,
+ CYGWIN_VERSION_DLL_MAJOR % 1000,
+ CYGWIN_VERSION_DLL_MINOR,
+ strrchr (__DATE__, ' ') + 1);
+}
+
+struct option longopts[] = {
+ {"all", no_argument, NULL, 'a'},
+ {"help", no_argument, NULL, 'h'},
+ {"version", no_argument, NULL, 'V'},
+ {0, no_argument, NULL, 0}
+};
+const char *opts = "ahvV";
+
int
main (int argc, char **argv)
{
@@ -487,7 +522,7 @@ main (int argc, char **argv)
setlocale (LC_ALL, "");
- while ((ch = getopt (argc, argv, "av")) != -1)
+ while ((ch = getopt_long (argc, argv, opts, longopts, NULL)) != -1)
{
switch (ch)
{
@@ -497,9 +532,15 @@ main (int argc, char **argv)
case 'v':
v_flag = 1;
break;
- case '?':
+ case 'h':
+ usage (0);
+ case 'V':
+ print_version ();
+ return 0;
default:
- usage ();
+ fprintf (stderr, "Try `%s --help' for more information.\n",
+ program_invocation_short_name);
+ return 1;
}
}
argc -= optind;
@@ -508,7 +549,7 @@ main (int argc, char **argv)
if (v_flag)
{
if (a_flag || argc < 2)
- usage ();
+ usage (1);
for (sp = spec_table; sp->name != NULL; sp++)
{
if (strcmp (argv[0], sp->name) == 0)
@@ -527,7 +568,7 @@ main (int argc, char **argv)
if (!a_flag)
{
if (argc == 0)
- usage ();
+ usage (1);
varname = argv[0];
argc--;
argv++;
@@ -536,7 +577,7 @@ main (int argc, char **argv)
varname = NULL;
if (argc > 1)
- usage ();
+ usage (1);
pathname = argv[0]; /* may be NULL */
found = 0;
@@ -551,7 +592,7 @@ main (int argc, char **argv)
found = 1;
}
else if (!a_flag)
- usage ();
+ usage (1);
}
}