diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2013-11-04 23:14:22 -0800 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2013-11-22 22:13:42 -0800 |
commit | 15d326027827c168511f923e72c64e2131515e19 (patch) | |
tree | 8354aa7b2cb15e62b8b0b47ce193e4541a396cef /atobm.c | |
parent | 64bc2b97d408d6fea16716e37f7b5ff1661d57fd (diff) |
Print which option was in error along with usage message
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
Diffstat (limited to 'atobm.c')
-rw-r--r-- | atobm.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -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; |