kvm tools: Improve 'lkvm sandbox' syntax

This patch adds the possibility to run commands using the default parameter
in 'lkvm sandbox'. For example, a user would now be able to run:

	'lkvm sandbox firefox'

And have a sandboxed firefox instance start in the guest.

For commands with parameters, we still need to use dashdash to pass the
parameters (similar to 'git bisect run'). For example:

	'lkvm sandbox -- ls -al /bin

Suggested-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Sasha Levin
2015-06-01 16:39:50 +01:00
committed by Will Deacon
parent ca08826821
commit e074766566
+17 -5
View File
@@ -114,6 +114,7 @@ static const char * const run_usage[] = {
};
enum {
KVM_RUN_DEFAULT,
KVM_RUN_SANDBOX,
};
@@ -904,16 +905,27 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
}
}
if (kernel_filename) {
if ((kvm_run_wrapper == KVM_RUN_DEFAULT && kernel_filename) ||
(kvm_run_wrapper == KVM_RUN_SANDBOX && sandbox)) {
fprintf(stderr, "Cannot handle parameter: "
"%s\n", argv[0]);
usage_with_options(run_usage, options);
return EINVAL;
}
/* first unhandled parameter is treated as a kernel
image
*/
kernel_filename = argv[0];
if (kvm_run_wrapper == KVM_RUN_SANDBOX) {
/*
* first unhandled parameter is treated as
* sandbox command
*/
sandbox = DEFAULT_SANDBOX_FILENAME;
kvm_run_write_sandbox_cmd(argv, argc);
} else {
/*
* first unhandled parameter is treated as a kernel
* image
*/
kernel_filename = argv[0];
}
argv++;
argc--;
}