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", "add-drive-ro", "add a drive in snapshot mode (read-only)");
37 printf ("%-20s %s\n", "aug-close", "close the current Augeas handle");
38 printf ("%-20s %s\n", "aug-defnode", "define an Augeas node");
39 printf ("%-20s %s\n", "aug-defvar", "define an Augeas variable");
40 printf ("%-20s %s\n", "aug-get", "look up the value of an Augeas path");
41 printf ("%-20s %s\n", "aug-init", "create a new Augeas handle");
42 printf ("%-20s %s\n", "aug-insert", "insert a sibling Augeas node");
43 printf ("%-20s %s\n", "aug-load", "load files into the tree");
44 printf ("%-20s %s\n", "aug-ls", "list Augeas nodes under a path");
45 printf ("%-20s %s\n", "aug-match", "return Augeas nodes which match path");
46 printf ("%-20s %s\n", "aug-mv", "move Augeas node");
47 printf ("%-20s %s\n", "aug-rm", "remove an Augeas path");
48 printf ("%-20s %s\n", "aug-save", "write all pending Augeas changes to disk");
49 printf ("%-20s %s\n", "aug-set", "set Augeas path to value");
50 printf ("%-20s %s\n", "blockdev-flushbufs", "flush device buffers");
51 printf ("%-20s %s\n", "blockdev-getbsz", "get blocksize of block device");
52 printf ("%-20s %s\n", "blockdev-getro", "is block device set to read-only");
53 printf ("%-20s %s\n", "blockdev-getsize64", "get total size of device in bytes");
54 printf ("%-20s %s\n", "blockdev-getss", "get sectorsize of block device");
55 printf ("%-20s %s\n", "blockdev-getsz", "get total size of device in 512-byte sectors");
56 printf ("%-20s %s\n", "blockdev-rereadpt", "reread partition table");
57 printf ("%-20s %s\n", "blockdev-setbsz", "set blocksize of block device");
58 printf ("%-20s %s\n", "blockdev-setro", "set block device to read-only");
59 printf ("%-20s %s\n", "blockdev-setrw", "set block device to read-write");
60 printf ("%-20s %s\n", "cat", "list the contents of a file");
61 printf ("%-20s %s\n", "checksum", "compute MD5, SHAx or CRC checksum of file");
62 printf ("%-20s %s\n", "chmod", "change file mode");
63 printf ("%-20s %s\n", "chown", "change file owner and group");
64 printf ("%-20s %s\n", "command", "run a command from the guest filesystem");
65 printf ("%-20s %s\n", "command-lines", "run a command, returning lines");
66 printf ("%-20s %s\n", "config", "add qemu parameters");
67 printf ("%-20s %s\n", "cp", "copy a file");
68 printf ("%-20s %s\n", "cp-a", "copy a file or directory recursively");
69 printf ("%-20s %s\n", "debug", "debugging and internals");
70 printf ("%-20s %s\n", "df", "report file system disk space usage");
71 printf ("%-20s %s\n", "df-h", "report file system disk space usage (human readable)");
72 printf ("%-20s %s\n", "dmesg", "return kernel messages");
73 printf ("%-20s %s\n", "download", "download a file to the local machine");
74 printf ("%-20s %s\n", "drop-caches", "drop kernel page cache, dentries and inodes");
75 printf ("%-20s %s\n", "du", "estimate file space usage");
76 printf ("%-20s %s\n", "e2fsck-f", "check an ext2/ext3 filesystem");
77 printf ("%-20s %s\n", "equal", "test if two files have equal contents");
78 printf ("%-20s %s\n", "exists", "test if file or directory exists");
79 printf ("%-20s %s\n", "file", "determine file type");
80 printf ("%-20s %s\n", "find", "find all files and directories");
81 printf ("%-20s %s\n", "fsck", "run the filesystem checker");
82 printf ("%-20s %s\n", "get-append", "get the additional kernel options");
83 printf ("%-20s %s\n", "get-autosync", "get autosync mode");
84 printf ("%-20s %s\n", "get-e2label", "get the ext2/3/4 filesystem label");
85 printf ("%-20s %s\n", "get-e2uuid", "get the ext2/3/4 filesystem UUID");
86 printf ("%-20s %s\n", "get-memsize", "get memory allocated to the qemu subprocess");
87 printf ("%-20s %s\n", "get-path", "get the search path");
88 printf ("%-20s %s\n", "get-qemu", "get the qemu binary");
89 printf ("%-20s %s\n", "get-state", "get the current state");
90 printf ("%-20s %s\n", "get-verbose", "get verbose mode");
91 printf ("%-20s %s\n", "glob-expand", "expand a wildcard path");
92 printf ("%-20s %s\n", "grub-install", "install GRUB");
93 printf ("%-20s %s\n", "head", "return first 10 lines of a file");
94 printf ("%-20s %s\n", "head-n", "return first N lines of a file");
95 printf ("%-20s %s\n", "hexdump", "dump a file in hexadecimal");
96 printf ("%-20s %s\n", "initrd-list", "list files in an initrd");
97 printf ("%-20s %s\n", "is-busy", "is busy processing a command");
98 printf ("%-20s %s\n", "is-config", "is in configuration state");
99 printf ("%-20s %s\n", "is-dir", "test if file exists");
100 printf ("%-20s %s\n", "is-file", "test if file exists");
101 printf ("%-20s %s\n", "is-launching", "is launching subprocess");
102 printf ("%-20s %s\n", "is-ready", "is ready to accept commands");
103 printf ("%-20s %s\n", "kill-subprocess", "kill the qemu subprocess");
104 printf ("%-20s %s\n", "launch", "launch the qemu subprocess");
105 printf ("%-20s %s\n", "list-devices", "list the block devices");
106 printf ("%-20s %s\n", "list-partitions", "list the partitions");
107 printf ("%-20s %s\n", "ll", "list the files in a directory (long format)");
108 printf ("%-20s %s\n", "ls", "list the files in a directory");
109 printf ("%-20s %s\n", "lstat", "get file information for a symbolic link");
110 printf ("%-20s %s\n", "lvcreate", "create an LVM volume group");
111 printf ("%-20s %s\n", "lvm-remove-all", "remove all LVM LVs, VGs and PVs");
112 printf ("%-20s %s\n", "lvremove", "remove an LVM logical volume");
113 printf ("%-20s %s\n", "lvresize", "resize an LVM logical volume");
114 printf ("%-20s %s\n", "lvs", "list the LVM logical volumes (LVs)");
115 printf ("%-20s %s\n", "lvs-full", "list the LVM logical volumes (LVs)");
116 printf ("%-20s %s\n", "mkdir", "create a directory");
117 printf ("%-20s %s\n", "mkdir-p", "create a directory and parents");
118 printf ("%-20s %s\n", "mkdtemp", "create a temporary directory");
119 printf ("%-20s %s\n", "mkfifo", "make FIFO (named pipe)");
120 printf ("%-20s %s\n", "mkfs", "make a filesystem");
121 printf ("%-20s %s\n", "mknod", "make block, character or FIFO devices");
122 printf ("%-20s %s\n", "mknod-b", "make block device node");
123 printf ("%-20s %s\n", "mknod-c", "make char device node");
124 printf ("%-20s %s\n", "mkswap", "create a swap partition");
125 printf ("%-20s %s\n", "mkswap-L", "create a swap partition with a label");
126 printf ("%-20s %s\n", "mkswap-U", "create a swap partition with an explicit UUID");
127 printf ("%-20s %s\n", "mount", "mount a guest disk at a position in the filesystem");
128 printf ("%-20s %s\n", "mount-loop", "mount a file using the loop device");
129 printf ("%-20s %s\n", "mount-options", "mount a guest disk with mount options");
130 printf ("%-20s %s\n", "mount-ro", "mount a guest disk, read-only");
131 printf ("%-20s %s\n", "mount-vfs", "mount a guest disk with mount options and vfstype");
132 printf ("%-20s %s\n", "mounts", "show mounted filesystems");
133 printf ("%-20s %s\n", "mv", "move a file");
134 printf ("%-20s %s\n", "ntfs-3g-probe", "probe NTFS volume");
135 printf ("%-20s %s\n", "ping-daemon", "ping the guest daemon");
136 printf ("%-20s %s\n", "pvcreate", "create an LVM physical volume");
137 printf ("%-20s %s\n", "pvremove", "remove an LVM physical volume");
138 printf ("%-20s %s\n", "pvresize", "resize an LVM physical volume");
139 printf ("%-20s %s\n", "pvs", "list the LVM physical volumes (PVs)");
140 printf ("%-20s %s\n", "pvs-full", "list the LVM physical volumes (PVs)");
141 printf ("%-20s %s\n", "read-lines", "read file as lines");
142 printf ("%-20s %s\n", "resize2fs", "resize an ext2/ext3 filesystem");
143 printf ("%-20s %s\n", "rm", "remove a file");
144 printf ("%-20s %s\n", "rm-rf", "remove a file or directory recursively");
145 printf ("%-20s %s\n", "rmdir", "remove a directory");
146 printf ("%-20s %s\n", "scrub-device", "scrub (securely wipe) a device");
147 printf ("%-20s %s\n", "scrub-file", "scrub (securely wipe) a file");
148 printf ("%-20s %s\n", "scrub-freespace", "scrub (securely wipe) free space");
149 printf ("%-20s %s\n", "set-append", "add options to kernel command line");
150 printf ("%-20s %s\n", "set-autosync", "set autosync mode");
151 printf ("%-20s %s\n", "set-e2label", "set the ext2/3/4 filesystem label");
152 printf ("%-20s %s\n", "set-e2uuid", "set the ext2/3/4 filesystem UUID");
153 printf ("%-20s %s\n", "set-memsize", "set memory allocated to the qemu subprocess");
154 printf ("%-20s %s\n", "set-path", "set the search path");
155 printf ("%-20s %s\n", "set-qemu", "set the qemu binary");
156 printf ("%-20s %s\n", "set-verbose", "set verbose mode");
157 printf ("%-20s %s\n", "sfdisk", "create partitions on a block device");
158 printf ("%-20s %s\n", "sfdisk-N", "modify a single partition on a block device");
159 printf ("%-20s %s\n", "sfdisk-disk-geometry", "display the disk geometry from the partition table");
160 printf ("%-20s %s\n", "sfdisk-kernel-geometry", "display the kernel geometry");
161 printf ("%-20s %s\n", "sfdisk-l", "display the partition table");
162 printf ("%-20s %s\n", "sh", "run a command via the shell");
163 printf ("%-20s %s\n", "sh-lines", "run a command via the shell returning lines");
164 printf ("%-20s %s\n", "sleep", "sleep for some seconds");
165 printf ("%-20s %s\n", "stat", "get file information");
166 printf ("%-20s %s\n", "statvfs", "get file system statistics");
167 printf ("%-20s %s\n", "strings", "print the printable strings in a file");
168 printf ("%-20s %s\n", "strings-e", "print the printable strings in a file");
169 printf ("%-20s %s\n", "sync", "sync disks, writes are flushed through to the disk image");
170 printf ("%-20s %s\n", "tail", "return last 10 lines of a file");
171 printf ("%-20s %s\n", "tail-n", "return last N lines of a file");
172 printf ("%-20s %s\n", "tar-in", "unpack tarfile to directory");
173 printf ("%-20s %s\n", "tar-out", "pack directory into tarfile");
174 printf ("%-20s %s\n", "tgz-in", "unpack compressed tarball to directory");
175 printf ("%-20s %s\n", "tgz-out", "pack directory into compressed tarball");
176 printf ("%-20s %s\n", "touch", "update file timestamps or create a new file");
177 printf ("%-20s %s\n", "tune2fs-l", "get ext2/ext3/ext4 superblock details");
178 printf ("%-20s %s\n", "umask", "set file mode creation mask (umask)");
179 printf ("%-20s %s\n", "umount", "unmount a filesystem");
180 printf ("%-20s %s\n", "umount-all", "unmount all filesystems");
181 printf ("%-20s %s\n", "upload", "upload a file from the local machine");
182 printf ("%-20s %s\n", "vg-activate", "activate or deactivate some volume groups");
183 printf ("%-20s %s\n", "vg-activate-all", "activate or deactivate all volume groups");
184 printf ("%-20s %s\n", "vgcreate", "create an LVM volume group");
185 printf ("%-20s %s\n", "vgremove", "remove an LVM volume group");
186 printf ("%-20s %s\n", "vgs", "list the LVM volume groups (VGs)");
187 printf ("%-20s %s\n", "vgs-full", "list the LVM volume groups (VGs)");
188 printf ("%-20s %s\n", "wc-c", "count characters in a file");
189 printf ("%-20s %s\n", "wc-l", "count lines in a file");
190 printf ("%-20s %s\n", "wc-w", "count words in a file");
191 printf ("%-20s %s\n", "write-file", "create a file");
192 printf ("%-20s %s\n", "zero", "write zeroes to the device");
193 printf ("%-20s %s\n", "zerofree", "zero unused inodes and disk blocks on ext2/3 filesystem");
194 printf (" Use -h <cmd> / help <cmd> to show detailed help for a command.\n");
197 void display_command (const char *cmd)
199 if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
200 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.");
202 if (strcasecmp (cmd, "kill_subprocess") == 0 || strcasecmp (cmd, "kill-subprocess") == 0)
203 pod2text ("kill-subprocess - kill the qemu subprocess", " kill-subprocess\n\nThis kills the qemu subprocess. You should never need to call this.");
205 if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
206 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,cache=off>.\n\nNote that this call checks for the existence of C<filename>. This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs. To specify those, use\nthe general C<config> call instead.\n\nYou can use 'add' as an alias for this command.");
208 if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
209 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\nNote that this call checks for the existence of C<filename>. This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs. To specify those, use\nthe general C<config> call instead.\n\nYou can use 'cdrom' as an alias for this command.");
211 if (strcasecmp (cmd, "add_drive_ro") == 0 || strcasecmp (cmd, "add-drive-ro") == 0 || strcasecmp (cmd, "add-ro") == 0)
212 pod2text ("add-drive-ro - add a drive in snapshot mode (read-only)", " add-drive-ro <filename>\n\nThis adds a drive in snapshot mode, making it effectively\nread-only.\n\nNote that writes to the device are allowed, and will be seen for\nthe duration of the guestfs handle, but they are written\nto a temporary file which is discarded as soon as the guestfs\nhandle is closed. We don't currently have any method to enable\nchanges to be committed, although qemu can support this.\n\nThis is equivalent to the qemu parameter\nC<-drive file=filename,snapshot=on>.\n\nNote that this call checks for the existence of C<filename>. This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs. To specify those, use\nthe general C<config> call instead.\n\nYou can use 'add-ro' as an alias for this command.");
214 if (strcasecmp (cmd, "config") == 0)
215 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.");
217 if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0)
218 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\nSetting C<qemu> to C<NULL> restores the default qemu binary.\n\nYou can use 'qemu' as an alias for this command.");
220 if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0)
221 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.");
223 if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0)
224 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\nSetting C<path> to C<NULL> restores the default path.\n\nYou can use 'path' as an alias for this command.");
226 if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0)
227 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.");
229 if (strcasecmp (cmd, "set_append") == 0 || strcasecmp (cmd, "set-append") == 0 || strcasecmp (cmd, "append") == 0)
230 pod2text ("set-append - add options to kernel command line", " set-append <append>\n\nThis function is used to add additional options to the\nguest kernel command line.\n\nThe default is C<NULL> unless overridden by setting\nC<LIBGUESTFS_APPEND> environment variable.\n\nSetting C<append> to C<NULL> means I<no> additional options\nare passed (libguestfs always adds a few of its own).\n\nYou can use 'append' as an alias for this command.");
232 if (strcasecmp (cmd, "get_append") == 0 || strcasecmp (cmd, "get-append") == 0)
233 pod2text ("get-append - get the additional kernel options", " get-append\n\nReturn the additional kernel options which are added to the\nguest kernel command line.\n\nIf C<NULL> then no options are added.");
235 if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0)
236 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.");
238 if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0)
239 pod2text ("get-autosync - get autosync mode", " get-autosync\n\nGet the autosync flag.");
241 if (strcasecmp (cmd, "set_verbose") == 0 || strcasecmp (cmd, "set-verbose") == 0 || strcasecmp (cmd, "verbose") == 0)
242 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.");
244 if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0)
245 pod2text ("get-verbose - get verbose mode", " get-verbose\n\nThis returns the verbose messages flag.");
247 if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0)
248 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)>.");
250 if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0)
251 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)>.");
253 if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0)
254 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)>.");
256 if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0)
257 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)>.");
259 if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0)
260 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)>.");
262 if (strcasecmp (cmd, "set_memsize") == 0 || strcasecmp (cmd, "set-memsize") == 0 || strcasecmp (cmd, "memsize") == 0)
263 pod2text ("set-memsize - set memory allocated to the qemu subprocess", " set-memsize <memsize>\n\nThis sets the memory size in megabytes allocated to the\nqemu subprocess. This only has any effect if called before\nC<launch>.\n\nYou can also change this by setting the environment\nvariable C<LIBGUESTFS_MEMSIZE> before the handle is\ncreated.\n\nFor more information on the architecture of libguestfs,\nsee L<guestfs(3)>.\n\nYou can use 'memsize' as an alias for this command.");
265 if (strcasecmp (cmd, "get_memsize") == 0 || strcasecmp (cmd, "get-memsize") == 0)
266 pod2text ("get-memsize - get memory allocated to the qemu subprocess", " get-memsize\n\nThis gets the memory size in megabytes allocated to the\nqemu subprocess.\n\nIf C<set_memsize> was not called\non this handle, and if C<LIBGUESTFS_MEMSIZE> was not set,\nthen this returns the compiled-in default value for memsize.\n\nFor more information on the architecture of libguestfs,\nsee L<guestfs(3)>.");
268 if (strcasecmp (cmd, "mount") == 0)
269 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.");
271 if (strcasecmp (cmd, "sync") == 0)
272 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.");
274 if (strcasecmp (cmd, "touch") == 0)
275 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.");
277 if (strcasecmp (cmd, "cat") == 0)
278 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.");
280 if (strcasecmp (cmd, "ll") == 0)
281 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.");
283 if (strcasecmp (cmd, "ls") == 0)
284 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.");
286 if (strcasecmp (cmd, "list_devices") == 0 || strcasecmp (cmd, "list-devices") == 0)
287 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>");
289 if (strcasecmp (cmd, "list_partitions") == 0 || strcasecmp (cmd, "list-partitions") == 0)
290 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>.");
292 if (strcasecmp (cmd, "pvs") == 0)
293 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>.");
295 if (strcasecmp (cmd, "vgs") == 0)
296 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>.");
298 if (strcasecmp (cmd, "lvs") == 0)
299 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>.");
301 if (strcasecmp (cmd, "pvs_full") == 0 || strcasecmp (cmd, "pvs-full") == 0)
302 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.");
304 if (strcasecmp (cmd, "vgs_full") == 0 || strcasecmp (cmd, "vgs-full") == 0)
305 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.");
307 if (strcasecmp (cmd, "lvs_full") == 0 || strcasecmp (cmd, "lvs-full") == 0)
308 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.");
310 if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0)
311 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.");
313 if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0)
314 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/>.");
316 if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0)
317 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.");
319 if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0)
320 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.");
322 if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0)
323 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.");
325 if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0)
326 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.");
328 if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0)
329 pod2text ("aug-set - set Augeas path to value", " aug-set <path> <val>\n\nSet the value associated with C<path> to C<value>.");
331 if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0)
332 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]>.");
334 if (strcasecmp (cmd, "aug_rm") == 0 || strcasecmp (cmd, "aug-rm") == 0)
335 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.");
337 if (strcasecmp (cmd, "aug_mv") == 0 || strcasecmp (cmd, "aug-mv") == 0)
338 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.");
340 if (strcasecmp (cmd, "aug_match") == 0 || strcasecmp (cmd, "aug-match") == 0)
341 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.");
343 if (strcasecmp (cmd, "aug_save") == 0 || strcasecmp (cmd, "aug-save") == 0)
344 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.");
346 if (strcasecmp (cmd, "aug_load") == 0 || strcasecmp (cmd, "aug-load") == 0)
347 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.");
349 if (strcasecmp (cmd, "aug_ls") == 0 || strcasecmp (cmd, "aug-ls") == 0)
350 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.");
352 if (strcasecmp (cmd, "rm") == 0)
353 pod2text ("rm - remove a file", " rm <path>\n\nRemove the single file C<path>.");
355 if (strcasecmp (cmd, "rmdir") == 0)
356 pod2text ("rmdir - remove a directory", " rmdir <path>\n\nRemove the single directory C<path>.");
358 if (strcasecmp (cmd, "rm_rf") == 0 || strcasecmp (cmd, "rm-rf") == 0)
359 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.");
361 if (strcasecmp (cmd, "mkdir") == 0)
362 pod2text ("mkdir - create a directory", " mkdir <path>\n\nCreate a directory named C<path>.");
364 if (strcasecmp (cmd, "mkdir_p") == 0 || strcasecmp (cmd, "mkdir-p") == 0)
365 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.");
367 if (strcasecmp (cmd, "chmod") == 0)
368 pod2text ("chmod - change file mode", " chmod <mode> <path>\n\nChange the mode (permissions) of C<path> to C<mode>. Only\nnumeric modes are supported.");
370 if (strcasecmp (cmd, "chown") == 0)
371 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).");
373 if (strcasecmp (cmd, "exists") == 0)
374 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>.");
376 if (strcasecmp (cmd, "is_file") == 0 || strcasecmp (cmd, "is-file") == 0)
377 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>.");
379 if (strcasecmp (cmd, "is_dir") == 0 || strcasecmp (cmd, "is-dir") == 0)
380 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>.");
382 if (strcasecmp (cmd, "pvcreate") == 0)
383 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>.");
385 if (strcasecmp (cmd, "vgcreate") == 0)
386 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>.");
388 if (strcasecmp (cmd, "lvcreate") == 0)
389 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.");
391 if (strcasecmp (cmd, "mkfs") == 0)
392 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>.");
394 if (strcasecmp (cmd, "sfdisk") == 0)
395 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\nSee also: C<sfdisk_l>, C<sfdisk_N>\n\nB<This command is dangerous. Without careful use you\ncan easily destroy all your data>.");
397 if (strcasecmp (cmd, "write_file") == 0 || strcasecmp (cmd, "write-file") == 0)
398 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.");
400 if (strcasecmp (cmd, "umount") == 0 || strcasecmp (cmd, "unmount") == 0)
401 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.");
403 if (strcasecmp (cmd, "mounts") == 0)
404 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.");
406 if (strcasecmp (cmd, "umount_all") == 0 || strcasecmp (cmd, "umount-all") == 0 || strcasecmp (cmd, "unmount-all") == 0)
407 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.");
409 if (strcasecmp (cmd, "lvm_remove_all") == 0 || strcasecmp (cmd, "lvm-remove-all") == 0)
410 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>.");
412 if (strcasecmp (cmd, "file") == 0)
413 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).");
415 if (strcasecmp (cmd, "command") == 0)
416 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). Note that\nthe command runs directly, and is I<not> invoked via\nthe shell (see C<sh>).\n\nThe return value is anything printed to I<stdout> by\nthe command.\n\nIf the command returns a non-zero exit status, then\nthis function returns an error message. The error message\nstring is the content of I<stderr> from the command.\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.\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.");
418 if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
419 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.\n\nSee also: C<sh_lines>\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.");
421 if (strcasecmp (cmd, "stat") == 0)
422 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.");
424 if (strcasecmp (cmd, "lstat") == 0)
425 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.");
427 if (strcasecmp (cmd, "statvfs") == 0)
428 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.");
430 if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
431 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.");
433 if (strcasecmp (cmd, "blockdev_setro") == 0 || strcasecmp (cmd, "blockdev-setro") == 0)
434 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.");
436 if (strcasecmp (cmd, "blockdev_setrw") == 0 || strcasecmp (cmd, "blockdev-setrw") == 0)
437 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.");
439 if (strcasecmp (cmd, "blockdev_getro") == 0 || strcasecmp (cmd, "blockdev-getro") == 0)
440 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.");
442 if (strcasecmp (cmd, "blockdev_getss") == 0 || strcasecmp (cmd, "blockdev-getss") == 0)
443 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.");
445 if (strcasecmp (cmd, "blockdev_getbsz") == 0 || strcasecmp (cmd, "blockdev-getbsz") == 0)
446 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.");
448 if (strcasecmp (cmd, "blockdev_setbsz") == 0 || strcasecmp (cmd, "blockdev-setbsz") == 0)
449 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.");
451 if (strcasecmp (cmd, "blockdev_getsz") == 0 || strcasecmp (cmd, "blockdev-getsz") == 0)
452 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.");
454 if (strcasecmp (cmd, "blockdev_getsize64") == 0 || strcasecmp (cmd, "blockdev-getsize64") == 0)
455 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.");
457 if (strcasecmp (cmd, "blockdev_flushbufs") == 0 || strcasecmp (cmd, "blockdev-flushbufs") == 0)
458 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.");
460 if (strcasecmp (cmd, "blockdev_rereadpt") == 0 || strcasecmp (cmd, "blockdev-rereadpt") == 0)
461 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.");
463 if (strcasecmp (cmd, "upload") == 0)
464 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>.");
466 if (strcasecmp (cmd, "download") == 0)
467 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>.");
469 if (strcasecmp (cmd, "checksum") == 0)
470 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.");
472 if (strcasecmp (cmd, "tar_in") == 0 || strcasecmp (cmd, "tar-in") == 0)
473 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>.");
475 if (strcasecmp (cmd, "tar_out") == 0 || strcasecmp (cmd, "tar-out") == 0)
476 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>.");
478 if (strcasecmp (cmd, "tgz_in") == 0 || strcasecmp (cmd, "tgz-in") == 0)
479 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>.");
481 if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0)
482 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>.");
484 if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0)
485 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.");
487 if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0)
488 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.");
490 if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0)
491 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.");
493 if (strcasecmp (cmd, "debug") == 0)
494 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.");
496 if (strcasecmp (cmd, "lvremove") == 0)
497 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>.");
499 if (strcasecmp (cmd, "vgremove") == 0)
500 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).");
502 if (strcasecmp (cmd, "pvremove") == 0)
503 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.");
505 if (strcasecmp (cmd, "set_e2label") == 0 || strcasecmp (cmd, "set-e2label") == 0)
506 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.");
508 if (strcasecmp (cmd, "get_e2label") == 0 || strcasecmp (cmd, "get-e2label") == 0)
509 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>.");
511 if (strcasecmp (cmd, "set_e2uuid") == 0 || strcasecmp (cmd, "set-e2uuid") == 0)
512 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.");
514 if (strcasecmp (cmd, "get_e2uuid") == 0 || strcasecmp (cmd, "get-e2uuid") == 0)
515 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>.");
517 if (strcasecmp (cmd, "fsck") == 0)
518 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>.");
520 if (strcasecmp (cmd, "zero") == 0)
521 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.\n\nSee also: C<scrub_device>.");
523 if (strcasecmp (cmd, "grub_install") == 0 || strcasecmp (cmd, "grub-install") == 0)
524 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>.");
526 if (strcasecmp (cmd, "cp") == 0)
527 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.");
529 if (strcasecmp (cmd, "cp_a") == 0 || strcasecmp (cmd, "cp-a") == 0)
530 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.");
532 if (strcasecmp (cmd, "mv") == 0)
533 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.");
535 if (strcasecmp (cmd, "drop_caches") == 0 || strcasecmp (cmd, "drop-caches") == 0)
536 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.");
538 if (strcasecmp (cmd, "dmesg") == 0)
539 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.");
541 if (strcasecmp (cmd, "ping_daemon") == 0 || strcasecmp (cmd, "ping-daemon") == 0)
542 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.");
544 if (strcasecmp (cmd, "equal") == 0)
545 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.");
547 if (strcasecmp (cmd, "strings") == 0)
548 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.");
550 if (strcasecmp (cmd, "strings_e") == 0 || strcasecmp (cmd, "strings-e") == 0)
551 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.");
553 if (strcasecmp (cmd, "hexdump") == 0)
554 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.");
556 if (strcasecmp (cmd, "zerofree") == 0)
557 pod2text ("zerofree - zero unused inodes and disk blocks on ext2/3 filesystem", " zerofree <device>\n\nThis runs the I<zerofree> program on C<device>. This program\nclaims to zero unused inodes and disk blocks on an ext2/3\nfilesystem, thus making it possible to compress the filesystem\nmore effectively.\n\nYou should B<not> run this program if the filesystem is\nmounted.\n\nIt is possible that using this program can damage the filesystem\nor data on the filesystem.");
559 if (strcasecmp (cmd, "pvresize") == 0)
560 pod2text ("pvresize - resize an LVM physical volume", " pvresize <device>\n\nThis resizes (expands or shrinks) an existing LVM physical\nvolume to match the new size of the underlying device.");
562 if (strcasecmp (cmd, "sfdisk_N") == 0 || strcasecmp (cmd, "sfdisk-N") == 0)
563 pod2text ("sfdisk-N - modify a single partition on a block device", " sfdisk-N <device> <partnum> <cyls> <heads> <sectors> <line>\n\nThis runs L<sfdisk(8)> option to modify just the single\npartition C<n> (note: C<n> counts from 1).\n\nFor other parameters, see C<sfdisk>. You should usually\npass C<0> for the cyls/heads/sectors parameters.\n\nB<This command is dangerous. Without careful use you\ncan easily destroy all your data>.");
565 if (strcasecmp (cmd, "sfdisk_l") == 0 || strcasecmp (cmd, "sfdisk-l") == 0)
566 pod2text ("sfdisk-l - display the partition table", " sfdisk-l <device>\n\nThis displays the partition table on C<device>, in the\nhuman-readable output of the L<sfdisk(8)> command. It is\nnot intended to be parsed.");
568 if (strcasecmp (cmd, "sfdisk_kernel_geometry") == 0 || strcasecmp (cmd, "sfdisk-kernel-geometry") == 0)
569 pod2text ("sfdisk-kernel-geometry - display the kernel geometry", " sfdisk-kernel-geometry <device>\n\nThis displays the kernel's idea of the geometry of C<device>.\n\nThe result is in human-readable format, and not designed to\nbe parsed.");
571 if (strcasecmp (cmd, "sfdisk_disk_geometry") == 0 || strcasecmp (cmd, "sfdisk-disk-geometry") == 0)
572 pod2text ("sfdisk-disk-geometry - display the disk geometry from the partition table", " sfdisk-disk-geometry <device>\n\nThis displays the disk geometry of C<device> read from the\npartition table. Especially in the case where the underlying\nblock device has been resized, this can be different from the\nkernel's idea of the geometry (see C<sfdisk_kernel_geometry>).\n\nThe result is in human-readable format, and not designed to\nbe parsed.");
574 if (strcasecmp (cmd, "vg_activate_all") == 0 || strcasecmp (cmd, "vg-activate-all") == 0)
575 pod2text ("vg-activate-all - activate or deactivate all volume groups", " vg-activate-all <activate>\n\nThis command activates or (if C<activate> is false) deactivates\nall logical volumes in all volume groups.\nIf activated, then they are made known to the\nkernel, ie. they appear as C</dev/mapper> devices. If deactivated,\nthen those devices disappear.\n\nThis command is the same as running C<vgchange -a y|n>");
577 if (strcasecmp (cmd, "vg_activate") == 0 || strcasecmp (cmd, "vg-activate") == 0)
578 pod2text ("vg-activate - activate or deactivate some volume groups", " vg-activate <activate> <volgroups>\n\nThis command activates or (if C<activate> is false) deactivates\nall logical volumes in the listed volume groups C<volgroups>.\nIf activated, then they are made known to the\nkernel, ie. they appear as C</dev/mapper> devices. If deactivated,\nthen those devices disappear.\n\nThis command is the same as running C<vgchange -a y|n volgroups...>\n\nNote that if C<volgroups> is an empty list then B<all> volume groups\nare activated or deactivated.");
580 if (strcasecmp (cmd, "lvresize") == 0)
581 pod2text ("lvresize - resize an LVM logical volume", " lvresize <device> <mbytes>\n\nThis resizes (expands or shrinks) an existing LVM logical\nvolume to C<mbytes>. When reducing, data in the reduced part\nis lost.");
583 if (strcasecmp (cmd, "resize2fs") == 0)
584 pod2text ("resize2fs - resize an ext2/ext3 filesystem", " resize2fs <device>\n\nThis resizes an ext2 or ext3 filesystem to match the size of\nthe underlying device.\n\nI<Note:> It is sometimes required that you run C<e2fsck_f>\non the C<device> before calling this command. For unknown reasons\nC<resize2fs> sometimes gives an error about this and sometimes not.\nIn any case, it is always safe to call C<e2fsck_f> before\ncalling this function.");
586 if (strcasecmp (cmd, "find") == 0)
587 pod2text ("find - find all files and directories", " find <directory>\n\nThis command lists out all files and directories, recursively,\nstarting at C<directory>. It is essentially equivalent to\nrunning the shell command C<find directory -print> but some\npost-processing happens on the output, described below.\n\nThis returns a list of strings I<without any prefix>. Thus\nif the directory structure was:\n\n /tmp/a\n /tmp/b\n /tmp/c/d\n\nthen the returned list from C<find> C</tmp> would be\n4 elements:\n\n a\n b\n c\n c/d\n\nIf C<directory> is not a directory, then this command returns\nan error.\n\nThe returned list is sorted.");
589 if (strcasecmp (cmd, "e2fsck_f") == 0 || strcasecmp (cmd, "e2fsck-f") == 0)
590 pod2text ("e2fsck-f - check an ext2/ext3 filesystem", " e2fsck-f <device>\n\nThis runs C<e2fsck -p -f device>, ie. runs the ext2/ext3\nfilesystem checker on C<device>, noninteractively (C<-p>),\neven if the filesystem appears to be clean (C<-f>).\n\nThis command is only needed because of C<resize2fs>\n(q.v.). Normally you should use C<fsck>.");
592 if (strcasecmp (cmd, "sleep") == 0)
593 pod2text ("sleep - sleep for some seconds", " sleep <secs>\n\nSleep for C<secs> seconds.");
595 if (strcasecmp (cmd, "ntfs_3g_probe") == 0 || strcasecmp (cmd, "ntfs-3g-probe") == 0)
596 pod2text ("ntfs-3g-probe - probe NTFS volume", " ntfs-3g-probe <rw> <device>\n\nThis command runs the L<ntfs-3g.probe(8)> command which probes\nan NTFS C<device> for mountability. (Not all NTFS volumes can\nbe mounted read-write, and some cannot be mounted at all).\n\nC<rw> is a boolean flag. Set it to true if you want to test\nif the volume can be mounted read-write. Set it to false if\nyou want to test if the volume can be mounted read-only.\n\nThe return value is an integer which C<0> if the operation\nwould succeed, or some non-zero value documented in the\nL<ntfs-3g.probe(8)> manual page.");
598 if (strcasecmp (cmd, "sh") == 0)
599 pod2text ("sh - run a command via the shell", " sh <command>\n\nThis call runs a command from the guest filesystem via the\nguest's C</bin/sh>.\n\nThis is like C<command>, but passes the command to:\n\n /bin/sh -c \"command\"\n\nDepending on the guest's shell, this usually results in\nwildcards being expanded, shell expressions being interpolated\nand so on.\n\nAll the provisos about C<command> apply to this call.");
601 if (strcasecmp (cmd, "sh_lines") == 0 || strcasecmp (cmd, "sh-lines") == 0)
602 pod2text ("sh-lines - run a command via the shell returning lines", " sh-lines <command>\n\nThis is the same as C<sh>, but splits the result\ninto a list of lines.\n\nSee also: C<command_lines>");
604 if (strcasecmp (cmd, "glob_expand") == 0 || strcasecmp (cmd, "glob-expand") == 0)
605 pod2text ("glob-expand - expand a wildcard path", " glob-expand <pattern>\n\nThis command searches for all the pathnames matching\nC<pattern> according to the wildcard expansion rules\nused by the shell.\n\nIf no paths match, then this returns an empty list\n(note: not an error).\n\nIt is just a wrapper around the C L<glob(3)> function\nwith flags C<GLOB_MARK|GLOB_BRACE>.\nSee that manual page for more details.");
607 if (strcasecmp (cmd, "scrub_device") == 0 || strcasecmp (cmd, "scrub-device") == 0)
608 pod2text ("scrub-device - scrub (securely wipe) a device", " scrub-device <device>\n\nThis command writes patterns over C<device> to make data retrieval\nmore difficult.\n\nIt is an interface to the L<scrub(1)> program. See that\nmanual page for more details.\n\nB<This command is dangerous. Without careful use you\ncan easily destroy all your data>.");
610 if (strcasecmp (cmd, "scrub_file") == 0 || strcasecmp (cmd, "scrub-file") == 0)
611 pod2text ("scrub-file - scrub (securely wipe) a file", " scrub-file <file>\n\nThis command writes patterns over a file to make data retrieval\nmore difficult.\n\nThe file is I<removed> after scrubbing.\n\nIt is an interface to the L<scrub(1)> program. See that\nmanual page for more details.");
613 if (strcasecmp (cmd, "scrub_freespace") == 0 || strcasecmp (cmd, "scrub-freespace") == 0)
614 pod2text ("scrub-freespace - scrub (securely wipe) free space", " scrub-freespace <dir>\n\nThis command creates the directory C<dir> and then fills it\nwith files until the filesystem is full, and scrubs the files\nas for C<scrub_file>, and deletes them.\nThe intention is to scrub any free space on the partition\ncontaining C<dir>.\n\nIt is an interface to the L<scrub(1)> program. See that\nmanual page for more details.");
616 if (strcasecmp (cmd, "mkdtemp") == 0)
617 pod2text ("mkdtemp - create a temporary directory", " mkdtemp <template>\n\nThis command creates a temporary directory. The\nC<template> parameter should be a full pathname for the\ntemporary directory name with the final six characters being\n\"XXXXXX\".\n\nFor example: \"/tmp/myprogXXXXXX\" or \"/Temp/myprogXXXXXX\",\nthe second one being suitable for Windows filesystems.\n\nThe name of the temporary directory that was created\nis returned.\n\nThe temporary directory is created with mode 0700\nand is owned by root.\n\nThe caller is responsible for deleting the temporary\ndirectory and its contents after use.\n\nSee also: L<mkdtemp(3)>");
619 if (strcasecmp (cmd, "wc_l") == 0 || strcasecmp (cmd, "wc-l") == 0)
620 pod2text ("wc-l - count lines in a file", " wc-l <path>\n\nThis command counts the lines in a file, using the\nC<wc -l> external command.");
622 if (strcasecmp (cmd, "wc_w") == 0 || strcasecmp (cmd, "wc-w") == 0)
623 pod2text ("wc-w - count words in a file", " wc-w <path>\n\nThis command counts the words in a file, using the\nC<wc -w> external command.");
625 if (strcasecmp (cmd, "wc_c") == 0 || strcasecmp (cmd, "wc-c") == 0)
626 pod2text ("wc-c - count characters in a file", " wc-c <path>\n\nThis command counts the characters in a file, using the\nC<wc -c> external command.");
628 if (strcasecmp (cmd, "head") == 0)
629 pod2text ("head - return first 10 lines of a file", " head <path>\n\nThis command returns up to the first 10 lines of a file as\na list of strings.\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.");
631 if (strcasecmp (cmd, "head_n") == 0 || strcasecmp (cmd, "head-n") == 0)
632 pod2text ("head-n - return first N lines of a file", " head-n <nrlines> <path>\n\nIf the parameter C<nrlines> is a positive number, this returns the first\nC<nrlines> lines of the file C<path>.\n\nIf the parameter C<nrlines> is a negative number, this returns lines\nfrom the file C<path>, excluding the last C<nrlines> lines.\n\nIf the parameter C<nrlines> is zero, this returns an empty list.\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.");
634 if (strcasecmp (cmd, "tail") == 0)
635 pod2text ("tail - return last 10 lines of a file", " tail <path>\n\nThis command returns up to the last 10 lines of a file as\na list of strings.\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.");
637 if (strcasecmp (cmd, "tail_n") == 0 || strcasecmp (cmd, "tail-n") == 0)
638 pod2text ("tail-n - return last N lines of a file", " tail-n <nrlines> <path>\n\nIf the parameter C<nrlines> is a positive number, this returns the last\nC<nrlines> lines of the file C<path>.\n\nIf the parameter C<nrlines> is a negative number, this returns lines\nfrom the file C<path>, starting with the C<-nrlines>th line.\n\nIf the parameter C<nrlines> is zero, this returns an empty list.\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.");
640 if (strcasecmp (cmd, "df") == 0)
641 pod2text ("df - report file system disk space usage", " df\n\nThis command runs the C<df> command to report disk space used.\n\nThis command is mostly useful for interactive sessions. It\nis I<not> intended that you try to parse the output string.\nUse C<statvfs> from programs.");
643 if (strcasecmp (cmd, "df_h") == 0 || strcasecmp (cmd, "df-h") == 0)
644 pod2text ("df-h - report file system disk space usage (human readable)", " df-h\n\nThis command runs the C<df -h> command to report disk space used\nin human-readable format.\n\nThis command is mostly useful for interactive sessions. It\nis I<not> intended that you try to parse the output string.\nUse C<statvfs> from programs.");
646 if (strcasecmp (cmd, "du") == 0)
647 pod2text ("du - estimate file space usage", " du <path>\n\nThis command runs the C<du -s> command to estimate file space\nusage for C<path>.\n\nC<path> can be a file or a directory. If C<path> is a directory\nthen the estimate includes the contents of the directory and all\nsubdirectories (recursively).\n\nThe result is the estimated size in I<kilobytes>\n(ie. units of 1024 bytes).");
649 if (strcasecmp (cmd, "initrd_list") == 0 || strcasecmp (cmd, "initrd-list") == 0)
650 pod2text ("initrd-list - list files in an initrd", " initrd-list <path>\n\nThis command lists out files contained in an initrd.\n\nThe files are listed without any initial C</> character. The\nfiles are listed in the order they appear (not necessarily\nalphabetical). Directory names are listed as separate items.\n\nOld Linux kernels (2.4 and earlier) used a compressed ext2\nfilesystem as initrd. We I<only> support the newer initramfs\nformat (compressed cpio files).");
652 if (strcasecmp (cmd, "mount_loop") == 0 || strcasecmp (cmd, "mount-loop") == 0)
653 pod2text ("mount-loop - mount a file using the loop device", " mount-loop <file> <mountpoint>\n\nThis command lets you mount C<file> (a filesystem image\nin a file) on a mount point. It is entirely equivalent to\nthe command C<mount -o loop file mountpoint>.");
655 if (strcasecmp (cmd, "mkswap") == 0)
656 pod2text ("mkswap - create a swap partition", " mkswap <device>\n\nCreate a swap partition on C<device>.");
658 if (strcasecmp (cmd, "mkswap_L") == 0 || strcasecmp (cmd, "mkswap-L") == 0)
659 pod2text ("mkswap-L - create a swap partition with a label", " mkswap-L <label> <device>\n\nCreate a swap partition on C<device> with label C<label>.");
661 if (strcasecmp (cmd, "mkswap_U") == 0 || strcasecmp (cmd, "mkswap-U") == 0)
662 pod2text ("mkswap-U - create a swap partition with an explicit UUID", " mkswap-U <uuid> <device>\n\nCreate a swap partition on C<device> with UUID C<uuid>.");
664 if (strcasecmp (cmd, "mknod") == 0)
665 pod2text ("mknod - make block, character or FIFO devices", " mknod <mode> <devmajor> <devminor> <path>\n\nThis call creates block or character special devices, or\nnamed pipes (FIFOs).\n\nThe C<mode> parameter should be the mode, using the standard\nconstants. C<devmajor> and C<devminor> are the\ndevice major and minor numbers, only used when creating block\nand character special devices.");
667 if (strcasecmp (cmd, "mkfifo") == 0)
668 pod2text ("mkfifo - make FIFO (named pipe)", " mkfifo <mode> <path>\n\nThis call creates a FIFO (named pipe) called C<path> with\nmode C<mode>. It is just a convenient wrapper around\nC<mknod>.");
670 if (strcasecmp (cmd, "mknod_b") == 0 || strcasecmp (cmd, "mknod-b") == 0)
671 pod2text ("mknod-b - make block device node", " mknod-b <mode> <devmajor> <devminor> <path>\n\nThis call creates a block device node called C<path> with\nmode C<mode> and device major/minor C<devmajor> and C<devminor>.\nIt is just a convenient wrapper around C<mknod>.");
673 if (strcasecmp (cmd, "mknod_c") == 0 || strcasecmp (cmd, "mknod-c") == 0)
674 pod2text ("mknod-c - make char device node", " mknod-c <mode> <devmajor> <devminor> <path>\n\nThis call creates a char device node called C<path> with\nmode C<mode> and device major/minor C<devmajor> and C<devminor>.\nIt is just a convenient wrapper around C<mknod>.");
676 if (strcasecmp (cmd, "umask") == 0)
677 pod2text ("umask - set file mode creation mask (umask)", " umask <mask>\n\nThis function sets the mask used for creating new files and\ndevice nodes to C<mask & 0777>.\n\nTypical umask values would be C<022> which creates new files\nwith permissions like \"-rw-r--r--\" or \"-rwxr-xr-x\", and\nC<002> which creates new files with permissions like\n\"-rw-rw-r--\" or \"-rwxrwxr-x\".\n\nSee also L<umask(2)>, C<mknod>, C<mkdir>.\n\nThis call returns the previous umask.");
679 display_builtin_command (cmd);
682 static void print_pv (struct guestfs_lvm_pv *pv)
686 printf ("pv_name: %s\n", pv->pv_name);
687 printf ("pv_uuid: ");
688 for (i = 0; i < 32; ++i)
689 printf ("%c", pv->pv_uuid[i]);
691 printf ("pv_fmt: %s\n", pv->pv_fmt);
692 printf ("pv_size: %" PRIu64 "\n", pv->pv_size);
693 printf ("dev_size: %" PRIu64 "\n", pv->dev_size);
694 printf ("pv_free: %" PRIu64 "\n", pv->pv_free);
695 printf ("pv_used: %" PRIu64 "\n", pv->pv_used);
696 printf ("pv_attr: %s\n", pv->pv_attr);
697 printf ("pv_pe_count: %" PRIi64 "\n", pv->pv_pe_count);
698 printf ("pv_pe_alloc_count: %" PRIi64 "\n", pv->pv_pe_alloc_count);
699 printf ("pv_tags: %s\n", pv->pv_tags);
700 printf ("pe_start: %" PRIu64 "\n", pv->pe_start);
701 printf ("pv_mda_count: %" PRIi64 "\n", pv->pv_mda_count);
702 printf ("pv_mda_free: %" PRIu64 "\n", pv->pv_mda_free);
705 static void print_pv_list (struct guestfs_lvm_pv_list *pvs)
709 for (i = 0; i < pvs->len; ++i)
710 print_pv (&pvs->val[i]);
713 static void print_vg (struct guestfs_lvm_vg *vg)
717 printf ("vg_name: %s\n", vg->vg_name);
718 printf ("vg_uuid: ");
719 for (i = 0; i < 32; ++i)
720 printf ("%c", vg->vg_uuid[i]);
722 printf ("vg_fmt: %s\n", vg->vg_fmt);
723 printf ("vg_attr: %s\n", vg->vg_attr);
724 printf ("vg_size: %" PRIu64 "\n", vg->vg_size);
725 printf ("vg_free: %" PRIu64 "\n", vg->vg_free);
726 printf ("vg_sysid: %s\n", vg->vg_sysid);
727 printf ("vg_extent_size: %" PRIu64 "\n", vg->vg_extent_size);
728 printf ("vg_extent_count: %" PRIi64 "\n", vg->vg_extent_count);
729 printf ("vg_free_count: %" PRIi64 "\n", vg->vg_free_count);
730 printf ("max_lv: %" PRIi64 "\n", vg->max_lv);
731 printf ("max_pv: %" PRIi64 "\n", vg->max_pv);
732 printf ("pv_count: %" PRIi64 "\n", vg->pv_count);
733 printf ("lv_count: %" PRIi64 "\n", vg->lv_count);
734 printf ("snap_count: %" PRIi64 "\n", vg->snap_count);
735 printf ("vg_seqno: %" PRIi64 "\n", vg->vg_seqno);
736 printf ("vg_tags: %s\n", vg->vg_tags);
737 printf ("vg_mda_count: %" PRIi64 "\n", vg->vg_mda_count);
738 printf ("vg_mda_free: %" PRIu64 "\n", vg->vg_mda_free);
741 static void print_vg_list (struct guestfs_lvm_vg_list *vgs)
745 for (i = 0; i < vgs->len; ++i)
746 print_vg (&vgs->val[i]);
749 static void print_lv (struct guestfs_lvm_lv *lv)
753 printf ("lv_name: %s\n", lv->lv_name);
754 printf ("lv_uuid: ");
755 for (i = 0; i < 32; ++i)
756 printf ("%c", lv->lv_uuid[i]);
758 printf ("lv_attr: %s\n", lv->lv_attr);
759 printf ("lv_major: %" PRIi64 "\n", lv->lv_major);
760 printf ("lv_minor: %" PRIi64 "\n", lv->lv_minor);
761 printf ("lv_kernel_major: %" PRIi64 "\n", lv->lv_kernel_major);
762 printf ("lv_kernel_minor: %" PRIi64 "\n", lv->lv_kernel_minor);
763 printf ("lv_size: %" PRIu64 "\n", lv->lv_size);
764 printf ("seg_count: %" PRIi64 "\n", lv->seg_count);
765 printf ("origin: %s\n", lv->origin);
766 if (lv->snap_percent >= 0) printf ("snap_percent: %g %%\n", lv->snap_percent);
767 else printf ("snap_percent: \n");
768 if (lv->copy_percent >= 0) printf ("copy_percent: %g %%\n", lv->copy_percent);
769 else printf ("copy_percent: \n");
770 printf ("move_pv: %s\n", lv->move_pv);
771 printf ("lv_tags: %s\n", lv->lv_tags);
772 printf ("mirror_log: %s\n", lv->mirror_log);
773 printf ("modules: %s\n", lv->modules);
776 static void print_lv_list (struct guestfs_lvm_lv_list *lvs)
780 for (i = 0; i < lvs->len; ++i)
781 print_lv (&lvs->val[i]);
784 static void print_stat (struct guestfs_stat *stat)
786 printf ("dev: %" PRIi64 "\n", stat->dev);
787 printf ("ino: %" PRIi64 "\n", stat->ino);
788 printf ("mode: %" PRIi64 "\n", stat->mode);
789 printf ("nlink: %" PRIi64 "\n", stat->nlink);
790 printf ("uid: %" PRIi64 "\n", stat->uid);
791 printf ("gid: %" PRIi64 "\n", stat->gid);
792 printf ("rdev: %" PRIi64 "\n", stat->rdev);
793 printf ("size: %" PRIi64 "\n", stat->size);
794 printf ("blksize: %" PRIi64 "\n", stat->blksize);
795 printf ("blocks: %" PRIi64 "\n", stat->blocks);
796 printf ("atime: %" PRIi64 "\n", stat->atime);
797 printf ("mtime: %" PRIi64 "\n", stat->mtime);
798 printf ("ctime: %" PRIi64 "\n", stat->ctime);
801 static void print_statvfs (struct guestfs_statvfs *statvfs)
803 printf ("bsize: %" PRIi64 "\n", statvfs->bsize);
804 printf ("frsize: %" PRIi64 "\n", statvfs->frsize);
805 printf ("blocks: %" PRIi64 "\n", statvfs->blocks);
806 printf ("bfree: %" PRIi64 "\n", statvfs->bfree);
807 printf ("bavail: %" PRIi64 "\n", statvfs->bavail);
808 printf ("files: %" PRIi64 "\n", statvfs->files);
809 printf ("ffree: %" PRIi64 "\n", statvfs->ffree);
810 printf ("favail: %" PRIi64 "\n", statvfs->favail);
811 printf ("fsid: %" PRIi64 "\n", statvfs->fsid);
812 printf ("flag: %" PRIi64 "\n", statvfs->flag);
813 printf ("namemax: %" PRIi64 "\n", statvfs->namemax);
816 static int run_launch (const char *cmd, int argc, char *argv[])
820 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
821 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
828 static int run_kill_subprocess (const char *cmd, int argc, char *argv[])
832 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
833 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
836 r = guestfs_kill_subprocess (g);
840 static int run_add_drive (const char *cmd, int argc, char *argv[])
843 const char *filename;
845 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
846 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
850 r = guestfs_add_drive (g, filename);
854 static int run_add_cdrom (const char *cmd, int argc, char *argv[])
857 const char *filename;
859 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
860 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
864 r = guestfs_add_cdrom (g, filename);
868 static int run_add_drive_ro (const char *cmd, int argc, char *argv[])
871 const char *filename;
873 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
874 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
878 r = guestfs_add_drive_ro (g, filename);
882 static int run_config (const char *cmd, int argc, char *argv[])
885 const char *qemuparam;
886 const char *qemuvalue;
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 qemuvalue = strcmp (argv[1], "") != 0 ? argv[1] : NULL;
894 r = guestfs_config (g, qemuparam, qemuvalue);
898 static int run_set_qemu (const char *cmd, int argc, char *argv[])
903 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
904 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
908 r = guestfs_set_qemu (g, qemu);
912 static int run_get_qemu (const char *cmd, int argc, char *argv[])
916 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
917 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
920 r = guestfs_get_qemu (g);
921 if (r == NULL) return -1;
926 static int run_set_path (const char *cmd, int argc, char *argv[])
931 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
932 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
936 r = guestfs_set_path (g, path);
940 static int run_get_path (const char *cmd, int argc, char *argv[])
944 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
945 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
948 r = guestfs_get_path (g);
949 if (r == NULL) return -1;
954 static int run_set_append (const char *cmd, int argc, char *argv[])
959 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
960 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
964 r = guestfs_set_append (g, append);
968 static int run_get_append (const char *cmd, int argc, char *argv[])
972 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
973 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
976 r = guestfs_get_append (g);
977 if (r == NULL) return -1;
982 static int run_set_autosync (const char *cmd, int argc, char *argv[])
987 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
988 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
991 autosync = is_true (argv[0]) ? 1 : 0;
992 r = guestfs_set_autosync (g, autosync);
996 static int run_get_autosync (const char *cmd, int argc, char *argv[])
1000 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1001 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1004 r = guestfs_get_autosync (g);
1005 if (r == -1) return -1;
1006 if (r) printf ("true\n"); else printf ("false\n");
1010 static int run_set_verbose (const char *cmd, int argc, char *argv[])
1015 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1016 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1019 verbose = is_true (argv[0]) ? 1 : 0;
1020 r = guestfs_set_verbose (g, verbose);
1024 static int run_get_verbose (const char *cmd, int argc, char *argv[])
1028 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1029 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1032 r = guestfs_get_verbose (g);
1033 if (r == -1) return -1;
1034 if (r) printf ("true\n"); else printf ("false\n");
1038 static int run_is_ready (const char *cmd, int argc, char *argv[])
1042 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1043 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1046 r = guestfs_is_ready (g);
1047 if (r == -1) return -1;
1048 if (r) printf ("true\n"); else printf ("false\n");
1052 static int run_is_config (const char *cmd, int argc, char *argv[])
1056 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1057 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1060 r = guestfs_is_config (g);
1061 if (r == -1) return -1;
1062 if (r) printf ("true\n"); else printf ("false\n");
1066 static int run_is_launching (const char *cmd, int argc, char *argv[])
1070 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1071 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1074 r = guestfs_is_launching (g);
1075 if (r == -1) return -1;
1076 if (r) printf ("true\n"); else printf ("false\n");
1080 static int run_is_busy (const char *cmd, int argc, char *argv[])
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_is_busy (g);
1089 if (r == -1) return -1;
1090 if (r) printf ("true\n"); else printf ("false\n");
1094 static int run_get_state (const char *cmd, int argc, char *argv[])
1098 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1099 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1102 r = guestfs_get_state (g);
1103 if (r == -1) return -1;
1108 static int run_set_memsize (const char *cmd, int argc, char *argv[])
1113 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1114 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1117 memsize = atoi (argv[0]);
1118 r = guestfs_set_memsize (g, memsize);
1122 static int run_get_memsize (const char *cmd, int argc, char *argv[])
1126 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1127 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1130 r = guestfs_get_memsize (g);
1131 if (r == -1) return -1;
1136 static int run_mount (const char *cmd, int argc, char *argv[])
1140 const char *mountpoint;
1142 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1143 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1147 mountpoint = argv[1];
1148 r = guestfs_mount (g, device, mountpoint);
1152 static int run_sync (const char *cmd, int argc, char *argv[])
1156 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1157 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1160 r = guestfs_sync (g);
1164 static int run_touch (const char *cmd, int argc, char *argv[])
1169 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1170 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1174 r = guestfs_touch (g, path);
1178 static int run_cat (const char *cmd, int argc, char *argv[])
1183 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1184 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1188 r = guestfs_cat (g, path);
1189 if (r == NULL) return -1;
1195 static int run_ll (const char *cmd, int argc, char *argv[])
1198 const char *directory;
1200 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1201 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1204 directory = argv[0];
1205 r = guestfs_ll (g, directory);
1206 if (r == NULL) return -1;
1212 static int run_ls (const char *cmd, int argc, char *argv[])
1215 const char *directory;
1217 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1218 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1221 directory = argv[0];
1222 r = guestfs_ls (g, directory);
1223 if (r == NULL) return -1;
1229 static int run_list_devices (const char *cmd, int argc, char *argv[])
1233 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1234 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1237 r = guestfs_list_devices (g);
1238 if (r == NULL) return -1;
1244 static int run_list_partitions (const char *cmd, int argc, char *argv[])
1248 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1249 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1252 r = guestfs_list_partitions (g);
1253 if (r == NULL) return -1;
1259 static int run_pvs (const char *cmd, int argc, char *argv[])
1263 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1264 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1267 r = guestfs_pvs (g);
1268 if (r == NULL) return -1;
1274 static int run_vgs (const char *cmd, int argc, char *argv[])
1278 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1279 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1282 r = guestfs_vgs (g);
1283 if (r == NULL) return -1;
1289 static int run_lvs (const char *cmd, int argc, char *argv[])
1293 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1294 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1297 r = guestfs_lvs (g);
1298 if (r == NULL) return -1;
1304 static int run_pvs_full (const char *cmd, int argc, char *argv[])
1306 struct guestfs_lvm_pv_list *r;
1308 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1309 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1312 r = guestfs_pvs_full (g);
1313 if (r == NULL) return -1;
1315 guestfs_free_lvm_pv_list (r);
1319 static int run_vgs_full (const char *cmd, int argc, char *argv[])
1321 struct guestfs_lvm_vg_list *r;
1323 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1324 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1327 r = guestfs_vgs_full (g);
1328 if (r == NULL) return -1;
1330 guestfs_free_lvm_vg_list (r);
1334 static int run_lvs_full (const char *cmd, int argc, char *argv[])
1336 struct guestfs_lvm_lv_list *r;
1338 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1339 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1342 r = guestfs_lvs_full (g);
1343 if (r == NULL) return -1;
1345 guestfs_free_lvm_lv_list (r);
1349 static int run_read_lines (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_read_lines (g, path);
1360 if (r == NULL) return -1;
1366 static int run_aug_init (const char *cmd, int argc, char *argv[])
1372 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1373 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1377 flags = atoi (argv[1]);
1378 r = guestfs_aug_init (g, root, flags);
1382 static int run_aug_close (const char *cmd, int argc, char *argv[])
1386 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1387 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1390 r = guestfs_aug_close (g);
1394 static int run_aug_defvar (const char *cmd, int argc, char *argv[])
1400 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1401 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1405 expr = strcmp (argv[1], "") != 0 ? argv[1] : NULL;
1406 r = guestfs_aug_defvar (g, name, expr);
1407 if (r == -1) return -1;
1412 static int run_aug_defnode (const char *cmd, int argc, char *argv[])
1414 struct guestfs_int_bool *r;
1419 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1420 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1426 r = guestfs_aug_defnode (g, name, expr, val);
1427 if (r == NULL) return -1;
1428 printf ("%d, %s\n", r->i,
1429 r->b ? "true" : "false");
1430 guestfs_free_int_bool (r);
1434 static int run_aug_get (const char *cmd, int argc, char *argv[])
1439 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1440 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1444 r = guestfs_aug_get (g, path);
1445 if (r == NULL) return -1;
1451 static int run_aug_set (const char *cmd, int argc, char *argv[])
1457 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1458 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1463 r = guestfs_aug_set (g, path, val);
1467 static int run_aug_insert (const char *cmd, int argc, char *argv[])
1474 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1475 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1480 before = is_true (argv[2]) ? 1 : 0;
1481 r = guestfs_aug_insert (g, path, label, before);
1485 static int run_aug_rm (const char *cmd, int argc, char *argv[])
1490 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1491 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1495 r = guestfs_aug_rm (g, path);
1496 if (r == -1) return -1;
1501 static int run_aug_mv (const char *cmd, int argc, char *argv[])
1507 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1508 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1513 r = guestfs_aug_mv (g, src, dest);
1517 static int run_aug_match (const char *cmd, int argc, char *argv[])
1522 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1523 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1527 r = guestfs_aug_match (g, path);
1528 if (r == NULL) return -1;
1534 static int run_aug_save (const char *cmd, int argc, char *argv[])
1538 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1539 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1542 r = guestfs_aug_save (g);
1546 static int run_aug_load (const char *cmd, int argc, char *argv[])
1550 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1551 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1554 r = guestfs_aug_load (g);
1558 static int run_aug_ls (const char *cmd, int argc, char *argv[])
1563 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1564 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1568 r = guestfs_aug_ls (g, path);
1569 if (r == NULL) return -1;
1575 static int run_rm (const char *cmd, int argc, char *argv[])
1580 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1581 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1585 r = guestfs_rm (g, path);
1589 static int run_rmdir (const char *cmd, int argc, char *argv[])
1594 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1595 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1599 r = guestfs_rmdir (g, path);
1603 static int run_rm_rf (const char *cmd, int argc, char *argv[])
1608 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1609 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1613 r = guestfs_rm_rf (g, path);
1617 static int run_mkdir (const char *cmd, int argc, char *argv[])
1622 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1623 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1627 r = guestfs_mkdir (g, path);
1631 static int run_mkdir_p (const char *cmd, int argc, char *argv[])
1636 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1637 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1641 r = guestfs_mkdir_p (g, path);
1645 static int run_chmod (const char *cmd, int argc, char *argv[])
1651 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1652 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1655 mode = atoi (argv[0]);
1657 r = guestfs_chmod (g, mode, path);
1661 static int run_chown (const char *cmd, int argc, char *argv[])
1668 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1669 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1672 owner = atoi (argv[0]);
1673 group = atoi (argv[1]);
1675 r = guestfs_chown (g, owner, group, path);
1679 static int run_exists (const char *cmd, int argc, char *argv[])
1684 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1685 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1689 r = guestfs_exists (g, path);
1690 if (r == -1) return -1;
1691 if (r) printf ("true\n"); else printf ("false\n");
1695 static int run_is_file (const char *cmd, int argc, char *argv[])
1700 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1701 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1705 r = guestfs_is_file (g, path);
1706 if (r == -1) return -1;
1707 if (r) printf ("true\n"); else printf ("false\n");
1711 static int run_is_dir (const char *cmd, int argc, char *argv[])
1716 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1717 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1721 r = guestfs_is_dir (g, path);
1722 if (r == -1) return -1;
1723 if (r) printf ("true\n"); else printf ("false\n");
1727 static int run_pvcreate (const char *cmd, int argc, char *argv[])
1732 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1733 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1737 r = guestfs_pvcreate (g, device);
1741 static int run_vgcreate (const char *cmd, int argc, char *argv[])
1744 const char *volgroup;
1747 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1748 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1752 physvols = parse_string_list (argv[1]);
1753 r = guestfs_vgcreate (g, volgroup, physvols);
1757 static int run_lvcreate (const char *cmd, int argc, char *argv[])
1761 const char *volgroup;
1764 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1765 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1770 mbytes = atoi (argv[2]);
1771 r = guestfs_lvcreate (g, logvol, volgroup, mbytes);
1775 static int run_mkfs (const char *cmd, int argc, char *argv[])
1781 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1782 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1787 r = guestfs_mkfs (g, fstype, device);
1791 static int run_sfdisk (const char *cmd, int argc, char *argv[])
1800 fprintf (stderr, "%s should have 5 parameter(s)\n", cmd);
1801 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1805 cyls = atoi (argv[1]);
1806 heads = atoi (argv[2]);
1807 sectors = atoi (argv[3]);
1808 lines = parse_string_list (argv[4]);
1809 r = guestfs_sfdisk (g, device, cyls, heads, sectors, lines);
1813 static int run_write_file (const char *cmd, int argc, char *argv[])
1817 const char *content;
1820 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1821 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1826 size = atoi (argv[2]);
1827 r = guestfs_write_file (g, path, content, size);
1831 static int run_umount (const char *cmd, int argc, char *argv[])
1834 const char *pathordevice;
1836 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1837 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1840 pathordevice = argv[0];
1841 r = guestfs_umount (g, pathordevice);
1845 static int run_mounts (const char *cmd, int argc, char *argv[])
1849 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1850 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1853 r = guestfs_mounts (g);
1854 if (r == NULL) return -1;
1860 static int run_umount_all (const char *cmd, int argc, char *argv[])
1864 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1865 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1868 r = guestfs_umount_all (g);
1872 static int run_lvm_remove_all (const char *cmd, int argc, char *argv[])
1876 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1877 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1880 r = guestfs_lvm_remove_all (g);
1884 static int run_file (const char *cmd, int argc, char *argv[])
1889 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1890 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1894 r = guestfs_file (g, path);
1895 if (r == NULL) return -1;
1901 static int run_command (const char *cmd, int argc, char *argv[])
1906 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1907 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1910 arguments = parse_string_list (argv[0]);
1911 r = guestfs_command (g, arguments);
1912 if (r == NULL) return -1;
1918 static int run_command_lines (const char *cmd, int argc, char *argv[])
1923 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1924 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1927 arguments = parse_string_list (argv[0]);
1928 r = guestfs_command_lines (g, arguments);
1929 if (r == NULL) return -1;
1935 static int run_stat (const char *cmd, int argc, char *argv[])
1937 struct guestfs_stat *r;
1940 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1941 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1945 r = guestfs_stat (g, path);
1946 if (r == NULL) return -1;
1952 static int run_lstat (const char *cmd, int argc, char *argv[])
1954 struct guestfs_stat *r;
1957 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1958 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1962 r = guestfs_lstat (g, path);
1963 if (r == NULL) return -1;
1969 static int run_statvfs (const char *cmd, int argc, char *argv[])
1971 struct guestfs_statvfs *r;
1974 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1975 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1979 r = guestfs_statvfs (g, path);
1980 if (r == NULL) return -1;
1986 static int run_tune2fs_l (const char *cmd, int argc, char *argv[])
1991 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1992 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1996 r = guestfs_tune2fs_l (g, device);
1997 if (r == NULL) return -1;
2003 static int run_blockdev_setro (const char *cmd, int argc, char *argv[])
2008 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2009 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2013 r = guestfs_blockdev_setro (g, device);
2017 static int run_blockdev_setrw (const char *cmd, int argc, char *argv[])
2022 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2023 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2027 r = guestfs_blockdev_setrw (g, device);
2031 static int run_blockdev_getro (const char *cmd, int argc, char *argv[])
2036 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2037 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2041 r = guestfs_blockdev_getro (g, device);
2042 if (r == -1) return -1;
2043 if (r) printf ("true\n"); else printf ("false\n");
2047 static int run_blockdev_getss (const char *cmd, int argc, char *argv[])
2052 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2053 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2057 r = guestfs_blockdev_getss (g, device);
2058 if (r == -1) return -1;
2063 static int run_blockdev_getbsz (const char *cmd, int argc, char *argv[])
2068 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2069 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2073 r = guestfs_blockdev_getbsz (g, device);
2074 if (r == -1) return -1;
2079 static int run_blockdev_setbsz (const char *cmd, int argc, char *argv[])
2085 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2086 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2090 blocksize = atoi (argv[1]);
2091 r = guestfs_blockdev_setbsz (g, device, blocksize);
2095 static int run_blockdev_getsz (const char *cmd, int argc, char *argv[])
2100 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2101 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2105 r = guestfs_blockdev_getsz (g, device);
2106 if (r == -1) return -1;
2107 printf ("%" PRIi64 "\n", r);
2111 static int run_blockdev_getsize64 (const char *cmd, int argc, char *argv[])
2116 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2117 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2121 r = guestfs_blockdev_getsize64 (g, device);
2122 if (r == -1) return -1;
2123 printf ("%" PRIi64 "\n", r);
2127 static int run_blockdev_flushbufs (const char *cmd, int argc, char *argv[])
2132 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2133 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2137 r = guestfs_blockdev_flushbufs (g, device);
2141 static int run_blockdev_rereadpt (const char *cmd, int argc, char *argv[])
2146 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2147 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2151 r = guestfs_blockdev_rereadpt (g, device);
2155 static int run_upload (const char *cmd, int argc, char *argv[])
2158 const char *filename;
2159 const char *remotefilename;
2161 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2162 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2165 filename = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
2166 remotefilename = argv[1];
2167 r = guestfs_upload (g, filename, remotefilename);
2171 static int run_download (const char *cmd, int argc, char *argv[])
2174 const char *remotefilename;
2175 const char *filename;
2177 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2178 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2181 remotefilename = argv[0];
2182 filename = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2183 r = guestfs_download (g, remotefilename, filename);
2187 static int run_checksum (const char *cmd, int argc, char *argv[])
2190 const char *csumtype;
2193 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2194 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2199 r = guestfs_checksum (g, csumtype, path);
2200 if (r == NULL) return -1;
2206 static int run_tar_in (const char *cmd, int argc, char *argv[])
2209 const char *tarfile;
2210 const char *directory;
2212 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2213 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2216 tarfile = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
2217 directory = argv[1];
2218 r = guestfs_tar_in (g, tarfile, directory);
2222 static int run_tar_out (const char *cmd, int argc, char *argv[])
2225 const char *directory;
2226 const char *tarfile;
2228 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2229 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2232 directory = argv[0];
2233 tarfile = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2234 r = guestfs_tar_out (g, directory, tarfile);
2238 static int run_tgz_in (const char *cmd, int argc, char *argv[])
2241 const char *tarball;
2242 const char *directory;
2244 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2245 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2248 tarball = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
2249 directory = argv[1];
2250 r = guestfs_tgz_in (g, tarball, directory);
2254 static int run_tgz_out (const char *cmd, int argc, char *argv[])
2257 const char *directory;
2258 const char *tarball;
2260 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2261 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2264 directory = argv[0];
2265 tarball = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2266 r = guestfs_tgz_out (g, directory, tarball);
2270 static int run_mount_ro (const char *cmd, int argc, char *argv[])
2274 const char *mountpoint;
2276 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2277 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2281 mountpoint = argv[1];
2282 r = guestfs_mount_ro (g, device, mountpoint);
2286 static int run_mount_options (const char *cmd, int argc, char *argv[])
2289 const char *options;
2291 const char *mountpoint;
2293 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
2294 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2299 mountpoint = argv[2];
2300 r = guestfs_mount_options (g, options, device, mountpoint);
2304 static int run_mount_vfs (const char *cmd, int argc, char *argv[])
2307 const char *options;
2308 const char *vfstype;
2310 const char *mountpoint;
2312 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
2313 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2319 mountpoint = argv[3];
2320 r = guestfs_mount_vfs (g, options, vfstype, device, mountpoint);
2324 static int run_debug (const char *cmd, int argc, char *argv[])
2330 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2331 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2335 extraargs = parse_string_list (argv[1]);
2336 r = guestfs_debug (g, subcmd, extraargs);
2337 if (r == NULL) return -1;
2343 static int run_lvremove (const char *cmd, int argc, char *argv[])
2348 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2349 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2353 r = guestfs_lvremove (g, device);
2357 static int run_vgremove (const char *cmd, int argc, char *argv[])
2362 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2363 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2367 r = guestfs_vgremove (g, vgname);
2371 static int run_pvremove (const char *cmd, int argc, char *argv[])
2376 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2377 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2381 r = guestfs_pvremove (g, device);
2385 static int run_set_e2label (const char *cmd, int argc, char *argv[])
2391 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2392 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2397 r = guestfs_set_e2label (g, device, label);
2401 static int run_get_e2label (const char *cmd, int argc, char *argv[])
2406 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2407 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2411 r = guestfs_get_e2label (g, device);
2412 if (r == NULL) return -1;
2418 static int run_set_e2uuid (const char *cmd, int argc, char *argv[])
2424 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2425 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2430 r = guestfs_set_e2uuid (g, device, uuid);
2434 static int run_get_e2uuid (const char *cmd, int argc, char *argv[])
2439 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2440 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2444 r = guestfs_get_e2uuid (g, device);
2445 if (r == NULL) return -1;
2451 static int run_fsck (const char *cmd, int argc, char *argv[])
2457 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2458 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2463 r = guestfs_fsck (g, fstype, device);
2464 if (r == -1) return -1;
2469 static int run_zero (const char *cmd, int argc, char *argv[])
2474 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2475 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2479 r = guestfs_zero (g, device);
2483 static int run_grub_install (const char *cmd, int argc, char *argv[])
2489 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2490 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2495 r = guestfs_grub_install (g, root, device);
2499 static int run_cp (const char *cmd, int argc, char *argv[])
2505 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2506 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2511 r = guestfs_cp (g, src, dest);
2515 static int run_cp_a (const char *cmd, int argc, char *argv[])
2521 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2522 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2527 r = guestfs_cp_a (g, src, dest);
2531 static int run_mv (const char *cmd, int argc, char *argv[])
2537 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2538 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2543 r = guestfs_mv (g, src, dest);
2547 static int run_drop_caches (const char *cmd, int argc, char *argv[])
2552 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2553 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2556 whattodrop = atoi (argv[0]);
2557 r = guestfs_drop_caches (g, whattodrop);
2561 static int run_dmesg (const char *cmd, int argc, char *argv[])
2565 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
2566 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2569 r = guestfs_dmesg (g);
2570 if (r == NULL) return -1;
2576 static int run_ping_daemon (const char *cmd, int argc, char *argv[])
2580 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
2581 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2584 r = guestfs_ping_daemon (g);
2588 static int run_equal (const char *cmd, int argc, char *argv[])
2594 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2595 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2600 r = guestfs_equal (g, file1, file2);
2601 if (r == -1) return -1;
2602 if (r) printf ("true\n"); else printf ("false\n");
2606 static int run_strings (const char *cmd, int argc, char *argv[])
2611 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2612 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2616 r = guestfs_strings (g, path);
2617 if (r == NULL) return -1;
2623 static int run_strings_e (const char *cmd, int argc, char *argv[])
2626 const char *encoding;
2629 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2630 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2635 r = guestfs_strings_e (g, encoding, path);
2636 if (r == NULL) return -1;
2642 static int run_hexdump (const char *cmd, int argc, char *argv[])
2647 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2648 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2652 r = guestfs_hexdump (g, path);
2653 if (r == NULL) return -1;
2659 static int run_zerofree (const char *cmd, int argc, char *argv[])
2664 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2665 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2669 r = guestfs_zerofree (g, device);
2673 static int run_pvresize (const char *cmd, int argc, char *argv[])
2678 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2679 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2683 r = guestfs_pvresize (g, device);
2687 static int run_sfdisk_N (const char *cmd, int argc, char *argv[])
2697 fprintf (stderr, "%s should have 6 parameter(s)\n", cmd);
2698 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2702 partnum = atoi (argv[1]);
2703 cyls = atoi (argv[2]);
2704 heads = atoi (argv[3]);
2705 sectors = atoi (argv[4]);
2707 r = guestfs_sfdisk_N (g, device, partnum, cyls, heads, sectors, line);
2711 static int run_sfdisk_l (const char *cmd, int argc, char *argv[])
2716 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2717 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2721 r = guestfs_sfdisk_l (g, device);
2722 if (r == NULL) return -1;
2728 static int run_sfdisk_kernel_geometry (const char *cmd, int argc, char *argv[])
2733 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2734 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2738 r = guestfs_sfdisk_kernel_geometry (g, device);
2739 if (r == NULL) return -1;
2745 static int run_sfdisk_disk_geometry (const char *cmd, int argc, char *argv[])
2750 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2751 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2755 r = guestfs_sfdisk_disk_geometry (g, device);
2756 if (r == NULL) return -1;
2762 static int run_vg_activate_all (const char *cmd, int argc, char *argv[])
2767 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2768 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2771 activate = is_true (argv[0]) ? 1 : 0;
2772 r = guestfs_vg_activate_all (g, activate);
2776 static int run_vg_activate (const char *cmd, int argc, char *argv[])
2782 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2783 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2786 activate = is_true (argv[0]) ? 1 : 0;
2787 volgroups = parse_string_list (argv[1]);
2788 r = guestfs_vg_activate (g, activate, volgroups);
2792 static int run_lvresize (const char *cmd, int argc, char *argv[])
2798 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2799 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2803 mbytes = atoi (argv[1]);
2804 r = guestfs_lvresize (g, device, mbytes);
2808 static int run_resize2fs (const char *cmd, int argc, char *argv[])
2813 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2814 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2818 r = guestfs_resize2fs (g, device);
2822 static int run_find (const char *cmd, int argc, char *argv[])
2825 const char *directory;
2827 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2828 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2831 directory = argv[0];
2832 r = guestfs_find (g, directory);
2833 if (r == NULL) return -1;
2839 static int run_e2fsck_f (const char *cmd, int argc, char *argv[])
2844 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2845 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2849 r = guestfs_e2fsck_f (g, device);
2853 static int run_sleep (const char *cmd, int argc, char *argv[])
2858 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2859 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2862 secs = atoi (argv[0]);
2863 r = guestfs_sleep (g, secs);
2867 static int run_ntfs_3g_probe (const char *cmd, int argc, char *argv[])
2873 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2874 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2877 rw = is_true (argv[0]) ? 1 : 0;
2879 r = guestfs_ntfs_3g_probe (g, rw, device);
2880 if (r == -1) return -1;
2885 static int run_sh (const char *cmd, int argc, char *argv[])
2888 const char *command;
2890 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2891 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2895 r = guestfs_sh (g, command);
2896 if (r == NULL) return -1;
2902 static int run_sh_lines (const char *cmd, int argc, char *argv[])
2905 const char *command;
2907 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2908 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2912 r = guestfs_sh_lines (g, command);
2913 if (r == NULL) return -1;
2919 static int run_glob_expand (const char *cmd, int argc, char *argv[])
2922 const char *pattern;
2924 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2925 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2929 r = guestfs_glob_expand (g, pattern);
2930 if (r == NULL) return -1;
2936 static int run_scrub_device (const char *cmd, int argc, char *argv[])
2941 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2942 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2946 r = guestfs_scrub_device (g, device);
2950 static int run_scrub_file (const char *cmd, int argc, char *argv[])
2955 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2956 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2960 r = guestfs_scrub_file (g, file);
2964 static int run_scrub_freespace (const char *cmd, int argc, char *argv[])
2969 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2970 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2974 r = guestfs_scrub_freespace (g, dir);
2978 static int run_mkdtemp (const char *cmd, int argc, char *argv[])
2981 const char *template;
2983 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2984 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2988 r = guestfs_mkdtemp (g, template);
2989 if (r == NULL) return -1;
2995 static int run_wc_l (const char *cmd, int argc, char *argv[])
3000 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3001 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3005 r = guestfs_wc_l (g, path);
3006 if (r == -1) return -1;
3011 static int run_wc_w (const char *cmd, int argc, char *argv[])
3016 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3017 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3021 r = guestfs_wc_w (g, path);
3022 if (r == -1) return -1;
3027 static int run_wc_c (const char *cmd, int argc, char *argv[])
3032 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3033 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3037 r = guestfs_wc_c (g, path);
3038 if (r == -1) return -1;
3043 static int run_head (const char *cmd, int argc, char *argv[])
3048 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3049 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3053 r = guestfs_head (g, path);
3054 if (r == NULL) return -1;
3060 static int run_head_n (const char *cmd, int argc, char *argv[])
3066 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3067 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3070 nrlines = atoi (argv[0]);
3072 r = guestfs_head_n (g, nrlines, path);
3073 if (r == NULL) return -1;
3079 static int run_tail (const char *cmd, int argc, char *argv[])
3084 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3085 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3089 r = guestfs_tail (g, path);
3090 if (r == NULL) return -1;
3096 static int run_tail_n (const char *cmd, int argc, char *argv[])
3102 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3103 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3106 nrlines = atoi (argv[0]);
3108 r = guestfs_tail_n (g, nrlines, path);
3109 if (r == NULL) return -1;
3115 static int run_df (const char *cmd, int argc, char *argv[])
3119 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
3120 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3124 if (r == NULL) return -1;
3130 static int run_df_h (const char *cmd, int argc, char *argv[])
3134 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
3135 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3138 r = guestfs_df_h (g);
3139 if (r == NULL) return -1;
3145 static int run_du (const char *cmd, int argc, char *argv[])
3150 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3151 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3155 r = guestfs_du (g, path);
3156 if (r == -1) return -1;
3157 printf ("%" PRIi64 "\n", r);
3161 static int run_initrd_list (const char *cmd, int argc, char *argv[])
3166 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3167 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3171 r = guestfs_initrd_list (g, path);
3172 if (r == NULL) return -1;
3178 static int run_mount_loop (const char *cmd, int argc, char *argv[])
3182 const char *mountpoint;
3184 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3185 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3189 mountpoint = argv[1];
3190 r = guestfs_mount_loop (g, file, mountpoint);
3194 static int run_mkswap (const char *cmd, int argc, char *argv[])
3199 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3200 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3204 r = guestfs_mkswap (g, device);
3208 static int run_mkswap_L (const char *cmd, int argc, char *argv[])
3214 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3215 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3220 r = guestfs_mkswap_L (g, label, device);
3224 static int run_mkswap_U (const char *cmd, int argc, char *argv[])
3230 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3231 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3236 r = guestfs_mkswap_U (g, uuid, device);
3240 static int run_mknod (const char *cmd, int argc, char *argv[])
3248 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
3249 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3252 mode = atoi (argv[0]);
3253 devmajor = atoi (argv[1]);
3254 devminor = atoi (argv[2]);
3256 r = guestfs_mknod (g, mode, devmajor, devminor, path);
3260 static int run_mkfifo (const char *cmd, int argc, char *argv[])
3266 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3267 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3270 mode = atoi (argv[0]);
3272 r = guestfs_mkfifo (g, mode, path);
3276 static int run_mknod_b (const char *cmd, int argc, char *argv[])
3284 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
3285 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3288 mode = atoi (argv[0]);
3289 devmajor = atoi (argv[1]);
3290 devminor = atoi (argv[2]);
3292 r = guestfs_mknod_b (g, mode, devmajor, devminor, path);
3296 static int run_mknod_c (const char *cmd, int argc, char *argv[])
3304 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
3305 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3308 mode = atoi (argv[0]);
3309 devmajor = atoi (argv[1]);
3310 devminor = atoi (argv[2]);
3312 r = guestfs_mknod_c (g, mode, devmajor, devminor, path);
3316 static int run_umask (const char *cmd, int argc, char *argv[])
3321 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3322 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3325 mask = atoi (argv[0]);
3326 r = guestfs_umask (g, mask);
3327 if (r == -1) return -1;
3332 int run_action (const char *cmd, int argc, char *argv[])
3334 if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
3335 return run_launch (cmd, argc, argv);
3337 if (strcasecmp (cmd, "kill_subprocess") == 0 || strcasecmp (cmd, "kill-subprocess") == 0)
3338 return run_kill_subprocess (cmd, argc, argv);
3340 if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
3341 return run_add_drive (cmd, argc, argv);
3343 if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
3344 return run_add_cdrom (cmd, argc, argv);
3346 if (strcasecmp (cmd, "add_drive_ro") == 0 || strcasecmp (cmd, "add-drive-ro") == 0 || strcasecmp (cmd, "add-ro") == 0)
3347 return run_add_drive_ro (cmd, argc, argv);
3349 if (strcasecmp (cmd, "config") == 0)
3350 return run_config (cmd, argc, argv);
3352 if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0)
3353 return run_set_qemu (cmd, argc, argv);
3355 if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0)
3356 return run_get_qemu (cmd, argc, argv);
3358 if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0)
3359 return run_set_path (cmd, argc, argv);
3361 if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0)
3362 return run_get_path (cmd, argc, argv);
3364 if (strcasecmp (cmd, "set_append") == 0 || strcasecmp (cmd, "set-append") == 0 || strcasecmp (cmd, "append") == 0)
3365 return run_set_append (cmd, argc, argv);
3367 if (strcasecmp (cmd, "get_append") == 0 || strcasecmp (cmd, "get-append") == 0)
3368 return run_get_append (cmd, argc, argv);
3370 if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0)
3371 return run_set_autosync (cmd, argc, argv);
3373 if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0)
3374 return run_get_autosync (cmd, argc, argv);
3376 if (strcasecmp (cmd, "set_verbose") == 0 || strcasecmp (cmd, "set-verbose") == 0 || strcasecmp (cmd, "verbose") == 0)
3377 return run_set_verbose (cmd, argc, argv);
3379 if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0)
3380 return run_get_verbose (cmd, argc, argv);
3382 if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0)
3383 return run_is_ready (cmd, argc, argv);
3385 if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0)
3386 return run_is_config (cmd, argc, argv);
3388 if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0)
3389 return run_is_launching (cmd, argc, argv);
3391 if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0)
3392 return run_is_busy (cmd, argc, argv);
3394 if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0)
3395 return run_get_state (cmd, argc, argv);
3397 if (strcasecmp (cmd, "set_memsize") == 0 || strcasecmp (cmd, "set-memsize") == 0 || strcasecmp (cmd, "memsize") == 0)
3398 return run_set_memsize (cmd, argc, argv);
3400 if (strcasecmp (cmd, "get_memsize") == 0 || strcasecmp (cmd, "get-memsize") == 0)
3401 return run_get_memsize (cmd, argc, argv);
3403 if (strcasecmp (cmd, "mount") == 0)
3404 return run_mount (cmd, argc, argv);
3406 if (strcasecmp (cmd, "sync") == 0)
3407 return run_sync (cmd, argc, argv);
3409 if (strcasecmp (cmd, "touch") == 0)
3410 return run_touch (cmd, argc, argv);
3412 if (strcasecmp (cmd, "cat") == 0)
3413 return run_cat (cmd, argc, argv);
3415 if (strcasecmp (cmd, "ll") == 0)
3416 return run_ll (cmd, argc, argv);
3418 if (strcasecmp (cmd, "ls") == 0)
3419 return run_ls (cmd, argc, argv);
3421 if (strcasecmp (cmd, "list_devices") == 0 || strcasecmp (cmd, "list-devices") == 0)
3422 return run_list_devices (cmd, argc, argv);
3424 if (strcasecmp (cmd, "list_partitions") == 0 || strcasecmp (cmd, "list-partitions") == 0)
3425 return run_list_partitions (cmd, argc, argv);
3427 if (strcasecmp (cmd, "pvs") == 0)
3428 return run_pvs (cmd, argc, argv);
3430 if (strcasecmp (cmd, "vgs") == 0)
3431 return run_vgs (cmd, argc, argv);
3433 if (strcasecmp (cmd, "lvs") == 0)
3434 return run_lvs (cmd, argc, argv);
3436 if (strcasecmp (cmd, "pvs_full") == 0 || strcasecmp (cmd, "pvs-full") == 0)
3437 return run_pvs_full (cmd, argc, argv);
3439 if (strcasecmp (cmd, "vgs_full") == 0 || strcasecmp (cmd, "vgs-full") == 0)
3440 return run_vgs_full (cmd, argc, argv);
3442 if (strcasecmp (cmd, "lvs_full") == 0 || strcasecmp (cmd, "lvs-full") == 0)
3443 return run_lvs_full (cmd, argc, argv);
3445 if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0)
3446 return run_read_lines (cmd, argc, argv);
3448 if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0)
3449 return run_aug_init (cmd, argc, argv);
3451 if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0)
3452 return run_aug_close (cmd, argc, argv);
3454 if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0)
3455 return run_aug_defvar (cmd, argc, argv);
3457 if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0)
3458 return run_aug_defnode (cmd, argc, argv);
3460 if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0)
3461 return run_aug_get (cmd, argc, argv);
3463 if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0)
3464 return run_aug_set (cmd, argc, argv);
3466 if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0)
3467 return run_aug_insert (cmd, argc, argv);
3469 if (strcasecmp (cmd, "aug_rm") == 0 || strcasecmp (cmd, "aug-rm") == 0)
3470 return run_aug_rm (cmd, argc, argv);
3472 if (strcasecmp (cmd, "aug_mv") == 0 || strcasecmp (cmd, "aug-mv") == 0)
3473 return run_aug_mv (cmd, argc, argv);
3475 if (strcasecmp (cmd, "aug_match") == 0 || strcasecmp (cmd, "aug-match") == 0)
3476 return run_aug_match (cmd, argc, argv);
3478 if (strcasecmp (cmd, "aug_save") == 0 || strcasecmp (cmd, "aug-save") == 0)
3479 return run_aug_save (cmd, argc, argv);
3481 if (strcasecmp (cmd, "aug_load") == 0 || strcasecmp (cmd, "aug-load") == 0)
3482 return run_aug_load (cmd, argc, argv);
3484 if (strcasecmp (cmd, "aug_ls") == 0 || strcasecmp (cmd, "aug-ls") == 0)
3485 return run_aug_ls (cmd, argc, argv);
3487 if (strcasecmp (cmd, "rm") == 0)
3488 return run_rm (cmd, argc, argv);
3490 if (strcasecmp (cmd, "rmdir") == 0)
3491 return run_rmdir (cmd, argc, argv);
3493 if (strcasecmp (cmd, "rm_rf") == 0 || strcasecmp (cmd, "rm-rf") == 0)
3494 return run_rm_rf (cmd, argc, argv);
3496 if (strcasecmp (cmd, "mkdir") == 0)
3497 return run_mkdir (cmd, argc, argv);
3499 if (strcasecmp (cmd, "mkdir_p") == 0 || strcasecmp (cmd, "mkdir-p") == 0)
3500 return run_mkdir_p (cmd, argc, argv);
3502 if (strcasecmp (cmd, "chmod") == 0)
3503 return run_chmod (cmd, argc, argv);
3505 if (strcasecmp (cmd, "chown") == 0)
3506 return run_chown (cmd, argc, argv);
3508 if (strcasecmp (cmd, "exists") == 0)
3509 return run_exists (cmd, argc, argv);
3511 if (strcasecmp (cmd, "is_file") == 0 || strcasecmp (cmd, "is-file") == 0)
3512 return run_is_file (cmd, argc, argv);
3514 if (strcasecmp (cmd, "is_dir") == 0 || strcasecmp (cmd, "is-dir") == 0)
3515 return run_is_dir (cmd, argc, argv);
3517 if (strcasecmp (cmd, "pvcreate") == 0)
3518 return run_pvcreate (cmd, argc, argv);
3520 if (strcasecmp (cmd, "vgcreate") == 0)
3521 return run_vgcreate (cmd, argc, argv);
3523 if (strcasecmp (cmd, "lvcreate") == 0)
3524 return run_lvcreate (cmd, argc, argv);
3526 if (strcasecmp (cmd, "mkfs") == 0)
3527 return run_mkfs (cmd, argc, argv);
3529 if (strcasecmp (cmd, "sfdisk") == 0)
3530 return run_sfdisk (cmd, argc, argv);
3532 if (strcasecmp (cmd, "write_file") == 0 || strcasecmp (cmd, "write-file") == 0)
3533 return run_write_file (cmd, argc, argv);
3535 if (strcasecmp (cmd, "umount") == 0 || strcasecmp (cmd, "unmount") == 0)
3536 return run_umount (cmd, argc, argv);
3538 if (strcasecmp (cmd, "mounts") == 0)
3539 return run_mounts (cmd, argc, argv);
3541 if (strcasecmp (cmd, "umount_all") == 0 || strcasecmp (cmd, "umount-all") == 0 || strcasecmp (cmd, "unmount-all") == 0)
3542 return run_umount_all (cmd, argc, argv);
3544 if (strcasecmp (cmd, "lvm_remove_all") == 0 || strcasecmp (cmd, "lvm-remove-all") == 0)
3545 return run_lvm_remove_all (cmd, argc, argv);
3547 if (strcasecmp (cmd, "file") == 0)
3548 return run_file (cmd, argc, argv);
3550 if (strcasecmp (cmd, "command") == 0)
3551 return run_command (cmd, argc, argv);
3553 if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
3554 return run_command_lines (cmd, argc, argv);
3556 if (strcasecmp (cmd, "stat") == 0)
3557 return run_stat (cmd, argc, argv);
3559 if (strcasecmp (cmd, "lstat") == 0)
3560 return run_lstat (cmd, argc, argv);
3562 if (strcasecmp (cmd, "statvfs") == 0)
3563 return run_statvfs (cmd, argc, argv);
3565 if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
3566 return run_tune2fs_l (cmd, argc, argv);
3568 if (strcasecmp (cmd, "blockdev_setro") == 0 || strcasecmp (cmd, "blockdev-setro") == 0)
3569 return run_blockdev_setro (cmd, argc, argv);
3571 if (strcasecmp (cmd, "blockdev_setrw") == 0 || strcasecmp (cmd, "blockdev-setrw") == 0)
3572 return run_blockdev_setrw (cmd, argc, argv);
3574 if (strcasecmp (cmd, "blockdev_getro") == 0 || strcasecmp (cmd, "blockdev-getro") == 0)
3575 return run_blockdev_getro (cmd, argc, argv);
3577 if (strcasecmp (cmd, "blockdev_getss") == 0 || strcasecmp (cmd, "blockdev-getss") == 0)
3578 return run_blockdev_getss (cmd, argc, argv);
3580 if (strcasecmp (cmd, "blockdev_getbsz") == 0 || strcasecmp (cmd, "blockdev-getbsz") == 0)
3581 return run_blockdev_getbsz (cmd, argc, argv);
3583 if (strcasecmp (cmd, "blockdev_setbsz") == 0 || strcasecmp (cmd, "blockdev-setbsz") == 0)
3584 return run_blockdev_setbsz (cmd, argc, argv);
3586 if (strcasecmp (cmd, "blockdev_getsz") == 0 || strcasecmp (cmd, "blockdev-getsz") == 0)
3587 return run_blockdev_getsz (cmd, argc, argv);
3589 if (strcasecmp (cmd, "blockdev_getsize64") == 0 || strcasecmp (cmd, "blockdev-getsize64") == 0)
3590 return run_blockdev_getsize64 (cmd, argc, argv);
3592 if (strcasecmp (cmd, "blockdev_flushbufs") == 0 || strcasecmp (cmd, "blockdev-flushbufs") == 0)
3593 return run_blockdev_flushbufs (cmd, argc, argv);
3595 if (strcasecmp (cmd, "blockdev_rereadpt") == 0 || strcasecmp (cmd, "blockdev-rereadpt") == 0)
3596 return run_blockdev_rereadpt (cmd, argc, argv);
3598 if (strcasecmp (cmd, "upload") == 0)
3599 return run_upload (cmd, argc, argv);
3601 if (strcasecmp (cmd, "download") == 0)
3602 return run_download (cmd, argc, argv);
3604 if (strcasecmp (cmd, "checksum") == 0)
3605 return run_checksum (cmd, argc, argv);
3607 if (strcasecmp (cmd, "tar_in") == 0 || strcasecmp (cmd, "tar-in") == 0)
3608 return run_tar_in (cmd, argc, argv);
3610 if (strcasecmp (cmd, "tar_out") == 0 || strcasecmp (cmd, "tar-out") == 0)
3611 return run_tar_out (cmd, argc, argv);
3613 if (strcasecmp (cmd, "tgz_in") == 0 || strcasecmp (cmd, "tgz-in") == 0)
3614 return run_tgz_in (cmd, argc, argv);
3616 if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0)
3617 return run_tgz_out (cmd, argc, argv);
3619 if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0)
3620 return run_mount_ro (cmd, argc, argv);
3622 if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0)
3623 return run_mount_options (cmd, argc, argv);
3625 if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0)
3626 return run_mount_vfs (cmd, argc, argv);
3628 if (strcasecmp (cmd, "debug") == 0)
3629 return run_debug (cmd, argc, argv);
3631 if (strcasecmp (cmd, "lvremove") == 0)
3632 return run_lvremove (cmd, argc, argv);
3634 if (strcasecmp (cmd, "vgremove") == 0)
3635 return run_vgremove (cmd, argc, argv);
3637 if (strcasecmp (cmd, "pvremove") == 0)
3638 return run_pvremove (cmd, argc, argv);
3640 if (strcasecmp (cmd, "set_e2label") == 0 || strcasecmp (cmd, "set-e2label") == 0)
3641 return run_set_e2label (cmd, argc, argv);
3643 if (strcasecmp (cmd, "get_e2label") == 0 || strcasecmp (cmd, "get-e2label") == 0)
3644 return run_get_e2label (cmd, argc, argv);
3646 if (strcasecmp (cmd, "set_e2uuid") == 0 || strcasecmp (cmd, "set-e2uuid") == 0)
3647 return run_set_e2uuid (cmd, argc, argv);
3649 if (strcasecmp (cmd, "get_e2uuid") == 0 || strcasecmp (cmd, "get-e2uuid") == 0)
3650 return run_get_e2uuid (cmd, argc, argv);
3652 if (strcasecmp (cmd, "fsck") == 0)
3653 return run_fsck (cmd, argc, argv);
3655 if (strcasecmp (cmd, "zero") == 0)
3656 return run_zero (cmd, argc, argv);
3658 if (strcasecmp (cmd, "grub_install") == 0 || strcasecmp (cmd, "grub-install") == 0)
3659 return run_grub_install (cmd, argc, argv);
3661 if (strcasecmp (cmd, "cp") == 0)
3662 return run_cp (cmd, argc, argv);
3664 if (strcasecmp (cmd, "cp_a") == 0 || strcasecmp (cmd, "cp-a") == 0)
3665 return run_cp_a (cmd, argc, argv);
3667 if (strcasecmp (cmd, "mv") == 0)
3668 return run_mv (cmd, argc, argv);
3670 if (strcasecmp (cmd, "drop_caches") == 0 || strcasecmp (cmd, "drop-caches") == 0)
3671 return run_drop_caches (cmd, argc, argv);
3673 if (strcasecmp (cmd, "dmesg") == 0)
3674 return run_dmesg (cmd, argc, argv);
3676 if (strcasecmp (cmd, "ping_daemon") == 0 || strcasecmp (cmd, "ping-daemon") == 0)
3677 return run_ping_daemon (cmd, argc, argv);
3679 if (strcasecmp (cmd, "equal") == 0)
3680 return run_equal (cmd, argc, argv);
3682 if (strcasecmp (cmd, "strings") == 0)
3683 return run_strings (cmd, argc, argv);
3685 if (strcasecmp (cmd, "strings_e") == 0 || strcasecmp (cmd, "strings-e") == 0)
3686 return run_strings_e (cmd, argc, argv);
3688 if (strcasecmp (cmd, "hexdump") == 0)
3689 return run_hexdump (cmd, argc, argv);
3691 if (strcasecmp (cmd, "zerofree") == 0)
3692 return run_zerofree (cmd, argc, argv);
3694 if (strcasecmp (cmd, "pvresize") == 0)
3695 return run_pvresize (cmd, argc, argv);
3697 if (strcasecmp (cmd, "sfdisk_N") == 0 || strcasecmp (cmd, "sfdisk-N") == 0)
3698 return run_sfdisk_N (cmd, argc, argv);
3700 if (strcasecmp (cmd, "sfdisk_l") == 0 || strcasecmp (cmd, "sfdisk-l") == 0)
3701 return run_sfdisk_l (cmd, argc, argv);
3703 if (strcasecmp (cmd, "sfdisk_kernel_geometry") == 0 || strcasecmp (cmd, "sfdisk-kernel-geometry") == 0)
3704 return run_sfdisk_kernel_geometry (cmd, argc, argv);
3706 if (strcasecmp (cmd, "sfdisk_disk_geometry") == 0 || strcasecmp (cmd, "sfdisk-disk-geometry") == 0)
3707 return run_sfdisk_disk_geometry (cmd, argc, argv);
3709 if (strcasecmp (cmd, "vg_activate_all") == 0 || strcasecmp (cmd, "vg-activate-all") == 0)
3710 return run_vg_activate_all (cmd, argc, argv);
3712 if (strcasecmp (cmd, "vg_activate") == 0 || strcasecmp (cmd, "vg-activate") == 0)
3713 return run_vg_activate (cmd, argc, argv);
3715 if (strcasecmp (cmd, "lvresize") == 0)
3716 return run_lvresize (cmd, argc, argv);
3718 if (strcasecmp (cmd, "resize2fs") == 0)
3719 return run_resize2fs (cmd, argc, argv);
3721 if (strcasecmp (cmd, "find") == 0)
3722 return run_find (cmd, argc, argv);
3724 if (strcasecmp (cmd, "e2fsck_f") == 0 || strcasecmp (cmd, "e2fsck-f") == 0)
3725 return run_e2fsck_f (cmd, argc, argv);
3727 if (strcasecmp (cmd, "sleep") == 0)
3728 return run_sleep (cmd, argc, argv);
3730 if (strcasecmp (cmd, "ntfs_3g_probe") == 0 || strcasecmp (cmd, "ntfs-3g-probe") == 0)
3731 return run_ntfs_3g_probe (cmd, argc, argv);
3733 if (strcasecmp (cmd, "sh") == 0)
3734 return run_sh (cmd, argc, argv);
3736 if (strcasecmp (cmd, "sh_lines") == 0 || strcasecmp (cmd, "sh-lines") == 0)
3737 return run_sh_lines (cmd, argc, argv);
3739 if (strcasecmp (cmd, "glob_expand") == 0 || strcasecmp (cmd, "glob-expand") == 0)
3740 return run_glob_expand (cmd, argc, argv);
3742 if (strcasecmp (cmd, "scrub_device") == 0 || strcasecmp (cmd, "scrub-device") == 0)
3743 return run_scrub_device (cmd, argc, argv);
3745 if (strcasecmp (cmd, "scrub_file") == 0 || strcasecmp (cmd, "scrub-file") == 0)
3746 return run_scrub_file (cmd, argc, argv);
3748 if (strcasecmp (cmd, "scrub_freespace") == 0 || strcasecmp (cmd, "scrub-freespace") == 0)
3749 return run_scrub_freespace (cmd, argc, argv);
3751 if (strcasecmp (cmd, "mkdtemp") == 0)
3752 return run_mkdtemp (cmd, argc, argv);
3754 if (strcasecmp (cmd, "wc_l") == 0 || strcasecmp (cmd, "wc-l") == 0)
3755 return run_wc_l (cmd, argc, argv);
3757 if (strcasecmp (cmd, "wc_w") == 0 || strcasecmp (cmd, "wc-w") == 0)
3758 return run_wc_w (cmd, argc, argv);
3760 if (strcasecmp (cmd, "wc_c") == 0 || strcasecmp (cmd, "wc-c") == 0)
3761 return run_wc_c (cmd, argc, argv);
3763 if (strcasecmp (cmd, "head") == 0)
3764 return run_head (cmd, argc, argv);
3766 if (strcasecmp (cmd, "head_n") == 0 || strcasecmp (cmd, "head-n") == 0)
3767 return run_head_n (cmd, argc, argv);
3769 if (strcasecmp (cmd, "tail") == 0)
3770 return run_tail (cmd, argc, argv);
3772 if (strcasecmp (cmd, "tail_n") == 0 || strcasecmp (cmd, "tail-n") == 0)
3773 return run_tail_n (cmd, argc, argv);
3775 if (strcasecmp (cmd, "df") == 0)
3776 return run_df (cmd, argc, argv);
3778 if (strcasecmp (cmd, "df_h") == 0 || strcasecmp (cmd, "df-h") == 0)
3779 return run_df_h (cmd, argc, argv);
3781 if (strcasecmp (cmd, "du") == 0)
3782 return run_du (cmd, argc, argv);
3784 if (strcasecmp (cmd, "initrd_list") == 0 || strcasecmp (cmd, "initrd-list") == 0)
3785 return run_initrd_list (cmd, argc, argv);
3787 if (strcasecmp (cmd, "mount_loop") == 0 || strcasecmp (cmd, "mount-loop") == 0)
3788 return run_mount_loop (cmd, argc, argv);
3790 if (strcasecmp (cmd, "mkswap") == 0)
3791 return run_mkswap (cmd, argc, argv);
3793 if (strcasecmp (cmd, "mkswap_L") == 0 || strcasecmp (cmd, "mkswap-L") == 0)
3794 return run_mkswap_L (cmd, argc, argv);
3796 if (strcasecmp (cmd, "mkswap_U") == 0 || strcasecmp (cmd, "mkswap-U") == 0)
3797 return run_mkswap_U (cmd, argc, argv);
3799 if (strcasecmp (cmd, "mknod") == 0)
3800 return run_mknod (cmd, argc, argv);
3802 if (strcasecmp (cmd, "mkfifo") == 0)
3803 return run_mkfifo (cmd, argc, argv);
3805 if (strcasecmp (cmd, "mknod_b") == 0 || strcasecmp (cmd, "mknod-b") == 0)
3806 return run_mknod_b (cmd, argc, argv);
3808 if (strcasecmp (cmd, "mknod_c") == 0 || strcasecmp (cmd, "mknod-c") == 0)
3809 return run_mknod_c (cmd, argc, argv);
3811 if (strcasecmp (cmd, "umask") == 0)
3812 return run_umask (cmd, argc, argv);
3815 fprintf (stderr, "%s: unknown command\n", cmd);