1 /* libguestfs generated file
2 * WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
3 * ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
5 * Copyright (C) 2009 Red Hat Inc.
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30 void list_commands (void)
32 printf (" %-16s %s\n", "Command", "Description");
33 list_builtin_commands ();
34 printf ("%-20s %s\n", "add-cdrom", "add a CD-ROM disk image to examine");
35 printf ("%-20s %s\n", "add-drive", "add an image to examine or modify");
36 printf ("%-20s %s\n", "aug-close", "close the current Augeas handle");
37 printf ("%-20s %s\n", "aug-defnode", "define an Augeas node");
38 printf ("%-20s %s\n", "aug-defvar", "define an Augeas variable");
39 printf ("%-20s %s\n", "aug-get", "look up the value of an Augeas path");
40 printf ("%-20s %s\n", "aug-init", "create a new Augeas handle");
41 printf ("%-20s %s\n", "aug-insert", "insert a sibling Augeas node");
42 printf ("%-20s %s\n", "aug-load", "load files into the tree");
43 printf ("%-20s %s\n", "aug-ls", "list Augeas nodes under a path");
44 printf ("%-20s %s\n", "aug-match", "return Augeas nodes which match path");
45 printf ("%-20s %s\n", "aug-mv", "move Augeas node");
46 printf ("%-20s %s\n", "aug-rm", "remove an Augeas path");
47 printf ("%-20s %s\n", "aug-save", "write all pending Augeas changes to disk");
48 printf ("%-20s %s\n", "aug-set", "set Augeas path to value");
49 printf ("%-20s %s\n", "blockdev-flushbufs", "flush device buffers");
50 printf ("%-20s %s\n", "blockdev-getbsz", "get blocksize of block device");
51 printf ("%-20s %s\n", "blockdev-getro", "is block device set to read-only");
52 printf ("%-20s %s\n", "blockdev-getsize64", "get total size of device in bytes");
53 printf ("%-20s %s\n", "blockdev-getss", "get sectorsize of block device");
54 printf ("%-20s %s\n", "blockdev-getsz", "get total size of device in 512-byte sectors");
55 printf ("%-20s %s\n", "blockdev-rereadpt", "reread partition table");
56 printf ("%-20s %s\n", "blockdev-setbsz", "set blocksize of block device");
57 printf ("%-20s %s\n", "blockdev-setro", "set block device to read-only");
58 printf ("%-20s %s\n", "blockdev-setrw", "set block device to read-write");
59 printf ("%-20s %s\n", "cat", "list the contents of a file");
60 printf ("%-20s %s\n", "checksum", "compute MD5, SHAx or CRC checksum of file");
61 printf ("%-20s %s\n", "chmod", "change file mode");
62 printf ("%-20s %s\n", "chown", "change file owner and group");
63 printf ("%-20s %s\n", "command", "run a command from the guest filesystem");
64 printf ("%-20s %s\n", "command-lines", "run a command, returning lines");
65 printf ("%-20s %s\n", "config", "add qemu parameters");
66 printf ("%-20s %s\n", "cp", "copy a file");
67 printf ("%-20s %s\n", "cp-a", "copy a file or directory recursively");
68 printf ("%-20s %s\n", "debug", "debugging and internals");
69 printf ("%-20s %s\n", "dmesg", "return kernel messages");
70 printf ("%-20s %s\n", "download", "download a file to the local machine");
71 printf ("%-20s %s\n", "drop-caches", "drop kernel page cache, dentries and inodes");
72 printf ("%-20s %s\n", "equal", "test if two files have equal contents");
73 printf ("%-20s %s\n", "exists", "test if file or directory exists");
74 printf ("%-20s %s\n", "file", "determine file type");
75 printf ("%-20s %s\n", "fsck", "run the filesystem checker");
76 printf ("%-20s %s\n", "get-autosync", "get autosync mode");
77 printf ("%-20s %s\n", "get-e2label", "get the ext2/3/4 filesystem label");
78 printf ("%-20s %s\n", "get-e2uuid", "get the ext2/3/4 filesystem UUID");
79 printf ("%-20s %s\n", "get-path", "get the search path");
80 printf ("%-20s %s\n", "get-qemu", "get the qemu binary");
81 printf ("%-20s %s\n", "get-state", "get the current state");
82 printf ("%-20s %s\n", "get-verbose", "get verbose mode");
83 printf ("%-20s %s\n", "grub-install", "install GRUB");
84 printf ("%-20s %s\n", "hexdump", "dump a file in hexadecimal");
85 printf ("%-20s %s\n", "is-busy", "is busy processing a command");
86 printf ("%-20s %s\n", "is-config", "is in configuration state");
87 printf ("%-20s %s\n", "is-dir", "test if file exists");
88 printf ("%-20s %s\n", "is-file", "test if file exists");
89 printf ("%-20s %s\n", "is-launching", "is launching subprocess");
90 printf ("%-20s %s\n", "is-ready", "is ready to accept commands");
91 printf ("%-20s %s\n", "kill-subprocess", "kill the qemu subprocess");
92 printf ("%-20s %s\n", "launch", "launch the qemu subprocess");
93 printf ("%-20s %s\n", "list-devices", "list the block devices");
94 printf ("%-20s %s\n", "list-partitions", "list the partitions");
95 printf ("%-20s %s\n", "ll", "list the files in a directory (long format)");
96 printf ("%-20s %s\n", "ls", "list the files in a directory");
97 printf ("%-20s %s\n", "lstat", "get file information for a symbolic link");
98 printf ("%-20s %s\n", "lvcreate", "create an LVM volume group");
99 printf ("%-20s %s\n", "lvm-remove-all", "remove all LVM LVs, VGs and PVs");
100 printf ("%-20s %s\n", "lvremove", "remove an LVM logical volume");
101 printf ("%-20s %s\n", "lvs", "list the LVM logical volumes (LVs)");
102 printf ("%-20s %s\n", "lvs-full", "list the LVM logical volumes (LVs)");
103 printf ("%-20s %s\n", "mkdir", "create a directory");
104 printf ("%-20s %s\n", "mkdir-p", "create a directory and parents");
105 printf ("%-20s %s\n", "mkfs", "make a filesystem");
106 printf ("%-20s %s\n", "mount", "mount a guest disk at a position in the filesystem");
107 printf ("%-20s %s\n", "mount-options", "mount a guest disk with mount options");
108 printf ("%-20s %s\n", "mount-ro", "mount a guest disk, read-only");
109 printf ("%-20s %s\n", "mount-vfs", "mount a guest disk with mount options and vfstype");
110 printf ("%-20s %s\n", "mounts", "show mounted filesystems");
111 printf ("%-20s %s\n", "mv", "move a file");
112 printf ("%-20s %s\n", "ping-daemon", "ping the guest daemon");
113 printf ("%-20s %s\n", "pvcreate", "create an LVM physical volume");
114 printf ("%-20s %s\n", "pvremove", "remove an LVM physical volume");
115 printf ("%-20s %s\n", "pvs", "list the LVM physical volumes (PVs)");
116 printf ("%-20s %s\n", "pvs-full", "list the LVM physical volumes (PVs)");
117 printf ("%-20s %s\n", "read-lines", "read file as lines");
118 printf ("%-20s %s\n", "rm", "remove a file");
119 printf ("%-20s %s\n", "rm-rf", "remove a file or directory recursively");
120 printf ("%-20s %s\n", "rmdir", "remove a directory");
121 printf ("%-20s %s\n", "set-autosync", "set autosync mode");
122 printf ("%-20s %s\n", "set-e2label", "set the ext2/3/4 filesystem label");
123 printf ("%-20s %s\n", "set-e2uuid", "set the ext2/3/4 filesystem UUID");
124 printf ("%-20s %s\n", "set-path", "set the search path");
125 printf ("%-20s %s\n", "set-qemu", "set the qemu binary");
126 printf ("%-20s %s\n", "set-verbose", "set verbose mode");
127 printf ("%-20s %s\n", "sfdisk", "create partitions on a block device");
128 printf ("%-20s %s\n", "stat", "get file information");
129 printf ("%-20s %s\n", "statvfs", "get file system statistics");
130 printf ("%-20s %s\n", "strings", "print the printable strings in a file");
131 printf ("%-20s %s\n", "strings-e", "print the printable strings in a file");
132 printf ("%-20s %s\n", "sync", "sync disks, writes are flushed through to the disk image");
133 printf ("%-20s %s\n", "tar-in", "unpack tarfile to directory");
134 printf ("%-20s %s\n", "tar-out", "pack directory into tarfile");
135 printf ("%-20s %s\n", "tgz-in", "unpack compressed tarball to directory");
136 printf ("%-20s %s\n", "tgz-out", "pack directory into compressed tarball");
137 printf ("%-20s %s\n", "touch", "update file timestamps or create a new file");
138 printf ("%-20s %s\n", "tune2fs-l", "get ext2/ext3/ext4 superblock details");
139 printf ("%-20s %s\n", "umount", "unmount a filesystem");
140 printf ("%-20s %s\n", "umount-all", "unmount all filesystems");
141 printf ("%-20s %s\n", "upload", "upload a file from the local machine");
142 printf ("%-20s %s\n", "vgcreate", "create an LVM volume group");
143 printf ("%-20s %s\n", "vgremove", "remove an LVM volume group");
144 printf ("%-20s %s\n", "vgs", "list the LVM volume groups (VGs)");
145 printf ("%-20s %s\n", "vgs-full", "list the LVM volume groups (VGs)");
146 printf ("%-20s %s\n", "write-file", "create a file");
147 printf ("%-20s %s\n", "zero", "write zeroes to the device");
148 printf (" Use -h <cmd> / help <cmd> to show detailed help for a command.\n");
151 void display_command (const char *cmd)
153 if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
154 pod2text ("launch - launch the qemu subprocess", " launch\n\nInternally libguestfs is implemented by running a virtual machine\nusing L<qemu(1)>.\n\nYou should call this after configuring the handle\n(eg. adding drives) but before performing any actions.\n\nYou can use 'run' as an alias for this command.");
156 if (strcasecmp (cmd, "kill_subprocess") == 0 || strcasecmp (cmd, "kill-subprocess") == 0)
157 pod2text ("kill-subprocess - kill the qemu subprocess", " kill-subprocess\n\nThis kills the qemu subprocess. You should never need to call this.");
159 if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
160 pod2text ("add-drive - add an image to examine or modify", " add-drive <filename>\n\nThis function adds a virtual machine disk image C<filename> to the\nguest. The first time you call this function, the disk appears as IDE\ndisk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and\nso on.\n\nYou don't necessarily need to be root when using libguestfs. However\nyou obviously do need sufficient permissions to access the filename\nfor whatever operations you want to perform (ie. read access if you\njust want to read the image or write access if you want to modify the\nimage).\n\nThis is equivalent to the qemu parameter C<-drive file=filename>.\n\nYou can use 'add' as an alias for this command.");
162 if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
163 pod2text ("add-cdrom - add a CD-ROM disk image to examine", " add-cdrom <filename>\n\nThis function adds a virtual CD-ROM disk image to the guest.\n\nThis is equivalent to the qemu parameter C<-cdrom filename>.\n\nYou can use 'cdrom' as an alias for this command.");
165 if (strcasecmp (cmd, "config") == 0)
166 pod2text ("config - add qemu parameters", " config <qemuparam> <qemuvalue>\n\nThis can be used to add arbitrary qemu command line parameters\nof the form C<-param value>. Actually it's not quite arbitrary - we\nprevent you from setting some parameters which would interfere with\nparameters that we use.\n\nThe first character of C<param> string must be a C<-> (dash).\n\nC<value> can be NULL.");
168 if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0)
169 pod2text ("set-qemu - set the qemu binary", " set-qemu <qemu>\n\nSet the qemu binary that we will use.\n\nThe default is chosen when the library was compiled by the\nconfigure script.\n\nYou can also override this by setting the C<LIBGUESTFS_QEMU>\nenvironment variable.\n\nThe string C<qemu> is stashed in the libguestfs handle, so the caller\nmust make sure it remains valid for the lifetime of the handle.\n\nSetting C<qemu> to C<NULL> restores the default qemu binary.\n\nYou can use 'qemu' as an alias for this command.");
171 if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0)
172 pod2text ("get-qemu - get the qemu binary", " get-qemu\n\nReturn the current qemu binary.\n\nThis is always non-NULL. If it wasn't set already, then this will\nreturn the default qemu binary name.");
174 if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0)
175 pod2text ("set-path - set the search path", " set-path <path>\n\nSet the path that libguestfs searches for kernel and initrd.img.\n\nThe default is C<$libdir/guestfs> unless overridden by setting\nC<LIBGUESTFS_PATH> environment variable.\n\nThe string C<path> is stashed in the libguestfs handle, so the caller\nmust make sure it remains valid for the lifetime of the handle.\n\nSetting C<path> to C<NULL> restores the default path.\n\nYou can use 'path' as an alias for this command.");
177 if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0)
178 pod2text ("get-path - get the search path", " get-path\n\nReturn the current search path.\n\nThis is always non-NULL. If it wasn't set already, then this will\nreturn the default path.");
180 if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0)
181 pod2text ("set-autosync - set autosync mode", " set-autosync <autosync>\n\nIf C<autosync> is true, this enables autosync. Libguestfs will make a\nbest effort attempt to run C<umount_all> followed by\nC<sync> when the handle is closed\n(also if the program exits without closing handles).\n\nThis is disabled by default (except in guestfish where it is\nenabled by default).\n\nYou can use 'autosync' as an alias for this command.");
183 if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0)
184 pod2text ("get-autosync - get autosync mode", " get-autosync\n\nGet the autosync flag.");
186 if (strcasecmp (cmd, "set_verbose") == 0 || strcasecmp (cmd, "set-verbose") == 0 || strcasecmp (cmd, "verbose") == 0)
187 pod2text ("set-verbose - set verbose mode", " set-verbose <verbose>\n\nIf C<verbose> is true, this turns on verbose messages (to C<stderr>).\n\nVerbose messages are disabled unless the environment variable\nC<LIBGUESTFS_DEBUG> is defined and set to C<1>.\n\nYou can use 'verbose' as an alias for this command.");
189 if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0)
190 pod2text ("get-verbose - get verbose mode", " get-verbose\n\nThis returns the verbose messages flag.");
192 if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0)
193 pod2text ("is-ready - is ready to accept commands", " is-ready\n\nThis returns true iff this handle is ready to accept commands\n(in the C<READY> state).\n\nFor more information on states, see L<guestfs(3)>.");
195 if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0)
196 pod2text ("is-config - is in configuration state", " is-config\n\nThis returns true iff this handle is being configured\n(in the C<CONFIG> state).\n\nFor more information on states, see L<guestfs(3)>.");
198 if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0)
199 pod2text ("is-launching - is launching subprocess", " is-launching\n\nThis returns true iff this handle is launching the subprocess\n(in the C<LAUNCHING> state).\n\nFor more information on states, see L<guestfs(3)>.");
201 if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0)
202 pod2text ("is-busy - is busy processing a command", " is-busy\n\nThis returns true iff this handle is busy processing a command\n(in the C<BUSY> state).\n\nFor more information on states, see L<guestfs(3)>.");
204 if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0)
205 pod2text ("get-state - get the current state", " get-state\n\nThis returns the current state as an opaque integer. This is\nonly useful for printing debug and internal error messages.\n\nFor more information on states, see L<guestfs(3)>.");
207 if (strcasecmp (cmd, "mount") == 0)
208 pod2text ("mount - mount a guest disk at a position in the filesystem", " mount <device> <mountpoint>\n\nMount a guest disk at a position in the filesystem. Block devices\nare named C</dev/sda>, C</dev/sdb> and so on, as they were added to\nthe guest. If those block devices contain partitions, they will have\nthe usual names (eg. C</dev/sda1>). Also LVM C</dev/VG/LV>-style\nnames can be used.\n\nThe rules are the same as for L<mount(2)>: A filesystem must\nfirst be mounted on C</> before others can be mounted. Other\nfilesystems can only be mounted on directories which already\nexist.\n\nThe mounted filesystem is writable, if we have sufficient permissions\non the underlying device.\n\nThe filesystem options C<sync> and C<noatime> are set with this\ncall, in order to improve reliability.");
210 if (strcasecmp (cmd, "sync") == 0)
211 pod2text ("sync - sync disks, writes are flushed through to the disk image", " sync\n\nThis syncs the disk, so that any writes are flushed through to the\nunderlying disk image.\n\nYou should always call this if you have modified a disk image, before\nclosing the handle.");
213 if (strcasecmp (cmd, "touch") == 0)
214 pod2text ("touch - update file timestamps or create a new file", " touch <path>\n\nTouch acts like the L<touch(1)> command. It can be used to\nupdate the timestamps on a file, or, if the file does not exist,\nto create a new zero-length file.");
216 if (strcasecmp (cmd, "cat") == 0)
217 pod2text ("cat - list the contents of a file", " cat <path>\n\nReturn the contents of the file named C<path>.\n\nNote that this function cannot correctly handle binary files\n(specifically, files containing C<\\0> character which is treated\nas end of string). For those you need to use the C<download>\nfunction which has a more complex interface.\n\nBecause of the message protocol, there is a transfer limit \nof somewhere between 2MB and 4MB. To transfer large files you should use\nFTP.");
219 if (strcasecmp (cmd, "ll") == 0)
220 pod2text ("ll - list the files in a directory (long format)", " ll <directory>\n\nList the files in C<directory> (relative to the root directory,\nthere is no cwd) in the format of 'ls -la'.\n\nThis command is mostly useful for interactive sessions. It\nis I<not> intended that you try to parse the output string.");
222 if (strcasecmp (cmd, "ls") == 0)
223 pod2text ("ls - list the files in a directory", " ls <directory>\n\nList the files in C<directory> (relative to the root directory,\nthere is no cwd). The '.' and '..' entries are not returned, but\nhidden files are shown.\n\nThis command is mostly useful for interactive sessions. Programs\nshould probably use C<readdir> instead.");
225 if (strcasecmp (cmd, "list_devices") == 0 || strcasecmp (cmd, "list-devices") == 0)
226 pod2text ("list-devices - list the block devices", " list-devices\n\nList all the block devices.\n\nThe full block device names are returned, eg. C</dev/sda>");
228 if (strcasecmp (cmd, "list_partitions") == 0 || strcasecmp (cmd, "list-partitions") == 0)
229 pod2text ("list-partitions - list the partitions", " list-partitions\n\nList all the partitions detected on all block devices.\n\nThe full partition device names are returned, eg. C</dev/sda1>\n\nThis does not return logical volumes. For that you will need to\ncall C<lvs>.");
231 if (strcasecmp (cmd, "pvs") == 0)
232 pod2text ("pvs - list the LVM physical volumes (PVs)", " pvs\n\nList all the physical volumes detected. This is the equivalent\nof the L<pvs(8)> command.\n\nThis returns a list of just the device names that contain\nPVs (eg. C</dev/sda2>).\n\nSee also C<pvs_full>.");
234 if (strcasecmp (cmd, "vgs") == 0)
235 pod2text ("vgs - list the LVM volume groups (VGs)", " vgs\n\nList all the volumes groups detected. This is the equivalent\nof the L<vgs(8)> command.\n\nThis returns a list of just the volume group names that were\ndetected (eg. C<VolGroup00>).\n\nSee also C<vgs_full>.");
237 if (strcasecmp (cmd, "lvs") == 0)
238 pod2text ("lvs - list the LVM logical volumes (LVs)", " lvs\n\nList all the logical volumes detected. This is the equivalent\nof the L<lvs(8)> command.\n\nThis returns a list of the logical volume device names\n(eg. C</dev/VolGroup00/LogVol00>).\n\nSee also C<lvs_full>.");
240 if (strcasecmp (cmd, "pvs_full") == 0 || strcasecmp (cmd, "pvs-full") == 0)
241 pod2text ("pvs-full - list the LVM physical volumes (PVs)", " pvs-full\n\nList all the physical volumes detected. This is the equivalent\nof the L<pvs(8)> command. The \"full\" version includes all fields.");
243 if (strcasecmp (cmd, "vgs_full") == 0 || strcasecmp (cmd, "vgs-full") == 0)
244 pod2text ("vgs-full - list the LVM volume groups (VGs)", " vgs-full\n\nList all the volumes groups detected. This is the equivalent\nof the L<vgs(8)> command. The \"full\" version includes all fields.");
246 if (strcasecmp (cmd, "lvs_full") == 0 || strcasecmp (cmd, "lvs-full") == 0)
247 pod2text ("lvs-full - list the LVM logical volumes (LVs)", " lvs-full\n\nList all the logical volumes detected. This is the equivalent\nof the L<lvs(8)> command. The \"full\" version includes all fields.");
249 if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0)
250 pod2text ("read-lines - read file as lines", " read-lines <path>\n\nReturn the contents of the file named C<path>.\n\nThe file contents are returned as a list of lines. Trailing\nC<LF> and C<CRLF> character sequences are I<not> returned.\n\nNote that this function cannot correctly handle binary files\n(specifically, files containing C<\\0> character which is treated\nas end of line). For those you need to use the C<read_file>\nfunction which has a more complex interface.");
252 if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0)
253 pod2text ("aug-init - create a new Augeas handle", " aug-init <root> <flags>\n\nCreate a new Augeas handle for editing configuration files.\nIf there was any previous Augeas handle associated with this\nguestfs session, then it is closed.\n\nYou must call this before using any other C<aug_*>\ncommands.\n\nC<root> is the filesystem root. C<root> must not be NULL,\nuse C</> instead.\n\nThe flags are the same as the flags defined in\nE<lt>augeas.hE<gt>, the logical I<or> of the following\nintegers:\n\n=over 4\n\n=item C<AUG_SAVE_BACKUP> = 1\n\nKeep the original file with a C<.augsave> extension.\n\n=item C<AUG_SAVE_NEWFILE> = 2\n\nSave changes into a file with extension C<.augnew>, and\ndo not overwrite original. Overrides C<AUG_SAVE_BACKUP>.\n\n=item C<AUG_TYPE_CHECK> = 4\n\nTypecheck lenses (can be expensive).\n\n=item C<AUG_NO_STDINC> = 8\n\nDo not use standard load path for modules.\n\n=item C<AUG_SAVE_NOOP> = 16\n\nMake save a no-op, just record what would have been changed.\n\n=item C<AUG_NO_LOAD> = 32\n\nDo not load the tree in C<aug_init>.\n\n=back\n\nTo close the handle, you can call C<aug_close>.\n\nTo find out more about Augeas, see L<http://augeas.net/>.");
255 if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0)
256 pod2text ("aug-close - close the current Augeas handle", " aug-close\n\nClose the current Augeas handle and free up any resources\nused by it. After calling this, you have to call\nC<aug_init> again before you can use any other\nAugeas functions.");
258 if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0)
259 pod2text ("aug-defvar - define an Augeas variable", " aug-defvar <name> <expr>\n\nDefines an Augeas variable C<name> whose value is the result\nof evaluating C<expr>. If C<expr> is NULL, then C<name> is\nundefined.\n\nOn success this returns the number of nodes in C<expr>, or\nC<0> if C<expr> evaluates to something which is not a nodeset.");
261 if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0)
262 pod2text ("aug-defnode - define an Augeas node", " aug-defnode <name> <expr> <val>\n\nDefines a variable C<name> whose value is the result of\nevaluating C<expr>.\n\nIf C<expr> evaluates to an empty nodeset, a node is created,\nequivalent to calling C<aug_set> C<expr>, C<value>.\nC<name> will be the nodeset containing that single node.\n\nOn success this returns a pair containing the\nnumber of nodes in the nodeset, and a boolean flag\nif a node was created.");
264 if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0)
265 pod2text ("aug-get - look up the value of an Augeas path", " aug-get <path>\n\nLook up the value associated with C<path>. If C<path>\nmatches exactly one node, the C<value> is returned.");
267 if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0)
268 pod2text ("aug-set - set Augeas path to value", " aug-set <path> <val>\n\nSet the value associated with C<path> to C<value>.");
270 if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0)
271 pod2text ("aug-insert - insert a sibling Augeas node", " aug-insert <path> <label> <before>\n\nCreate a new sibling C<label> for C<path>, inserting it into\nthe tree before or after C<path> (depending on the boolean\nflag C<before>).\n\nC<path> must match exactly one existing node in the tree, and\nC<label> must be a label, ie. not contain C</>, C<*> or end\nwith a bracketed index C<[N]>.");
273 if (strcasecmp (cmd, "aug_rm") == 0 || strcasecmp (cmd, "aug-rm") == 0)
274 pod2text ("aug-rm - remove an Augeas path", " aug-rm <path>\n\nRemove C<path> and all of its children.\n\nOn success this returns the number of entries which were removed.");
276 if (strcasecmp (cmd, "aug_mv") == 0 || strcasecmp (cmd, "aug-mv") == 0)
277 pod2text ("aug-mv - move Augeas node", " aug-mv <src> <dest>\n\nMove the node C<src> to C<dest>. C<src> must match exactly\none node. C<dest> is overwritten if it exists.");
279 if (strcasecmp (cmd, "aug_match") == 0 || strcasecmp (cmd, "aug-match") == 0)
280 pod2text ("aug-match - return Augeas nodes which match path", " aug-match <path>\n\nReturns a list of paths which match the path expression C<path>.\nThe returned paths are sufficiently qualified so that they match\nexactly one node in the current tree.");
282 if (strcasecmp (cmd, "aug_save") == 0 || strcasecmp (cmd, "aug-save") == 0)
283 pod2text ("aug-save - write all pending Augeas changes to disk", " aug-save\n\nThis writes all pending changes to disk.\n\nThe flags which were passed to C<aug_init> affect exactly\nhow files are saved.");
285 if (strcasecmp (cmd, "aug_load") == 0 || strcasecmp (cmd, "aug-load") == 0)
286 pod2text ("aug-load - load files into the tree", " aug-load\n\nLoad files into the tree.\n\nSee C<aug_load> in the Augeas documentation for the full gory\ndetails.");
288 if (strcasecmp (cmd, "aug_ls") == 0 || strcasecmp (cmd, "aug-ls") == 0)
289 pod2text ("aug-ls - list Augeas nodes under a path", " aug-ls <path>\n\nThis is just a shortcut for listing C<aug_match>\nC<path/*> and sorting the resulting nodes into alphabetical order.");
291 if (strcasecmp (cmd, "rm") == 0)
292 pod2text ("rm - remove a file", " rm <path>\n\nRemove the single file C<path>.");
294 if (strcasecmp (cmd, "rmdir") == 0)
295 pod2text ("rmdir - remove a directory", " rmdir <path>\n\nRemove the single directory C<path>.");
297 if (strcasecmp (cmd, "rm_rf") == 0 || strcasecmp (cmd, "rm-rf") == 0)
298 pod2text ("rm-rf - remove a file or directory recursively", " rm-rf <path>\n\nRemove the file or directory C<path>, recursively removing the\ncontents if its a directory. This is like the C<rm -rf> shell\ncommand.");
300 if (strcasecmp (cmd, "mkdir") == 0)
301 pod2text ("mkdir - create a directory", " mkdir <path>\n\nCreate a directory named C<path>.");
303 if (strcasecmp (cmd, "mkdir_p") == 0 || strcasecmp (cmd, "mkdir-p") == 0)
304 pod2text ("mkdir-p - create a directory and parents", " mkdir-p <path>\n\nCreate a directory named C<path>, creating any parent directories\nas necessary. This is like the C<mkdir -p> shell command.");
306 if (strcasecmp (cmd, "chmod") == 0)
307 pod2text ("chmod - change file mode", " chmod <mode> <path>\n\nChange the mode (permissions) of C<path> to C<mode>. Only\nnumeric modes are supported.");
309 if (strcasecmp (cmd, "chown") == 0)
310 pod2text ("chown - change file owner and group", " chown <owner> <group> <path>\n\nChange the file owner to C<owner> and group to C<group>.\n\nOnly numeric uid and gid are supported. If you want to use\nnames, you will need to locate and parse the password file\nyourself (Augeas support makes this relatively easy).");
312 if (strcasecmp (cmd, "exists") == 0)
313 pod2text ("exists - test if file or directory exists", " exists <path>\n\nThis returns C<true> if and only if there is a file, directory\n(or anything) with the given C<path> name.\n\nSee also C<is_file>, C<is_dir>, C<stat>.");
315 if (strcasecmp (cmd, "is_file") == 0 || strcasecmp (cmd, "is-file") == 0)
316 pod2text ("is-file - test if file exists", " is-file <path>\n\nThis returns C<true> if and only if there is a file\nwith the given C<path> name. Note that it returns false for\nother objects like directories.\n\nSee also C<stat>.");
318 if (strcasecmp (cmd, "is_dir") == 0 || strcasecmp (cmd, "is-dir") == 0)
319 pod2text ("is-dir - test if file exists", " is-dir <path>\n\nThis returns C<true> if and only if there is a directory\nwith the given C<path> name. Note that it returns false for\nother objects like files.\n\nSee also C<stat>.");
321 if (strcasecmp (cmd, "pvcreate") == 0)
322 pod2text ("pvcreate - create an LVM physical volume", " pvcreate <device>\n\nThis creates an LVM physical volume on the named C<device>,\nwhere C<device> should usually be a partition name such\nas C</dev/sda1>.");
324 if (strcasecmp (cmd, "vgcreate") == 0)
325 pod2text ("vgcreate - create an LVM volume group", " vgcreate <volgroup> <physvols>\n\nThis creates an LVM volume group called C<volgroup>\nfrom the non-empty list of physical volumes C<physvols>.");
327 if (strcasecmp (cmd, "lvcreate") == 0)
328 pod2text ("lvcreate - create an LVM volume group", " lvcreate <logvol> <volgroup> <mbytes>\n\nThis creates an LVM volume group called C<logvol>\non the volume group C<volgroup>, with C<size> megabytes.");
330 if (strcasecmp (cmd, "mkfs") == 0)
331 pod2text ("mkfs - make a filesystem", " mkfs <fstype> <device>\n\nThis creates a filesystem on C<device> (usually a partition\nor LVM logical volume). The filesystem type is C<fstype>, for\nexample C<ext3>.");
333 if (strcasecmp (cmd, "sfdisk") == 0)
334 pod2text ("sfdisk - create partitions on a block device", " sfdisk <device> <cyls> <heads> <sectors> <lines>\n\nThis is a direct interface to the L<sfdisk(8)> program for creating\npartitions on block devices.\n\nC<device> should be a block device, for example C</dev/sda>.\n\nC<cyls>, C<heads> and C<sectors> are the number of cylinders, heads\nand sectors on the device, which are passed directly to sfdisk as\nthe I<-C>, I<-H> and I<-S> parameters. If you pass C<0> for any\nof these, then the corresponding parameter is omitted. Usually for\n'large' disks, you can just pass C<0> for these, but for small\n(floppy-sized) disks, sfdisk (or rather, the kernel) cannot work\nout the right geometry and you will need to tell it.\n\nC<lines> is a list of lines that we feed to C<sfdisk>. For more\ninformation refer to the L<sfdisk(8)> manpage.\n\nTo create a single partition occupying the whole disk, you would\npass C<lines> as a single element list, when the single element being\nthe string C<,> (comma).\n\nB<This command is dangerous. Without careful use you\ncan easily destroy all your data>.");
336 if (strcasecmp (cmd, "write_file") == 0 || strcasecmp (cmd, "write-file") == 0)
337 pod2text ("write-file - create a file", " write-file <path> <content> <size>\n\nThis call creates a file called C<path>. The contents of the\nfile is the string C<content> (which can contain any 8 bit data),\nwith length C<size>.\n\nAs a special case, if C<size> is C<0>\nthen the length is calculated using C<strlen> (so in this case\nthe content cannot contain embedded ASCII NULs).\n\nI<NB.> Owing to a bug, writing content containing ASCII NUL\ncharacters does I<not> work, even if the length is specified.\nWe hope to resolve this bug in a future version. In the meantime\nuse C<upload>.\n\nBecause of the message protocol, there is a transfer limit \nof somewhere between 2MB and 4MB. To transfer large files you should use\nFTP.");
339 if (strcasecmp (cmd, "umount") == 0 || strcasecmp (cmd, "unmount") == 0)
340 pod2text ("umount - unmount a filesystem", " umount <pathordevice>\n\nThis unmounts the given filesystem. The filesystem may be\nspecified either by its mountpoint (path) or the device which\ncontains the filesystem.\n\nYou can use 'unmount' as an alias for this command.");
342 if (strcasecmp (cmd, "mounts") == 0)
343 pod2text ("mounts - show mounted filesystems", " mounts\n\nThis returns the list of currently mounted filesystems. It returns\nthe list of devices (eg. C</dev/sda1>, C</dev/VG/LV>).\n\nSome internal mounts are not shown.");
345 if (strcasecmp (cmd, "umount_all") == 0 || strcasecmp (cmd, "umount-all") == 0 || strcasecmp (cmd, "unmount-all") == 0)
346 pod2text ("umount-all - unmount all filesystems", " umount-all\n\nThis unmounts all mounted filesystems.\n\nSome internal mounts are not unmounted by this call.\n\nYou can use 'unmount-all' as an alias for this command.");
348 if (strcasecmp (cmd, "lvm_remove_all") == 0 || strcasecmp (cmd, "lvm-remove-all") == 0)
349 pod2text ("lvm-remove-all - remove all LVM LVs, VGs and PVs", " lvm-remove-all\n\nThis command removes all LVM logical volumes, volume groups\nand physical volumes.\n\nB<This command is dangerous. Without careful use you\ncan easily destroy all your data>.");
351 if (strcasecmp (cmd, "file") == 0)
352 pod2text ("file - determine file type", " file <path>\n\nThis call uses the standard L<file(1)> command to determine\nthe type or contents of the file. This also works on devices,\nfor example to find out whether a partition contains a filesystem.\n\nThe exact command which runs is C<file -bsL path>. Note in\nparticular that the filename is not prepended to the output\n(the C<-b> option).");
354 if (strcasecmp (cmd, "command") == 0)
355 pod2text ("command - run a command from the guest filesystem", " command <arguments>\n\nThis call runs a command from the guest filesystem. The\nfilesystem must be mounted, and must contain a compatible\noperating system (ie. something Linux, with the same\nor compatible processor architecture).\n\nThe single parameter is an argv-style list of arguments.\nThe first element is the name of the program to run.\nSubsequent elements are parameters. The list must be\nnon-empty (ie. must contain a program name).\n\nThe C<$PATH> environment variable will contain at least\nC</usr/bin> and C</bin>. If you require a program from\nanother location, you should provide the full path in the\nfirst parameter.\n\nShared libraries and data files required by the program\nmust be available on filesystems which are mounted in the\ncorrect places. It is the caller's responsibility to ensure\nall filesystems that are needed are mounted at the right\nlocations.");
357 if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
358 pod2text ("command-lines - run a command, returning lines", " command-lines <arguments>\n\nThis is the same as C<command>, but splits the\nresult into a list of lines.");
360 if (strcasecmp (cmd, "stat") == 0)
361 pod2text ("stat - get file information", " stat <path>\n\nReturns file information for the given C<path>.\n\nThis is the same as the C<stat(2)> system call.");
363 if (strcasecmp (cmd, "lstat") == 0)
364 pod2text ("lstat - get file information for a symbolic link", " lstat <path>\n\nReturns file information for the given C<path>.\n\nThis is the same as C<stat> except that if C<path>\nis a symbolic link, then the link is stat-ed, not the file it\nrefers to.\n\nThis is the same as the C<lstat(2)> system call.");
366 if (strcasecmp (cmd, "statvfs") == 0)
367 pod2text ("statvfs - get file system statistics", " statvfs <path>\n\nReturns file system statistics for any mounted file system.\nC<path> should be a file or directory in the mounted file system\n(typically it is the mount point itself, but it doesn't need to be).\n\nThis is the same as the C<statvfs(2)> system call.");
369 if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
370 pod2text ("tune2fs-l - get ext2/ext3/ext4 superblock details", " tune2fs-l <device>\n\nThis returns the contents of the ext2, ext3 or ext4 filesystem\nsuperblock on C<device>.\n\nIt is the same as running C<tune2fs -l device>. See L<tune2fs(8)>\nmanpage for more details. The list of fields returned isn't\nclearly defined, and depends on both the version of C<tune2fs>\nthat libguestfs was built against, and the filesystem itself.");
372 if (strcasecmp (cmd, "blockdev_setro") == 0 || strcasecmp (cmd, "blockdev-setro") == 0)
373 pod2text ("blockdev-setro - set block device to read-only", " blockdev-setro <device>\n\nSets the block device named C<device> to read-only.\n\nThis uses the L<blockdev(8)> command.");
375 if (strcasecmp (cmd, "blockdev_setrw") == 0 || strcasecmp (cmd, "blockdev-setrw") == 0)
376 pod2text ("blockdev-setrw - set block device to read-write", " blockdev-setrw <device>\n\nSets the block device named C<device> to read-write.\n\nThis uses the L<blockdev(8)> command.");
378 if (strcasecmp (cmd, "blockdev_getro") == 0 || strcasecmp (cmd, "blockdev-getro") == 0)
379 pod2text ("blockdev-getro - is block device set to read-only", " blockdev-getro <device>\n\nReturns a boolean indicating if the block device is read-only\n(true if read-only, false if not).\n\nThis uses the L<blockdev(8)> command.");
381 if (strcasecmp (cmd, "blockdev_getss") == 0 || strcasecmp (cmd, "blockdev-getss") == 0)
382 pod2text ("blockdev-getss - get sectorsize of block device", " blockdev-getss <device>\n\nThis returns the size of sectors on a block device.\nUsually 512, but can be larger for modern devices.\n\n(Note, this is not the size in sectors, use C<blockdev_getsz>\nfor that).\n\nThis uses the L<blockdev(8)> command.");
384 if (strcasecmp (cmd, "blockdev_getbsz") == 0 || strcasecmp (cmd, "blockdev-getbsz") == 0)
385 pod2text ("blockdev-getbsz - get blocksize of block device", " blockdev-getbsz <device>\n\nThis returns the block size of a device.\n\n(Note this is different from both I<size in blocks> and\nI<filesystem block size>).\n\nThis uses the L<blockdev(8)> command.");
387 if (strcasecmp (cmd, "blockdev_setbsz") == 0 || strcasecmp (cmd, "blockdev-setbsz") == 0)
388 pod2text ("blockdev-setbsz - set blocksize of block device", " blockdev-setbsz <device> <blocksize>\n\nThis sets the block size of a device.\n\n(Note this is different from both I<size in blocks> and\nI<filesystem block size>).\n\nThis uses the L<blockdev(8)> command.");
390 if (strcasecmp (cmd, "blockdev_getsz") == 0 || strcasecmp (cmd, "blockdev-getsz") == 0)
391 pod2text ("blockdev-getsz - get total size of device in 512-byte sectors", " blockdev-getsz <device>\n\nThis returns the size of the device in units of 512-byte sectors\n(even if the sectorsize isn't 512 bytes ... weird).\n\nSee also C<blockdev_getss> for the real sector size of\nthe device, and C<blockdev_getsize64> for the more\nuseful I<size in bytes>.\n\nThis uses the L<blockdev(8)> command.");
393 if (strcasecmp (cmd, "blockdev_getsize64") == 0 || strcasecmp (cmd, "blockdev-getsize64") == 0)
394 pod2text ("blockdev-getsize64 - get total size of device in bytes", " blockdev-getsize64 <device>\n\nThis returns the size of the device in bytes.\n\nSee also C<blockdev_getsz>.\n\nThis uses the L<blockdev(8)> command.");
396 if (strcasecmp (cmd, "blockdev_flushbufs") == 0 || strcasecmp (cmd, "blockdev-flushbufs") == 0)
397 pod2text ("blockdev-flushbufs - flush device buffers", " blockdev-flushbufs <device>\n\nThis tells the kernel to flush internal buffers associated\nwith C<device>.\n\nThis uses the L<blockdev(8)> command.");
399 if (strcasecmp (cmd, "blockdev_rereadpt") == 0 || strcasecmp (cmd, "blockdev-rereadpt") == 0)
400 pod2text ("blockdev-rereadpt - reread partition table", " blockdev-rereadpt <device>\n\nReread the partition table on C<device>.\n\nThis uses the L<blockdev(8)> command.");
402 if (strcasecmp (cmd, "upload") == 0)
403 pod2text ("upload - upload a file from the local machine", " upload <filename> <remotefilename>\n\nUpload local file C<filename> to C<remotefilename> on the\nfilesystem.\n\nC<filename> can also be a named pipe.\n\nSee also C<download>.");
405 if (strcasecmp (cmd, "download") == 0)
406 pod2text ("download - download a file to the local machine", " download <remotefilename> <filename>\n\nDownload file C<remotefilename> and save it as C<filename>\non the local machine.\n\nC<filename> can also be a named pipe.\n\nSee also C<upload>, C<cat>.");
408 if (strcasecmp (cmd, "checksum") == 0)
409 pod2text ("checksum - compute MD5, SHAx or CRC checksum of file", " checksum <csumtype> <path>\n\nThis call computes the MD5, SHAx or CRC checksum of the\nfile named C<path>.\n\nThe type of checksum to compute is given by the C<csumtype>\nparameter which must have one of the following values:\n\n=over 4\n\n=item C<crc>\n\nCompute the cyclic redundancy check (CRC) specified by POSIX\nfor the C<cksum> command.\n\n=item C<md5>\n\nCompute the MD5 hash (using the C<md5sum> program).\n\n=item C<sha1>\n\nCompute the SHA1 hash (using the C<sha1sum> program).\n\n=item C<sha224>\n\nCompute the SHA224 hash (using the C<sha224sum> program).\n\n=item C<sha256>\n\nCompute the SHA256 hash (using the C<sha256sum> program).\n\n=item C<sha384>\n\nCompute the SHA384 hash (using the C<sha384sum> program).\n\n=item C<sha512>\n\nCompute the SHA512 hash (using the C<sha512sum> program).\n\n=back\n\nThe checksum is returned as a printable string.");
411 if (strcasecmp (cmd, "tar_in") == 0 || strcasecmp (cmd, "tar-in") == 0)
412 pod2text ("tar-in - unpack tarfile to directory", " tar-in <tarfile> <directory>\n\nThis command uploads and unpacks local file C<tarfile> (an\nI<uncompressed> tar file) into C<directory>.\n\nTo upload a compressed tarball, use C<tgz_in>.");
414 if (strcasecmp (cmd, "tar_out") == 0 || strcasecmp (cmd, "tar-out") == 0)
415 pod2text ("tar-out - pack directory into tarfile", " tar-out <directory> <tarfile>\n\nThis command packs the contents of C<directory> and downloads\nit to local file C<tarfile>.\n\nTo download a compressed tarball, use C<tgz_out>.");
417 if (strcasecmp (cmd, "tgz_in") == 0 || strcasecmp (cmd, "tgz-in") == 0)
418 pod2text ("tgz-in - unpack compressed tarball to directory", " tgz-in <tarball> <directory>\n\nThis command uploads and unpacks local file C<tarball> (a\nI<gzip compressed> tar file) into C<directory>.\n\nTo upload an uncompressed tarball, use C<tar_in>.");
420 if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0)
421 pod2text ("tgz-out - pack directory into compressed tarball", " tgz-out <directory> <tarball>\n\nThis command packs the contents of C<directory> and downloads\nit to local file C<tarball>.\n\nTo download an uncompressed tarball, use C<tar_out>.");
423 if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0)
424 pod2text ("mount-ro - mount a guest disk, read-only", " mount-ro <device> <mountpoint>\n\nThis is the same as the C<mount> command, but it\nmounts the filesystem with the read-only (I<-o ro>) flag.");
426 if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0)
427 pod2text ("mount-options - mount a guest disk with mount options", " mount-options <options> <device> <mountpoint>\n\nThis is the same as the C<mount> command, but it\nallows you to set the mount options as for the\nL<mount(8)> I<-o> flag.");
429 if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0)
430 pod2text ("mount-vfs - mount a guest disk with mount options and vfstype", " mount-vfs <options> <vfstype> <device> <mountpoint>\n\nThis is the same as the C<mount> command, but it\nallows you to set both the mount options and the vfstype\nas for the L<mount(8)> I<-o> and I<-t> flags.");
432 if (strcasecmp (cmd, "debug") == 0)
433 pod2text ("debug - debugging and internals", " debug <subcmd> <extraargs>\n\nThe C<debug> command exposes some internals of\nC<guestfsd> (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<daemon/debug.c> in the libguestfs source\nto find out what you can do.");
435 if (strcasecmp (cmd, "lvremove") == 0)
436 pod2text ("lvremove - remove an LVM logical volume", " lvremove <device>\n\nRemove an LVM logical volume C<device>, where C<device> is\nthe path to the LV, such as C</dev/VG/LV>.\n\nYou can also remove all LVs in a volume group by specifying\nthe VG name, C</dev/VG>.");
438 if (strcasecmp (cmd, "vgremove") == 0)
439 pod2text ("vgremove - remove an LVM volume group", " vgremove <vgname>\n\nRemove an LVM volume group C<vgname>, (for example C<VG>).\n\nThis also forcibly removes all logical volumes in the volume\ngroup (if any).");
441 if (strcasecmp (cmd, "pvremove") == 0)
442 pod2text ("pvremove - remove an LVM physical volume", " pvremove <device>\n\nThis wipes a physical volume C<device> so that LVM will no longer\nrecognise it.\n\nThe implementation uses the C<pvremove> command which refuses to\nwipe physical volumes that contain any volume groups, so you have\nto remove those first.");
444 if (strcasecmp (cmd, "set_e2label") == 0 || strcasecmp (cmd, "set-e2label") == 0)
445 pod2text ("set-e2label - set the ext2/3/4 filesystem label", " set-e2label <device> <label>\n\nThis sets the ext2/3/4 filesystem label of the filesystem on\nC<device> to C<label>. Filesystem labels are limited to\n16 characters.\n\nYou can use either C<tune2fs_l> or C<get_e2label>\nto return the existing label on a filesystem.");
447 if (strcasecmp (cmd, "get_e2label") == 0 || strcasecmp (cmd, "get-e2label") == 0)
448 pod2text ("get-e2label - get the ext2/3/4 filesystem label", " get-e2label <device>\n\nThis returns the ext2/3/4 filesystem label of the filesystem on\nC<device>.");
450 if (strcasecmp (cmd, "set_e2uuid") == 0 || strcasecmp (cmd, "set-e2uuid") == 0)
451 pod2text ("set-e2uuid - set the ext2/3/4 filesystem UUID", " set-e2uuid <device> <uuid>\n\nThis sets the ext2/3/4 filesystem UUID of the filesystem on\nC<device> to C<uuid>. The format of the UUID and alternatives\nsuch as C<clear>, C<random> and C<time> are described in the\nL<tune2fs(8)> manpage.\n\nYou can use either C<tune2fs_l> or C<get_e2uuid>\nto return the existing UUID of a filesystem.");
453 if (strcasecmp (cmd, "get_e2uuid") == 0 || strcasecmp (cmd, "get-e2uuid") == 0)
454 pod2text ("get-e2uuid - get the ext2/3/4 filesystem UUID", " get-e2uuid <device>\n\nThis returns the ext2/3/4 filesystem UUID of the filesystem on\nC<device>.");
456 if (strcasecmp (cmd, "fsck") == 0)
457 pod2text ("fsck - run the filesystem checker", " fsck <fstype> <device>\n\nThis runs the filesystem checker (fsck) on C<device> which\nshould have filesystem type C<fstype>.\n\nThe returned integer is the status. See L<fsck(8)> for the\nlist of status codes from C<fsck>.\n\nNotes:\n\n=over 4\n\n=item *\n\nMultiple status codes can be summed together.\n\n=item *\n\nA non-zero return code can mean \"success\", for example if\nerrors have been corrected on the filesystem.\n\n=item *\n\nChecking or repairing NTFS volumes is not supported\n(by linux-ntfs).\n\n=back\n\nThis command is entirely equivalent to running C<fsck -a -t fstype device>.");
459 if (strcasecmp (cmd, "zero") == 0)
460 pod2text ("zero - write zeroes to the device", " zero <device>\n\nThis command writes zeroes over the first few blocks of C<device>.\n\nHow many blocks are zeroed isn't specified (but it's I<not> enough\nto securely wipe the device). It should be sufficient to remove\nany partition tables, filesystem superblocks and so on.");
462 if (strcasecmp (cmd, "grub_install") == 0 || strcasecmp (cmd, "grub-install") == 0)
463 pod2text ("grub-install - install GRUB", " grub-install <root> <device>\n\nThis command installs GRUB (the Grand Unified Bootloader) on\nC<device>, with the root directory being C<root>.");
465 if (strcasecmp (cmd, "cp") == 0)
466 pod2text ("cp - copy a file", " cp <src> <dest>\n\nThis copies a file from C<src> to C<dest> where C<dest> is\neither a destination filename or destination directory.");
468 if (strcasecmp (cmd, "cp_a") == 0 || strcasecmp (cmd, "cp-a") == 0)
469 pod2text ("cp-a - copy a file or directory recursively", " cp-a <src> <dest>\n\nThis copies a file or directory from C<src> to C<dest>\nrecursively using the C<cp -a> command.");
471 if (strcasecmp (cmd, "mv") == 0)
472 pod2text ("mv - move a file", " mv <src> <dest>\n\nThis moves a file from C<src> to C<dest> where C<dest> is\neither a destination filename or destination directory.");
474 if (strcasecmp (cmd, "drop_caches") == 0 || strcasecmp (cmd, "drop-caches") == 0)
475 pod2text ("drop-caches - drop kernel page cache, dentries and inodes", " drop-caches <whattodrop>\n\nThis instructs the guest kernel to drop its page cache,\nand/or dentries and inode caches. The parameter C<whattodrop>\ntells the kernel what precisely to drop, see\nL<http://linux-mm.org/Drop_Caches>\n\nSetting C<whattodrop> to 3 should drop everything.\n\nThis automatically calls L<sync(2)> before the operation,\nso that the maximum guest memory is freed.");
477 if (strcasecmp (cmd, "dmesg") == 0)
478 pod2text ("dmesg - return kernel messages", " dmesg\n\nThis returns the kernel messages (C<dmesg> output) from\nthe guest kernel. This is sometimes useful for extended\ndebugging of problems.\n\nAnother way to get the same information is to enable\nverbose messages with C<set_verbose> or by setting\nthe environment variable C<LIBGUESTFS_DEBUG=1> before\nrunning the program.");
480 if (strcasecmp (cmd, "ping_daemon") == 0 || strcasecmp (cmd, "ping-daemon") == 0)
481 pod2text ("ping-daemon - ping the guest daemon", " ping-daemon\n\nThis is a test probe into the guestfs daemon running inside\nthe qemu subprocess. Calling this function checks that the\ndaemon responds to the ping message, without affecting the daemon\nor attached block device(s) in any other way.");
483 if (strcasecmp (cmd, "equal") == 0)
484 pod2text ("equal - test if two files have equal contents", " equal <file1> <file2>\n\nThis compares the two files C<file1> and C<file2> and returns\ntrue if their content is exactly equal, or false otherwise.\n\nThe external L<cmp(1)> program is used for the comparison.");
486 if (strcasecmp (cmd, "strings") == 0)
487 pod2text ("strings - print the printable strings in a file", " strings <path>\n\nThis runs the L<strings(1)> command on a file and returns\nthe list of printable strings found.\n\nBecause of the message protocol, there is a transfer limit \nof somewhere between 2MB and 4MB. To transfer large files you should use\nFTP.");
489 if (strcasecmp (cmd, "strings_e") == 0 || strcasecmp (cmd, "strings-e") == 0)
490 pod2text ("strings-e - print the printable strings in a file", " strings-e <encoding> <path>\n\nThis is like the C<strings> command, but allows you to\nspecify the encoding.\n\nSee the L<strings(1)> manpage for the full list of encodings.\n\nCommonly useful encodings are C<l> (lower case L) which will\nshow strings inside Windows/x86 files.\n\nThe returned strings are transcoded to UTF-8.\n\nBecause of the message protocol, there is a transfer limit \nof somewhere between 2MB and 4MB. To transfer large files you should use\nFTP.");
492 if (strcasecmp (cmd, "hexdump") == 0)
493 pod2text ("hexdump - dump a file in hexadecimal", " hexdump <path>\n\nThis runs C<hexdump -C> on the given C<path>. The result is\nthe human-readable, canonical hex dump of the file.\n\nBecause of the message protocol, there is a transfer limit \nof somewhere between 2MB and 4MB. To transfer large files you should use\nFTP.");
495 display_builtin_command (cmd);
498 static void print_pv (struct guestfs_lvm_pv *pv)
502 printf ("pv_name: %s\n", pv->pv_name);
503 printf ("pv_uuid: ");
504 for (i = 0; i < 32; ++i)
505 printf ("%c", pv->pv_uuid[i]);
507 printf ("pv_fmt: %s\n", pv->pv_fmt);
508 printf ("pv_size: %" PRIu64 "\n", pv->pv_size);
509 printf ("dev_size: %" PRIu64 "\n", pv->dev_size);
510 printf ("pv_free: %" PRIu64 "\n", pv->pv_free);
511 printf ("pv_used: %" PRIu64 "\n", pv->pv_used);
512 printf ("pv_attr: %s\n", pv->pv_attr);
513 printf ("pv_pe_count: %" PRIi64 "\n", pv->pv_pe_count);
514 printf ("pv_pe_alloc_count: %" PRIi64 "\n", pv->pv_pe_alloc_count);
515 printf ("pv_tags: %s\n", pv->pv_tags);
516 printf ("pe_start: %" PRIu64 "\n", pv->pe_start);
517 printf ("pv_mda_count: %" PRIi64 "\n", pv->pv_mda_count);
518 printf ("pv_mda_free: %" PRIu64 "\n", pv->pv_mda_free);
521 static void print_pv_list (struct guestfs_lvm_pv_list *pvs)
525 for (i = 0; i < pvs->len; ++i)
526 print_pv (&pvs->val[i]);
529 static void print_vg (struct guestfs_lvm_vg *vg)
533 printf ("vg_name: %s\n", vg->vg_name);
534 printf ("vg_uuid: ");
535 for (i = 0; i < 32; ++i)
536 printf ("%c", vg->vg_uuid[i]);
538 printf ("vg_fmt: %s\n", vg->vg_fmt);
539 printf ("vg_attr: %s\n", vg->vg_attr);
540 printf ("vg_size: %" PRIu64 "\n", vg->vg_size);
541 printf ("vg_free: %" PRIu64 "\n", vg->vg_free);
542 printf ("vg_sysid: %s\n", vg->vg_sysid);
543 printf ("vg_extent_size: %" PRIu64 "\n", vg->vg_extent_size);
544 printf ("vg_extent_count: %" PRIi64 "\n", vg->vg_extent_count);
545 printf ("vg_free_count: %" PRIi64 "\n", vg->vg_free_count);
546 printf ("max_lv: %" PRIi64 "\n", vg->max_lv);
547 printf ("max_pv: %" PRIi64 "\n", vg->max_pv);
548 printf ("pv_count: %" PRIi64 "\n", vg->pv_count);
549 printf ("lv_count: %" PRIi64 "\n", vg->lv_count);
550 printf ("snap_count: %" PRIi64 "\n", vg->snap_count);
551 printf ("vg_seqno: %" PRIi64 "\n", vg->vg_seqno);
552 printf ("vg_tags: %s\n", vg->vg_tags);
553 printf ("vg_mda_count: %" PRIi64 "\n", vg->vg_mda_count);
554 printf ("vg_mda_free: %" PRIu64 "\n", vg->vg_mda_free);
557 static void print_vg_list (struct guestfs_lvm_vg_list *vgs)
561 for (i = 0; i < vgs->len; ++i)
562 print_vg (&vgs->val[i]);
565 static void print_lv (struct guestfs_lvm_lv *lv)
569 printf ("lv_name: %s\n", lv->lv_name);
570 printf ("lv_uuid: ");
571 for (i = 0; i < 32; ++i)
572 printf ("%c", lv->lv_uuid[i]);
574 printf ("lv_attr: %s\n", lv->lv_attr);
575 printf ("lv_major: %" PRIi64 "\n", lv->lv_major);
576 printf ("lv_minor: %" PRIi64 "\n", lv->lv_minor);
577 printf ("lv_kernel_major: %" PRIi64 "\n", lv->lv_kernel_major);
578 printf ("lv_kernel_minor: %" PRIi64 "\n", lv->lv_kernel_minor);
579 printf ("lv_size: %" PRIu64 "\n", lv->lv_size);
580 printf ("seg_count: %" PRIi64 "\n", lv->seg_count);
581 printf ("origin: %s\n", lv->origin);
582 if (lv->snap_percent >= 0) printf ("snap_percent: %g %%\n", lv->snap_percent);
583 else printf ("snap_percent: \n");
584 if (lv->copy_percent >= 0) printf ("copy_percent: %g %%\n", lv->copy_percent);
585 else printf ("copy_percent: \n");
586 printf ("move_pv: %s\n", lv->move_pv);
587 printf ("lv_tags: %s\n", lv->lv_tags);
588 printf ("mirror_log: %s\n", lv->mirror_log);
589 printf ("modules: %s\n", lv->modules);
592 static void print_lv_list (struct guestfs_lvm_lv_list *lvs)
596 for (i = 0; i < lvs->len; ++i)
597 print_lv (&lvs->val[i]);
600 static void print_stat (struct guestfs_stat *stat)
602 printf ("dev: %" PRIi64 "\n", stat->dev);
603 printf ("ino: %" PRIi64 "\n", stat->ino);
604 printf ("mode: %" PRIi64 "\n", stat->mode);
605 printf ("nlink: %" PRIi64 "\n", stat->nlink);
606 printf ("uid: %" PRIi64 "\n", stat->uid);
607 printf ("gid: %" PRIi64 "\n", stat->gid);
608 printf ("rdev: %" PRIi64 "\n", stat->rdev);
609 printf ("size: %" PRIi64 "\n", stat->size);
610 printf ("blksize: %" PRIi64 "\n", stat->blksize);
611 printf ("blocks: %" PRIi64 "\n", stat->blocks);
612 printf ("atime: %" PRIi64 "\n", stat->atime);
613 printf ("mtime: %" PRIi64 "\n", stat->mtime);
614 printf ("ctime: %" PRIi64 "\n", stat->ctime);
617 static void print_statvfs (struct guestfs_statvfs *statvfs)
619 printf ("bsize: %" PRIi64 "\n", statvfs->bsize);
620 printf ("frsize: %" PRIi64 "\n", statvfs->frsize);
621 printf ("blocks: %" PRIi64 "\n", statvfs->blocks);
622 printf ("bfree: %" PRIi64 "\n", statvfs->bfree);
623 printf ("bavail: %" PRIi64 "\n", statvfs->bavail);
624 printf ("files: %" PRIi64 "\n", statvfs->files);
625 printf ("ffree: %" PRIi64 "\n", statvfs->ffree);
626 printf ("favail: %" PRIi64 "\n", statvfs->favail);
627 printf ("fsid: %" PRIi64 "\n", statvfs->fsid);
628 printf ("flag: %" PRIi64 "\n", statvfs->flag);
629 printf ("namemax: %" PRIi64 "\n", statvfs->namemax);
632 static int run_launch (const char *cmd, int argc, char *argv[])
636 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
637 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
644 static int run_kill_subprocess (const char *cmd, int argc, char *argv[])
648 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
649 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
652 r = guestfs_kill_subprocess (g);
656 static int run_add_drive (const char *cmd, int argc, char *argv[])
659 const char *filename;
661 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
662 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
666 r = guestfs_add_drive (g, filename);
670 static int run_add_cdrom (const char *cmd, int argc, char *argv[])
673 const char *filename;
675 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
676 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
680 r = guestfs_add_cdrom (g, filename);
684 static int run_config (const char *cmd, int argc, char *argv[])
687 const char *qemuparam;
688 const char *qemuvalue;
690 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
691 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
695 qemuvalue = strcmp (argv[1], "") != 0 ? argv[1] : NULL;
696 r = guestfs_config (g, qemuparam, qemuvalue);
700 static int run_set_qemu (const char *cmd, int argc, char *argv[])
705 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
706 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
710 r = guestfs_set_qemu (g, qemu);
714 static int run_get_qemu (const char *cmd, int argc, char *argv[])
718 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
719 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
722 r = guestfs_get_qemu (g);
723 if (r == NULL) return -1;
728 static int run_set_path (const char *cmd, int argc, char *argv[])
733 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
734 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
738 r = guestfs_set_path (g, path);
742 static int run_get_path (const char *cmd, int argc, char *argv[])
746 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
747 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
750 r = guestfs_get_path (g);
751 if (r == NULL) return -1;
756 static int run_set_autosync (const char *cmd, int argc, char *argv[])
761 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
762 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
765 autosync = is_true (argv[0]) ? 1 : 0;
766 r = guestfs_set_autosync (g, autosync);
770 static int run_get_autosync (const char *cmd, int argc, char *argv[])
774 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
775 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
778 r = guestfs_get_autosync (g);
779 if (r == -1) return -1;
780 if (r) printf ("true\n"); else printf ("false\n");
784 static int run_set_verbose (const char *cmd, int argc, char *argv[])
789 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
790 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
793 verbose = is_true (argv[0]) ? 1 : 0;
794 r = guestfs_set_verbose (g, verbose);
798 static int run_get_verbose (const char *cmd, int argc, char *argv[])
802 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
803 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
806 r = guestfs_get_verbose (g);
807 if (r == -1) return -1;
808 if (r) printf ("true\n"); else printf ("false\n");
812 static int run_is_ready (const char *cmd, int argc, char *argv[])
816 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
817 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
820 r = guestfs_is_ready (g);
821 if (r == -1) return -1;
822 if (r) printf ("true\n"); else printf ("false\n");
826 static int run_is_config (const char *cmd, int argc, char *argv[])
830 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
831 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
834 r = guestfs_is_config (g);
835 if (r == -1) return -1;
836 if (r) printf ("true\n"); else printf ("false\n");
840 static int run_is_launching (const char *cmd, int argc, char *argv[])
844 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
845 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
848 r = guestfs_is_launching (g);
849 if (r == -1) return -1;
850 if (r) printf ("true\n"); else printf ("false\n");
854 static int run_is_busy (const char *cmd, int argc, char *argv[])
858 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
859 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
862 r = guestfs_is_busy (g);
863 if (r == -1) return -1;
864 if (r) printf ("true\n"); else printf ("false\n");
868 static int run_get_state (const char *cmd, int argc, char *argv[])
872 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
873 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
876 r = guestfs_get_state (g);
877 if (r == -1) return -1;
882 static int run_mount (const char *cmd, int argc, char *argv[])
886 const char *mountpoint;
888 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
889 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
893 mountpoint = argv[1];
894 r = guestfs_mount (g, device, mountpoint);
898 static int run_sync (const char *cmd, int argc, char *argv[])
902 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
903 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
906 r = guestfs_sync (g);
910 static int run_touch (const char *cmd, int argc, char *argv[])
915 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
916 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
920 r = guestfs_touch (g, path);
924 static int run_cat (const char *cmd, int argc, char *argv[])
929 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
930 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
934 r = guestfs_cat (g, path);
935 if (r == NULL) return -1;
941 static int run_ll (const char *cmd, int argc, char *argv[])
944 const char *directory;
946 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
947 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
951 r = guestfs_ll (g, directory);
952 if (r == NULL) return -1;
958 static int run_ls (const char *cmd, int argc, char *argv[])
961 const char *directory;
963 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
964 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
968 r = guestfs_ls (g, directory);
969 if (r == NULL) return -1;
975 static int run_list_devices (const char *cmd, int argc, char *argv[])
979 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
980 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
983 r = guestfs_list_devices (g);
984 if (r == NULL) return -1;
990 static int run_list_partitions (const char *cmd, int argc, char *argv[])
994 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
995 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
998 r = guestfs_list_partitions (g);
999 if (r == NULL) return -1;
1005 static int run_pvs (const char *cmd, int argc, char *argv[])
1009 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1010 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1013 r = guestfs_pvs (g);
1014 if (r == NULL) return -1;
1020 static int run_vgs (const char *cmd, int argc, char *argv[])
1024 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1025 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1028 r = guestfs_vgs (g);
1029 if (r == NULL) return -1;
1035 static int run_lvs (const char *cmd, int argc, char *argv[])
1039 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1040 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1043 r = guestfs_lvs (g);
1044 if (r == NULL) return -1;
1050 static int run_pvs_full (const char *cmd, int argc, char *argv[])
1052 struct guestfs_lvm_pv_list *r;
1054 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1055 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1058 r = guestfs_pvs_full (g);
1059 if (r == NULL) return -1;
1061 guestfs_free_lvm_pv_list (r);
1065 static int run_vgs_full (const char *cmd, int argc, char *argv[])
1067 struct guestfs_lvm_vg_list *r;
1069 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1070 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1073 r = guestfs_vgs_full (g);
1074 if (r == NULL) return -1;
1076 guestfs_free_lvm_vg_list (r);
1080 static int run_lvs_full (const char *cmd, int argc, char *argv[])
1082 struct guestfs_lvm_lv_list *r;
1084 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1085 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1088 r = guestfs_lvs_full (g);
1089 if (r == NULL) return -1;
1091 guestfs_free_lvm_lv_list (r);
1095 static int run_read_lines (const char *cmd, int argc, char *argv[])
1100 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1101 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1105 r = guestfs_read_lines (g, path);
1106 if (r == NULL) return -1;
1112 static int run_aug_init (const char *cmd, int argc, char *argv[])
1118 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1119 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1123 flags = atoi (argv[1]);
1124 r = guestfs_aug_init (g, root, flags);
1128 static int run_aug_close (const char *cmd, int argc, char *argv[])
1132 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1133 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1136 r = guestfs_aug_close (g);
1140 static int run_aug_defvar (const char *cmd, int argc, char *argv[])
1146 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1147 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1151 expr = strcmp (argv[1], "") != 0 ? argv[1] : NULL;
1152 r = guestfs_aug_defvar (g, name, expr);
1153 if (r == -1) return -1;
1158 static int run_aug_defnode (const char *cmd, int argc, char *argv[])
1160 struct guestfs_int_bool *r;
1165 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1166 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1172 r = guestfs_aug_defnode (g, name, expr, val);
1173 if (r == NULL) return -1;
1174 printf ("%d, %s\n", r->i,
1175 r->b ? "true" : "false");
1176 guestfs_free_int_bool (r);
1180 static int run_aug_get (const char *cmd, int argc, char *argv[])
1185 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1186 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1190 r = guestfs_aug_get (g, path);
1191 if (r == NULL) return -1;
1197 static int run_aug_set (const char *cmd, int argc, char *argv[])
1203 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1204 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1209 r = guestfs_aug_set (g, path, val);
1213 static int run_aug_insert (const char *cmd, int argc, char *argv[])
1220 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1221 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1226 before = is_true (argv[2]) ? 1 : 0;
1227 r = guestfs_aug_insert (g, path, label, before);
1231 static int run_aug_rm (const char *cmd, int argc, char *argv[])
1236 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1237 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1241 r = guestfs_aug_rm (g, path);
1242 if (r == -1) return -1;
1247 static int run_aug_mv (const char *cmd, int argc, char *argv[])
1253 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1254 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1259 r = guestfs_aug_mv (g, src, dest);
1263 static int run_aug_match (const char *cmd, int argc, char *argv[])
1268 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1269 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1273 r = guestfs_aug_match (g, path);
1274 if (r == NULL) return -1;
1280 static int run_aug_save (const char *cmd, int argc, char *argv[])
1284 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1285 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1288 r = guestfs_aug_save (g);
1292 static int run_aug_load (const char *cmd, int argc, char *argv[])
1296 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1297 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1300 r = guestfs_aug_load (g);
1304 static int run_aug_ls (const char *cmd, int argc, char *argv[])
1309 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1310 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1314 r = guestfs_aug_ls (g, path);
1315 if (r == NULL) return -1;
1321 static int run_rm (const char *cmd, int argc, char *argv[])
1326 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1327 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1331 r = guestfs_rm (g, path);
1335 static int run_rmdir (const char *cmd, int argc, char *argv[])
1340 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1341 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1345 r = guestfs_rmdir (g, path);
1349 static int run_rm_rf (const char *cmd, int argc, char *argv[])
1354 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1355 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1359 r = guestfs_rm_rf (g, path);
1363 static int run_mkdir (const char *cmd, int argc, char *argv[])
1368 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1369 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1373 r = guestfs_mkdir (g, path);
1377 static int run_mkdir_p (const char *cmd, int argc, char *argv[])
1382 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1383 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1387 r = guestfs_mkdir_p (g, path);
1391 static int run_chmod (const char *cmd, int argc, char *argv[])
1397 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1398 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1401 mode = atoi (argv[0]);
1403 r = guestfs_chmod (g, mode, path);
1407 static int run_chown (const char *cmd, int argc, char *argv[])
1414 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1415 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1418 owner = atoi (argv[0]);
1419 group = atoi (argv[1]);
1421 r = guestfs_chown (g, owner, group, path);
1425 static int run_exists (const char *cmd, int argc, char *argv[])
1430 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1431 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1435 r = guestfs_exists (g, path);
1436 if (r == -1) return -1;
1437 if (r) printf ("true\n"); else printf ("false\n");
1441 static int run_is_file (const char *cmd, int argc, char *argv[])
1446 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1447 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1451 r = guestfs_is_file (g, path);
1452 if (r == -1) return -1;
1453 if (r) printf ("true\n"); else printf ("false\n");
1457 static int run_is_dir (const char *cmd, int argc, char *argv[])
1462 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1463 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1467 r = guestfs_is_dir (g, path);
1468 if (r == -1) return -1;
1469 if (r) printf ("true\n"); else printf ("false\n");
1473 static int run_pvcreate (const char *cmd, int argc, char *argv[])
1478 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1479 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1483 r = guestfs_pvcreate (g, device);
1487 static int run_vgcreate (const char *cmd, int argc, char *argv[])
1490 const char *volgroup;
1493 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1494 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1498 physvols = parse_string_list (argv[1]);
1499 r = guestfs_vgcreate (g, volgroup, physvols);
1503 static int run_lvcreate (const char *cmd, int argc, char *argv[])
1507 const char *volgroup;
1510 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1511 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1516 mbytes = atoi (argv[2]);
1517 r = guestfs_lvcreate (g, logvol, volgroup, mbytes);
1521 static int run_mkfs (const char *cmd, int argc, char *argv[])
1527 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1528 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1533 r = guestfs_mkfs (g, fstype, device);
1537 static int run_sfdisk (const char *cmd, int argc, char *argv[])
1546 fprintf (stderr, "%s should have 5 parameter(s)\n", cmd);
1547 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1551 cyls = atoi (argv[1]);
1552 heads = atoi (argv[2]);
1553 sectors = atoi (argv[3]);
1554 lines = parse_string_list (argv[4]);
1555 r = guestfs_sfdisk (g, device, cyls, heads, sectors, lines);
1559 static int run_write_file (const char *cmd, int argc, char *argv[])
1563 const char *content;
1566 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1567 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1572 size = atoi (argv[2]);
1573 r = guestfs_write_file (g, path, content, size);
1577 static int run_umount (const char *cmd, int argc, char *argv[])
1580 const char *pathordevice;
1582 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1583 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1586 pathordevice = argv[0];
1587 r = guestfs_umount (g, pathordevice);
1591 static int run_mounts (const char *cmd, int argc, char *argv[])
1595 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1596 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1599 r = guestfs_mounts (g);
1600 if (r == NULL) return -1;
1606 static int run_umount_all (const char *cmd, int argc, char *argv[])
1610 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1611 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1614 r = guestfs_umount_all (g);
1618 static int run_lvm_remove_all (const char *cmd, int argc, char *argv[])
1622 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1623 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1626 r = guestfs_lvm_remove_all (g);
1630 static int run_file (const char *cmd, int argc, char *argv[])
1635 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1636 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1640 r = guestfs_file (g, path);
1641 if (r == NULL) return -1;
1647 static int run_command (const char *cmd, int argc, char *argv[])
1652 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1653 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1656 arguments = parse_string_list (argv[0]);
1657 r = guestfs_command (g, arguments);
1658 if (r == NULL) return -1;
1664 static int run_command_lines (const char *cmd, int argc, char *argv[])
1669 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1670 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1673 arguments = parse_string_list (argv[0]);
1674 r = guestfs_command_lines (g, arguments);
1675 if (r == NULL) return -1;
1681 static int run_stat (const char *cmd, int argc, char *argv[])
1683 struct guestfs_stat *r;
1686 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1687 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1691 r = guestfs_stat (g, path);
1692 if (r == NULL) return -1;
1698 static int run_lstat (const char *cmd, int argc, char *argv[])
1700 struct guestfs_stat *r;
1703 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1704 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1708 r = guestfs_lstat (g, path);
1709 if (r == NULL) return -1;
1715 static int run_statvfs (const char *cmd, int argc, char *argv[])
1717 struct guestfs_statvfs *r;
1720 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1721 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1725 r = guestfs_statvfs (g, path);
1726 if (r == NULL) return -1;
1732 static int run_tune2fs_l (const char *cmd, int argc, char *argv[])
1737 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1738 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1742 r = guestfs_tune2fs_l (g, device);
1743 if (r == NULL) return -1;
1749 static int run_blockdev_setro (const char *cmd, int argc, char *argv[])
1754 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1755 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1759 r = guestfs_blockdev_setro (g, device);
1763 static int run_blockdev_setrw (const char *cmd, int argc, char *argv[])
1768 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1769 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1773 r = guestfs_blockdev_setrw (g, device);
1777 static int run_blockdev_getro (const char *cmd, int argc, char *argv[])
1782 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1783 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1787 r = guestfs_blockdev_getro (g, device);
1788 if (r == -1) return -1;
1789 if (r) printf ("true\n"); else printf ("false\n");
1793 static int run_blockdev_getss (const char *cmd, int argc, char *argv[])
1798 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1799 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1803 r = guestfs_blockdev_getss (g, device);
1804 if (r == -1) return -1;
1809 static int run_blockdev_getbsz (const char *cmd, int argc, char *argv[])
1814 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1815 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1819 r = guestfs_blockdev_getbsz (g, device);
1820 if (r == -1) return -1;
1825 static int run_blockdev_setbsz (const char *cmd, int argc, char *argv[])
1831 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1832 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1836 blocksize = atoi (argv[1]);
1837 r = guestfs_blockdev_setbsz (g, device, blocksize);
1841 static int run_blockdev_getsz (const char *cmd, int argc, char *argv[])
1846 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1847 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1851 r = guestfs_blockdev_getsz (g, device);
1852 if (r == -1) return -1;
1853 printf ("%" PRIi64 "\n", r);
1857 static int run_blockdev_getsize64 (const char *cmd, int argc, char *argv[])
1862 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1863 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1867 r = guestfs_blockdev_getsize64 (g, device);
1868 if (r == -1) return -1;
1869 printf ("%" PRIi64 "\n", r);
1873 static int run_blockdev_flushbufs (const char *cmd, int argc, char *argv[])
1878 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1879 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1883 r = guestfs_blockdev_flushbufs (g, device);
1887 static int run_blockdev_rereadpt (const char *cmd, int argc, char *argv[])
1892 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1893 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1897 r = guestfs_blockdev_rereadpt (g, device);
1901 static int run_upload (const char *cmd, int argc, char *argv[])
1904 const char *filename;
1905 const char *remotefilename;
1907 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1908 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1911 filename = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
1912 remotefilename = argv[1];
1913 r = guestfs_upload (g, filename, remotefilename);
1917 static int run_download (const char *cmd, int argc, char *argv[])
1920 const char *remotefilename;
1921 const char *filename;
1923 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1924 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1927 remotefilename = argv[0];
1928 filename = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
1929 r = guestfs_download (g, remotefilename, filename);
1933 static int run_checksum (const char *cmd, int argc, char *argv[])
1936 const char *csumtype;
1939 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1940 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1945 r = guestfs_checksum (g, csumtype, path);
1946 if (r == NULL) return -1;
1952 static int run_tar_in (const char *cmd, int argc, char *argv[])
1955 const char *tarfile;
1956 const char *directory;
1958 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1959 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1962 tarfile = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
1963 directory = argv[1];
1964 r = guestfs_tar_in (g, tarfile, directory);
1968 static int run_tar_out (const char *cmd, int argc, char *argv[])
1971 const char *directory;
1972 const char *tarfile;
1974 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1975 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1978 directory = argv[0];
1979 tarfile = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
1980 r = guestfs_tar_out (g, directory, tarfile);
1984 static int run_tgz_in (const char *cmd, int argc, char *argv[])
1987 const char *tarball;
1988 const char *directory;
1990 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1991 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1994 tarball = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
1995 directory = argv[1];
1996 r = guestfs_tgz_in (g, tarball, directory);
2000 static int run_tgz_out (const char *cmd, int argc, char *argv[])
2003 const char *directory;
2004 const char *tarball;
2006 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2007 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2010 directory = argv[0];
2011 tarball = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2012 r = guestfs_tgz_out (g, directory, tarball);
2016 static int run_mount_ro (const char *cmd, int argc, char *argv[])
2020 const char *mountpoint;
2022 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2023 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2027 mountpoint = argv[1];
2028 r = guestfs_mount_ro (g, device, mountpoint);
2032 static int run_mount_options (const char *cmd, int argc, char *argv[])
2035 const char *options;
2037 const char *mountpoint;
2039 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
2040 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2045 mountpoint = argv[2];
2046 r = guestfs_mount_options (g, options, device, mountpoint);
2050 static int run_mount_vfs (const char *cmd, int argc, char *argv[])
2053 const char *options;
2054 const char *vfstype;
2056 const char *mountpoint;
2058 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
2059 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2065 mountpoint = argv[3];
2066 r = guestfs_mount_vfs (g, options, vfstype, device, mountpoint);
2070 static int run_debug (const char *cmd, int argc, char *argv[])
2076 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2077 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2081 extraargs = parse_string_list (argv[1]);
2082 r = guestfs_debug (g, subcmd, extraargs);
2083 if (r == NULL) return -1;
2089 static int run_lvremove (const char *cmd, int argc, char *argv[])
2094 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2095 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2099 r = guestfs_lvremove (g, device);
2103 static int run_vgremove (const char *cmd, int argc, char *argv[])
2108 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2109 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2113 r = guestfs_vgremove (g, vgname);
2117 static int run_pvremove (const char *cmd, int argc, char *argv[])
2122 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2123 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2127 r = guestfs_pvremove (g, device);
2131 static int run_set_e2label (const char *cmd, int argc, char *argv[])
2137 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2138 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2143 r = guestfs_set_e2label (g, device, label);
2147 static int run_get_e2label (const char *cmd, int argc, char *argv[])
2152 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2153 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2157 r = guestfs_get_e2label (g, device);
2158 if (r == NULL) return -1;
2164 static int run_set_e2uuid (const char *cmd, int argc, char *argv[])
2170 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2171 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2176 r = guestfs_set_e2uuid (g, device, uuid);
2180 static int run_get_e2uuid (const char *cmd, int argc, char *argv[])
2185 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2186 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2190 r = guestfs_get_e2uuid (g, device);
2191 if (r == NULL) return -1;
2197 static int run_fsck (const char *cmd, int argc, char *argv[])
2203 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2204 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2209 r = guestfs_fsck (g, fstype, device);
2210 if (r == -1) return -1;
2215 static int run_zero (const char *cmd, int argc, char *argv[])
2220 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2221 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2225 r = guestfs_zero (g, device);
2229 static int run_grub_install (const char *cmd, int argc, char *argv[])
2235 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2236 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2241 r = guestfs_grub_install (g, root, device);
2245 static int run_cp (const char *cmd, int argc, char *argv[])
2251 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2252 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2257 r = guestfs_cp (g, src, dest);
2261 static int run_cp_a (const char *cmd, int argc, char *argv[])
2267 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2268 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2273 r = guestfs_cp_a (g, src, dest);
2277 static int run_mv (const char *cmd, int argc, char *argv[])
2283 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2284 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2289 r = guestfs_mv (g, src, dest);
2293 static int run_drop_caches (const char *cmd, int argc, char *argv[])
2298 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2299 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2302 whattodrop = atoi (argv[0]);
2303 r = guestfs_drop_caches (g, whattodrop);
2307 static int run_dmesg (const char *cmd, int argc, char *argv[])
2311 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
2312 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2315 r = guestfs_dmesg (g);
2316 if (r == NULL) return -1;
2322 static int run_ping_daemon (const char *cmd, int argc, char *argv[])
2326 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
2327 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2330 r = guestfs_ping_daemon (g);
2334 static int run_equal (const char *cmd, int argc, char *argv[])
2340 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2341 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2346 r = guestfs_equal (g, file1, file2);
2347 if (r == -1) return -1;
2348 if (r) printf ("true\n"); else printf ("false\n");
2352 static int run_strings (const char *cmd, int argc, char *argv[])
2357 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2358 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2362 r = guestfs_strings (g, path);
2363 if (r == NULL) return -1;
2369 static int run_strings_e (const char *cmd, int argc, char *argv[])
2372 const char *encoding;
2375 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2376 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2381 r = guestfs_strings_e (g, encoding, path);
2382 if (r == NULL) return -1;
2388 static int run_hexdump (const char *cmd, int argc, char *argv[])
2393 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2394 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2398 r = guestfs_hexdump (g, path);
2399 if (r == NULL) return -1;
2405 int run_action (const char *cmd, int argc, char *argv[])
2407 if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
2408 return run_launch (cmd, argc, argv);
2410 if (strcasecmp (cmd, "kill_subprocess") == 0 || strcasecmp (cmd, "kill-subprocess") == 0)
2411 return run_kill_subprocess (cmd, argc, argv);
2413 if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
2414 return run_add_drive (cmd, argc, argv);
2416 if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
2417 return run_add_cdrom (cmd, argc, argv);
2419 if (strcasecmp (cmd, "config") == 0)
2420 return run_config (cmd, argc, argv);
2422 if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0)
2423 return run_set_qemu (cmd, argc, argv);
2425 if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0)
2426 return run_get_qemu (cmd, argc, argv);
2428 if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0)
2429 return run_set_path (cmd, argc, argv);
2431 if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0)
2432 return run_get_path (cmd, argc, argv);
2434 if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0)
2435 return run_set_autosync (cmd, argc, argv);
2437 if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0)
2438 return run_get_autosync (cmd, argc, argv);
2440 if (strcasecmp (cmd, "set_verbose") == 0 || strcasecmp (cmd, "set-verbose") == 0 || strcasecmp (cmd, "verbose") == 0)
2441 return run_set_verbose (cmd, argc, argv);
2443 if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0)
2444 return run_get_verbose (cmd, argc, argv);
2446 if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0)
2447 return run_is_ready (cmd, argc, argv);
2449 if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0)
2450 return run_is_config (cmd, argc, argv);
2452 if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0)
2453 return run_is_launching (cmd, argc, argv);
2455 if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0)
2456 return run_is_busy (cmd, argc, argv);
2458 if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0)
2459 return run_get_state (cmd, argc, argv);
2461 if (strcasecmp (cmd, "mount") == 0)
2462 return run_mount (cmd, argc, argv);
2464 if (strcasecmp (cmd, "sync") == 0)
2465 return run_sync (cmd, argc, argv);
2467 if (strcasecmp (cmd, "touch") == 0)
2468 return run_touch (cmd, argc, argv);
2470 if (strcasecmp (cmd, "cat") == 0)
2471 return run_cat (cmd, argc, argv);
2473 if (strcasecmp (cmd, "ll") == 0)
2474 return run_ll (cmd, argc, argv);
2476 if (strcasecmp (cmd, "ls") == 0)
2477 return run_ls (cmd, argc, argv);
2479 if (strcasecmp (cmd, "list_devices") == 0 || strcasecmp (cmd, "list-devices") == 0)
2480 return run_list_devices (cmd, argc, argv);
2482 if (strcasecmp (cmd, "list_partitions") == 0 || strcasecmp (cmd, "list-partitions") == 0)
2483 return run_list_partitions (cmd, argc, argv);
2485 if (strcasecmp (cmd, "pvs") == 0)
2486 return run_pvs (cmd, argc, argv);
2488 if (strcasecmp (cmd, "vgs") == 0)
2489 return run_vgs (cmd, argc, argv);
2491 if (strcasecmp (cmd, "lvs") == 0)
2492 return run_lvs (cmd, argc, argv);
2494 if (strcasecmp (cmd, "pvs_full") == 0 || strcasecmp (cmd, "pvs-full") == 0)
2495 return run_pvs_full (cmd, argc, argv);
2497 if (strcasecmp (cmd, "vgs_full") == 0 || strcasecmp (cmd, "vgs-full") == 0)
2498 return run_vgs_full (cmd, argc, argv);
2500 if (strcasecmp (cmd, "lvs_full") == 0 || strcasecmp (cmd, "lvs-full") == 0)
2501 return run_lvs_full (cmd, argc, argv);
2503 if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0)
2504 return run_read_lines (cmd, argc, argv);
2506 if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0)
2507 return run_aug_init (cmd, argc, argv);
2509 if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0)
2510 return run_aug_close (cmd, argc, argv);
2512 if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0)
2513 return run_aug_defvar (cmd, argc, argv);
2515 if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0)
2516 return run_aug_defnode (cmd, argc, argv);
2518 if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0)
2519 return run_aug_get (cmd, argc, argv);
2521 if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0)
2522 return run_aug_set (cmd, argc, argv);
2524 if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0)
2525 return run_aug_insert (cmd, argc, argv);
2527 if (strcasecmp (cmd, "aug_rm") == 0 || strcasecmp (cmd, "aug-rm") == 0)
2528 return run_aug_rm (cmd, argc, argv);
2530 if (strcasecmp (cmd, "aug_mv") == 0 || strcasecmp (cmd, "aug-mv") == 0)
2531 return run_aug_mv (cmd, argc, argv);
2533 if (strcasecmp (cmd, "aug_match") == 0 || strcasecmp (cmd, "aug-match") == 0)
2534 return run_aug_match (cmd, argc, argv);
2536 if (strcasecmp (cmd, "aug_save") == 0 || strcasecmp (cmd, "aug-save") == 0)
2537 return run_aug_save (cmd, argc, argv);
2539 if (strcasecmp (cmd, "aug_load") == 0 || strcasecmp (cmd, "aug-load") == 0)
2540 return run_aug_load (cmd, argc, argv);
2542 if (strcasecmp (cmd, "aug_ls") == 0 || strcasecmp (cmd, "aug-ls") == 0)
2543 return run_aug_ls (cmd, argc, argv);
2545 if (strcasecmp (cmd, "rm") == 0)
2546 return run_rm (cmd, argc, argv);
2548 if (strcasecmp (cmd, "rmdir") == 0)
2549 return run_rmdir (cmd, argc, argv);
2551 if (strcasecmp (cmd, "rm_rf") == 0 || strcasecmp (cmd, "rm-rf") == 0)
2552 return run_rm_rf (cmd, argc, argv);
2554 if (strcasecmp (cmd, "mkdir") == 0)
2555 return run_mkdir (cmd, argc, argv);
2557 if (strcasecmp (cmd, "mkdir_p") == 0 || strcasecmp (cmd, "mkdir-p") == 0)
2558 return run_mkdir_p (cmd, argc, argv);
2560 if (strcasecmp (cmd, "chmod") == 0)
2561 return run_chmod (cmd, argc, argv);
2563 if (strcasecmp (cmd, "chown") == 0)
2564 return run_chown (cmd, argc, argv);
2566 if (strcasecmp (cmd, "exists") == 0)
2567 return run_exists (cmd, argc, argv);
2569 if (strcasecmp (cmd, "is_file") == 0 || strcasecmp (cmd, "is-file") == 0)
2570 return run_is_file (cmd, argc, argv);
2572 if (strcasecmp (cmd, "is_dir") == 0 || strcasecmp (cmd, "is-dir") == 0)
2573 return run_is_dir (cmd, argc, argv);
2575 if (strcasecmp (cmd, "pvcreate") == 0)
2576 return run_pvcreate (cmd, argc, argv);
2578 if (strcasecmp (cmd, "vgcreate") == 0)
2579 return run_vgcreate (cmd, argc, argv);
2581 if (strcasecmp (cmd, "lvcreate") == 0)
2582 return run_lvcreate (cmd, argc, argv);
2584 if (strcasecmp (cmd, "mkfs") == 0)
2585 return run_mkfs (cmd, argc, argv);
2587 if (strcasecmp (cmd, "sfdisk") == 0)
2588 return run_sfdisk (cmd, argc, argv);
2590 if (strcasecmp (cmd, "write_file") == 0 || strcasecmp (cmd, "write-file") == 0)
2591 return run_write_file (cmd, argc, argv);
2593 if (strcasecmp (cmd, "umount") == 0 || strcasecmp (cmd, "unmount") == 0)
2594 return run_umount (cmd, argc, argv);
2596 if (strcasecmp (cmd, "mounts") == 0)
2597 return run_mounts (cmd, argc, argv);
2599 if (strcasecmp (cmd, "umount_all") == 0 || strcasecmp (cmd, "umount-all") == 0 || strcasecmp (cmd, "unmount-all") == 0)
2600 return run_umount_all (cmd, argc, argv);
2602 if (strcasecmp (cmd, "lvm_remove_all") == 0 || strcasecmp (cmd, "lvm-remove-all") == 0)
2603 return run_lvm_remove_all (cmd, argc, argv);
2605 if (strcasecmp (cmd, "file") == 0)
2606 return run_file (cmd, argc, argv);
2608 if (strcasecmp (cmd, "command") == 0)
2609 return run_command (cmd, argc, argv);
2611 if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
2612 return run_command_lines (cmd, argc, argv);
2614 if (strcasecmp (cmd, "stat") == 0)
2615 return run_stat (cmd, argc, argv);
2617 if (strcasecmp (cmd, "lstat") == 0)
2618 return run_lstat (cmd, argc, argv);
2620 if (strcasecmp (cmd, "statvfs") == 0)
2621 return run_statvfs (cmd, argc, argv);
2623 if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
2624 return run_tune2fs_l (cmd, argc, argv);
2626 if (strcasecmp (cmd, "blockdev_setro") == 0 || strcasecmp (cmd, "blockdev-setro") == 0)
2627 return run_blockdev_setro (cmd, argc, argv);
2629 if (strcasecmp (cmd, "blockdev_setrw") == 0 || strcasecmp (cmd, "blockdev-setrw") == 0)
2630 return run_blockdev_setrw (cmd, argc, argv);
2632 if (strcasecmp (cmd, "blockdev_getro") == 0 || strcasecmp (cmd, "blockdev-getro") == 0)
2633 return run_blockdev_getro (cmd, argc, argv);
2635 if (strcasecmp (cmd, "blockdev_getss") == 0 || strcasecmp (cmd, "blockdev-getss") == 0)
2636 return run_blockdev_getss (cmd, argc, argv);
2638 if (strcasecmp (cmd, "blockdev_getbsz") == 0 || strcasecmp (cmd, "blockdev-getbsz") == 0)
2639 return run_blockdev_getbsz (cmd, argc, argv);
2641 if (strcasecmp (cmd, "blockdev_setbsz") == 0 || strcasecmp (cmd, "blockdev-setbsz") == 0)
2642 return run_blockdev_setbsz (cmd, argc, argv);
2644 if (strcasecmp (cmd, "blockdev_getsz") == 0 || strcasecmp (cmd, "blockdev-getsz") == 0)
2645 return run_blockdev_getsz (cmd, argc, argv);
2647 if (strcasecmp (cmd, "blockdev_getsize64") == 0 || strcasecmp (cmd, "blockdev-getsize64") == 0)
2648 return run_blockdev_getsize64 (cmd, argc, argv);
2650 if (strcasecmp (cmd, "blockdev_flushbufs") == 0 || strcasecmp (cmd, "blockdev-flushbufs") == 0)
2651 return run_blockdev_flushbufs (cmd, argc, argv);
2653 if (strcasecmp (cmd, "blockdev_rereadpt") == 0 || strcasecmp (cmd, "blockdev-rereadpt") == 0)
2654 return run_blockdev_rereadpt (cmd, argc, argv);
2656 if (strcasecmp (cmd, "upload") == 0)
2657 return run_upload (cmd, argc, argv);
2659 if (strcasecmp (cmd, "download") == 0)
2660 return run_download (cmd, argc, argv);
2662 if (strcasecmp (cmd, "checksum") == 0)
2663 return run_checksum (cmd, argc, argv);
2665 if (strcasecmp (cmd, "tar_in") == 0 || strcasecmp (cmd, "tar-in") == 0)
2666 return run_tar_in (cmd, argc, argv);
2668 if (strcasecmp (cmd, "tar_out") == 0 || strcasecmp (cmd, "tar-out") == 0)
2669 return run_tar_out (cmd, argc, argv);
2671 if (strcasecmp (cmd, "tgz_in") == 0 || strcasecmp (cmd, "tgz-in") == 0)
2672 return run_tgz_in (cmd, argc, argv);
2674 if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0)
2675 return run_tgz_out (cmd, argc, argv);
2677 if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0)
2678 return run_mount_ro (cmd, argc, argv);
2680 if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0)
2681 return run_mount_options (cmd, argc, argv);
2683 if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0)
2684 return run_mount_vfs (cmd, argc, argv);
2686 if (strcasecmp (cmd, "debug") == 0)
2687 return run_debug (cmd, argc, argv);
2689 if (strcasecmp (cmd, "lvremove") == 0)
2690 return run_lvremove (cmd, argc, argv);
2692 if (strcasecmp (cmd, "vgremove") == 0)
2693 return run_vgremove (cmd, argc, argv);
2695 if (strcasecmp (cmd, "pvremove") == 0)
2696 return run_pvremove (cmd, argc, argv);
2698 if (strcasecmp (cmd, "set_e2label") == 0 || strcasecmp (cmd, "set-e2label") == 0)
2699 return run_set_e2label (cmd, argc, argv);
2701 if (strcasecmp (cmd, "get_e2label") == 0 || strcasecmp (cmd, "get-e2label") == 0)
2702 return run_get_e2label (cmd, argc, argv);
2704 if (strcasecmp (cmd, "set_e2uuid") == 0 || strcasecmp (cmd, "set-e2uuid") == 0)
2705 return run_set_e2uuid (cmd, argc, argv);
2707 if (strcasecmp (cmd, "get_e2uuid") == 0 || strcasecmp (cmd, "get-e2uuid") == 0)
2708 return run_get_e2uuid (cmd, argc, argv);
2710 if (strcasecmp (cmd, "fsck") == 0)
2711 return run_fsck (cmd, argc, argv);
2713 if (strcasecmp (cmd, "zero") == 0)
2714 return run_zero (cmd, argc, argv);
2716 if (strcasecmp (cmd, "grub_install") == 0 || strcasecmp (cmd, "grub-install") == 0)
2717 return run_grub_install (cmd, argc, argv);
2719 if (strcasecmp (cmd, "cp") == 0)
2720 return run_cp (cmd, argc, argv);
2722 if (strcasecmp (cmd, "cp_a") == 0 || strcasecmp (cmd, "cp-a") == 0)
2723 return run_cp_a (cmd, argc, argv);
2725 if (strcasecmp (cmd, "mv") == 0)
2726 return run_mv (cmd, argc, argv);
2728 if (strcasecmp (cmd, "drop_caches") == 0 || strcasecmp (cmd, "drop-caches") == 0)
2729 return run_drop_caches (cmd, argc, argv);
2731 if (strcasecmp (cmd, "dmesg") == 0)
2732 return run_dmesg (cmd, argc, argv);
2734 if (strcasecmp (cmd, "ping_daemon") == 0 || strcasecmp (cmd, "ping-daemon") == 0)
2735 return run_ping_daemon (cmd, argc, argv);
2737 if (strcasecmp (cmd, "equal") == 0)
2738 return run_equal (cmd, argc, argv);
2740 if (strcasecmp (cmd, "strings") == 0)
2741 return run_strings (cmd, argc, argv);
2743 if (strcasecmp (cmd, "strings_e") == 0 || strcasecmp (cmd, "strings-e") == 0)
2744 return run_strings_e (cmd, argc, argv);
2746 if (strcasecmp (cmd, "hexdump") == 0)
2747 return run_hexdump (cmd, argc, argv);
2750 fprintf (stderr, "%s: unknown command\n", cmd);