From 15d326027827c168511f923e72c64e2131515e19 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 4 Nov 2013 23:14:22 -0800 Subject: Print which option was in error along with usage message Signed-off-by: Alan Coopersmith Reviewed-by: Gaetan Nadon --- atobm.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'atobm.c') diff --git a/atobm.c b/atobm.c index 040fecb..ef6da7e 100644 --- a/atobm.c +++ b/atobm.c @@ -42,9 +42,11 @@ static char *ProgramName; static void doit(FILE *fp, const char *filename, const char *chars, int xhot, int yhot, const char *name); -static void _X_NORETURN -usage (void) +static void _X_NORETURN _X_COLD +usage (const char *msg) { + if (msg) + fprintf(stderr, "%s: %s\n", ProgramName, msg); fprintf (stderr, "usage: %s [-options ...] [filename]\n\n%s\n", ProgramName, "where options include:\n" @@ -55,6 +57,14 @@ usage (void) exit (1); } +static void _X_NORETURN _X_COLD +missing_arg (const char *option) +{ + char msg[32]; + + snprintf(msg, sizeof(msg), "%s requires an argument", option); + usage(msg); +} static char * cify_name (char *name) @@ -106,23 +116,25 @@ main (int argc, char *argv[]) filename = NULL; continue; case 'c': - if (++i >= argc) usage (); + if (++i >= argc) missing_arg("-chars"); chars = argv[i]; continue; case 'n': - if (++i >= argc) usage (); + if (++i >= argc) missing_arg("-name"); name = argv[i]; continue; case 'x': - if (++i >= argc) usage (); + if (++i >= argc) missing_arg("-xhot"); xhot = atoi (argv[i]); continue; case 'y': - if (++i >= argc) usage (); + if (++i >= argc) missing_arg("-yhot"); yhot = atoi (argv[i]); continue; default: - usage (); + fprintf(stderr, "%s: unrecognized option '%s'\n", + ProgramName, argv[i]); + usage (NULL); } } else { filename = arg; -- cgit v1.2.3