10a936c54SPrasad Joshi #include <stdio.h> 20a936c54SPrasad Joshi #include <string.h> 30a936c54SPrasad Joshi 40a936c54SPrasad Joshi /* user defined headers */ 50a936c54SPrasad Joshi #include <common-cmds.h> 60a936c54SPrasad Joshi 70a936c54SPrasad Joshi #include <kvm/util.h> 8f6677a1dSAmerigo Wang #include <kvm/kvm-cmd.h> 92a24f96dSSasha Levin #include <kvm/builtin-help.h> 100a936c54SPrasad Joshi 110a936c54SPrasad Joshi 120a936c54SPrasad Joshi const char kvm_usage_string[] = 13*8d2ff5daSWanlong Gao "lkvm COMMAND [ARGS]"; 140a936c54SPrasad Joshi 150a936c54SPrasad Joshi const char kvm_more_info_string[] = 16*8d2ff5daSWanlong Gao "See 'lkvm help COMMAND' for more information on a specific command."; 170a936c54SPrasad Joshi 180a936c54SPrasad Joshi 190a936c54SPrasad Joshi static void list_common_cmds_help(void) 200a936c54SPrasad Joshi { 210a936c54SPrasad Joshi unsigned int i, longest = 0; 220a936c54SPrasad Joshi 230a936c54SPrasad Joshi for (i = 0; i < ARRAY_SIZE(common_cmds); i++) { 240a936c54SPrasad Joshi if (longest < strlen(common_cmds[i].name)) 250a936c54SPrasad Joshi longest = strlen(common_cmds[i].name); 260a936c54SPrasad Joshi } 270a936c54SPrasad Joshi 280a936c54SPrasad Joshi puts(" The most commonly used kvm commands are:"); 290a936c54SPrasad Joshi for (i = 0; i < ARRAY_SIZE(common_cmds); i++) { 300a936c54SPrasad Joshi printf(" %-*s ", longest, common_cmds[i].name); 310a936c54SPrasad Joshi puts(common_cmds[i].help); 320a936c54SPrasad Joshi } 330a936c54SPrasad Joshi } 340a936c54SPrasad Joshi 35f6677a1dSAmerigo Wang static void kvm_help(void) 360a936c54SPrasad Joshi { 37ac41895eSSasha Levin printf("\n To start a simple non-privileged shell run 'kvm run'\n\n" 38ac41895eSSasha Levin "usage: %s\n\n", kvm_usage_string); 390a936c54SPrasad Joshi list_common_cmds_help(); 400a936c54SPrasad Joshi printf("\n %s\n\n", kvm_more_info_string); 41f6677a1dSAmerigo Wang } 42f6677a1dSAmerigo Wang 43f6677a1dSAmerigo Wang 44f6677a1dSAmerigo Wang static void help_cmd(const char *cmd) 45f6677a1dSAmerigo Wang { 46f6677a1dSAmerigo Wang struct cmd_struct *p; 47f6677a1dSAmerigo Wang p = kvm_get_command(kvm_commands, cmd); 48f6677a1dSAmerigo Wang if (!p) 49f6677a1dSAmerigo Wang kvm_help(); 50f6677a1dSAmerigo Wang else if (p->help) 51f6677a1dSAmerigo Wang p->help(); 52f6677a1dSAmerigo Wang } 53f6677a1dSAmerigo Wang 54f6677a1dSAmerigo Wang int kvm_cmd_help(int argc, const char **argv, const char *prefix) 55f6677a1dSAmerigo Wang { 56f6677a1dSAmerigo Wang if (!argv || !*argv) { 57f6677a1dSAmerigo Wang kvm_help(); 580a936c54SPrasad Joshi return 0; 590a936c54SPrasad Joshi } 60f6677a1dSAmerigo Wang help_cmd(argv[0]); 610a936c54SPrasad Joshi return 0; 620a936c54SPrasad Joshi } 63