1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-13 09:07:33 -05: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:
Simon Tatham
2024-09-25 16:17:07 +01:00
parent 74150633f1
commit ecfa6b2734
6 changed files with 17 additions and 12 deletions

View File

@ -2565,7 +2565,6 @@ static void usage(void)
printf(" -logoverwrite\n");
printf(" -logappend\n");
printf(" control what happens when a log file already exists\n");
cleanup_exit(1);
}
static void version(void)
@ -2819,7 +2818,7 @@ int psftp_main(CmdlineArgList *arglist)
if (argstr[0] != '-') {
if (userhost)
usage();
cmdline_error("unexpected extra argument \"%s\"", argstr);
else
userhost = dupstr(argstr);
continue;
@ -2837,6 +2836,7 @@ int psftp_main(CmdlineArgList *arglist)
strcmp(argstr, "-?") == 0 ||
strcmp(argstr, "--help") == 0) {
usage();
cleanup_exit(0);
} else if (strcmp(argstr, "-pgpfp") == 0) {
pgp_fingerprints();
return 1;