X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=rescue%2Fvirt-rescue.c;h=7c8a57b355e59b768c3249870ff911e6453880b6;hb=69abc787dddbf7855c2871f7f1432563a6af92a1;hp=6224ad7bb1ff47a3530910af6e5664cdbe13a6b0;hpb=d72815578f7b8fea9702902d8562430e8a007a46;p=libguestfs.git diff --git a/rescue/virt-rescue.c b/rescue/virt-rescue.c index 6224ad7..7c8a57b 100644 --- a/rescue/virt-rescue.c +++ b/rescue/virt-rescue.c @@ -1,5 +1,5 @@ /* virt-rescue - * Copyright (C) 2010 Red Hat Inc. + * Copyright (C) 2010-2011 Red Hat Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +20,16 @@ #include #include +#include #include #include #include #include +#include #include +#include +#include "ignore-value.h" #include "progname.h" #include "xvasprintf.h" @@ -36,6 +40,7 @@ guestfs_h *g; int read_only = 0; +int live = 0; int verbose = 0; int keys_from_stdin = 0; int echo_keys = 0; @@ -74,6 +79,7 @@ usage (int status) " --selinux Enable SELinux\n" " -v|--verbose Verbose messages\n" " -V|--version Display version and exit\n" + " -w|--rw Mount read-write\n" " -x Trace libguestfs API calls\n" "For more information, see the manpage %s(1).\n"), program_name, program_name, program_name, @@ -92,6 +98,8 @@ main (int argc, char *argv[]) bindtextdomain (PACKAGE, LOCALEBASEDIR); textdomain (PACKAGE); + parse_config (); + enum { HELP_OPTION = CHAR_MAX + 1 }; static const char *options = "a:c:d:m:rvVx"; @@ -105,6 +113,7 @@ main (int argc, char *argv[]) { "memsize", 1, 0, 'm' }, { "network", 0, 0, 0 }, { "ro", 0, 0, 'r' }, + { "rw", 0, 0, 'w' }, { "selinux", 0, 0, 0 }, { "verbose", 0, 0, 'v' }, { "version", 0, 0, 'V' }, @@ -187,6 +196,10 @@ main (int argc, char *argv[]) OPTION_V; break; + case 'w': + OPTION_w; + break; + case 'x': OPTION_x; break; @@ -239,6 +252,7 @@ main (int argc, char *argv[]) assert (inspector == 0); assert (keys_from_stdin == 0); assert (echo_keys == 0); + assert (live == 0); /* Must be no extra arguments on the command line. */ if (optind != argc) @@ -276,17 +290,9 @@ main (int argc, char *argv[]) * appliance. */ guestfs_set_error_handler (g, NULL, NULL); - guestfs_launch (g); - /* launch() expects guestfsd to start. However, virt-rescue doesn't - * run guestfsd, so this will always fail with ECHILD when the - * appliance exits unexpectedly. - */ - if (errno != ECHILD) { - fprintf (stderr, "%s: %s\n", program_name, guestfs_last_error (g)); - guestfs_close (g); - exit (EXIT_FAILURE); - } + /* We expect launch to fail, so ignore the return value. */ + ignore_value (guestfs_launch (g)); guestfs_close (g);