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", "readdir", "read directories entries");
143 printf ("%-20s %s\n", "resize2fs", "resize an ext2/ext3 filesystem");
144 printf ("%-20s %s\n", "rm", "remove a file");
145 printf ("%-20s %s\n", "rm-rf", "remove a file or directory recursively");
146 printf ("%-20s %s\n", "rmdir", "remove a directory");
147 printf ("%-20s %s\n", "scrub-device", "scrub (securely wipe) a device");
148 printf ("%-20s %s\n", "scrub-file", "scrub (securely wipe) a file");
149 printf ("%-20s %s\n", "scrub-freespace", "scrub (securely wipe) free space");
150 printf ("%-20s %s\n", "set-append", "add options to kernel command line");
151 printf ("%-20s %s\n", "set-autosync", "set autosync mode");
152 printf ("%-20s %s\n", "set-e2label", "set the ext2/3/4 filesystem label");
153 printf ("%-20s %s\n", "set-e2uuid", "set the ext2/3/4 filesystem UUID");
154 printf ("%-20s %s\n", "set-memsize", "set memory allocated to the qemu subprocess");
155 printf ("%-20s %s\n", "set-path", "set the search path");
156 printf ("%-20s %s\n", "set-qemu", "set the qemu binary");
157 printf ("%-20s %s\n", "set-verbose", "set verbose mode");
158 printf ("%-20s %s\n", "sfdisk", "create partitions on a block device");
159 printf ("%-20s %s\n", "sfdisk-N", "modify a single partition on a block device");
160 printf ("%-20s %s\n", "sfdisk-disk-geometry", "display the disk geometry from the partition table");
161 printf ("%-20s %s\n", "sfdisk-kernel-geometry", "display the kernel geometry");
162 printf ("%-20s %s\n", "sfdisk-l", "display the partition table");
163 printf ("%-20s %s\n", "sh", "run a command via the shell");
164 printf ("%-20s %s\n", "sh-lines", "run a command via the shell returning lines");
165 printf ("%-20s %s\n", "sleep", "sleep for some seconds");
166 printf ("%-20s %s\n", "stat", "get file information");
167 printf ("%-20s %s\n", "statvfs", "get file system statistics");
168 printf ("%-20s %s\n", "strings", "print the printable strings in a file");
169 printf ("%-20s %s\n", "strings-e", "print the printable strings in a file");
170 printf ("%-20s %s\n", "sync", "sync disks, writes are flushed through to the disk image");
171 printf ("%-20s %s\n", "tail", "return last 10 lines of a file");
172 printf ("%-20s %s\n", "tail-n", "return last N lines of a file");
173 printf ("%-20s %s\n", "tar-in", "unpack tarfile to directory");
174 printf ("%-20s %s\n", "tar-out", "pack directory into tarfile");
175 printf ("%-20s %s\n", "tgz-in", "unpack compressed tarball to directory");
176 printf ("%-20s %s\n", "tgz-out", "pack directory into compressed tarball");
177 printf ("%-20s %s\n", "touch", "update file timestamps or create a new file");
178 printf ("%-20s %s\n", "tune2fs-l", "get ext2/ext3/ext4 superblock details");
179 printf ("%-20s %s\n", "umask", "set file mode creation mask (umask)");
180 printf ("%-20s %s\n", "umount", "unmount a filesystem");
181 printf ("%-20s %s\n", "umount-all", "unmount all filesystems");
182 printf ("%-20s %s\n", "upload", "upload a file from the local machine");
183 printf ("%-20s %s\n", "vg-activate", "activate or deactivate some volume groups");
184 printf ("%-20s %s\n", "vg-activate-all", "activate or deactivate all volume groups");
185 printf ("%-20s %s\n", "vgcreate", "create an LVM volume group");
186 printf ("%-20s %s\n", "vgremove", "remove an LVM volume group");
187 printf ("%-20s %s\n", "vgs", "list the LVM volume groups (VGs)");
188 printf ("%-20s %s\n", "vgs-full", "list the LVM volume groups (VGs)");
189 printf ("%-20s %s\n", "wc-c", "count characters in a file");
190 printf ("%-20s %s\n", "wc-l", "count lines in a file");
191 printf ("%-20s %s\n", "wc-w", "count words in a file");
192 printf ("%-20s %s\n", "write-file", "create a file");
193 printf ("%-20s %s\n", "zero", "write zeroes to the device");
194 printf ("%-20s %s\n", "zerofree", "zero unused inodes and disk blocks on ext2/3 filesystem");
195 printf (" Use -h <cmd> / help <cmd> to show detailed help for a command.\n");
198 void display_command (const char *cmd)
200 if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
201 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.");
203 if (strcasecmp (cmd, "kill_subprocess") == 0 || strcasecmp (cmd, "kill-subprocess") == 0)
204 pod2text ("kill-subprocess - kill the qemu subprocess", " kill-subprocess\n\nThis kills the qemu subprocess. You should never need to call this.");
206 if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
207 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\nC<-drive file=filename,cache=off,if=virtio>.\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.");
209 if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
210 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.");
212 if (strcasecmp (cmd, "add_drive_ro") == 0 || strcasecmp (cmd, "add-drive-ro") == 0 || strcasecmp (cmd, "add-ro") == 0)
213 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,if=virtio>.\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.");
215 if (strcasecmp (cmd, "config") == 0)
216 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.");
218 if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0)
219 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.");
221 if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0)
222 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.");
224 if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0)
225 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.");
227 if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0)
228 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.");
230 if (strcasecmp (cmd, "set_append") == 0 || strcasecmp (cmd, "set-append") == 0 || strcasecmp (cmd, "append") == 0)
231 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.");
233 if (strcasecmp (cmd, "get_append") == 0 || strcasecmp (cmd, "get-append") == 0)
234 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.");
236 if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0)
237 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.");
239 if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0)
240 pod2text ("get-autosync - get autosync mode", " get-autosync\n\nGet the autosync flag.");
242 if (strcasecmp (cmd, "set_verbose") == 0 || strcasecmp (cmd, "set-verbose") == 0 || strcasecmp (cmd, "verbose") == 0)
243 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.");
245 if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0)
246 pod2text ("get-verbose - get verbose mode", " get-verbose\n\nThis returns the verbose messages flag.");
248 if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0)
249 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)>.");
251 if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0)
252 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)>.");
254 if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0)
255 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)>.");
257 if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0)
258 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)>.");
260 if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0)
261 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)>.");
263 if (strcasecmp (cmd, "set_memsize") == 0 || strcasecmp (cmd, "set-memsize") == 0 || strcasecmp (cmd, "memsize") == 0)
264 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.");
266 if (strcasecmp (cmd, "get_memsize") == 0 || strcasecmp (cmd, "get-memsize") == 0)
267 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)>.");
269 if (strcasecmp (cmd, "mount") == 0)
270 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.");
272 if (strcasecmp (cmd, "sync") == 0)
273 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.");
275 if (strcasecmp (cmd, "touch") == 0)
276 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.");
278 if (strcasecmp (cmd, "cat") == 0)
279 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.");
281 if (strcasecmp (cmd, "ll") == 0)
282 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.");
284 if (strcasecmp (cmd, "ls") == 0)
285 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.");
287 if (strcasecmp (cmd, "list_devices") == 0 || strcasecmp (cmd, "list-devices") == 0)
288 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>");
290 if (strcasecmp (cmd, "list_partitions") == 0 || strcasecmp (cmd, "list-partitions") == 0)
291 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>.");
293 if (strcasecmp (cmd, "pvs") == 0)
294 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>.");
296 if (strcasecmp (cmd, "vgs") == 0)
297 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>.");
299 if (strcasecmp (cmd, "lvs") == 0)
300 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>.");
302 if (strcasecmp (cmd, "pvs_full") == 0 || strcasecmp (cmd, "pvs-full") == 0)
303 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.");
305 if (strcasecmp (cmd, "vgs_full") == 0 || strcasecmp (cmd, "vgs-full") == 0)
306 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.");
308 if (strcasecmp (cmd, "lvs_full") == 0 || strcasecmp (cmd, "lvs-full") == 0)
309 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.");
311 if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0)
312 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.");
314 if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0)
315 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/>.");
317 if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0)
318 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.");
320 if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0)
321 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.");
323 if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0)
324 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.");
326 if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0)
327 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.");
329 if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0)
330 pod2text ("aug-set - set Augeas path to value", " aug-set <path> <val>\n\nSet the value associated with C<path> to C<value>.");
332 if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0)
333 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]>.");
335 if (strcasecmp (cmd, "aug_rm") == 0 || strcasecmp (cmd, "aug-rm") == 0)
336 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.");
338 if (strcasecmp (cmd, "aug_mv") == 0 || strcasecmp (cmd, "aug-mv") == 0)
339 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.");
341 if (strcasecmp (cmd, "aug_match") == 0 || strcasecmp (cmd, "aug-match") == 0)
342 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.");
344 if (strcasecmp (cmd, "aug_save") == 0 || strcasecmp (cmd, "aug-save") == 0)
345 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.");
347 if (strcasecmp (cmd, "aug_load") == 0 || strcasecmp (cmd, "aug-load") == 0)
348 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.");
350 if (strcasecmp (cmd, "aug_ls") == 0 || strcasecmp (cmd, "aug-ls") == 0)
351 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.");
353 if (strcasecmp (cmd, "rm") == 0)
354 pod2text ("rm - remove a file", " rm <path>\n\nRemove the single file C<path>.");
356 if (strcasecmp (cmd, "rmdir") == 0)
357 pod2text ("rmdir - remove a directory", " rmdir <path>\n\nRemove the single directory C<path>.");
359 if (strcasecmp (cmd, "rm_rf") == 0 || strcasecmp (cmd, "rm-rf") == 0)
360 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.");
362 if (strcasecmp (cmd, "mkdir") == 0)
363 pod2text ("mkdir - create a directory", " mkdir <path>\n\nCreate a directory named C<path>.");
365 if (strcasecmp (cmd, "mkdir_p") == 0 || strcasecmp (cmd, "mkdir-p") == 0)
366 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.");
368 if (strcasecmp (cmd, "chmod") == 0)
369 pod2text ("chmod - change file mode", " chmod <mode> <path>\n\nChange the mode (permissions) of C<path> to C<mode>. Only\nnumeric modes are supported.");
371 if (strcasecmp (cmd, "chown") == 0)
372 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).");
374 if (strcasecmp (cmd, "exists") == 0)
375 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>.");
377 if (strcasecmp (cmd, "is_file") == 0 || strcasecmp (cmd, "is-file") == 0)
378 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>.");
380 if (strcasecmp (cmd, "is_dir") == 0 || strcasecmp (cmd, "is-dir") == 0)
381 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>.");
383 if (strcasecmp (cmd, "pvcreate") == 0)
384 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>.");
386 if (strcasecmp (cmd, "vgcreate") == 0)
387 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>.");
389 if (strcasecmp (cmd, "lvcreate") == 0)
390 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.");
392 if (strcasecmp (cmd, "mkfs") == 0)
393 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>.");
395 if (strcasecmp (cmd, "sfdisk") == 0)
396 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>.");
398 if (strcasecmp (cmd, "write_file") == 0 || strcasecmp (cmd, "write-file") == 0)
399 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.");
401 if (strcasecmp (cmd, "umount") == 0 || strcasecmp (cmd, "unmount") == 0)
402 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.");
404 if (strcasecmp (cmd, "mounts") == 0)
405 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.");
407 if (strcasecmp (cmd, "umount_all") == 0 || strcasecmp (cmd, "umount-all") == 0 || strcasecmp (cmd, "unmount-all") == 0)
408 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.");
410 if (strcasecmp (cmd, "lvm_remove_all") == 0 || strcasecmp (cmd, "lvm-remove-all") == 0)
411 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>.");
413 if (strcasecmp (cmd, "file") == 0)
414 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).");
416 if (strcasecmp (cmd, "command") == 0)
417 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.");
419 if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
420 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.");
422 if (strcasecmp (cmd, "stat") == 0)
423 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.");
425 if (strcasecmp (cmd, "lstat") == 0)
426 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.");
428 if (strcasecmp (cmd, "statvfs") == 0)
429 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.");
431 if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
432 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.");
434 if (strcasecmp (cmd, "blockdev_setro") == 0 || strcasecmp (cmd, "blockdev-setro") == 0)
435 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.");
437 if (strcasecmp (cmd, "blockdev_setrw") == 0 || strcasecmp (cmd, "blockdev-setrw") == 0)
438 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.");
440 if (strcasecmp (cmd, "blockdev_getro") == 0 || strcasecmp (cmd, "blockdev-getro") == 0)
441 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.");
443 if (strcasecmp (cmd, "blockdev_getss") == 0 || strcasecmp (cmd, "blockdev-getss") == 0)
444 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.");
446 if (strcasecmp (cmd, "blockdev_getbsz") == 0 || strcasecmp (cmd, "blockdev-getbsz") == 0)
447 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.");
449 if (strcasecmp (cmd, "blockdev_setbsz") == 0 || strcasecmp (cmd, "blockdev-setbsz") == 0)
450 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.");
452 if (strcasecmp (cmd, "blockdev_getsz") == 0 || strcasecmp (cmd, "blockdev-getsz") == 0)
453 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.");
455 if (strcasecmp (cmd, "blockdev_getsize64") == 0 || strcasecmp (cmd, "blockdev-getsize64") == 0)
456 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.");
458 if (strcasecmp (cmd, "blockdev_flushbufs") == 0 || strcasecmp (cmd, "blockdev-flushbufs") == 0)
459 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.");
461 if (strcasecmp (cmd, "blockdev_rereadpt") == 0 || strcasecmp (cmd, "blockdev-rereadpt") == 0)
462 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.");
464 if (strcasecmp (cmd, "upload") == 0)
465 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>.");
467 if (strcasecmp (cmd, "download") == 0)
468 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>.");
470 if (strcasecmp (cmd, "checksum") == 0)
471 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.");
473 if (strcasecmp (cmd, "tar_in") == 0 || strcasecmp (cmd, "tar-in") == 0)
474 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>.");
476 if (strcasecmp (cmd, "tar_out") == 0 || strcasecmp (cmd, "tar-out") == 0)
477 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>.");
479 if (strcasecmp (cmd, "tgz_in") == 0 || strcasecmp (cmd, "tgz-in") == 0)
480 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>.");
482 if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0)
483 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>.");
485 if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0)
486 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.");
488 if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0)
489 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.");
491 if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0)
492 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.");
494 if (strcasecmp (cmd, "debug") == 0)
495 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.");
497 if (strcasecmp (cmd, "lvremove") == 0)
498 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>.");
500 if (strcasecmp (cmd, "vgremove") == 0)
501 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).");
503 if (strcasecmp (cmd, "pvremove") == 0)
504 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.");
506 if (strcasecmp (cmd, "set_e2label") == 0 || strcasecmp (cmd, "set-e2label") == 0)
507 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.");
509 if (strcasecmp (cmd, "get_e2label") == 0 || strcasecmp (cmd, "get-e2label") == 0)
510 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>.");
512 if (strcasecmp (cmd, "set_e2uuid") == 0 || strcasecmp (cmd, "set-e2uuid") == 0)
513 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.");
515 if (strcasecmp (cmd, "get_e2uuid") == 0 || strcasecmp (cmd, "get-e2uuid") == 0)
516 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>.");
518 if (strcasecmp (cmd, "fsck") == 0)
519 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>.");
521 if (strcasecmp (cmd, "zero") == 0)
522 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>.");
524 if (strcasecmp (cmd, "grub_install") == 0 || strcasecmp (cmd, "grub-install") == 0)
525 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>.");
527 if (strcasecmp (cmd, "cp") == 0)
528 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.");
530 if (strcasecmp (cmd, "cp_a") == 0 || strcasecmp (cmd, "cp-a") == 0)
531 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.");
533 if (strcasecmp (cmd, "mv") == 0)
534 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.");
536 if (strcasecmp (cmd, "drop_caches") == 0 || strcasecmp (cmd, "drop-caches") == 0)
537 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.");
539 if (strcasecmp (cmd, "dmesg") == 0)
540 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.");
542 if (strcasecmp (cmd, "ping_daemon") == 0 || strcasecmp (cmd, "ping-daemon") == 0)
543 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.");
545 if (strcasecmp (cmd, "equal") == 0)
546 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.");
548 if (strcasecmp (cmd, "strings") == 0)
549 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.");
551 if (strcasecmp (cmd, "strings_e") == 0 || strcasecmp (cmd, "strings-e") == 0)
552 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.");
554 if (strcasecmp (cmd, "hexdump") == 0)
555 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.");
557 if (strcasecmp (cmd, "zerofree") == 0)
558 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.");
560 if (strcasecmp (cmd, "pvresize") == 0)
561 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.");
563 if (strcasecmp (cmd, "sfdisk_N") == 0 || strcasecmp (cmd, "sfdisk-N") == 0)
564 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>.");
566 if (strcasecmp (cmd, "sfdisk_l") == 0 || strcasecmp (cmd, "sfdisk-l") == 0)
567 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.");
569 if (strcasecmp (cmd, "sfdisk_kernel_geometry") == 0 || strcasecmp (cmd, "sfdisk-kernel-geometry") == 0)
570 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.");
572 if (strcasecmp (cmd, "sfdisk_disk_geometry") == 0 || strcasecmp (cmd, "sfdisk-disk-geometry") == 0)
573 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.");
575 if (strcasecmp (cmd, "vg_activate_all") == 0 || strcasecmp (cmd, "vg-activate-all") == 0)
576 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>");
578 if (strcasecmp (cmd, "vg_activate") == 0 || strcasecmp (cmd, "vg-activate") == 0)
579 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.");
581 if (strcasecmp (cmd, "lvresize") == 0)
582 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.");
584 if (strcasecmp (cmd, "resize2fs") == 0)
585 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.");
587 if (strcasecmp (cmd, "find") == 0)
588 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.");
590 if (strcasecmp (cmd, "e2fsck_f") == 0 || strcasecmp (cmd, "e2fsck-f") == 0)
591 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>.");
593 if (strcasecmp (cmd, "sleep") == 0)
594 pod2text ("sleep - sleep for some seconds", " sleep <secs>\n\nSleep for C<secs> seconds.");
596 if (strcasecmp (cmd, "ntfs_3g_probe") == 0 || strcasecmp (cmd, "ntfs-3g-probe") == 0)
597 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.");
599 if (strcasecmp (cmd, "sh") == 0)
600 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.");
602 if (strcasecmp (cmd, "sh_lines") == 0 || strcasecmp (cmd, "sh-lines") == 0)
603 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>");
605 if (strcasecmp (cmd, "glob_expand") == 0 || strcasecmp (cmd, "glob-expand") == 0)
606 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.");
608 if (strcasecmp (cmd, "scrub_device") == 0 || strcasecmp (cmd, "scrub-device") == 0)
609 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>.");
611 if (strcasecmp (cmd, "scrub_file") == 0 || strcasecmp (cmd, "scrub-file") == 0)
612 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.");
614 if (strcasecmp (cmd, "scrub_freespace") == 0 || strcasecmp (cmd, "scrub-freespace") == 0)
615 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.");
617 if (strcasecmp (cmd, "mkdtemp") == 0)
618 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)>");
620 if (strcasecmp (cmd, "wc_l") == 0 || strcasecmp (cmd, "wc-l") == 0)
621 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.");
623 if (strcasecmp (cmd, "wc_w") == 0 || strcasecmp (cmd, "wc-w") == 0)
624 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.");
626 if (strcasecmp (cmd, "wc_c") == 0 || strcasecmp (cmd, "wc-c") == 0)
627 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.");
629 if (strcasecmp (cmd, "head") == 0)
630 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.");
632 if (strcasecmp (cmd, "head_n") == 0 || strcasecmp (cmd, "head-n") == 0)
633 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.");
635 if (strcasecmp (cmd, "tail") == 0)
636 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.");
638 if (strcasecmp (cmd, "tail_n") == 0 || strcasecmp (cmd, "tail-n") == 0)
639 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.");
641 if (strcasecmp (cmd, "df") == 0)
642 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.");
644 if (strcasecmp (cmd, "df_h") == 0 || strcasecmp (cmd, "df-h") == 0)
645 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.");
647 if (strcasecmp (cmd, "du") == 0)
648 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).");
650 if (strcasecmp (cmd, "initrd_list") == 0 || strcasecmp (cmd, "initrd-list") == 0)
651 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).");
653 if (strcasecmp (cmd, "mount_loop") == 0 || strcasecmp (cmd, "mount-loop") == 0)
654 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>.");
656 if (strcasecmp (cmd, "mkswap") == 0)
657 pod2text ("mkswap - create a swap partition", " mkswap <device>\n\nCreate a swap partition on C<device>.");
659 if (strcasecmp (cmd, "mkswap_L") == 0 || strcasecmp (cmd, "mkswap-L") == 0)
660 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>.");
662 if (strcasecmp (cmd, "mkswap_U") == 0 || strcasecmp (cmd, "mkswap-U") == 0)
663 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>.");
665 if (strcasecmp (cmd, "mknod") == 0)
666 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.");
668 if (strcasecmp (cmd, "mkfifo") == 0)
669 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>.");
671 if (strcasecmp (cmd, "mknod_b") == 0 || strcasecmp (cmd, "mknod-b") == 0)
672 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>.");
674 if (strcasecmp (cmd, "mknod_c") == 0 || strcasecmp (cmd, "mknod-c") == 0)
675 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>.");
677 if (strcasecmp (cmd, "umask") == 0)
678 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\nThe default umask is C<022>. This is important because it\nmeans that directories and device nodes will be created with\nC<0644> or C<0755> mode even if you specify C<0777>.\n\nSee also L<umask(2)>, C<mknod>, C<mkdir>.\n\nThis call returns the previous umask.");
680 if (strcasecmp (cmd, "readdir") == 0)
681 pod2text ("readdir - read directories entries", " readdir <dir>\n\nThis returns the list of directory entries in directory C<dir>.\n\nAll entries in the directory are returned, including C<.> and\nC<..>. The entries are I<not> sorted, but returned in the same\norder as the underlying filesystem.\n\nThis function is primarily intended for use by programs. To\nget a simple list of names, use C<ls>. To get a printable\ndirectory for human consumption, use C<ll>.");
683 display_builtin_command (cmd);
686 static void print_pv (struct guestfs_lvm_pv *pv)
690 printf ("pv_name: %s\n", pv->pv_name);
691 printf ("pv_uuid: ");
692 for (i = 0; i < 32; ++i)
693 printf ("%c", pv->pv_uuid[i]);
695 printf ("pv_fmt: %s\n", pv->pv_fmt);
696 printf ("pv_size: %" PRIu64 "\n", pv->pv_size);
697 printf ("dev_size: %" PRIu64 "\n", pv->dev_size);
698 printf ("pv_free: %" PRIu64 "\n", pv->pv_free);
699 printf ("pv_used: %" PRIu64 "\n", pv->pv_used);
700 printf ("pv_attr: %s\n", pv->pv_attr);
701 printf ("pv_pe_count: %" PRIi64 "\n", pv->pv_pe_count);
702 printf ("pv_pe_alloc_count: %" PRIi64 "\n", pv->pv_pe_alloc_count);
703 printf ("pv_tags: %s\n", pv->pv_tags);
704 printf ("pe_start: %" PRIu64 "\n", pv->pe_start);
705 printf ("pv_mda_count: %" PRIi64 "\n", pv->pv_mda_count);
706 printf ("pv_mda_free: %" PRIu64 "\n", pv->pv_mda_free);
709 static void print_pv_list (struct guestfs_lvm_pv_list *pvs)
713 for (i = 0; i < pvs->len; ++i)
714 print_pv (&pvs->val[i]);
717 static void print_vg (struct guestfs_lvm_vg *vg)
721 printf ("vg_name: %s\n", vg->vg_name);
722 printf ("vg_uuid: ");
723 for (i = 0; i < 32; ++i)
724 printf ("%c", vg->vg_uuid[i]);
726 printf ("vg_fmt: %s\n", vg->vg_fmt);
727 printf ("vg_attr: %s\n", vg->vg_attr);
728 printf ("vg_size: %" PRIu64 "\n", vg->vg_size);
729 printf ("vg_free: %" PRIu64 "\n", vg->vg_free);
730 printf ("vg_sysid: %s\n", vg->vg_sysid);
731 printf ("vg_extent_size: %" PRIu64 "\n", vg->vg_extent_size);
732 printf ("vg_extent_count: %" PRIi64 "\n", vg->vg_extent_count);
733 printf ("vg_free_count: %" PRIi64 "\n", vg->vg_free_count);
734 printf ("max_lv: %" PRIi64 "\n", vg->max_lv);
735 printf ("max_pv: %" PRIi64 "\n", vg->max_pv);
736 printf ("pv_count: %" PRIi64 "\n", vg->pv_count);
737 printf ("lv_count: %" PRIi64 "\n", vg->lv_count);
738 printf ("snap_count: %" PRIi64 "\n", vg->snap_count);
739 printf ("vg_seqno: %" PRIi64 "\n", vg->vg_seqno);
740 printf ("vg_tags: %s\n", vg->vg_tags);
741 printf ("vg_mda_count: %" PRIi64 "\n", vg->vg_mda_count);
742 printf ("vg_mda_free: %" PRIu64 "\n", vg->vg_mda_free);
745 static void print_vg_list (struct guestfs_lvm_vg_list *vgs)
749 for (i = 0; i < vgs->len; ++i)
750 print_vg (&vgs->val[i]);
753 static void print_lv (struct guestfs_lvm_lv *lv)
757 printf ("lv_name: %s\n", lv->lv_name);
758 printf ("lv_uuid: ");
759 for (i = 0; i < 32; ++i)
760 printf ("%c", lv->lv_uuid[i]);
762 printf ("lv_attr: %s\n", lv->lv_attr);
763 printf ("lv_major: %" PRIi64 "\n", lv->lv_major);
764 printf ("lv_minor: %" PRIi64 "\n", lv->lv_minor);
765 printf ("lv_kernel_major: %" PRIi64 "\n", lv->lv_kernel_major);
766 printf ("lv_kernel_minor: %" PRIi64 "\n", lv->lv_kernel_minor);
767 printf ("lv_size: %" PRIu64 "\n", lv->lv_size);
768 printf ("seg_count: %" PRIi64 "\n", lv->seg_count);
769 printf ("origin: %s\n", lv->origin);
770 if (lv->snap_percent >= 0) printf ("snap_percent: %g %%\n", lv->snap_percent);
771 else printf ("snap_percent: \n");
772 if (lv->copy_percent >= 0) printf ("copy_percent: %g %%\n", lv->copy_percent);
773 else printf ("copy_percent: \n");
774 printf ("move_pv: %s\n", lv->move_pv);
775 printf ("lv_tags: %s\n", lv->lv_tags);
776 printf ("mirror_log: %s\n", lv->mirror_log);
777 printf ("modules: %s\n", lv->modules);
780 static void print_lv_list (struct guestfs_lvm_lv_list *lvs)
784 for (i = 0; i < lvs->len; ++i)
785 print_lv (&lvs->val[i]);
788 static void print_stat (struct guestfs_stat *stat)
790 printf ("dev: %" PRIi64 "\n", stat->dev);
791 printf ("ino: %" PRIi64 "\n", stat->ino);
792 printf ("mode: %" PRIi64 "\n", stat->mode);
793 printf ("nlink: %" PRIi64 "\n", stat->nlink);
794 printf ("uid: %" PRIi64 "\n", stat->uid);
795 printf ("gid: %" PRIi64 "\n", stat->gid);
796 printf ("rdev: %" PRIi64 "\n", stat->rdev);
797 printf ("size: %" PRIi64 "\n", stat->size);
798 printf ("blksize: %" PRIi64 "\n", stat->blksize);
799 printf ("blocks: %" PRIi64 "\n", stat->blocks);
800 printf ("atime: %" PRIi64 "\n", stat->atime);
801 printf ("mtime: %" PRIi64 "\n", stat->mtime);
802 printf ("ctime: %" PRIi64 "\n", stat->ctime);
805 static void print_statvfs (struct guestfs_statvfs *statvfs)
807 printf ("bsize: %" PRIi64 "\n", statvfs->bsize);
808 printf ("frsize: %" PRIi64 "\n", statvfs->frsize);
809 printf ("blocks: %" PRIi64 "\n", statvfs->blocks);
810 printf ("bfree: %" PRIi64 "\n", statvfs->bfree);
811 printf ("bavail: %" PRIi64 "\n", statvfs->bavail);
812 printf ("files: %" PRIi64 "\n", statvfs->files);
813 printf ("ffree: %" PRIi64 "\n", statvfs->ffree);
814 printf ("favail: %" PRIi64 "\n", statvfs->favail);
815 printf ("fsid: %" PRIi64 "\n", statvfs->fsid);
816 printf ("flag: %" PRIi64 "\n", statvfs->flag);
817 printf ("namemax: %" PRIi64 "\n", statvfs->namemax);
820 static void print_dirent (struct guestfs_dirent *dirent)
822 printf ("ino: %" PRIi64 "\n", dirent->ino);
823 printf ("ftyp: %c\n", dirent->ftyp);
824 printf ("name: %s\n", dirent->name);
827 static void print_dirent_list (struct guestfs_dirent_list *dirents)
831 for (i = 0; i < dirents->len; ++i)
832 print_dirent (&dirents->val[i]);
835 static int run_launch (const char *cmd, int argc, char *argv[])
839 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
840 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
847 static int run_kill_subprocess (const char *cmd, int argc, char *argv[])
851 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
852 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
855 r = guestfs_kill_subprocess (g);
859 static int run_add_drive (const char *cmd, int argc, char *argv[])
862 const char *filename;
864 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
865 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
869 r = guestfs_add_drive (g, filename);
873 static int run_add_cdrom (const char *cmd, int argc, char *argv[])
876 const char *filename;
878 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
879 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
883 r = guestfs_add_cdrom (g, filename);
887 static int run_add_drive_ro (const char *cmd, int argc, char *argv[])
890 const char *filename;
892 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
893 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
897 r = guestfs_add_drive_ro (g, filename);
901 static int run_config (const char *cmd, int argc, char *argv[])
904 const char *qemuparam;
905 const char *qemuvalue;
907 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
908 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
912 qemuvalue = strcmp (argv[1], "") != 0 ? argv[1] : NULL;
913 r = guestfs_config (g, qemuparam, qemuvalue);
917 static int run_set_qemu (const char *cmd, int argc, char *argv[])
922 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
923 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
927 r = guestfs_set_qemu (g, qemu);
931 static int run_get_qemu (const char *cmd, int argc, char *argv[])
935 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
936 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
939 r = guestfs_get_qemu (g);
940 if (r == NULL) return -1;
945 static int run_set_path (const char *cmd, int argc, char *argv[])
950 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
951 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
955 r = guestfs_set_path (g, path);
959 static int run_get_path (const char *cmd, int argc, char *argv[])
963 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
964 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
967 r = guestfs_get_path (g);
968 if (r == NULL) return -1;
973 static int run_set_append (const char *cmd, int argc, char *argv[])
978 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
979 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
983 r = guestfs_set_append (g, append);
987 static int run_get_append (const char *cmd, int argc, char *argv[])
991 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
992 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
995 r = guestfs_get_append (g);
996 if (r == NULL) return -1;
1001 static int run_set_autosync (const char *cmd, int argc, char *argv[])
1006 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1007 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1010 autosync = is_true (argv[0]) ? 1 : 0;
1011 r = guestfs_set_autosync (g, autosync);
1015 static int run_get_autosync (const char *cmd, int argc, char *argv[])
1019 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1020 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1023 r = guestfs_get_autosync (g);
1024 if (r == -1) return -1;
1025 if (r) printf ("true\n"); else printf ("false\n");
1029 static int run_set_verbose (const char *cmd, int argc, char *argv[])
1034 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1035 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1038 verbose = is_true (argv[0]) ? 1 : 0;
1039 r = guestfs_set_verbose (g, verbose);
1043 static int run_get_verbose (const char *cmd, int argc, char *argv[])
1047 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1048 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1051 r = guestfs_get_verbose (g);
1052 if (r == -1) return -1;
1053 if (r) printf ("true\n"); else printf ("false\n");
1057 static int run_is_ready (const char *cmd, int argc, char *argv[])
1061 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1062 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1065 r = guestfs_is_ready (g);
1066 if (r == -1) return -1;
1067 if (r) printf ("true\n"); else printf ("false\n");
1071 static int run_is_config (const char *cmd, int argc, char *argv[])
1075 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1076 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1079 r = guestfs_is_config (g);
1080 if (r == -1) return -1;
1081 if (r) printf ("true\n"); else printf ("false\n");
1085 static int run_is_launching (const char *cmd, int argc, char *argv[])
1089 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1090 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1093 r = guestfs_is_launching (g);
1094 if (r == -1) return -1;
1095 if (r) printf ("true\n"); else printf ("false\n");
1099 static int run_is_busy (const char *cmd, int argc, char *argv[])
1103 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1104 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1107 r = guestfs_is_busy (g);
1108 if (r == -1) return -1;
1109 if (r) printf ("true\n"); else printf ("false\n");
1113 static int run_get_state (const char *cmd, int argc, char *argv[])
1117 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1118 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1121 r = guestfs_get_state (g);
1122 if (r == -1) return -1;
1127 static int run_set_memsize (const char *cmd, int argc, char *argv[])
1132 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1133 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1136 memsize = atoi (argv[0]);
1137 r = guestfs_set_memsize (g, memsize);
1141 static int run_get_memsize (const char *cmd, int argc, char *argv[])
1145 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1146 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1149 r = guestfs_get_memsize (g);
1150 if (r == -1) return -1;
1155 static int run_mount (const char *cmd, int argc, char *argv[])
1159 const char *mountpoint;
1161 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1162 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1166 mountpoint = argv[1];
1167 r = guestfs_mount (g, device, mountpoint);
1171 static int run_sync (const char *cmd, int argc, char *argv[])
1175 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1176 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1179 r = guestfs_sync (g);
1183 static int run_touch (const char *cmd, int argc, char *argv[])
1188 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1189 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1193 r = guestfs_touch (g, path);
1197 static int run_cat (const char *cmd, int argc, char *argv[])
1202 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1203 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1207 r = guestfs_cat (g, path);
1208 if (r == NULL) return -1;
1214 static int run_ll (const char *cmd, int argc, char *argv[])
1217 const char *directory;
1219 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1220 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1223 directory = argv[0];
1224 r = guestfs_ll (g, directory);
1225 if (r == NULL) return -1;
1231 static int run_ls (const char *cmd, int argc, char *argv[])
1234 const char *directory;
1236 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1237 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1240 directory = argv[0];
1241 r = guestfs_ls (g, directory);
1242 if (r == NULL) return -1;
1248 static int run_list_devices (const char *cmd, int argc, char *argv[])
1252 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1253 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1256 r = guestfs_list_devices (g);
1257 if (r == NULL) return -1;
1263 static int run_list_partitions (const char *cmd, int argc, char *argv[])
1267 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1268 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1271 r = guestfs_list_partitions (g);
1272 if (r == NULL) return -1;
1278 static int run_pvs (const char *cmd, int argc, char *argv[])
1282 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1283 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1286 r = guestfs_pvs (g);
1287 if (r == NULL) return -1;
1293 static int run_vgs (const char *cmd, int argc, char *argv[])
1297 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1298 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1301 r = guestfs_vgs (g);
1302 if (r == NULL) return -1;
1308 static int run_lvs (const char *cmd, int argc, char *argv[])
1312 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1313 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1316 r = guestfs_lvs (g);
1317 if (r == NULL) return -1;
1323 static int run_pvs_full (const char *cmd, int argc, char *argv[])
1325 struct guestfs_lvm_pv_list *r;
1327 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1328 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1331 r = guestfs_pvs_full (g);
1332 if (r == NULL) return -1;
1334 guestfs_free_lvm_pv_list (r);
1338 static int run_vgs_full (const char *cmd, int argc, char *argv[])
1340 struct guestfs_lvm_vg_list *r;
1342 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1343 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1346 r = guestfs_vgs_full (g);
1347 if (r == NULL) return -1;
1349 guestfs_free_lvm_vg_list (r);
1353 static int run_lvs_full (const char *cmd, int argc, char *argv[])
1355 struct guestfs_lvm_lv_list *r;
1357 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1358 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1361 r = guestfs_lvs_full (g);
1362 if (r == NULL) return -1;
1364 guestfs_free_lvm_lv_list (r);
1368 static int run_read_lines (const char *cmd, int argc, char *argv[])
1373 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1374 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1378 r = guestfs_read_lines (g, path);
1379 if (r == NULL) return -1;
1385 static int run_aug_init (const char *cmd, int argc, char *argv[])
1391 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1392 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1396 flags = atoi (argv[1]);
1397 r = guestfs_aug_init (g, root, flags);
1401 static int run_aug_close (const char *cmd, int argc, char *argv[])
1405 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1406 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1409 r = guestfs_aug_close (g);
1413 static int run_aug_defvar (const char *cmd, int argc, char *argv[])
1419 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1420 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1424 expr = strcmp (argv[1], "") != 0 ? argv[1] : NULL;
1425 r = guestfs_aug_defvar (g, name, expr);
1426 if (r == -1) return -1;
1431 static int run_aug_defnode (const char *cmd, int argc, char *argv[])
1433 struct guestfs_int_bool *r;
1438 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1439 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1445 r = guestfs_aug_defnode (g, name, expr, val);
1446 if (r == NULL) return -1;
1447 printf ("%d, %s\n", r->i,
1448 r->b ? "true" : "false");
1449 guestfs_free_int_bool (r);
1453 static int run_aug_get (const char *cmd, int argc, char *argv[])
1458 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1459 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1463 r = guestfs_aug_get (g, path);
1464 if (r == NULL) return -1;
1470 static int run_aug_set (const char *cmd, int argc, char *argv[])
1476 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1477 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1482 r = guestfs_aug_set (g, path, val);
1486 static int run_aug_insert (const char *cmd, int argc, char *argv[])
1493 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1494 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1499 before = is_true (argv[2]) ? 1 : 0;
1500 r = guestfs_aug_insert (g, path, label, before);
1504 static int run_aug_rm (const char *cmd, int argc, char *argv[])
1509 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1510 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1514 r = guestfs_aug_rm (g, path);
1515 if (r == -1) return -1;
1520 static int run_aug_mv (const char *cmd, int argc, char *argv[])
1526 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1527 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1532 r = guestfs_aug_mv (g, src, dest);
1536 static int run_aug_match (const char *cmd, int argc, char *argv[])
1541 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1542 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1546 r = guestfs_aug_match (g, path);
1547 if (r == NULL) return -1;
1553 static int run_aug_save (const char *cmd, int argc, char *argv[])
1557 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1558 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1561 r = guestfs_aug_save (g);
1565 static int run_aug_load (const char *cmd, int argc, char *argv[])
1569 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1570 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1573 r = guestfs_aug_load (g);
1577 static int run_aug_ls (const char *cmd, int argc, char *argv[])
1582 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1583 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1587 r = guestfs_aug_ls (g, path);
1588 if (r == NULL) return -1;
1594 static int run_rm (const char *cmd, int argc, char *argv[])
1599 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1600 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1604 r = guestfs_rm (g, path);
1608 static int run_rmdir (const char *cmd, int argc, char *argv[])
1613 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1614 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1618 r = guestfs_rmdir (g, path);
1622 static int run_rm_rf (const char *cmd, int argc, char *argv[])
1627 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1628 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1632 r = guestfs_rm_rf (g, path);
1636 static int run_mkdir (const char *cmd, int argc, char *argv[])
1641 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1642 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1646 r = guestfs_mkdir (g, path);
1650 static int run_mkdir_p (const char *cmd, int argc, char *argv[])
1655 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1656 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1660 r = guestfs_mkdir_p (g, path);
1664 static int run_chmod (const char *cmd, int argc, char *argv[])
1670 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1671 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1674 mode = atoi (argv[0]);
1676 r = guestfs_chmod (g, mode, path);
1680 static int run_chown (const char *cmd, int argc, char *argv[])
1687 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1688 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1691 owner = atoi (argv[0]);
1692 group = atoi (argv[1]);
1694 r = guestfs_chown (g, owner, group, path);
1698 static int run_exists (const char *cmd, int argc, char *argv[])
1703 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1704 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1708 r = guestfs_exists (g, path);
1709 if (r == -1) return -1;
1710 if (r) printf ("true\n"); else printf ("false\n");
1714 static int run_is_file (const char *cmd, int argc, char *argv[])
1719 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1720 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1724 r = guestfs_is_file (g, path);
1725 if (r == -1) return -1;
1726 if (r) printf ("true\n"); else printf ("false\n");
1730 static int run_is_dir (const char *cmd, int argc, char *argv[])
1735 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1736 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1740 r = guestfs_is_dir (g, path);
1741 if (r == -1) return -1;
1742 if (r) printf ("true\n"); else printf ("false\n");
1746 static int run_pvcreate (const char *cmd, int argc, char *argv[])
1751 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1752 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1756 r = guestfs_pvcreate (g, device);
1760 static int run_vgcreate (const char *cmd, int argc, char *argv[])
1763 const char *volgroup;
1766 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1767 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1771 physvols = parse_string_list (argv[1]);
1772 r = guestfs_vgcreate (g, volgroup, physvols);
1776 static int run_lvcreate (const char *cmd, int argc, char *argv[])
1780 const char *volgroup;
1783 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1784 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1789 mbytes = atoi (argv[2]);
1790 r = guestfs_lvcreate (g, logvol, volgroup, mbytes);
1794 static int run_mkfs (const char *cmd, int argc, char *argv[])
1800 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
1801 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1806 r = guestfs_mkfs (g, fstype, device);
1810 static int run_sfdisk (const char *cmd, int argc, char *argv[])
1819 fprintf (stderr, "%s should have 5 parameter(s)\n", cmd);
1820 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1824 cyls = atoi (argv[1]);
1825 heads = atoi (argv[2]);
1826 sectors = atoi (argv[3]);
1827 lines = parse_string_list (argv[4]);
1828 r = guestfs_sfdisk (g, device, cyls, heads, sectors, lines);
1832 static int run_write_file (const char *cmd, int argc, char *argv[])
1836 const char *content;
1839 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
1840 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1845 size = atoi (argv[2]);
1846 r = guestfs_write_file (g, path, content, size);
1850 static int run_umount (const char *cmd, int argc, char *argv[])
1853 const char *pathordevice;
1855 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1856 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1859 pathordevice = argv[0];
1860 r = guestfs_umount (g, pathordevice);
1864 static int run_mounts (const char *cmd, int argc, char *argv[])
1868 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1869 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1872 r = guestfs_mounts (g);
1873 if (r == NULL) return -1;
1879 static int run_umount_all (const char *cmd, int argc, char *argv[])
1883 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1884 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1887 r = guestfs_umount_all (g);
1891 static int run_lvm_remove_all (const char *cmd, int argc, char *argv[])
1895 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
1896 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1899 r = guestfs_lvm_remove_all (g);
1903 static int run_file (const char *cmd, int argc, char *argv[])
1908 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1909 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1913 r = guestfs_file (g, path);
1914 if (r == NULL) return -1;
1920 static int run_command (const char *cmd, int argc, char *argv[])
1925 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1926 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1929 arguments = parse_string_list (argv[0]);
1930 r = guestfs_command (g, arguments);
1931 if (r == NULL) return -1;
1937 static int run_command_lines (const char *cmd, int argc, char *argv[])
1942 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1943 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1946 arguments = parse_string_list (argv[0]);
1947 r = guestfs_command_lines (g, arguments);
1948 if (r == NULL) return -1;
1954 static int run_stat (const char *cmd, int argc, char *argv[])
1956 struct guestfs_stat *r;
1959 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1960 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1964 r = guestfs_stat (g, path);
1965 if (r == NULL) return -1;
1971 static int run_lstat (const char *cmd, int argc, char *argv[])
1973 struct guestfs_stat *r;
1976 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1977 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1981 r = guestfs_lstat (g, path);
1982 if (r == NULL) return -1;
1988 static int run_statvfs (const char *cmd, int argc, char *argv[])
1990 struct guestfs_statvfs *r;
1993 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
1994 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
1998 r = guestfs_statvfs (g, path);
1999 if (r == NULL) return -1;
2005 static int run_tune2fs_l (const char *cmd, int argc, char *argv[])
2010 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2011 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2015 r = guestfs_tune2fs_l (g, device);
2016 if (r == NULL) return -1;
2022 static int run_blockdev_setro (const char *cmd, int argc, char *argv[])
2027 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2028 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2032 r = guestfs_blockdev_setro (g, device);
2036 static int run_blockdev_setrw (const char *cmd, int argc, char *argv[])
2041 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2042 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2046 r = guestfs_blockdev_setrw (g, device);
2050 static int run_blockdev_getro (const char *cmd, int argc, char *argv[])
2055 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2056 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2060 r = guestfs_blockdev_getro (g, device);
2061 if (r == -1) return -1;
2062 if (r) printf ("true\n"); else printf ("false\n");
2066 static int run_blockdev_getss (const char *cmd, int argc, char *argv[])
2071 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2072 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2076 r = guestfs_blockdev_getss (g, device);
2077 if (r == -1) return -1;
2082 static int run_blockdev_getbsz (const char *cmd, int argc, char *argv[])
2087 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2088 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2092 r = guestfs_blockdev_getbsz (g, device);
2093 if (r == -1) return -1;
2098 static int run_blockdev_setbsz (const char *cmd, int argc, char *argv[])
2104 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2105 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2109 blocksize = atoi (argv[1]);
2110 r = guestfs_blockdev_setbsz (g, device, blocksize);
2114 static int run_blockdev_getsz (const char *cmd, int argc, char *argv[])
2119 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2120 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2124 r = guestfs_blockdev_getsz (g, device);
2125 if (r == -1) return -1;
2126 printf ("%" PRIi64 "\n", r);
2130 static int run_blockdev_getsize64 (const char *cmd, int argc, char *argv[])
2135 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2136 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2140 r = guestfs_blockdev_getsize64 (g, device);
2141 if (r == -1) return -1;
2142 printf ("%" PRIi64 "\n", r);
2146 static int run_blockdev_flushbufs (const char *cmd, int argc, char *argv[])
2151 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2152 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2156 r = guestfs_blockdev_flushbufs (g, device);
2160 static int run_blockdev_rereadpt (const char *cmd, int argc, char *argv[])
2165 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2166 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2170 r = guestfs_blockdev_rereadpt (g, device);
2174 static int run_upload (const char *cmd, int argc, char *argv[])
2177 const char *filename;
2178 const char *remotefilename;
2180 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2181 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2184 filename = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
2185 remotefilename = argv[1];
2186 r = guestfs_upload (g, filename, remotefilename);
2190 static int run_download (const char *cmd, int argc, char *argv[])
2193 const char *remotefilename;
2194 const char *filename;
2196 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2197 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2200 remotefilename = argv[0];
2201 filename = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2202 r = guestfs_download (g, remotefilename, filename);
2206 static int run_checksum (const char *cmd, int argc, char *argv[])
2209 const char *csumtype;
2212 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2213 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2218 r = guestfs_checksum (g, csumtype, path);
2219 if (r == NULL) return -1;
2225 static int run_tar_in (const char *cmd, int argc, char *argv[])
2228 const char *tarfile;
2229 const char *directory;
2231 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2232 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2235 tarfile = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
2236 directory = argv[1];
2237 r = guestfs_tar_in (g, tarfile, directory);
2241 static int run_tar_out (const char *cmd, int argc, char *argv[])
2244 const char *directory;
2245 const char *tarfile;
2247 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2248 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2251 directory = argv[0];
2252 tarfile = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2253 r = guestfs_tar_out (g, directory, tarfile);
2257 static int run_tgz_in (const char *cmd, int argc, char *argv[])
2260 const char *tarball;
2261 const char *directory;
2263 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2264 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2267 tarball = strcmp (argv[0], "-") != 0 ? argv[0] : "/dev/stdin";
2268 directory = argv[1];
2269 r = guestfs_tgz_in (g, tarball, directory);
2273 static int run_tgz_out (const char *cmd, int argc, char *argv[])
2276 const char *directory;
2277 const char *tarball;
2279 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2280 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2283 directory = argv[0];
2284 tarball = strcmp (argv[1], "-") != 0 ? argv[1] : "/dev/stdout";
2285 r = guestfs_tgz_out (g, directory, tarball);
2289 static int run_mount_ro (const char *cmd, int argc, char *argv[])
2293 const char *mountpoint;
2295 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2296 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2300 mountpoint = argv[1];
2301 r = guestfs_mount_ro (g, device, mountpoint);
2305 static int run_mount_options (const char *cmd, int argc, char *argv[])
2308 const char *options;
2310 const char *mountpoint;
2312 fprintf (stderr, "%s should have 3 parameter(s)\n", cmd);
2313 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2318 mountpoint = argv[2];
2319 r = guestfs_mount_options (g, options, device, mountpoint);
2323 static int run_mount_vfs (const char *cmd, int argc, char *argv[])
2326 const char *options;
2327 const char *vfstype;
2329 const char *mountpoint;
2331 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
2332 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2338 mountpoint = argv[3];
2339 r = guestfs_mount_vfs (g, options, vfstype, device, mountpoint);
2343 static int run_debug (const char *cmd, int argc, char *argv[])
2349 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2350 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2354 extraargs = parse_string_list (argv[1]);
2355 r = guestfs_debug (g, subcmd, extraargs);
2356 if (r == NULL) return -1;
2362 static int run_lvremove (const char *cmd, int argc, char *argv[])
2367 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2368 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2372 r = guestfs_lvremove (g, device);
2376 static int run_vgremove (const char *cmd, int argc, char *argv[])
2381 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2382 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2386 r = guestfs_vgremove (g, vgname);
2390 static int run_pvremove (const char *cmd, int argc, char *argv[])
2395 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2396 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2400 r = guestfs_pvremove (g, device);
2404 static int run_set_e2label (const char *cmd, int argc, char *argv[])
2410 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2411 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2416 r = guestfs_set_e2label (g, device, label);
2420 static int run_get_e2label (const char *cmd, int argc, char *argv[])
2425 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2426 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2430 r = guestfs_get_e2label (g, device);
2431 if (r == NULL) return -1;
2437 static int run_set_e2uuid (const char *cmd, int argc, char *argv[])
2443 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2444 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2449 r = guestfs_set_e2uuid (g, device, uuid);
2453 static int run_get_e2uuid (const char *cmd, int argc, char *argv[])
2458 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2459 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2463 r = guestfs_get_e2uuid (g, device);
2464 if (r == NULL) return -1;
2470 static int run_fsck (const char *cmd, int argc, char *argv[])
2476 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2477 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2482 r = guestfs_fsck (g, fstype, device);
2483 if (r == -1) return -1;
2488 static int run_zero (const char *cmd, int argc, char *argv[])
2493 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2494 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2498 r = guestfs_zero (g, device);
2502 static int run_grub_install (const char *cmd, int argc, char *argv[])
2508 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2509 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2514 r = guestfs_grub_install (g, root, device);
2518 static int run_cp (const char *cmd, int argc, char *argv[])
2524 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2525 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2530 r = guestfs_cp (g, src, dest);
2534 static int run_cp_a (const char *cmd, int argc, char *argv[])
2540 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2541 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2546 r = guestfs_cp_a (g, src, dest);
2550 static int run_mv (const char *cmd, int argc, char *argv[])
2556 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2557 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2562 r = guestfs_mv (g, src, dest);
2566 static int run_drop_caches (const char *cmd, int argc, char *argv[])
2571 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2572 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2575 whattodrop = atoi (argv[0]);
2576 r = guestfs_drop_caches (g, whattodrop);
2580 static int run_dmesg (const char *cmd, int argc, char *argv[])
2584 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
2585 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2588 r = guestfs_dmesg (g);
2589 if (r == NULL) return -1;
2595 static int run_ping_daemon (const char *cmd, int argc, char *argv[])
2599 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
2600 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2603 r = guestfs_ping_daemon (g);
2607 static int run_equal (const char *cmd, int argc, char *argv[])
2613 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2614 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2619 r = guestfs_equal (g, file1, file2);
2620 if (r == -1) return -1;
2621 if (r) printf ("true\n"); else printf ("false\n");
2625 static int run_strings (const char *cmd, int argc, char *argv[])
2630 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2631 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2635 r = guestfs_strings (g, path);
2636 if (r == NULL) return -1;
2642 static int run_strings_e (const char *cmd, int argc, char *argv[])
2645 const char *encoding;
2648 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2649 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2654 r = guestfs_strings_e (g, encoding, path);
2655 if (r == NULL) return -1;
2661 static int run_hexdump (const char *cmd, int argc, char *argv[])
2666 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2667 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2671 r = guestfs_hexdump (g, path);
2672 if (r == NULL) return -1;
2678 static int run_zerofree (const char *cmd, int argc, char *argv[])
2683 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2684 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2688 r = guestfs_zerofree (g, device);
2692 static int run_pvresize (const char *cmd, int argc, char *argv[])
2697 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2698 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2702 r = guestfs_pvresize (g, device);
2706 static int run_sfdisk_N (const char *cmd, int argc, char *argv[])
2716 fprintf (stderr, "%s should have 6 parameter(s)\n", cmd);
2717 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2721 partnum = atoi (argv[1]);
2722 cyls = atoi (argv[2]);
2723 heads = atoi (argv[3]);
2724 sectors = atoi (argv[4]);
2726 r = guestfs_sfdisk_N (g, device, partnum, cyls, heads, sectors, line);
2730 static int run_sfdisk_l (const char *cmd, int argc, char *argv[])
2735 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2736 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2740 r = guestfs_sfdisk_l (g, device);
2741 if (r == NULL) return -1;
2747 static int run_sfdisk_kernel_geometry (const char *cmd, int argc, char *argv[])
2752 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2753 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2757 r = guestfs_sfdisk_kernel_geometry (g, device);
2758 if (r == NULL) return -1;
2764 static int run_sfdisk_disk_geometry (const char *cmd, int argc, char *argv[])
2769 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2770 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2774 r = guestfs_sfdisk_disk_geometry (g, device);
2775 if (r == NULL) return -1;
2781 static int run_vg_activate_all (const char *cmd, int argc, char *argv[])
2786 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2787 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2790 activate = is_true (argv[0]) ? 1 : 0;
2791 r = guestfs_vg_activate_all (g, activate);
2795 static int run_vg_activate (const char *cmd, int argc, char *argv[])
2801 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2802 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2805 activate = is_true (argv[0]) ? 1 : 0;
2806 volgroups = parse_string_list (argv[1]);
2807 r = guestfs_vg_activate (g, activate, volgroups);
2811 static int run_lvresize (const char *cmd, int argc, char *argv[])
2817 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2818 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2822 mbytes = atoi (argv[1]);
2823 r = guestfs_lvresize (g, device, mbytes);
2827 static int run_resize2fs (const char *cmd, int argc, char *argv[])
2832 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2833 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2837 r = guestfs_resize2fs (g, device);
2841 static int run_find (const char *cmd, int argc, char *argv[])
2844 const char *directory;
2846 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2847 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2850 directory = argv[0];
2851 r = guestfs_find (g, directory);
2852 if (r == NULL) return -1;
2858 static int run_e2fsck_f (const char *cmd, int argc, char *argv[])
2863 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2864 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2868 r = guestfs_e2fsck_f (g, device);
2872 static int run_sleep (const char *cmd, int argc, char *argv[])
2877 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2878 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2881 secs = atoi (argv[0]);
2882 r = guestfs_sleep (g, secs);
2886 static int run_ntfs_3g_probe (const char *cmd, int argc, char *argv[])
2892 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
2893 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2896 rw = is_true (argv[0]) ? 1 : 0;
2898 r = guestfs_ntfs_3g_probe (g, rw, device);
2899 if (r == -1) return -1;
2904 static int run_sh (const char *cmd, int argc, char *argv[])
2907 const char *command;
2909 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2910 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2914 r = guestfs_sh (g, command);
2915 if (r == NULL) return -1;
2921 static int run_sh_lines (const char *cmd, int argc, char *argv[])
2924 const char *command;
2926 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2927 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2931 r = guestfs_sh_lines (g, command);
2932 if (r == NULL) return -1;
2938 static int run_glob_expand (const char *cmd, int argc, char *argv[])
2941 const char *pattern;
2943 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2944 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2948 r = guestfs_glob_expand (g, pattern);
2949 if (r == NULL) return -1;
2955 static int run_scrub_device (const char *cmd, int argc, char *argv[])
2960 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2961 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2965 r = guestfs_scrub_device (g, device);
2969 static int run_scrub_file (const char *cmd, int argc, char *argv[])
2974 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2975 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2979 r = guestfs_scrub_file (g, file);
2983 static int run_scrub_freespace (const char *cmd, int argc, char *argv[])
2988 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
2989 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
2993 r = guestfs_scrub_freespace (g, dir);
2997 static int run_mkdtemp (const char *cmd, int argc, char *argv[])
3000 const char *template;
3002 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3003 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3007 r = guestfs_mkdtemp (g, template);
3008 if (r == NULL) return -1;
3014 static int run_wc_l (const char *cmd, int argc, char *argv[])
3019 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3020 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3024 r = guestfs_wc_l (g, path);
3025 if (r == -1) return -1;
3030 static int run_wc_w (const char *cmd, int argc, char *argv[])
3035 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3036 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3040 r = guestfs_wc_w (g, path);
3041 if (r == -1) return -1;
3046 static int run_wc_c (const char *cmd, int argc, char *argv[])
3051 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3052 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3056 r = guestfs_wc_c (g, path);
3057 if (r == -1) return -1;
3062 static int run_head (const char *cmd, int argc, char *argv[])
3067 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3068 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3072 r = guestfs_head (g, path);
3073 if (r == NULL) return -1;
3079 static int run_head_n (const char *cmd, int argc, char *argv[])
3085 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3086 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3089 nrlines = atoi (argv[0]);
3091 r = guestfs_head_n (g, nrlines, path);
3092 if (r == NULL) return -1;
3098 static int run_tail (const char *cmd, int argc, char *argv[])
3103 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3104 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3108 r = guestfs_tail (g, path);
3109 if (r == NULL) return -1;
3115 static int run_tail_n (const char *cmd, int argc, char *argv[])
3121 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3122 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3125 nrlines = atoi (argv[0]);
3127 r = guestfs_tail_n (g, nrlines, path);
3128 if (r == NULL) return -1;
3134 static int run_df (const char *cmd, int argc, char *argv[])
3138 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
3139 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3143 if (r == NULL) return -1;
3149 static int run_df_h (const char *cmd, int argc, char *argv[])
3153 fprintf (stderr, "%s should have 0 parameter(s)\n", cmd);
3154 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3157 r = guestfs_df_h (g);
3158 if (r == NULL) return -1;
3164 static int run_du (const char *cmd, int argc, char *argv[])
3169 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3170 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3174 r = guestfs_du (g, path);
3175 if (r == -1) return -1;
3176 printf ("%" PRIi64 "\n", r);
3180 static int run_initrd_list (const char *cmd, int argc, char *argv[])
3185 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3186 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3190 r = guestfs_initrd_list (g, path);
3191 if (r == NULL) return -1;
3197 static int run_mount_loop (const char *cmd, int argc, char *argv[])
3201 const char *mountpoint;
3203 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3204 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3208 mountpoint = argv[1];
3209 r = guestfs_mount_loop (g, file, mountpoint);
3213 static int run_mkswap (const char *cmd, int argc, char *argv[])
3218 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3219 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3223 r = guestfs_mkswap (g, device);
3227 static int run_mkswap_L (const char *cmd, int argc, char *argv[])
3233 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3234 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3239 r = guestfs_mkswap_L (g, label, device);
3243 static int run_mkswap_U (const char *cmd, int argc, char *argv[])
3249 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3250 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3255 r = guestfs_mkswap_U (g, uuid, device);
3259 static int run_mknod (const char *cmd, int argc, char *argv[])
3267 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
3268 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3271 mode = atoi (argv[0]);
3272 devmajor = atoi (argv[1]);
3273 devminor = atoi (argv[2]);
3275 r = guestfs_mknod (g, mode, devmajor, devminor, path);
3279 static int run_mkfifo (const char *cmd, int argc, char *argv[])
3285 fprintf (stderr, "%s should have 2 parameter(s)\n", cmd);
3286 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3289 mode = atoi (argv[0]);
3291 r = guestfs_mkfifo (g, mode, path);
3295 static int run_mknod_b (const char *cmd, int argc, char *argv[])
3303 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
3304 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3307 mode = atoi (argv[0]);
3308 devmajor = atoi (argv[1]);
3309 devminor = atoi (argv[2]);
3311 r = guestfs_mknod_b (g, mode, devmajor, devminor, path);
3315 static int run_mknod_c (const char *cmd, int argc, char *argv[])
3323 fprintf (stderr, "%s should have 4 parameter(s)\n", cmd);
3324 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3327 mode = atoi (argv[0]);
3328 devmajor = atoi (argv[1]);
3329 devminor = atoi (argv[2]);
3331 r = guestfs_mknod_c (g, mode, devmajor, devminor, path);
3335 static int run_umask (const char *cmd, int argc, char *argv[])
3340 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3341 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3344 mask = atoi (argv[0]);
3345 r = guestfs_umask (g, mask);
3346 if (r == -1) return -1;
3351 static int run_readdir (const char *cmd, int argc, char *argv[])
3353 struct guestfs_dirent_list *r;
3356 fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
3357 fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
3361 r = guestfs_readdir (g, dir);
3362 if (r == NULL) return -1;
3363 print_dirent_list (r);
3364 guestfs_free_dirent_list (r);
3368 int run_action (const char *cmd, int argc, char *argv[])
3370 if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
3371 return run_launch (cmd, argc, argv);
3373 if (strcasecmp (cmd, "kill_subprocess") == 0 || strcasecmp (cmd, "kill-subprocess") == 0)
3374 return run_kill_subprocess (cmd, argc, argv);
3376 if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
3377 return run_add_drive (cmd, argc, argv);
3379 if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
3380 return run_add_cdrom (cmd, argc, argv);
3382 if (strcasecmp (cmd, "add_drive_ro") == 0 || strcasecmp (cmd, "add-drive-ro") == 0 || strcasecmp (cmd, "add-ro") == 0)
3383 return run_add_drive_ro (cmd, argc, argv);
3385 if (strcasecmp (cmd, "config") == 0)
3386 return run_config (cmd, argc, argv);
3388 if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0)
3389 return run_set_qemu (cmd, argc, argv);
3391 if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0)
3392 return run_get_qemu (cmd, argc, argv);
3394 if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0)
3395 return run_set_path (cmd, argc, argv);
3397 if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0)
3398 return run_get_path (cmd, argc, argv);
3400 if (strcasecmp (cmd, "set_append") == 0 || strcasecmp (cmd, "set-append") == 0 || strcasecmp (cmd, "append") == 0)
3401 return run_set_append (cmd, argc, argv);
3403 if (strcasecmp (cmd, "get_append") == 0 || strcasecmp (cmd, "get-append") == 0)
3404 return run_get_append (cmd, argc, argv);
3406 if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0)
3407 return run_set_autosync (cmd, argc, argv);
3409 if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0)
3410 return run_get_autosync (cmd, argc, argv);
3412 if (strcasecmp (cmd, "set_verbose") == 0 || strcasecmp (cmd, "set-verbose") == 0 || strcasecmp (cmd, "verbose") == 0)
3413 return run_set_verbose (cmd, argc, argv);
3415 if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0)
3416 return run_get_verbose (cmd, argc, argv);
3418 if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0)
3419 return run_is_ready (cmd, argc, argv);
3421 if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0)
3422 return run_is_config (cmd, argc, argv);
3424 if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0)
3425 return run_is_launching (cmd, argc, argv);
3427 if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0)
3428 return run_is_busy (cmd, argc, argv);
3430 if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0)
3431 return run_get_state (cmd, argc, argv);
3433 if (strcasecmp (cmd, "set_memsize") == 0 || strcasecmp (cmd, "set-memsize") == 0 || strcasecmp (cmd, "memsize") == 0)
3434 return run_set_memsize (cmd, argc, argv);
3436 if (strcasecmp (cmd, "get_memsize") == 0 || strcasecmp (cmd, "get-memsize") == 0)
3437 return run_get_memsize (cmd, argc, argv);
3439 if (strcasecmp (cmd, "mount") == 0)
3440 return run_mount (cmd, argc, argv);
3442 if (strcasecmp (cmd, "sync") == 0)
3443 return run_sync (cmd, argc, argv);
3445 if (strcasecmp (cmd, "touch") == 0)
3446 return run_touch (cmd, argc, argv);
3448 if (strcasecmp (cmd, "cat") == 0)
3449 return run_cat (cmd, argc, argv);
3451 if (strcasecmp (cmd, "ll") == 0)
3452 return run_ll (cmd, argc, argv);
3454 if (strcasecmp (cmd, "ls") == 0)
3455 return run_ls (cmd, argc, argv);
3457 if (strcasecmp (cmd, "list_devices") == 0 || strcasecmp (cmd, "list-devices") == 0)
3458 return run_list_devices (cmd, argc, argv);
3460 if (strcasecmp (cmd, "list_partitions") == 0 || strcasecmp (cmd, "list-partitions") == 0)
3461 return run_list_partitions (cmd, argc, argv);
3463 if (strcasecmp (cmd, "pvs") == 0)
3464 return run_pvs (cmd, argc, argv);
3466 if (strcasecmp (cmd, "vgs") == 0)
3467 return run_vgs (cmd, argc, argv);
3469 if (strcasecmp (cmd, "lvs") == 0)
3470 return run_lvs (cmd, argc, argv);
3472 if (strcasecmp (cmd, "pvs_full") == 0 || strcasecmp (cmd, "pvs-full") == 0)
3473 return run_pvs_full (cmd, argc, argv);
3475 if (strcasecmp (cmd, "vgs_full") == 0 || strcasecmp (cmd, "vgs-full") == 0)
3476 return run_vgs_full (cmd, argc, argv);
3478 if (strcasecmp (cmd, "lvs_full") == 0 || strcasecmp (cmd, "lvs-full") == 0)
3479 return run_lvs_full (cmd, argc, argv);
3481 if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0)
3482 return run_read_lines (cmd, argc, argv);
3484 if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0)
3485 return run_aug_init (cmd, argc, argv);
3487 if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0)
3488 return run_aug_close (cmd, argc, argv);
3490 if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0)
3491 return run_aug_defvar (cmd, argc, argv);
3493 if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0)
3494 return run_aug_defnode (cmd, argc, argv);
3496 if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0)
3497 return run_aug_get (cmd, argc, argv);
3499 if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0)
3500 return run_aug_set (cmd, argc, argv);
3502 if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0)
3503 return run_aug_insert (cmd, argc, argv);
3505 if (strcasecmp (cmd, "aug_rm") == 0 || strcasecmp (cmd, "aug-rm") == 0)
3506 return run_aug_rm (cmd, argc, argv);
3508 if (strcasecmp (cmd, "aug_mv") == 0 || strcasecmp (cmd, "aug-mv") == 0)
3509 return run_aug_mv (cmd, argc, argv);
3511 if (strcasecmp (cmd, "aug_match") == 0 || strcasecmp (cmd, "aug-match") == 0)
3512 return run_aug_match (cmd, argc, argv);
3514 if (strcasecmp (cmd, "aug_save") == 0 || strcasecmp (cmd, "aug-save") == 0)
3515 return run_aug_save (cmd, argc, argv);
3517 if (strcasecmp (cmd, "aug_load") == 0 || strcasecmp (cmd, "aug-load") == 0)
3518 return run_aug_load (cmd, argc, argv);
3520 if (strcasecmp (cmd, "aug_ls") == 0 || strcasecmp (cmd, "aug-ls") == 0)
3521 return run_aug_ls (cmd, argc, argv);
3523 if (strcasecmp (cmd, "rm") == 0)
3524 return run_rm (cmd, argc, argv);
3526 if (strcasecmp (cmd, "rmdir") == 0)
3527 return run_rmdir (cmd, argc, argv);
3529 if (strcasecmp (cmd, "rm_rf") == 0 || strcasecmp (cmd, "rm-rf") == 0)
3530 return run_rm_rf (cmd, argc, argv);
3532 if (strcasecmp (cmd, "mkdir") == 0)
3533 return run_mkdir (cmd, argc, argv);
3535 if (strcasecmp (cmd, "mkdir_p") == 0 || strcasecmp (cmd, "mkdir-p") == 0)
3536 return run_mkdir_p (cmd, argc, argv);
3538 if (strcasecmp (cmd, "chmod") == 0)
3539 return run_chmod (cmd, argc, argv);
3541 if (strcasecmp (cmd, "chown") == 0)
3542 return run_chown (cmd, argc, argv);
3544 if (strcasecmp (cmd, "exists") == 0)
3545 return run_exists (cmd, argc, argv);
3547 if (strcasecmp (cmd, "is_file") == 0 || strcasecmp (cmd, "is-file") == 0)
3548 return run_is_file (cmd, argc, argv);
3550 if (strcasecmp (cmd, "is_dir") == 0 || strcasecmp (cmd, "is-dir") == 0)
3551 return run_is_dir (cmd, argc, argv);
3553 if (strcasecmp (cmd, "pvcreate") == 0)
3554 return run_pvcreate (cmd, argc, argv);
3556 if (strcasecmp (cmd, "vgcreate") == 0)
3557 return run_vgcreate (cmd, argc, argv);
3559 if (strcasecmp (cmd, "lvcreate") == 0)
3560 return run_lvcreate (cmd, argc, argv);
3562 if (strcasecmp (cmd, "mkfs") == 0)
3563 return run_mkfs (cmd, argc, argv);
3565 if (strcasecmp (cmd, "sfdisk") == 0)
3566 return run_sfdisk (cmd, argc, argv);
3568 if (strcasecmp (cmd, "write_file") == 0 || strcasecmp (cmd, "write-file") == 0)
3569 return run_write_file (cmd, argc, argv);
3571 if (strcasecmp (cmd, "umount") == 0 || strcasecmp (cmd, "unmount") == 0)
3572 return run_umount (cmd, argc, argv);
3574 if (strcasecmp (cmd, "mounts") == 0)
3575 return run_mounts (cmd, argc, argv);
3577 if (strcasecmp (cmd, "umount_all") == 0 || strcasecmp (cmd, "umount-all") == 0 || strcasecmp (cmd, "unmount-all") == 0)
3578 return run_umount_all (cmd, argc, argv);
3580 if (strcasecmp (cmd, "lvm_remove_all") == 0 || strcasecmp (cmd, "lvm-remove-all") == 0)
3581 return run_lvm_remove_all (cmd, argc, argv);
3583 if (strcasecmp (cmd, "file") == 0)
3584 return run_file (cmd, argc, argv);
3586 if (strcasecmp (cmd, "command") == 0)
3587 return run_command (cmd, argc, argv);
3589 if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
3590 return run_command_lines (cmd, argc, argv);
3592 if (strcasecmp (cmd, "stat") == 0)
3593 return run_stat (cmd, argc, argv);
3595 if (strcasecmp (cmd, "lstat") == 0)
3596 return run_lstat (cmd, argc, argv);
3598 if (strcasecmp (cmd, "statvfs") == 0)
3599 return run_statvfs (cmd, argc, argv);
3601 if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
3602 return run_tune2fs_l (cmd, argc, argv);
3604 if (strcasecmp (cmd, "blockdev_setro") == 0 || strcasecmp (cmd, "blockdev-setro") == 0)
3605 return run_blockdev_setro (cmd, argc, argv);
3607 if (strcasecmp (cmd, "blockdev_setrw") == 0 || strcasecmp (cmd, "blockdev-setrw") == 0)
3608 return run_blockdev_setrw (cmd, argc, argv);
3610 if (strcasecmp (cmd, "blockdev_getro") == 0 || strcasecmp (cmd, "blockdev-getro") == 0)
3611 return run_blockdev_getro (cmd, argc, argv);
3613 if (strcasecmp (cmd, "blockdev_getss") == 0 || strcasecmp (cmd, "blockdev-getss") == 0)
3614 return run_blockdev_getss (cmd, argc, argv);
3616 if (strcasecmp (cmd, "blockdev_getbsz") == 0 || strcasecmp (cmd, "blockdev-getbsz") == 0)
3617 return run_blockdev_getbsz (cmd, argc, argv);
3619 if (strcasecmp (cmd, "blockdev_setbsz") == 0 || strcasecmp (cmd, "blockdev-setbsz") == 0)
3620 return run_blockdev_setbsz (cmd, argc, argv);
3622 if (strcasecmp (cmd, "blockdev_getsz") == 0 || strcasecmp (cmd, "blockdev-getsz") == 0)
3623 return run_blockdev_getsz (cmd, argc, argv);
3625 if (strcasecmp (cmd, "blockdev_getsize64") == 0 || strcasecmp (cmd, "blockdev-getsize64") == 0)
3626 return run_blockdev_getsize64 (cmd, argc, argv);
3628 if (strcasecmp (cmd, "blockdev_flushbufs") == 0 || strcasecmp (cmd, "blockdev-flushbufs") == 0)
3629 return run_blockdev_flushbufs (cmd, argc, argv);
3631 if (strcasecmp (cmd, "blockdev_rereadpt") == 0 || strcasecmp (cmd, "blockdev-rereadpt") == 0)
3632 return run_blockdev_rereadpt (cmd, argc, argv);
3634 if (strcasecmp (cmd, "upload") == 0)
3635 return run_upload (cmd, argc, argv);
3637 if (strcasecmp (cmd, "download") == 0)
3638 return run_download (cmd, argc, argv);
3640 if (strcasecmp (cmd, "checksum") == 0)
3641 return run_checksum (cmd, argc, argv);
3643 if (strcasecmp (cmd, "tar_in") == 0 || strcasecmp (cmd, "tar-in") == 0)
3644 return run_tar_in (cmd, argc, argv);
3646 if (strcasecmp (cmd, "tar_out") == 0 || strcasecmp (cmd, "tar-out") == 0)
3647 return run_tar_out (cmd, argc, argv);
3649 if (strcasecmp (cmd, "tgz_in") == 0 || strcasecmp (cmd, "tgz-in") == 0)
3650 return run_tgz_in (cmd, argc, argv);
3652 if (strcasecmp (cmd, "tgz_out") == 0 || strcasecmp (cmd, "tgz-out") == 0)
3653 return run_tgz_out (cmd, argc, argv);
3655 if (strcasecmp (cmd, "mount_ro") == 0 || strcasecmp (cmd, "mount-ro") == 0)
3656 return run_mount_ro (cmd, argc, argv);
3658 if (strcasecmp (cmd, "mount_options") == 0 || strcasecmp (cmd, "mount-options") == 0)
3659 return run_mount_options (cmd, argc, argv);
3661 if (strcasecmp (cmd, "mount_vfs") == 0 || strcasecmp (cmd, "mount-vfs") == 0)
3662 return run_mount_vfs (cmd, argc, argv);
3664 if (strcasecmp (cmd, "debug") == 0)
3665 return run_debug (cmd, argc, argv);
3667 if (strcasecmp (cmd, "lvremove") == 0)
3668 return run_lvremove (cmd, argc, argv);
3670 if (strcasecmp (cmd, "vgremove") == 0)
3671 return run_vgremove (cmd, argc, argv);
3673 if (strcasecmp (cmd, "pvremove") == 0)
3674 return run_pvremove (cmd, argc, argv);
3676 if (strcasecmp (cmd, "set_e2label") == 0 || strcasecmp (cmd, "set-e2label") == 0)
3677 return run_set_e2label (cmd, argc, argv);
3679 if (strcasecmp (cmd, "get_e2label") == 0 || strcasecmp (cmd, "get-e2label") == 0)
3680 return run_get_e2label (cmd, argc, argv);
3682 if (strcasecmp (cmd, "set_e2uuid") == 0 || strcasecmp (cmd, "set-e2uuid") == 0)
3683 return run_set_e2uuid (cmd, argc, argv);
3685 if (strcasecmp (cmd, "get_e2uuid") == 0 || strcasecmp (cmd, "get-e2uuid") == 0)
3686 return run_get_e2uuid (cmd, argc, argv);
3688 if (strcasecmp (cmd, "fsck") == 0)
3689 return run_fsck (cmd, argc, argv);
3691 if (strcasecmp (cmd, "zero") == 0)
3692 return run_zero (cmd, argc, argv);
3694 if (strcasecmp (cmd, "grub_install") == 0 || strcasecmp (cmd, "grub-install") == 0)
3695 return run_grub_install (cmd, argc, argv);
3697 if (strcasecmp (cmd, "cp") == 0)
3698 return run_cp (cmd, argc, argv);
3700 if (strcasecmp (cmd, "cp_a") == 0 || strcasecmp (cmd, "cp-a") == 0)
3701 return run_cp_a (cmd, argc, argv);
3703 if (strcasecmp (cmd, "mv") == 0)
3704 return run_mv (cmd, argc, argv);
3706 if (strcasecmp (cmd, "drop_caches") == 0 || strcasecmp (cmd, "drop-caches") == 0)
3707 return run_drop_caches (cmd, argc, argv);
3709 if (strcasecmp (cmd, "dmesg") == 0)
3710 return run_dmesg (cmd, argc, argv);
3712 if (strcasecmp (cmd, "ping_daemon") == 0 || strcasecmp (cmd, "ping-daemon") == 0)
3713 return run_ping_daemon (cmd, argc, argv);
3715 if (strcasecmp (cmd, "equal") == 0)
3716 return run_equal (cmd, argc, argv);
3718 if (strcasecmp (cmd, "strings") == 0)
3719 return run_strings (cmd, argc, argv);
3721 if (strcasecmp (cmd, "strings_e") == 0 || strcasecmp (cmd, "strings-e") == 0)
3722 return run_strings_e (cmd, argc, argv);
3724 if (strcasecmp (cmd, "hexdump") == 0)
3725 return run_hexdump (cmd, argc, argv);
3727 if (strcasecmp (cmd, "zerofree") == 0)
3728 return run_zerofree (cmd, argc, argv);
3730 if (strcasecmp (cmd, "pvresize") == 0)
3731 return run_pvresize (cmd, argc, argv);
3733 if (strcasecmp (cmd, "sfdisk_N") == 0 || strcasecmp (cmd, "sfdisk-N") == 0)
3734 return run_sfdisk_N (cmd, argc, argv);
3736 if (strcasecmp (cmd, "sfdisk_l") == 0 || strcasecmp (cmd, "sfdisk-l") == 0)
3737 return run_sfdisk_l (cmd, argc, argv);
3739 if (strcasecmp (cmd, "sfdisk_kernel_geometry") == 0 || strcasecmp (cmd, "sfdisk-kernel-geometry") == 0)
3740 return run_sfdisk_kernel_geometry (cmd, argc, argv);
3742 if (strcasecmp (cmd, "sfdisk_disk_geometry") == 0 || strcasecmp (cmd, "sfdisk-disk-geometry") == 0)
3743 return run_sfdisk_disk_geometry (cmd, argc, argv);
3745 if (strcasecmp (cmd, "vg_activate_all") == 0 || strcasecmp (cmd, "vg-activate-all") == 0)
3746 return run_vg_activate_all (cmd, argc, argv);
3748 if (strcasecmp (cmd, "vg_activate") == 0 || strcasecmp (cmd, "vg-activate") == 0)
3749 return run_vg_activate (cmd, argc, argv);
3751 if (strcasecmp (cmd, "lvresize") == 0)
3752 return run_lvresize (cmd, argc, argv);
3754 if (strcasecmp (cmd, "resize2fs") == 0)
3755 return run_resize2fs (cmd, argc, argv);
3757 if (strcasecmp (cmd, "find") == 0)
3758 return run_find (cmd, argc, argv);
3760 if (strcasecmp (cmd, "e2fsck_f") == 0 || strcasecmp (cmd, "e2fsck-f") == 0)
3761 return run_e2fsck_f (cmd, argc, argv);
3763 if (strcasecmp (cmd, "sleep") == 0)
3764 return run_sleep (cmd, argc, argv);
3766 if (strcasecmp (cmd, "ntfs_3g_probe") == 0 || strcasecmp (cmd, "ntfs-3g-probe") == 0)
3767 return run_ntfs_3g_probe (cmd, argc, argv);
3769 if (strcasecmp (cmd, "sh") == 0)
3770 return run_sh (cmd, argc, argv);
3772 if (strcasecmp (cmd, "sh_lines") == 0 || strcasecmp (cmd, "sh-lines") == 0)
3773 return run_sh_lines (cmd, argc, argv);
3775 if (strcasecmp (cmd, "glob_expand") == 0 || strcasecmp (cmd, "glob-expand") == 0)
3776 return run_glob_expand (cmd, argc, argv);
3778 if (strcasecmp (cmd, "scrub_device") == 0 || strcasecmp (cmd, "scrub-device") == 0)
3779 return run_scrub_device (cmd, argc, argv);
3781 if (strcasecmp (cmd, "scrub_file") == 0 || strcasecmp (cmd, "scrub-file") == 0)
3782 return run_scrub_file (cmd, argc, argv);
3784 if (strcasecmp (cmd, "scrub_freespace") == 0 || strcasecmp (cmd, "scrub-freespace") == 0)
3785 return run_scrub_freespace (cmd, argc, argv);
3787 if (strcasecmp (cmd, "mkdtemp") == 0)
3788 return run_mkdtemp (cmd, argc, argv);
3790 if (strcasecmp (cmd, "wc_l") == 0 || strcasecmp (cmd, "wc-l") == 0)
3791 return run_wc_l (cmd, argc, argv);
3793 if (strcasecmp (cmd, "wc_w") == 0 || strcasecmp (cmd, "wc-w") == 0)
3794 return run_wc_w (cmd, argc, argv);
3796 if (strcasecmp (cmd, "wc_c") == 0 || strcasecmp (cmd, "wc-c") == 0)
3797 return run_wc_c (cmd, argc, argv);
3799 if (strcasecmp (cmd, "head") == 0)
3800 return run_head (cmd, argc, argv);
3802 if (strcasecmp (cmd, "head_n") == 0 || strcasecmp (cmd, "head-n") == 0)
3803 return run_head_n (cmd, argc, argv);
3805 if (strcasecmp (cmd, "tail") == 0)
3806 return run_tail (cmd, argc, argv);
3808 if (strcasecmp (cmd, "tail_n") == 0 || strcasecmp (cmd, "tail-n") == 0)
3809 return run_tail_n (cmd, argc, argv);
3811 if (strcasecmp (cmd, "df") == 0)
3812 return run_df (cmd, argc, argv);
3814 if (strcasecmp (cmd, "df_h") == 0 || strcasecmp (cmd, "df-h") == 0)
3815 return run_df_h (cmd, argc, argv);
3817 if (strcasecmp (cmd, "du") == 0)
3818 return run_du (cmd, argc, argv);
3820 if (strcasecmp (cmd, "initrd_list") == 0 || strcasecmp (cmd, "initrd-list") == 0)
3821 return run_initrd_list (cmd, argc, argv);
3823 if (strcasecmp (cmd, "mount_loop") == 0 || strcasecmp (cmd, "mount-loop") == 0)
3824 return run_mount_loop (cmd, argc, argv);
3826 if (strcasecmp (cmd, "mkswap") == 0)
3827 return run_mkswap (cmd, argc, argv);
3829 if (strcasecmp (cmd, "mkswap_L") == 0 || strcasecmp (cmd, "mkswap-L") == 0)
3830 return run_mkswap_L (cmd, argc, argv);
3832 if (strcasecmp (cmd, "mkswap_U") == 0 || strcasecmp (cmd, "mkswap-U") == 0)
3833 return run_mkswap_U (cmd, argc, argv);
3835 if (strcasecmp (cmd, "mknod") == 0)
3836 return run_mknod (cmd, argc, argv);
3838 if (strcasecmp (cmd, "mkfifo") == 0)
3839 return run_mkfifo (cmd, argc, argv);
3841 if (strcasecmp (cmd, "mknod_b") == 0 || strcasecmp (cmd, "mknod-b") == 0)
3842 return run_mknod_b (cmd, argc, argv);
3844 if (strcasecmp (cmd, "mknod_c") == 0 || strcasecmp (cmd, "mknod-c") == 0)
3845 return run_mknod_c (cmd, argc, argv);
3847 if (strcasecmp (cmd, "umask") == 0)
3848 return run_umask (cmd, argc, argv);
3850 if (strcasecmp (cmd, "readdir") == 0)
3851 return run_readdir (cmd, argc, argv);
3854 fprintf (stderr, "%s: unknown command\n", cmd);