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