From a3b761801c8e47f9901ed332e8c02a9c6e78dd0e Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 30 Apr 2011 13:06:21 +0200 Subject: ul.c: use long options This commit introduces help & version options. Signed-off-by: Sami Kerola --- text-utils/ul.c | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'text-utils/ul.c') diff --git a/text-utils/ul.c b/text-utils/ul.c index 1c4bd7f0b..5a71c9495 100644 --- a/text-utils/ul.c +++ b/text-utils/ul.c @@ -48,6 +48,7 @@ #include /* for INT_MAX */ #include /* for signal() */ #include +#include #include "nls.h" #include "xalloc.h" @@ -67,6 +68,7 @@ static int put1wc(int c) /* Output an ASCII character as a wide character */ #define putwp(s) putp(s) #endif +static void usage(FILE *out); void filter(FILE *f); void flushln(void); void overstrike(void); @@ -116,12 +118,37 @@ int halfpos; int upln; int iflag; +static void __attribute__((__noreturn__)) +usage(FILE *out) +{ + fprintf(out, _( + "\nUsage:\n" + " %s [options] [file]\n"), program_invocation_short_name); + + fprintf(out, _( + "\nOptions:\n" + " -t, --terminal TERMINAL overwrite TERM environment variable\n" + " -i, --indicated Underlining is indicated by a separate line\n" + " -V, --version output version information and exit\n" + " -h, --help display this help and exit\n\n")); + + exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); +} + int main(int argc, char **argv) { int c, ret; char *termtype; FILE *f; + static const struct option longopts[] = { + { "terminal", required_argument, 0, 't' }, + { "indicated", no_argument, 0, 'i' }, + { "version", no_argument, 0, 'V' }, + { "help", no_argument, 0, 'h' }, + { NULL, 0, 0, 0 } + }; + setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -132,7 +159,7 @@ int main(int argc, char **argv) termtype = getenv("TERM"); if (termtype == NULL || (argv[0][0] == 'c' && !isatty(1))) termtype = "lpr"; - while ((c = getopt(argc, argv, "it:T:")) != -1) + while ((c = getopt_long(argc, argv, "it:T:Vh", longopts, NULL)) != -1) switch(c) { case 't': @@ -142,11 +169,14 @@ int main(int argc, char **argv) case 'i': iflag = 1; break; - + case 'V': + printf(_("%s from %s\n"), program_invocation_short_name, + PACKAGE_STRING); + return(EXIT_SUCCESS); + case 'h': + usage(stdout); default: - fprintf(stderr, - _("Usage: %s [ -i ] [ -tTerm ] file...\n"), - program_invocation_short_name); + usage(stderr); return EXIT_FAILURE; } setupterm(termtype, 1, &ret); -- cgit v1.2.3-55-g7522