summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2014-06-01 00:13:58 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2014-06-01 00:23:41 -0700
commite320555a2281ff6b5ad9409480a62c976a289dc1 (patch)
tree426a455dba9e924ebd104f865abd6e13bc3df134
parent82f549d1c8780538fb115ee2768d2f4024d302b2 (diff)
Print which option was in error along with usage message
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--configure.ac2
-rw-r--r--xmodmap.c38
2 files changed, 28 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac
index c84299a..bbd9e94 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,7 +44,7 @@ XORG_DEFAULT_OPTIONS
AC_CHECK_FUNCS([strncasecmp asprintf])
# Checks for pkg-config packages
-PKG_CHECK_MODULES(XMODMAP, x11 xproto >= 7.0.17)
+PKG_CHECK_MODULES(XMODMAP, [x11 xproto >= 7.0.25])
dnl Allow checking code with lint, sparse, etc.
XORG_WITH_LINT
diff --git a/xmodmap.c b/xmodmap.c
index ffa6cea..22677dc 100644
--- a/xmodmap.c
+++ b/xmodmap.c
@@ -121,8 +121,8 @@ static const char help_message[] =
"\n";
-static void
-_X_NORETURN
+static void
+_X_NORETURN _X_COLD
usage(int exitcode)
{
fprintf (stderr, "usage: %s [-options ...] [filename]\n", ProgramName);
@@ -130,6 +130,22 @@ usage(int exitcode)
Exit (exitcode);
}
+static void
+_X_NORETURN _X_COLD
+missing_arg(const char *arg)
+{
+ fprintf (stderr, "%s: %s requires an argument\n\n", ProgramName, arg);
+ usage(1);
+}
+
+static void
+_X_NORETURN _X_COLD
+unknown_arg(const char *arg)
+{
+ fprintf (stderr, "%s: unrecognized argument %s\n\n", ProgramName, arg);
+ usage(1);
+}
+
static const char grammar_message[] =
" pointer = default reset pointer buttons to default\n"
" pointer = NUMBER ... set pointer button codes\n"
@@ -187,7 +203,7 @@ main(int argc, char *argv[])
if (arg[0] == '-') {
switch (arg[1]) {
case 'd': /* -display host:dpy */
- if (++i >= argc) usage (1);
+ if (++i >= argc) missing_arg(arg);
displayname = argv[i];
break;
case 'g': /* -grammar */
@@ -240,7 +256,7 @@ main(int argc, char *argv[])
continue;
case 'e': /* -e expression */
didAnything = True;
- if (++i >= argc) usage (1);
+ if (++i >= argc) missing_arg(arg);
process_line (argv[i]);
continue;
case 'p': /* -p... */
@@ -258,14 +274,14 @@ main(int argc, char *argv[])
printKeyTableExprs = True;
break;
default:
- usage (1);
+ unknown_arg(arg);
}
break;
case 'p': /* -pp */
printPointerMap = True;
break;
default:
- usage (1);
+ unknown_arg(arg);
/* NOTREACHED */
}
didAnything = True;
@@ -308,7 +324,7 @@ main(int argc, char *argv[])
case 'c': {
char *cmd;
didAnything = True;
- if (++i >= argc) usage (1);
+ if (++i >= argc) missing_arg(arg);
if (asprintf (&cmd, "remove %s = %s",
((arg[1] == 's') ? "shift" :
((arg[1] == 'l') ? "lock" :
@@ -318,7 +334,7 @@ main(int argc, char *argv[])
continue;
}
default:
- usage (1);
+ unknown_arg(arg);
/*NOTREACHED*/
}
} else if (arg[0] == '+') { /* old xmodmap args */
@@ -330,7 +346,7 @@ main(int argc, char *argv[])
case '5': {
char *cmd;
didAnything = True;
- if (++i >= argc) usage (1);
+ if (++i >= argc) missing_arg(arg);
if (asprintf (&cmd, "add mod%c = %s", arg[1], argv[i]) == -1)
FatalError("Could not allocate memory for add cmd");
process_line (cmd);
@@ -346,7 +362,7 @@ main(int argc, char *argv[])
case 'c': {
char *cmd;
didAnything = True;
- if (++i >= argc) usage (1);
+ if (++i >= argc) missing_arg(arg);
if (asprintf (&cmd, "add %s = %s",
((arg[1] == 's') ? "shift" :
((arg[1] == 'l') ? "lock" :
@@ -356,7 +372,7 @@ main(int argc, char *argv[])
continue;
}
default:
- usage (1);
+ unknown_arg(arg);
}
} else {
didAnything = True;