- /*
- * command help (long version)
- */
- for (uint8_t i = 1; i < argc; ++i) {
- if ((cmdtp = find_cmd(argv[i], tbl_start)) != NULL) {
- cmd_usage(cmdtp);
- } else {
- printf_P(PSTR("Unknown command '%s' - try 'help'"
- " without arguments.\n\n"), argv[i]
- );
- return CMD_RET_FAILURE;
+ if (argc == 0)
+ print_usage_line(cmd_list[cmdi], maxlen_cmd);
+ else {
+ for (uint_fast8_t argi = 0; argi < argc; argi++) {
+ if (((options & OPT_NAME) &&
+ strcasestr_P2(cmd_list[cmdi]->name, argv[argi])) ||
+ ((options & OPT_USAGE) &&
+ strcasestr_P2(cmd_list[cmdi]->usage, argv[argi]))) {
+ print_usage_line(cmd_list[cmdi], maxlen_cmd);
+ }
+ }
+ }
+ }
+ } else {
+ /* command help (long version) */
+ for (uint_fast8_t argi = 0; argi < argc; ++argi) {
+ uint_fast8_t got = 0;
+
+ for (uint_fast8_t cmdi = 0; cmdi < cmd_items; cmdi++) {
+ if (strcmp_P(argv[argi], cmd_list[cmdi]->name) == 0) {
+ cmd_usage(cmd_list[cmdi]);
+ got = 1;
+ }
+ }
+ if (!got) {
+ printf_P(PSTR("Unknown command '%s' - try 'help help'\n"),
+ argv[argi]);
+ res = CMD_RET_FAILURE;
+ break;
+ }