diff --git a/exec/dupefind.js b/exec/dupefind.js
index e8916be5940edcbe860609e48c5bc2cadc986a98..28e427af673e8dc3ff962b5c24c260019e3d703b 100755
--- a/exec/dupefind.js
+++ b/exec/dupefind.js
@@ -7,21 +7,6 @@ load("file_size.js");
 
 "use strict";
 
-if(argv.indexOf("-help") >= 0 || argv.indexOf("-?") >= 0) {
-	writeln("usage: [-options] [[dir_code] [...]]");
-	writeln("options:");
-	writeln("  -lib=<name>     search for duplicates in specified library only");
-	writeln("  -min=<bytes>    specify minimum file size to compare hash/sum");
-    writeln("  -ex=<filename>  add to excluded file name list");
-	writeln("  -crc32          search for duplicate CRC-32 sums");
-	writeln("  -md5            search for duplicate MD5 sums");
-	writeln("  -sha1           search for duplicate SHA-1 sums (the default)");
-	writeln("  -names          search for duplicate file names (case-insensitive)");
-	writeln("  -json           use JSON formatted output");
-	writeln("  -v              increase verbosity of output");
-	exit(0);
-}
-
 var detail = 0;
 var min_size = 1024;
 var dir_list = [];
@@ -31,7 +16,23 @@ var options = {};
 for(var i = 0; i < argc; i++) {
 	var arg = argv[i];
 	if(arg[0] == '-') {
-		var opt = arg.slice(1);
+		var opt = arg;
+		while(opt[0] == '-')
+			opt = opt.slice(1);
+		if(opt == "help" || opt == "?") {
+			writeln("usage: [-options] [[dir_code] [...]]");
+			writeln("options:");
+			writeln("  -lib=<name>     search for duplicates in specified library only");
+			writeln("  -min=<bytes>    specify minimum file size to compare hash/sum");
+			writeln("  -ex=<filename>  add to excluded file name list (case-insensitive)");
+			writeln("  -names          search for duplicate file names (case-insensitive)");
+			writeln("  -sha1           search for duplicate SHA-1 sums (the default)");
+			writeln("  -crc32          search for duplicate CRC-32 sums");
+			writeln("  -md5            search for duplicate MD5 sums");
+			writeln("  -json           use JSON formatted output");
+			writeln("  -v              increase verbosity of output");
+			exit(0);
+		}
 		if(opt.indexOf("ex=") == 0) {
 			exclude.push(opt.slice(3).toUpperCase());
 			continue;