xref: /kvmtool/builtin-help.c (revision ee8b14567e34eb009af2faca37b4a683bd23a2c9)
1 #include <stdio.h>
2 #include <string.h>
3 
4 /* user defined headers */
5 #include <common-cmds.h>
6 
7 #include <kvm/util.h>
8 #include <kvm/kvm-cmd.h>
9 #include <kvm/builtin-help.h>
10 #include <kvm/kvm.h>
11 
12 
13 const char kvm_usage_string[] =
14 	"lkvm COMMAND [ARGS]";
15 
16 const char kvm_more_info_string[] =
17 	"See 'lkvm help COMMAND' for more information on a specific command.";
18 
19 
list_common_cmds_help(void)20 static void list_common_cmds_help(void)
21 {
22 	unsigned int i, longest = 0;
23 
24 	for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
25 		if (longest < strlen(common_cmds[i].name))
26 			longest = strlen(common_cmds[i].name);
27 	}
28 
29 	puts(" The most commonly used lkvm commands are:");
30 	for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
31 		printf("   %-*s   ", longest, common_cmds[i].name);
32 		puts(common_cmds[i].help);
33 	}
34 }
35 
kvm_help(void)36 static void kvm_help(void)
37 {
38 	printf("\n To start a simple non-privileged shell run '%s run'\n\n"
39 		"usage: %s\n\n", KVM_BINARY_NAME, kvm_usage_string);
40 	list_common_cmds_help();
41 	printf("\n %s\n\n", kvm_more_info_string);
42 }
43 
44 
help_cmd(const char * cmd)45 static void help_cmd(const char *cmd)
46 {
47 	struct cmd_struct *p;
48 	p = kvm_get_command(kvm_commands, cmd);
49 	if (!p)
50 		kvm_help();
51 	else if (p->help)
52 		p->help();
53 }
54 
kvm_cmd_help(int argc,const char ** argv,const char * prefix)55 int kvm_cmd_help(int argc, const char **argv, const char *prefix)
56 {
57 	if (!argv || !*argv) {
58 		kvm_help();
59 		return 0;
60 	}
61 	help_cmd(argv[0]);
62 	return 0;
63 }
64