TJBench/TJUnitTest: Don't ignore mistyped args
diff --git a/ChangeLog.md b/ChangeLog.md
index 8ecd04f..10738b4 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -14,6 +14,10 @@
 is selected along with the `-crop` option.  That option does not currently work
 with other output image formats.
 
+4. TJBench (both C and Java versions) will now display usage information if any
+command-line argument is unrecognized.  This prevents the program from silently
+ignoring typos.
+
 
 1.5.2
 =====
diff --git a/java/TJBench.java b/java/TJBench.java
index 5185d65..ddc414c 100644
--- a/java/TJBench.java
+++ b/java/TJBench.java
@@ -721,37 +721,37 @@
           if (argv[i].equalsIgnoreCase("-tile")) {
             doTile = true;  xformOpt |= TJTransform.OPT_CROP;
           }
-          if (argv[i].equalsIgnoreCase("-fastupsample")) {
+          else if (argv[i].equalsIgnoreCase("-fastupsample")) {
             System.out.println("Using fast upsampling code\n");
             flags |= TJ.FLAG_FASTUPSAMPLE;
           }
-          if (argv[i].equalsIgnoreCase("-fastdct")) {
+          else if (argv[i].equalsIgnoreCase("-fastdct")) {
             System.out.println("Using fastest DCT/IDCT algorithm\n");
             flags |= TJ.FLAG_FASTDCT;
           }
-          if (argv[i].equalsIgnoreCase("-accuratedct")) {
+          else if (argv[i].equalsIgnoreCase("-accuratedct")) {
             System.out.println("Using most accurate DCT/IDCT algorithm\n");
             flags |= TJ.FLAG_ACCURATEDCT;
           }
-          if (argv[i].equalsIgnoreCase("-rgb"))
+          else if (argv[i].equalsIgnoreCase("-rgb"))
             pf = TJ.PF_RGB;
-          if (argv[i].equalsIgnoreCase("-rgbx"))
+          else if (argv[i].equalsIgnoreCase("-rgbx"))
             pf = TJ.PF_RGBX;
-          if (argv[i].equalsIgnoreCase("-bgr"))
+          else if (argv[i].equalsIgnoreCase("-bgr"))
             pf = TJ.PF_BGR;
-          if (argv[i].equalsIgnoreCase("-bgrx"))
+          else if (argv[i].equalsIgnoreCase("-bgrx"))
             pf = TJ.PF_BGRX;
-          if (argv[i].equalsIgnoreCase("-xbgr"))
+          else if (argv[i].equalsIgnoreCase("-xbgr"))
             pf = TJ.PF_XBGR;
-          if (argv[i].equalsIgnoreCase("-xrgb"))
+          else if (argv[i].equalsIgnoreCase("-xrgb"))
             pf = TJ.PF_XRGB;
-          if (argv[i].equalsIgnoreCase("-bottomup"))
+          else if (argv[i].equalsIgnoreCase("-bottomup"))
             flags |= TJ.FLAG_BOTTOMUP;
-          if (argv[i].equalsIgnoreCase("-quiet"))
+          else if (argv[i].equalsIgnoreCase("-quiet"))
             quiet = 1;
-          if (argv[i].equalsIgnoreCase("-qq"))
+          else if (argv[i].equalsIgnoreCase("-qq"))
             quiet = 2;
-          if (argv[i].equalsIgnoreCase("-scale") && i < argv.length - 1) {
+          else if (argv[i].equalsIgnoreCase("-scale") && i < argv.length - 1) {
             int temp1 = 0, temp2 = 0;
             boolean match = false, scanned = true;
             Scanner scanner = new Scanner(argv[++i]).useDelimiter("/");
@@ -774,25 +774,25 @@
             } else
               usage();
           }
-          if (argv[i].equalsIgnoreCase("-hflip"))
+          else if (argv[i].equalsIgnoreCase("-hflip"))
             xformOp = TJTransform.OP_HFLIP;
-          if (argv[i].equalsIgnoreCase("-vflip"))
+          else if (argv[i].equalsIgnoreCase("-vflip"))
             xformOp = TJTransform.OP_VFLIP;
-          if (argv[i].equalsIgnoreCase("-transpose"))
+          else if (argv[i].equalsIgnoreCase("-transpose"))
             xformOp = TJTransform.OP_TRANSPOSE;
-          if (argv[i].equalsIgnoreCase("-transverse"))
+          else if (argv[i].equalsIgnoreCase("-transverse"))
             xformOp = TJTransform.OP_TRANSVERSE;
-          if (argv[i].equalsIgnoreCase("-rot90"))
+          else if (argv[i].equalsIgnoreCase("-rot90"))
             xformOp = TJTransform.OP_ROT90;
-          if (argv[i].equalsIgnoreCase("-rot180"))
+          else if (argv[i].equalsIgnoreCase("-rot180"))
             xformOp = TJTransform.OP_ROT180;
-          if (argv[i].equalsIgnoreCase("-rot270"))
+          else if (argv[i].equalsIgnoreCase("-rot270"))
             xformOp = TJTransform.OP_ROT270;
-          if (argv[i].equalsIgnoreCase("-grayscale"))
+          else if (argv[i].equalsIgnoreCase("-grayscale"))
             xformOpt |= TJTransform.OPT_GRAY;
-          if (argv[i].equalsIgnoreCase("-nooutput"))
+          else if (argv[i].equalsIgnoreCase("-nooutput"))
             xformOpt |= TJTransform.OPT_NOOUTPUT;
-          if (argv[i].equalsIgnoreCase("-benchtime") && i < argv.length - 1) {
+          else if (argv[i].equalsIgnoreCase("-benchtime") && i < argv.length - 1) {
             double temp = -1;
             try {
               temp = Double.parseDouble(argv[++i]);
@@ -802,11 +802,11 @@
             else
               usage();
           }
-          if (argv[i].equalsIgnoreCase("-yuv")) {
+          else if (argv[i].equalsIgnoreCase("-yuv")) {
             System.out.println("Testing YUV planar encoding/decoding\n");
             doYUV = true;
           }
-          if (argv[i].equalsIgnoreCase("-yuvpad") && i < argv.length - 1) {
+          else if (argv[i].equalsIgnoreCase("-yuvpad") && i < argv.length - 1) {
             int temp = 0;
             try {
              temp = Integer.parseInt(argv[++i]);
@@ -814,7 +814,7 @@
             if (temp >= 1)
               yuvpad = temp;
           }
-          if (argv[i].equalsIgnoreCase("-subsamp") && i < argv.length - 1) {
+          else if (argv[i].equalsIgnoreCase("-subsamp") && i < argv.length - 1) {
             i++;
             if (argv[i].toUpperCase().startsWith("G"))
               subsamp = TJ.SAMP_GRAY;
@@ -829,11 +829,11 @@
             else if (argv[i].equals("411"))
               subsamp = TJ.SAMP_411;
           }
-          if (argv[i].equalsIgnoreCase("-componly"))
+          else if (argv[i].equalsIgnoreCase("-componly"))
             compOnly = true;
-          if (argv[i].equalsIgnoreCase("-nowrite"))
+          else if (argv[i].equalsIgnoreCase("-nowrite"))
             write = false;
-          if (argv[i].equalsIgnoreCase("-warmup") && i < argv.length - 1) {
+          else if (argv[i].equalsIgnoreCase("-warmup") && i < argv.length - 1) {
             double temp = -1;
             try {
              temp = Double.parseDouble(argv[++i]);
@@ -844,8 +844,7 @@
             } else
               usage();
           }
-          if (argv[i].equalsIgnoreCase("-?"))
-            usage();
+          else usage();
         }
       }
 
diff --git a/java/TJUnitTest.java b/java/TJUnitTest.java
index 24be8eb..47ff7bb 100644
--- a/java/TJUnitTest.java
+++ b/java/TJUnitTest.java
@@ -902,15 +902,13 @@
       for (int i = 0; i < argv.length; i++) {
         if (argv[i].equalsIgnoreCase("-yuv"))
           doYUV = true;
-        if (argv[i].equalsIgnoreCase("-noyuvpad"))
+        else if (argv[i].equalsIgnoreCase("-noyuvpad"))
           pad = 1;
-        if (argv[i].substring(0, 1).equalsIgnoreCase("-h") ||
-            argv[i].equalsIgnoreCase("-?"))
-          usage();
-        if (argv[i].equalsIgnoreCase("-bi")) {
+        else if (argv[i].equalsIgnoreCase("-bi")) {
           bi = true;
           testName = "javabitest";
-        }
+        } else
+          usage();
       }
       if (doYUV)
         _4byteFormats[4] = -1;
diff --git a/tjbench.c b/tjbench.c
index 21b297c..dfe6601 100644
--- a/tjbench.c
+++ b/tjbench.c
@@ -835,32 +835,32 @@
 			{
 				dotile=1;  xformopt|=TJXOPT_CROP;
 			}
-			if(!strcasecmp(argv[i], "-fastupsample"))
+			else if(!strcasecmp(argv[i], "-fastupsample"))
 			{
 				printf("Using fast upsampling code\n\n");
 				flags|=TJFLAG_FASTUPSAMPLE;
 			}
-			if(!strcasecmp(argv[i], "-fastdct"))
+			else if(!strcasecmp(argv[i], "-fastdct"))
 			{
 				printf("Using fastest DCT/IDCT algorithm\n\n");
 				flags|=TJFLAG_FASTDCT;
 			}
-			if(!strcasecmp(argv[i], "-accuratedct"))
+			else if(!strcasecmp(argv[i], "-accuratedct"))
 			{
 				printf("Using most accurate DCT/IDCT algorithm\n\n");
 				flags|=TJFLAG_ACCURATEDCT;
 			}
-			if(!strcasecmp(argv[i], "-rgb")) pf=TJPF_RGB;
-			if(!strcasecmp(argv[i], "-rgbx")) pf=TJPF_RGBX;
-			if(!strcasecmp(argv[i], "-bgr")) pf=TJPF_BGR;
-			if(!strcasecmp(argv[i], "-bgrx")) pf=TJPF_BGRX;
-			if(!strcasecmp(argv[i], "-xbgr")) pf=TJPF_XBGR;
-			if(!strcasecmp(argv[i], "-xrgb")) pf=TJPF_XRGB;
-			if(!strcasecmp(argv[i], "-cmyk")) pf=TJPF_CMYK;
-			if(!strcasecmp(argv[i], "-bottomup")) flags|=TJFLAG_BOTTOMUP;
-			if(!strcasecmp(argv[i], "-quiet")) quiet=1;
-			if(!strcasecmp(argv[i], "-qq")) quiet=2;
-			if(!strcasecmp(argv[i], "-scale") && i<argc-1)
+			else if(!strcasecmp(argv[i], "-rgb")) pf=TJPF_RGB;
+			else if(!strcasecmp(argv[i], "-rgbx")) pf=TJPF_RGBX;
+			else if(!strcasecmp(argv[i], "-bgr")) pf=TJPF_BGR;
+			else if(!strcasecmp(argv[i], "-bgrx")) pf=TJPF_BGRX;
+			else if(!strcasecmp(argv[i], "-xbgr")) pf=TJPF_XBGR;
+			else if(!strcasecmp(argv[i], "-xrgb")) pf=TJPF_XRGB;
+			else if(!strcasecmp(argv[i], "-cmyk")) pf=TJPF_CMYK;
+			else if(!strcasecmp(argv[i], "-bottomup")) flags|=TJFLAG_BOTTOMUP;
+			else if(!strcasecmp(argv[i], "-quiet")) quiet=1;
+			else if(!strcasecmp(argv[i], "-qq")) quiet=2;
+			else if(!strcasecmp(argv[i], "-scale") && i<argc-1)
 			{
 				int temp1=0, temp2=0, match=0;
 				if(sscanf(argv[++i], "%d/%d", &temp1, &temp2)==2)
@@ -878,43 +878,42 @@
 				}
 				else usage(argv[0]);
 			}
-			if(!strcasecmp(argv[i], "-hflip")) xformop=TJXOP_HFLIP;
-			if(!strcasecmp(argv[i], "-vflip")) xformop=TJXOP_VFLIP;
-			if(!strcasecmp(argv[i], "-transpose")) xformop=TJXOP_TRANSPOSE;
-			if(!strcasecmp(argv[i], "-transverse")) xformop=TJXOP_TRANSVERSE;
-			if(!strcasecmp(argv[i], "-rot90")) xformop=TJXOP_ROT90;
-			if(!strcasecmp(argv[i], "-rot180")) xformop=TJXOP_ROT180;
-			if(!strcasecmp(argv[i], "-rot270")) xformop=TJXOP_ROT270;
-			if(!strcasecmp(argv[i], "-grayscale")) xformopt|=TJXOPT_GRAY;
-			if(!strcasecmp(argv[i], "-custom")) customFilter=dummyDCTFilter;
-			if(!strcasecmp(argv[i], "-nooutput")) xformopt|=TJXOPT_NOOUTPUT;
-			if(!strcasecmp(argv[i], "-benchtime") && i<argc-1)
+			else if(!strcasecmp(argv[i], "-hflip")) xformop=TJXOP_HFLIP;
+			else if(!strcasecmp(argv[i], "-vflip")) xformop=TJXOP_VFLIP;
+			else if(!strcasecmp(argv[i], "-transpose")) xformop=TJXOP_TRANSPOSE;
+			else if(!strcasecmp(argv[i], "-transverse")) xformop=TJXOP_TRANSVERSE;
+			else if(!strcasecmp(argv[i], "-rot90")) xformop=TJXOP_ROT90;
+			else if(!strcasecmp(argv[i], "-rot180")) xformop=TJXOP_ROT180;
+			else if(!strcasecmp(argv[i], "-rot270")) xformop=TJXOP_ROT270;
+			else if(!strcasecmp(argv[i], "-grayscale")) xformopt|=TJXOPT_GRAY;
+			else if(!strcasecmp(argv[i], "-custom")) customFilter=dummyDCTFilter;
+			else if(!strcasecmp(argv[i], "-nooutput")) xformopt|=TJXOPT_NOOUTPUT;
+			else if(!strcasecmp(argv[i], "-benchtime") && i<argc-1)
 			{
 				double temp=atof(argv[++i]);
 				if(temp>0.0) benchtime=temp;
 				else usage(argv[0]);
 			}
-			if(!strcasecmp(argv[i], "-warmup") && i<argc-1)
+			else if(!strcasecmp(argv[i], "-warmup") && i<argc-1)
 			{
 				double temp=atof(argv[++i]);
 				if(temp>=0.0) warmup=temp;
 				else usage(argv[0]);
 				printf("Warmup time = %.1f seconds\n\n", warmup);
 			}
-			if(!strcmp(argv[i], "-?")) usage(argv[0]);
-			if(!strcasecmp(argv[i], "-alloc")) flags&=(~TJFLAG_NOREALLOC);
-			if(!strcasecmp(argv[i], "-bmp")) ext="bmp";
-			if(!strcasecmp(argv[i], "-yuv"))
+			else if(!strcasecmp(argv[i], "-alloc")) flags&=(~TJFLAG_NOREALLOC);
+			else if(!strcasecmp(argv[i], "-bmp")) ext="bmp";
+			else if(!strcasecmp(argv[i], "-yuv"))
 			{
 				printf("Testing YUV planar encoding/decoding\n\n");
 				doyuv=1;
 			}
-			if(!strcasecmp(argv[i], "-yuvpad") && i<argc-1)
+			else if(!strcasecmp(argv[i], "-yuvpad") && i<argc-1)
 			{
 				int temp=atoi(argv[++i]);
 				if(temp>=1) yuvpad=temp;
 			}
-			if(!strcasecmp(argv[i], "-subsamp") && i<argc-1)
+			else if(!strcasecmp(argv[i], "-subsamp") && i<argc-1)
 			{
 				i++;
 				if(toupper(argv[i][0])=='G') subsamp=TJSAMP_GRAY;
@@ -931,8 +930,9 @@
 					}
 				}
 			}
-			if(!strcasecmp(argv[i], "-componly")) componly=1;
-			if(!strcasecmp(argv[i], "-nowrite")) dowrite=0;
+			else if(!strcasecmp(argv[i], "-componly")) componly=1;
+			else if(!strcasecmp(argv[i], "-nowrite")) dowrite=0;
+			else usage(argv[0]);
 		}
 	}
 
diff --git a/tjunittest.c b/tjunittest.c
index 7b2054e..f793796 100644
--- a/tjunittest.c
+++ b/tjunittest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C)2009-2014 D. R. Commander.  All Rights Reserved.
+ * Copyright (C)2009-2014, 2017 D. R. Commander.  All Rights Reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -697,10 +697,9 @@
 		for(i=1; i<argc; i++)
 		{
 			if(!strcasecmp(argv[i], "-yuv")) doyuv=1;
-			if(!strcasecmp(argv[i], "-noyuvpad")) pad=1;
-			if(!strcasecmp(argv[i], "-alloc")) alloc=1;
-			if(!strncasecmp(argv[i], "-h", 2) || !strcasecmp(argv[i], "-?"))
-				usage(argv[0]);
+			else if(!strcasecmp(argv[i], "-noyuvpad")) pad=1;
+			else if(!strcasecmp(argv[i], "-alloc")) alloc=1;
+			else usage(argv[0]);
 		}
 	}
 	if(alloc) printf("Testing automatic buffer allocation\n");