kvm tools: implement "help xxx" command

'kvm run --help' works fine but 'kvm help run' shows nothing,
this patch implements it.

Acked-by: Prasad Joshi <prasadjoshi124@gmail.com>
Signed-off-by: WANG Cong <amwang@redhat.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Amerigo Wang
2011-05-20 15:01:24 +08:00
committed by Will Deacon
parent cfd63bbb47
commit f6677a1dec
6 changed files with 42 additions and 13 deletions
+5
View File
@@ -4,9 +4,14 @@
struct cmd_struct {
const char *cmd;
int (*fn)(int, const char **, const char *);
void (*help)(void);
int option;
};
extern struct cmd_struct kvm_commands[];
struct cmd_struct *kvm_get_command(struct cmd_struct *command,
const char *cmd);
int handle_command(struct cmd_struct *command, int argc, const char **argv);
#endif
+1
View File
@@ -2,5 +2,6 @@
#define __KVM_RUN_H__
int kvm_cmd_run(int argc, const char **argv, const char *prefix);
void kvm_run_help(void);
#endif
+9 -1
View File
@@ -6,6 +6,14 @@
/* user defined header files */
#include <kvm/kvm-cmd.h>
#include <kvm/kvm-help.h>
#include <kvm/kvm-run.h>
struct cmd_struct kvm_commands[] = {
{ "help", kvm_cmd_help, NULL, 0 },
{ "run", kvm_cmd_run, kvm_run_help, 0 },
{ NULL, NULL, NULL, 0 },
};
/*
* kvm_get_command: Searches the command in an array of the commands and
@@ -20,7 +28,7 @@
* NULL: If the cmd is not matched with any of the command in the command array
* p: Pointer to cmd_struct of the matching command
*/
static struct cmd_struct *kvm_get_command(struct cmd_struct *command,
struct cmd_struct *kvm_get_command(struct cmd_struct *command,
const char *cmd)
{
struct cmd_struct *p = command;
+21 -3
View File
@@ -5,6 +5,7 @@
#include <common-cmds.h>
#include <kvm/util.h>
#include <kvm/kvm-cmd.h>
#include <kvm/kvm-help.h>
@@ -31,13 +32,30 @@ static void list_common_cmds_help(void)
}
}
static void kvm_help(void)
{
printf("\n usage: %s\n\n", kvm_usage_string);
list_common_cmds_help();
printf("\n %s\n\n", kvm_more_info_string);
}
static void help_cmd(const char *cmd)
{
struct cmd_struct *p;
p = kvm_get_command(kvm_commands, cmd);
if (!p)
kvm_help();
else if (p->help)
p->help();
}
int kvm_cmd_help(int argc, const char **argv, const char *prefix)
{
if (!argv || !*argv) {
printf("\n usage: %s\n\n", kvm_usage_string);
list_common_cmds_help();
printf("\n %s\n\n", kvm_more_info_string);
kvm_help();
return 0;
}
help_cmd(argv[0]);
return 0;
}
+5
View File
@@ -395,6 +395,11 @@ static char *host_image(char *cmd_line, size_t size)
return t;
}
void kvm_run_help(void)
{
usage_with_options(run_usage, options);
}
int kvm_cmd_run(int argc, const char **argv, const char *prefix)
{
struct virtio_net_parameters net_params;
+1 -9
View File
@@ -2,18 +2,10 @@
/* user defined header files */
#include <kvm/kvm-cmd.h>
#include <kvm/kvm-help.h>
#include <kvm/kvm-run.h>
static int handle_kvm_command(int argc, char **argv)
{
struct cmd_struct command[] = {
{ "help", kvm_cmd_help, 0 },
{ "run", kvm_cmd_run, 0 },
{ NULL, NULL, 0 },
};
return handle_command(command, argc, (const char **) &argv[0]);
return handle_command(kvm_commands, argc, (const char **) &argv[0]);
}
int main(int argc, char *argv[])