summaryrefslogtreecommitdiff
path: root/src/preproc/tbl/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/preproc/tbl/main.cc')
-rw-r--r--src/preproc/tbl/main.cc19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/preproc/tbl/main.cc b/src/preproc/tbl/main.cc
index d13f026c..efc8fdcc 100644
--- a/src/preproc/tbl/main.cc
+++ b/src/preproc/tbl/main.cc
@@ -1447,10 +1447,9 @@ void process_table(table_input &in)
error("premature end of file");
}
-static void usage()
+static void usage(FILE *stream)
{
- fprintf(stderr, "usage: %s [ -vC ] [ files... ]\n", program_name);
- exit(1);
+ fprintf(stream, "usage: %s [ -vC ] [ files... ]\n", program_name);
}
int main(int argc, char **argv)
@@ -1459,7 +1458,12 @@ int main(int argc, char **argv)
static char stderr_buf[BUFSIZ];
setbuf(stderr, stderr_buf);
int opt;
- while ((opt = getopt(argc, argv, "vCT:")) != EOF)
+ static const struct option long_options[] = {
+ { "help", no_argument, 0, CHAR_MAX + 1 },
+ { "version", no_argument, 0, 'v' },
+ { NULL, 0, 0, 0 }
+ };
+ while ((opt = getopt_long(argc, argv, "vCT:", long_options, NULL)) != EOF)
switch (opt) {
case 'C':
compatible_flag = 1;
@@ -1474,8 +1478,13 @@ int main(int argc, char **argv)
case 'T':
// I'm sick of getting bug reports from IRIX users
break;
+ case CHAR_MAX + 1: // --help
+ usage(stdout);
+ exit(0);
+ break;
case '?':
- usage();
+ usage(stderr);
+ exit(1);
break;
default:
assert(0);