void usage(char **argv) { struct usage_help *help = NULL; char *arg = argv[0]; char *p; p = basename(arg); printf("\n" "%s version %s\n\n" "usage:\n", p, VERSION_STRING); if (argv[1]) help = find_help(argv[1]); if (help) { printf(help->long_help, p); goto out; } printf(" %s [COMMAND] ...\n\n" " commands:\n", p); help = usage_help; while (help->name) { printf(" %s - %s\n", help->name, help->short_help); help++; } out: printf("\n"); exit(-1); }
HelpNode *all_help() { HelpNode *node = new HelpNode(NULL, main_help_str); for (int i = 0; keywords[i]; i++) { HelpNode *n = new HelpNode(node, keywords[i]); find_help(keywords[i], n); } return node; }
void help(string keyword) { HelpNode *node; int h; if (keyword == "all") { node = all_help(); h = 0; } else if (keyword == "workflow") { node = new HelpNode(NULL, flow_help_str); h = 0; } else if (keyword == "expressions") { node = new HelpNode(NULL, expr_help_str); h = 0; } else { node = find_help(keyword); h = 2; } if (node) { HelpFormatScreen(cout, *node, h); delete node; } else { cout << "help(" << keyword << "): Unknown keyword: " << keyword << endl << "Possibilities are:" << endl; size_t i = 0; while(keywords[i]) { if(i!=0) cout << ", "; cout << keywords[i]; ++i; } cout << endl; cout << "Or one of \"all\", \"workflow\", \"expressions\"."; cout << endl; } }