mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
Don't print long usage messages on a command-line error.
In the course of debugging the command-line argument refactoring in previous commits, I found I wasn't quite sure whether PSCP thought I'd given it too many arguments, or too few, because it didn't print an error message saying which: it just printed its giant usage message. Over the last few years I've come to the belief that this is Just Wrong anyway. Printing the whole of a giant help message should only be done when the user asked for it: otherwise, print a short and to-the-point error, and maybe _suggest_ how to get help, but scrolling everything else off the user's screen is not a good response to a typo. I wrote this thought up more fully last year: https://www.chiark.greenend.org.uk/~sgtatham/quasiblog/stop-helping/ So, time to practise what I preach! The PuTTY tools now follow the 'Stop helping!' principle. You can get full help by saying --help. Also, when we do print the help, we now exit(0) rather than exit(1), because there's no reason to report failure: we successfully did what the user asked us for.
This commit is contained in:
parent
74150633f1
commit
ecfa6b2734
5
cmdgen.c
5
cmdgen.c
@ -718,10 +718,11 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* If run with at least one argument _but_ not the required
|
* If run with at least one argument _but_ not the required
|
||||||
* ones, print the usage message and return failure.
|
* ones, fail with an error.
|
||||||
*/
|
*/
|
||||||
if (!infile && keytype == NOKEYGEN) {
|
if (!infile && keytype == NOKEYGEN) {
|
||||||
usage(true);
|
fprintf(stderr, "puttygen: expected an input key file name, "
|
||||||
|
"or -t for a type of key to generate\n");
|
||||||
RETURN(1);
|
RETURN(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
6
pscp.c
6
pscp.c
@ -2236,7 +2236,6 @@ static void usage(void)
|
|||||||
printf(" -logoverwrite\n");
|
printf(" -logoverwrite\n");
|
||||||
printf(" -logappend\n");
|
printf(" -logappend\n");
|
||||||
printf(" control what happens when a log file already exists\n");
|
printf(" control what happens when a log file already exists\n");
|
||||||
cleanup_exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void version(void)
|
void version(void)
|
||||||
@ -2311,6 +2310,7 @@ int psftp_main(CmdlineArgList *arglist)
|
|||||||
strcmp(argstr, "-?") == 0 ||
|
strcmp(argstr, "-?") == 0 ||
|
||||||
strcmp(argstr, "--help") == 0) {
|
strcmp(argstr, "--help") == 0) {
|
||||||
usage();
|
usage();
|
||||||
|
cleanup_exit(0);
|
||||||
} else if (strcmp(argstr, "-V") == 0 ||
|
} else if (strcmp(argstr, "-V") == 0 ||
|
||||||
strcmp(argstr, "--version") == 0) {
|
strcmp(argstr, "--version") == 0) {
|
||||||
version();
|
version();
|
||||||
@ -2351,12 +2351,12 @@ int psftp_main(CmdlineArgList *arglist)
|
|||||||
|
|
||||||
if (list) {
|
if (list) {
|
||||||
if (nscpargs != 1)
|
if (nscpargs != 1)
|
||||||
usage();
|
cmdline_error("expected a single argument with -ls");
|
||||||
get_dir_list(scpargs, nscpargs);
|
get_dir_list(scpargs, nscpargs);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (nscpargs < 2)
|
if (nscpargs < 2)
|
||||||
usage();
|
cmdline_error("expected at least two arguments");
|
||||||
if (nscpargs > 2)
|
if (nscpargs > 2)
|
||||||
targetshouldbedirectory = true;
|
targetshouldbedirectory = true;
|
||||||
|
|
||||||
|
4
psftp.c
4
psftp.c
@ -2565,7 +2565,6 @@ static void usage(void)
|
|||||||
printf(" -logoverwrite\n");
|
printf(" -logoverwrite\n");
|
||||||
printf(" -logappend\n");
|
printf(" -logappend\n");
|
||||||
printf(" control what happens when a log file already exists\n");
|
printf(" control what happens when a log file already exists\n");
|
||||||
cleanup_exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void version(void)
|
static void version(void)
|
||||||
@ -2819,7 +2818,7 @@ int psftp_main(CmdlineArgList *arglist)
|
|||||||
|
|
||||||
if (argstr[0] != '-') {
|
if (argstr[0] != '-') {
|
||||||
if (userhost)
|
if (userhost)
|
||||||
usage();
|
cmdline_error("unexpected extra argument \"%s\"", argstr);
|
||||||
else
|
else
|
||||||
userhost = dupstr(argstr);
|
userhost = dupstr(argstr);
|
||||||
continue;
|
continue;
|
||||||
@ -2837,6 +2836,7 @@ int psftp_main(CmdlineArgList *arglist)
|
|||||||
strcmp(argstr, "-?") == 0 ||
|
strcmp(argstr, "-?") == 0 ||
|
||||||
strcmp(argstr, "--help") == 0) {
|
strcmp(argstr, "--help") == 0) {
|
||||||
usage();
|
usage();
|
||||||
|
cleanup_exit(0);
|
||||||
} else if (strcmp(argstr, "-pgpfp") == 0) {
|
} else if (strcmp(argstr, "-pgpfp") == 0) {
|
||||||
pgp_fingerprints();
|
pgp_fingerprints();
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -218,7 +218,6 @@ static void usage(void)
|
|||||||
printf(" --tty-prompt force tty-based passphrase prompt\n");
|
printf(" --tty-prompt force tty-based passphrase prompt\n");
|
||||||
printf(" --gui-prompt force GUI-based passphrase prompt\n");
|
printf(" --gui-prompt force GUI-based passphrase prompt\n");
|
||||||
printf(" --askpass <prompt> behave like a standalone askpass program\n");
|
printf(" --askpass <prompt> behave like a standalone askpass program\n");
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void version(void)
|
static void version(void)
|
||||||
|
@ -573,7 +573,6 @@ static void usage(void)
|
|||||||
printf(" control what happens when a log file already exists\n");
|
printf(" control what happens when a log file already exists\n");
|
||||||
printf(" -shareexists\n");
|
printf(" -shareexists\n");
|
||||||
printf(" test whether a connection-sharing upstream exists\n");
|
printf(" test whether a connection-sharing upstream exists\n");
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void version(void)
|
static void version(void)
|
||||||
@ -807,7 +806,10 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!cmdline_host_ok(conf)) {
|
if (!cmdline_host_ok(conf)) {
|
||||||
usage();
|
fprintf(stderr, "plink: no valid host name provided\n"
|
||||||
|
"try \"plink --help\" for help\n");
|
||||||
|
cmdline_arg_list_free(arglist);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare_session(conf);
|
prepare_session(conf);
|
||||||
|
@ -189,7 +189,6 @@ static void usage(void)
|
|||||||
printf(" control what happens when a log file already exists\n");
|
printf(" control what happens when a log file already exists\n");
|
||||||
printf(" -shareexists\n");
|
printf(" -shareexists\n");
|
||||||
printf(" test whether a connection-sharing upstream exists\n");
|
printf(" test whether a connection-sharing upstream exists\n");
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void version(void)
|
static void version(void)
|
||||||
@ -350,6 +349,7 @@ int main(int argc, char **argv)
|
|||||||
version();
|
version();
|
||||||
} else if (!strcmp(p, "--help")) {
|
} else if (!strcmp(p, "--help")) {
|
||||||
usage();
|
usage();
|
||||||
|
exit(0);
|
||||||
} else if (!strcmp(p, "-pgpfp")) {
|
} else if (!strcmp(p, "-pgpfp")) {
|
||||||
pgp_fingerprints();
|
pgp_fingerprints();
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -395,7 +395,10 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!cmdline_host_ok(conf)) {
|
if (!cmdline_host_ok(conf)) {
|
||||||
usage();
|
fprintf(stderr, "plink: no valid host name provided\n"
|
||||||
|
"try \"plink --help\" for help\n");
|
||||||
|
cmdline_arg_list_free(arglist);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare_session(conf);
|
prepare_session(conf);
|
||||||
|
Loading…
Reference in New Issue
Block a user