static void help_completer(struct i9e_completion_info *ci,
struct i9e_completion_result *result)
{
+ char *opts[] = {LSG_AUDIOD_CMD_HELP_OPTS, NULL};
+
+ if (ci->word[0] == '-') {
+ i9e_complete_option(opts, ci, result);
+ return;
+ }
result->matches = i9e_complete_commands(ci->word, audiod_completers);
}
#include "audiod.lsg.h"
#include "para.h"
+#include "lsu.h"
#include "audiod_cmd.lsg.h"
#include "list.h"
#include "sched.h"
return para_strdup(status);
}
-static int dump_commands(int fd)
-{
- char *buf = para_strdup(""), *tmp = NULL;
- int i;
- ssize_t ret;
- const struct lls_command *cmd;
-
- for (i = 1; (cmd = lls_cmd(i, audiod_cmd_suite)); i++) {
- tmp = make_message("%s%s\t%s\n", buf, lls_command_name(cmd),
- lls_purpose(cmd));
- free(buf);
- buf = tmp;
- }
- ret = client_write(fd, buf);
- free(buf);
- return ret;
-}
-
static int com_help(int fd, struct lls_parse_result *lpr)
{
+ char *buf;
int ret;
- char *buf, *errctx;
- const struct lls_command *cmd;
+ const struct lls_opt_result *r =
+ lls_opt_result(LSG_AUDIOD_CMD_HELP_OPT_LONG, lpr);
+ bool long_help = lls_opt_given(r);
- ret = lls(lls_check_arg_count(lpr, 0, 1, &errctx));
- if (ret < 0) {
- if (errctx) {
- buf = make_message("%s\n", errctx);
- client_write(fd, buf);
- free(buf);
- free(errctx);
- }
- return ret;
- }
- if (lls_num_inputs(lpr) == 0)
- return dump_commands(fd);
- ret = lls(lls_lookup_subcmd(lls_input(0, lpr), audiod_cmd_suite,
- &errctx));
- if (ret < 0) {
- buf = make_message("%s: %s\nAvailable commands:\n", errctx?
- errctx : lls_input(0, lpr), para_strerror(-ret));
- if (client_write(fd, buf) >= 0)
- dump_commands(fd);
- free(errctx);
- free(buf);
- goto out;
- }
- cmd = lls_cmd(ret, audiod_cmd_suite);
- buf = lls_long_help(cmd);
- assert(buf);
+ lsu_com_help(long_help, lpr, audiod_cmd_suite, NULL, &buf, NULL);
ret = client_write(fd, buf);
free(buf);
-out:
return ret < 0? ret : 0;
}
EXPORT_AUDIOD_CMD_HANDLER(help)
[/description]
[subcommand help]
- purpose = display command list or help for given command
+ purpose = list available commands or print command-specific help
non-opts-name = [subcommand]
[description]
- When I was younger, so much younger than today, I never needed
- anybody's help in any way. But now these days are gone, I'm not so self
- assured. Now I find I've changed my mind and opened up the doors. --
- Beatles: Help
+ When executed without any arguments, the available audiod commands
+ are listed. Otherwise, if the first argument is the name of an audiod
+ command, the description of this command is shown.
[/description]
+ m4_include(`long-help.m4')
[subcommand grab]
purpose = grab the audio stream