X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=fish%2Fcmds.c;h=7b1386fa7f1af2d19c2bc8b57d8a45f2d682b596;hp=6c66f0ac3a26dd4619b555080308737ba3b241ef;hb=8f9f02d483b87c787d089cf9329f5f1b81d3a77e;hpb=43db06ea892cc157324a6b837ca430607441c509 diff --git a/fish/cmds.c b/fish/cmds.c index 6c66f0a..7b1386f 100644 --- a/fish/cmds.c +++ b/fish/cmds.c @@ -63,6 +63,7 @@ void list_commands (void) printf ("%-20s %s\n", "command", "run a command from the guest filesystem"); printf ("%-20s %s\n", "command-lines", "run a command, returning lines"); printf ("%-20s %s\n", "config", "add qemu parameters"); + printf ("%-20s %s\n", "debug", "debugging and internals"); printf ("%-20s %s\n", "download", "download a file to the local machine"); printf ("%-20s %s\n", "exists", "test if file or directory exists"); printf ("%-20s %s\n", "file", "determine file type"); @@ -92,6 +93,9 @@ void list_commands (void) printf ("%-20s %s\n", "mkdir-p", "create a directory and parents"); printf ("%-20s %s\n", "mkfs", "make a filesystem"); printf ("%-20s %s\n", "mount", "mount a guest disk at a position in the filesystem"); + printf ("%-20s %s\n", "mount-options", "mount a guest disk with mount options"); + printf ("%-20s %s\n", "mount-ro", "mount a guest disk, read-only"); + printf ("%-20s %s\n", "mount-vfs", "mount a guest disk with mount options and vfstype"); printf ("%-20s %s\n", "mounts", "show mounted filesystems"); printf ("%-20s %s\n", "pvcreate", "create an LVM physical volume"); printf ("%-20s %s\n", "pvs", "list the LVM physical volumes (PVs)"); @@ -396,6 +400,18 @@ void display_command (const char *cmd) if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0) pod2text ("tgz-out - pack directory into compressed tarball", " tgz-out \n\nThis command packs the contents of C and downloads\nit to local file C.\n\nTo download an uncompressed tarball, use C."); else + if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0) + pod2text ("mount-ro - mount a guest disk, read-only", " mount-ro \n\nThis is the same as the C command, but it\nmounts the filesystem with the read-only (I<-o ro>) flag."); + else + if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0) + pod2text ("mount-options - mount a guest disk with mount options", " mount-options \n\nThis is the same as the C command, but it\nallows you to set the mount options as for the\nL I<-o> flag."); + else + if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0) + pod2text ("mount-vfs - mount a guest disk with mount options and vfstype", " mount-vfs \n\nThis is the same as the C command, but it\nallows you to set both the mount options and the vfstype\nas for the L I<-o> and I<-t> flags."); + else + if (strcasecmp (cmd, "debug") == 0) + pod2text ("debug - debugging and internals", " debug \n\nThe C command exposes some internals of\nC (the guestfs daemon) that runs inside the\nqemu subprocess.\n\nThere is no comprehensive help for this command. You have\nto look at the file C in the libguestfs source\nto find out what you can do."); + else display_builtin_command (cmd); } @@ -1917,6 +1933,79 @@ static int run_tgz_out (const char *cmd, int argc, char *argv[]) return r; } +static int run_mount_ro (const char *cmd, int argc, char *argv[]) +{ + int r; + const char *device; + const char *mountpoint; + if (argc != 2) { + fprintf (stderr, "%s should have 2 parameter(s)\n", cmd); + fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd); + return -1; + } + device = argv[0]; + mountpoint = argv[1]; + r = guestfs_mount_ro (g, device, mountpoint); + return r; +} + +static int run_mount_options (const char *cmd, int argc, char *argv[]) +{ + int r; + const char *options; + const char *device; + const char *mountpoint; + if (argc != 3) { + fprintf (stderr, "%s should have 3 parameter(s)\n", cmd); + fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd); + return -1; + } + options = argv[0]; + device = argv[1]; + mountpoint = argv[2]; + r = guestfs_mount_options (g, options, device, mountpoint); + return r; +} + +static int run_mount_vfs (const char *cmd, int argc, char *argv[]) +{ + int r; + const char *options; + const char *vfstype; + const char *device; + const char *mountpoint; + if (argc != 4) { + fprintf (stderr, "%s should have 4 parameter(s)\n", cmd); + fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd); + return -1; + } + options = argv[0]; + vfstype = argv[1]; + device = argv[2]; + mountpoint = argv[3]; + r = guestfs_mount_vfs (g, options, vfstype, device, mountpoint); + return r; +} + +static int run_debug (const char *cmd, int argc, char *argv[]) +{ + char *r; + const char *subcmd; + char **extraargs; + if (argc != 2) { + fprintf (stderr, "%s should have 2 parameter(s)\n", cmd); + fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd); + return -1; + } + subcmd = argv[0]; + extraargs = parse_string_list (argv[1]); + r = guestfs_debug (g, subcmd, extraargs); + if (r == NULL) return -1; + printf ("%s\n", r); + free (r); + return 0; +} + int run_action (const char *cmd, int argc, char *argv[]) { if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0) @@ -2189,6 +2278,18 @@ int run_action (const char *cmd, int argc, char *argv[]) if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0) return run_tgz_out (cmd, argc, argv); else + if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0) + return run_mount_ro (cmd, argc, argv); + else + if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0) + return run_mount_options (cmd, argc, argv); + else + if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0) + return run_mount_vfs (cmd, argc, argv); + else + if (strcasecmp (cmd, "debug") == 0) + return run_debug (cmd, argc, argv); + else { fprintf (stderr, "%s: unknown command\n", cmd); return -1;