]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kvm tools: Improve 'lkvm sandbox' syntax
authorSasha Levin <levinsasha928@gmail.com>
Fri, 13 Jan 2012 09:42:05 +0000 (11:42 +0200)
committerPekka Enberg <penberg@kernel.org>
Sun, 15 Jan 2012 13:01:33 +0000 (15:01 +0200)
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>
tools/kvm/builtin-run.c

index 249cf8200c40bb90a72457ba1e74dc4dab607af9..802449ce1e8c5d83176d38c08851a88df4752eeb 100644 (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--;
                }