diff --git a/exec/addfiles.js b/exec/addfiles.js
index 509a4b15d7a62680a4e3a882e6d6e253ca1504b5..2df8fb4e9ce1eb435fb01ee4aec027241aca0670 100755
--- a/exec/addfiles.js
+++ b/exec/addfiles.js
@@ -12,26 +12,6 @@ const default_excludes = [
 	"SFFILES.BBS"
 ];
 
-if(argv.indexOf("-help") >= 0 || argv.indexOf("-?") >= 0) {
-	writeln("usage: [-options] [dir-code] [listfile]");
-	writeln("options:");
-	writeln("  -all            add files in all libraries/directories (implies -auto)");
-	writeln("  -lib=<name>     add files in all directories of specified library (implies -auto)");
-	writeln("  -from=<name>    specify uploader's user name (may require quotes)");
-	writeln("  -ex=<filename>  add to excluded filename list");
-	writeln("                  (default: " + default_excludes.join(',') + ")");
-	writeln("  -diz            always extract/use description in archive");
-	writeln("  -update         update existing file entries (default is to skip them)");
-	writeln("  -date[=fmt]     include today's date in description");
-	writeln("  -fdate[=fmt]    include file's date in description");
-	writeln("  -adate[=fmt]    include newest archived file date in description");
-	writeln("                  (fmt = optional strftime date/time format string)");
-	writeln("  -delete         delete list after import");
-	writeln("  -v              increase verbosity of output");
-	writeln("  -debug          enable debug output");
-	exit(0);
-}
-
 function datestr(t)
 {
 	if(date_fmt)
@@ -62,12 +42,34 @@ var verbosity = 0;
 for(var i = 0; i < argc; i++) {
 	var arg = argv[i];
 	if(arg[0] == '-') {
-		if(arg.indexOf("-ex=") == 0) {
-			exclude.push(arg.slice(4).toUpperCase());
+		var opt = arg;
+		while(opt[0] == '-')
+			opt = opt.slice(1);
+		if(opt == '?' || opt.toLowerCase() == "help") {
+			writeln("usage: [-options] [dir-code] [listfile]");
+			writeln("options:");
+			writeln("  -all            add files in all libraries/directories (implies -auto)");
+			writeln("  -lib=<name>     add files in all directories of specified library (implies -auto)");
+			writeln("  -from=<name>    specify uploader's user name (may require quotes)");
+			writeln("  -ex=<filename>  add to excluded filename list");
+			writeln("                  (default: " + default_excludes.join(',') + ")");
+			writeln("  -diz            always extract/use description in archive");
+			writeln("  -update         update existing file entries (default is to skip them)");
+			writeln("  -date[=fmt]     include today's date in description");
+			writeln("  -fdate[=fmt]    include file's date in description");
+			writeln("  -adate[=fmt]    include newest archived file date in description");
+			writeln("                  (fmt = optional strftime date/time format string)");
+			writeln("  -delete         delete list after import");
+			writeln("  -v              increase verbosity of output");
+			writeln("  -debug          enable debug output");
+			exit(0);
+		}
+		if(opt.indexOf("ex=") == 0) {
+			exclude.push(opt.slice(3).toUpperCase());
 			continue;
 		}
-		if(arg.indexOf("-lib=") == 0) {
-			var lib = arg.slice(5);
+		if(opt.indexOf("lib=") == 0) {
+			var lib = opt.slice(4);
 			if(!file_area.lib[lib]) {
 				alert("Library not found: " + lib);
 				exit(1);
@@ -77,38 +79,38 @@ for(var i = 0; i < argc; i++) {
 			options.auto = true;
 			continue;
 		}
-		if(arg.indexOf("-from=") == 0) {
-			uploader = arg.slice(6);
+		if(opt.indexOf("from=") == 0) {
+			uploader = opt.slice(5);
 			continue;
 		}
-		if(arg.indexOf("-date=") == 0) {
-			date_fmt = arg.slice(6);
+		if(opt.indexOf("date=") == 0) {
+			date_fmt = opt.slice(5);
 			options.date = true;
 			continue;
 		}
-		if(arg.indexOf("-fdate=") == 0) {
-			date_fmt = arg.slice(7);
+		if(opt.indexOf("fdate=") == 0) {
+			date_fmt = opt.slice(6);
 			options.fdate = true;
 			continue;
 		}
-		if(arg.indexOf("-adate=") == 0) {
-			date_fmt = arg.slice(7);
+		if(opt.indexOf("adate=") == 0) {
+			date_fmt = opt.slice(6);
 			options.adate = true;
 			continue;
 		}
-		if(arg == '-' || arg == '-all') {
+		if(opt == "all") {
 			for(var dir in file_area.dir)
 				dir_list.push(dir);
 			options.auto = true;
 			continue;
 		}
-		if(arg[1] == 'v') {
-			var j = 1;
-			while(arg[j++] == 'v')
+		if(opt[0] == 'v') {
+			var j = 0;
+			while(opt[j++] == 'v')
 				verbosity++;
 			continue;
 		}
-		options[arg.slice(1)] = true;
+		options[opt] = true;
 	} else {
 		if(!dir_list.length)
 			dir_list.push(arg);