Author: <gaudenz@debian.org>
Description: print usage message to stderr for wrong arguments
--- a/mouseemu.c
+++ b/mouseemu.c
@@ -517,6 +517,31 @@
 
 }
 
+/* print usage message to stdout/stderr */
+void usage(FILE *stream, char *argv[]) {
+	fprintf(stream, "usage: %s \n"
+	                "\t[-middle B2_MOD B2_KEY]\n"
+	                "\t[-right	B3_MOD B3_KEY]\n"
+	                "\t[-scroll SCROLL_MOD]\n"
+	                "\t[-typing-block DELAY]\n"
+	                "\t[-device UINPUT_DEVICE]\n"
+	                "\t[-nofork]\n",
+					argv[0]);
+	fprintf(stream, "All modifier and button key arguments are\n"
+	                "key scancodes. They can be found in \n"
+	                "/usr/src/linux/include/linux/input.h,\n"
+	                "or by using `showkey` in a console.\n"
+	                "Use decimal values. BTN_LEFT(272) is usable as "
+	                "B2_KEY or B3_KEY.\n\n");
+	fprintf(stream, "Default uinput device: " DEFAULT_UINPUT ".\n");
+	fprintf(stream, "Default keys:\n"
+	                "\tMiddle click : F10 (0 68)\n"
+	                "\tRight click	: F11 (0 87)\n"
+	                "\tScroll mod.	: Alt (56)\n"
+	                "\tDefault blocking time while typing: 300ms\n");
+
+	exit(0);
+}
 
 int main(int argc, char *argv[])
 {
@@ -535,72 +560,59 @@
 	if (argc > 1) {
 		int i = 0;
 		if (!strcmp(argv[1],"-help")) {
-err:
-			printf("usage: %s \n"
-					"\t[-middle B2_MOD B2_KEY]\n"
-			       		"\t[-right  B3_MOD B3_KEY]\n"
-					"\t[-scroll SCROLL_MOD]\n"
-					"\t[-typing-block DELAY]\n"
-					"\t[-device UINPUT_DEVICE]\n"
-					"\t[-nofork]\n",
-			       argv[0]);
-			printf("Key codes can be found in "
-			       "/usr/src/linux/include/linux/input.h,\n"
-			       "or by using `showkey` in console.\n"
-			       "Use decimal values. BTN_LEFT(272) is usable as "
-			       "B2_KEY or B3_KEY.\n\n");
-			printf("Default uinput device: " DEFAULT_UINPUT ".\n");
-			printf("Default keys:\n"
-					"\tMiddle click : F10 (0 68)\n"
-					"\tRight click  : F11 (0 87)\n"
-					"\tScroll mod.  : Alt (56)\n"
-					"\tDefault blocking time while typing: 300ms\n");
-			
-			exit(0);
+			usage(stdout, argv);	
 		} else {
-			for (i = 1; i < argc; i++) {
-				int j = i+1;
+			i = 1;
+			while (i < argc) {
 				if (!strcmp(argv[i], "-middle")) {
-					if (argc > j+1) {
-						b2_mod = atoi(argv[j]);
-						b2_key = atoi(argv[j+1]);
+					if (argc > i+2) {
+						b2_mod = atoi(argv[i+1]);
+						b2_key = atoi(argv[i+2]);
+						i += 3;
 					} else 
-						goto err;
+						usage(stderr, argv);
 					continue;
 				} 
-				if (!strcmp(argv[i], "-right")) {
-					if (argc > j+1) {
-						b3_mod = atoi(argv[j]);
-						b3_key = atoi(argv[j+1]);
+				else if (!strcmp(argv[i], "-right")) {
+					if (argc > i+2) {
+						b3_mod = atoi(argv[i+1]);
+						b3_key = atoi(argv[i+2]);
+						i += 3;
 					} else 
-						goto err;
+						usage(stderr, argv);
 					continue;
 				}
-				if (!strcmp(argv[i], "-scroll")) {
-					if (argc > j) {
-						scroll_mod = atoi(argv[j]);
+				else if (!strcmp(argv[i], "-scroll")) {
+					if (argc > i+1) {
+						scroll_mod = atoi(argv[i+1]);
+						i += 2;
 					} else 
-						goto err;
+						usage(stderr, argv);
 					continue;					
 				}
-				if (!strcmp(argv[i], "-typing-block")) {
-					if (argc > j) {
-						typing_block_delay = atoi(argv[j]);
+				else if (!strcmp(argv[i], "-typing-block")) {
+					if (argc > i+1) {
+						typing_block_delay = atoi(argv[i+1]);
+						i += 2;
 					} else 
-						goto err;
+						usage(stderr, argv);
 					continue;					
 				}
-				if (!strcmp(argv[i], "-device")) {
-					if (argc > j) {
-						uinputdev = argv[j];
+				else if (!strcmp(argv[i], "-device")) {
+					if (argc > i+1) {
+						uinputdev = argv[i+1];
+						i += 2;
 					} else 
-						goto err;
+						usage(stderr, argv);
 					continue;					
 				}
-				if (!strcmp(argv[i], "-nofork")) {
+				else if (!strcmp(argv[i], "-nofork")) {
 					nofork=1;
+					i += 1;
 					continue;
-				}
+				} else {
+					usage(stderr, argv);
+                }
 			}
 		}
 	}
