Skip to content

Commit 24f21a4

Browse files
committed
Give better error message on bad arguments
Instead of just printing the huge usage text and hoping the user figures out what was wrong.
1 parent 88c4e20 commit 24f21a4

File tree

4 files changed

+46
-9
lines changed

4 files changed

+46
-9
lines changed

unix/vncconfig/vncconfig.cxx

+20-4
Original file line numberDiff line numberDiff line change
@@ -292,18 +292,34 @@ int main(int argc, char** argv)
292292
if (i >= argc) usage();
293293

294294
char* equal = strchr(argv[i], '=');
295-
if (!equal)
296-
usage();
295+
if (!equal) {
296+
fprintf(stderr, "%s: Invalid parameter syntax '%s'\n",
297+
programName, argv[i]);
298+
fprintf(stderr, "See '%s -help' for more information.\n",
299+
programName);
300+
exit(1);
301+
}
297302

298303
std::string name(argv[i], equal-argv[i]);
299304
std::string value(equal+1);
300305

301306
if (!XVncExtSetParam(dpy, name.c_str(), value.c_str()))
302307
fprintf(stderr, "Setting param %s failed\n",argv[i]);
308+
} else if (argv[i][0] == '-') {
309+
fprintf(stderr, "%s: Unrecognized option '%s'\n",
310+
programName, argv[i]);
311+
fprintf(stderr, "See '%s -help' for more information.\n",
312+
programName);
313+
exit(1);
303314
} else {
304315
char* equal = strchr(argv[i], '=');
305-
if (!equal)
306-
usage();
316+
if (!equal) {
317+
fprintf(stderr, "%s: Invalid parameter syntax '%s'\n",
318+
programName, argv[i]);
319+
fprintf(stderr, "See '%s -help' for more information.\n",
320+
programName);
321+
exit(1);
322+
}
307323

308324
std::string name(argv[i], equal-argv[i]);
309325
std::string value(equal+1);

unix/vncpasswd/vncpasswd.cxx

+6-2
Original file line numberDiff line numberDiff line change
@@ -202,15 +202,19 @@ int main(int argc, char** argv)
202202
} else if (strncmp(argv[i], "-f", 2) == 0) {
203203
return encrypt_pipe();
204204
} else if (argv[i][0] == '-') {
205-
usage();
205+
fprintf(stderr, "%s: Unrecognized option '%s'\n", prog, argv[i]);
206+
fprintf(stderr, "See '%s --help' for more information.\n", prog);
207+
exit(1);
206208
} else if (fname[0] == '\0') {
207209
if (strlen(argv[i]) >= sizeof(fname)) {
208210
fprintf(stderr, "Too long filename specified\n");
209211
return -1;
210212
}
211213
strcpy(fname, argv[i]);
212214
} else {
213-
usage();
215+
fprintf(stderr, "%s: Extra argument '%s'\n", prog, argv[i]);
216+
fprintf(stderr, "See '%s --help' for more information.\n", prog);
217+
exit(1);
214218
}
215219
}
216220

unix/x0vncserver/x0vncserver.cxx

+12-1
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,18 @@ int main(int argc, char** argv)
307307
return 0;
308308
}
309309

310-
usage();
310+
if (argv[i][0] == '-') {
311+
fprintf(stderr, "%s: Unrecognized option '%s'\n",
312+
programName, argv[i]);
313+
fprintf(stderr, "See '%s --help' for more information.\n",
314+
programName);
315+
exit(1);
316+
}
317+
318+
fprintf(stderr, "%s: Extra argument '%s'\n", programName, argv[i]);
319+
fprintf(stderr, "See '%s --help' for more information.\n",
320+
programName);
321+
exit(1);
311322
}
312323

313324
if (!(dpy = XOpenDisplay(displayname))) {

vncviewer/vncviewer.cxx

+8-2
Original file line numberDiff line numberDiff line change
@@ -695,15 +695,21 @@ int main(int argc, char** argv)
695695
}
696696

697697
if (argv[i][0] == '-') {
698+
fprintf(stderr, "\n");
698699
fprintf(stderr, "%s: Unrecognized option '%s'\n",
699700
argv[0], argv[i]);
700701
fprintf(stderr, "See '%s --help' for more information.\n",
701702
argv[0]);
702703
exit(1);
703704
}
704705

705-
if (vncServerName[0] != '\0')
706-
usage(argv[0]);
706+
if (vncServerName[0] != '\0') {
707+
fprintf(stderr, "\n");
708+
fprintf(stderr, "%s: Extra argument '%s'\n", argv[0], argv[i]);
709+
fprintf(stderr, "See '%s --help' for more information.\n",
710+
argv[0]);
711+
exit(0);
712+
}
707713

708714
strncpy(vncServerName, argv[i], VNCSERVERNAMELEN);
709715
vncServerName[VNCSERVERNAMELEN - 1] = '\0';

0 commit comments

Comments
 (0)