commit ce5b7c56feb64f28afedf39561cac1a17a3f028c from: Stefan Sperling date: Tue Jul 09 10:49:08 2019 UTC make got/tog list commands if -h or an unknown command is provided commit - 97b3a7beacbda58876c185d6aa2b1b9c305fa6f6 commit + ce5b7c56feb64f28afedf39561cac1a17a3f028c blob - e6a9bf7895318f3de7356a15f9b06c1234b7cbb8 blob + 7f1a01f67aaf5f0a4cab88b726643ca644226353 --- got/got.c +++ got/got.c @@ -73,7 +73,7 @@ struct got_cmd { const char *cmd_alias; }; -__dead static void usage(void); +__dead static void usage(int); __dead static void usage_init(void); __dead static void usage_checkout(void); __dead static void usage_update(void); @@ -126,6 +126,19 @@ static struct got_cmd got_commands[] = { { "cherrypick", cmd_cherrypick, usage_cherrypick, "ch" }, { "backout", cmd_backout, usage_backout, "bo" }, }; + +static void +list_commands(void) +{ + int i; + + fprintf(stderr, "commands:"); + for (i = 0; i < nitems(got_commands); i++) { + struct got_cmd *cmd = &got_commands[i]; + fprintf(stderr, " %s", cmd->cmd_name); + } + fputc('\n', stderr); +} int main(int argc, char *argv[]) @@ -143,7 +156,7 @@ main(int argc, char *argv[]) hflag = 1; break; default: - usage(); + usage(hflag); /* NOTREACHED */ } } @@ -153,7 +166,7 @@ main(int argc, char *argv[]) optind = 0; if (argc <= 0) - usage(); + usage(hflag); signal(SIGINT, catch_sigint); signal(SIGPIPE, catch_sigpipe); @@ -180,13 +193,16 @@ main(int argc, char *argv[]) } fprintf(stderr, "%s: unknown command '%s'\n", getprogname(), argv[0]); + list_commands(); return 1; } __dead static void -usage(void) +usage(int hflag) { fprintf(stderr, "usage: %s [-h] command [arg ...]\n", getprogname()); + if (hflag) + list_commands(); exit(1); } blob - f751d54fdbeba7c6b6020f61dcab94c4080bad40 blob + ab73a28c8793e2580177009a1a28e5e4f4187c4c --- tog/tog.c +++ tog/tog.c @@ -71,7 +71,7 @@ struct tog_cmd { void (*cmd_usage)(void); }; -__dead static void usage(void); +__dead static void usage(int); __dead static void usage_log(void); __dead static void usage_diff(void); __dead static void usage_blame(void); @@ -4468,11 +4468,26 @@ done: got_ref_list_free(&refs); return error; } + +static void +list_commands(void) +{ + int i; + fprintf(stderr, "commands:"); + for (i = 0; i < nitems(tog_commands); i++) { + struct tog_cmd *cmd = &tog_commands[i]; + fprintf(stderr, " %s", cmd->name); + } + fputc('\n', stderr); +} + __dead static void -usage(void) +usage(int hflag) { fprintf(stderr, "usage: %s [-h] [command] [arg ...]\n", getprogname()); + if (hflag) + list_commands(); exit(1); } @@ -4513,7 +4528,7 @@ main(int argc, char *argv[]) hflag = 1; break; default: - usage(); + usage(hflag); /* NOTREACHED */ } } @@ -4525,7 +4540,7 @@ main(int argc, char *argv[]) if (argc == 0) { if (hflag) - usage(); + usage(hflag); /* Build an argument vector which runs a default command. */ cmd = &tog_commands[0]; cmd_argv = make_argv(cmd->name, NULL); @@ -4545,7 +4560,7 @@ main(int argc, char *argv[]) if (cmd == NULL) { fprintf(stderr, "%s: unknown command '%s'\n", getprogname(), argv[0]); - usage(); + list_commands(); return 1; } }