aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/utils/ChangeLog9
-rw-r--r--winsup/utils/dumper.cc61
2 files changed, 59 insertions, 11 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index bb017dc..55be988 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,12 @@
+2002-05-07 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
+
+ * dumper.cc (usage) Standardize usage output. Generalize to allow use
+ for help.
+ (longopts) New struct. Added longopts for all options.
+ (print_version) New function.
+ (main) Change getopt to getopt_long. Accommodate new help and version
+ options.
+
2002-03-29 Corinna Vinschen <corinna@vinschen.de>
* mkgroup.c (main): Change call to exit() to a return statement.
diff --git a/winsup/utils/dumper.cc b/winsup/utils/dumper.cc
index 50e10d2..b898ebd 100644
--- a/winsup/utils/dumper.cc
+++ b/winsup/utils/dumper.cc
@@ -1,6 +1,6 @@
/* dumper.cc
- Copyright 1999,2001 Red Hat Inc.
+ Copyright 1999, 2001, 2002 Red Hat Inc.
Written by Egor Duda <deo@logos-m.ru>
@@ -36,6 +36,8 @@ __attribute__ ((packed))
#endif
note_header;
+static const char version[] = "$Revision$";
+
BOOL verbose = FALSE;
int deb_printf (const char *format,...)
@@ -770,14 +772,46 @@ dumper::write_core_dump ()
}
static void
-usage ()
+usage (FILE *stream, int status)
+{
+ fprintf (stream, "\
+Usage: dumper [OPTION] FILENAME WIN32PID\n\
+Dump core from WIN32PID to FILENAME.core\n\
+ -d, --verbose be verbose while dumping\n\
+ -h, --help output help information and exit\n\
+ -q, --quiet be quiet while dumping (default)\n\
+ -v, --version output version information and exit\n\
+");
+ exit (status);
+}
+
+struct option longopts[] = {
+ {"verbose", no_argument, NULL, 'd'},
+ {"help", no_argument, NULL, 'h'},
+ {"quiet", no_argument, NULL, 'q'},
+ {"version", no_argument, 0, 'v'},
+ {0, no_argument, NULL, 0}
+};
+
+static void
+print_version ()
{
- fprintf (stderr, "Usage: dumper [options] filename pid\n");
- fprintf (stderr, "filename -- dump core to filename.core\n");
- fprintf (stderr, "pid -- win32-pid of process to dump\n\n");
- fprintf (stderr, "Possible options are:\n");
- fprintf (stderr, "-d -- be verbose while dumping\n");
- fprintf (stderr, "-q -- be quite while dumping (default)\n");
+ const char *v = strchr (version, ':');
+ int len;
+ if (!v)
+ {
+ v = "?";
+ len = 1;
+ }
+ else
+ {
+ v += 2;
+ len = strchr (v, ' ') - v;
+ }
+ printf ("\
+dumper (cygwin) %.*s\n\
+Core Dumper for Cygwin\n\
+Copyright 1999, 2001, 2002 Red Hat, Inc.\n", len, v);
}
int
@@ -788,7 +822,7 @@ main (int argc, char **argv)
DWORD pid;
char win32_name [MAX_PATH];
- while ((opt = getopt (argc, argv, "dq")) != EOF)
+ while ((opt = getopt_long (argc, argv, "dqhv", longopts, NULL) ) != EOF)
switch (opt)
{
case 'd':
@@ -797,8 +831,13 @@ main (int argc, char **argv)
case 'q':
verbose = FALSE;
break;
+ case 'h':
+ usage (stdout, 0);
+ case 'v':
+ print_version ();
+ exit (0);
default:
- usage ();
+ usage (stderr, 1);
break;
}
@@ -814,7 +853,7 @@ main (int argc, char **argv)
}
else
{
- usage ();
+ usage (stderr, 1);
return -1;
}