diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2009-07-11 21:20:17 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2009-07-11 21:20:17 +0100 |
commit | 625d0bd56189450f48b6308371bf08ee6312d59f (patch) | |
tree | f09f9d5cb1011e59f2df17835eafd1b4e5dcb91d /fish/reopen.c | |
parent | b48dea6217920ef26e4745a9797c07a21407574f (diff) | |
download | libguestfs-625d0bd56189450f48b6308371bf08ee6312d59f.tar.gz libguestfs-625d0bd56189450f48b6308371bf08ee6312d59f.tar.xz libguestfs-625d0bd56189450f48b6308371bf08ee6312d59f.zip |
Guestfish: Add 'reopen' command to reopen the libguestfs handle.
Diffstat (limited to 'fish/reopen.c')
-rw-r--r-- | fish/reopen.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/fish/reopen.c b/fish/reopen.c new file mode 100644 index 00000000..f2d35c7f --- /dev/null +++ b/fish/reopen.c @@ -0,0 +1,70 @@ +/* guestfish - the filesystem interactive shell + * Copyright (C) 2009 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "fish.h" + +int +do_reopen (const char *cmd, int argc, char *argv[]) +{ + guestfs_h *g2; + int r; + const char *p; + + if (argc > 0) { + fprintf (stderr, _("'reopen' command takes no parameters\n")); + return -1; + } + + /* Open the new handle first, so we can copy the settings from the + * old one to the new one, and also so if it fails we still have an + * open handle. + */ + g2 = guestfs_create (); + if (g2 == NULL) { + fprintf (stderr, _("reopen: guestfs_create: failed to create handle\n")); + return -1; + } + + /* Now copy some of the settings from the old handle. The settings + * we copy are those which are set by guestfish itself. + */ + r = guestfs_get_verbose (g); + if (r >= 0) + guestfs_set_verbose (g2, r); + + r = guestfs_get_autosync (g); + if (r >= 0) + guestfs_set_autosync (g2, r); + + p = guestfs_get_path (g); + if (p) + guestfs_set_path (g2, p); + + /* Close the original handle. */ + guestfs_close (g); + g = g2; + + return 0; +} |