X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=fish%2Fcmds.c;h=1e442d82d5ac2a74dff005817cfb55727e9fc0fc;hp=aaf97a8904111731036f34475d306edfc4c82959;hb=5d628a4a9cc11eb9a61a1dc683aadca9ac378736;hpb=c168ce1c91c8f4f615ec53e140970e0017ad750d diff --git a/fish/cmds.c b/fish/cmds.c index aaf97a8..1e442d8 100644 --- a/fish/cmds.c +++ b/fish/cmds.c @@ -33,30 +33,120 @@ void list_commands (void) list_builtin_commands (); printf ("%-20s %s\n", "add-cdrom", "add a CD-ROM disk image to examine"); printf ("%-20s %s\n", "add-drive", "add an image to examine or modify"); + printf ("%-20s %s\n", "aug-close", "close the current Augeas handle"); + printf ("%-20s %s\n", "aug-defnode", "define an Augeas node"); + printf ("%-20s %s\n", "aug-defvar", "define an Augeas variable"); + printf ("%-20s %s\n", "aug-get", "look up the value of an Augeas path"); + printf ("%-20s %s\n", "aug-init", "create a new Augeas handle"); + printf ("%-20s %s\n", "aug-insert", "insert a sibling Augeas node"); + printf ("%-20s %s\n", "aug-load", "load files into the tree"); + printf ("%-20s %s\n", "aug-ls", "list Augeas nodes under a path"); + printf ("%-20s %s\n", "aug-match", "return Augeas nodes which match path"); + printf ("%-20s %s\n", "aug-mv", "move Augeas node"); + printf ("%-20s %s\n", "aug-rm", "remove an Augeas path"); + printf ("%-20s %s\n", "aug-save", "write all pending Augeas changes to disk"); + printf ("%-20s %s\n", "aug-set", "set Augeas path to value"); + printf ("%-20s %s\n", "blockdev-flushbufs", "flush device buffers"); + printf ("%-20s %s\n", "blockdev-getbsz", "get blocksize of block device"); + printf ("%-20s %s\n", "blockdev-getro", "is block device set to read-only"); + printf ("%-20s %s\n", "blockdev-getsize64", "get total size of device in bytes"); + printf ("%-20s %s\n", "blockdev-getss", "get sectorsize of block device"); + printf ("%-20s %s\n", "blockdev-getsz", "get total size of device in 512-byte sectors"); + printf ("%-20s %s\n", "blockdev-rereadpt", "reread partition table"); + printf ("%-20s %s\n", "blockdev-setbsz", "set blocksize of block device"); + printf ("%-20s %s\n", "blockdev-setro", "set block device to read-only"); + printf ("%-20s %s\n", "blockdev-setrw", "set block device to read-write"); printf ("%-20s %s\n", "cat", "list the contents of a file"); + printf ("%-20s %s\n", "checksum", "compute MD5, SHAx or CRC checksum of file"); + printf ("%-20s %s\n", "chmod", "change file mode"); + printf ("%-20s %s\n", "chown", "change file owner and group"); + printf ("%-20s %s\n", "command", "run a command from the guest filesystem"); + printf ("%-20s %s\n", "command-lines", "run a command, returning lines"); printf ("%-20s %s\n", "config", "add qemu parameters"); + printf ("%-20s %s\n", "cp", "copy a file"); + printf ("%-20s %s\n", "cp-a", "copy a file or directory recursively"); + printf ("%-20s %s\n", "debug", "debugging and internals"); + printf ("%-20s %s\n", "dmesg", "return kernel messages"); + printf ("%-20s %s\n", "download", "download a file to the local machine"); + printf ("%-20s %s\n", "drop-caches", "drop kernel page cache, dentries and inodes"); + printf ("%-20s %s\n", "equal", "test if two files have equal contents"); + printf ("%-20s %s\n", "exists", "test if file or directory exists"); + printf ("%-20s %s\n", "file", "determine file type"); + printf ("%-20s %s\n", "fsck", "run the filesystem checker"); + printf ("%-20s %s\n", "get-append", "get the additional kernel options"); printf ("%-20s %s\n", "get-autosync", "get autosync mode"); + printf ("%-20s %s\n", "get-e2label", "get the ext2/3/4 filesystem label"); + printf ("%-20s %s\n", "get-e2uuid", "get the ext2/3/4 filesystem UUID"); printf ("%-20s %s\n", "get-path", "get the search path"); + printf ("%-20s %s\n", "get-qemu", "get the qemu binary"); + printf ("%-20s %s\n", "get-state", "get the current state"); printf ("%-20s %s\n", "get-verbose", "get verbose mode"); + printf ("%-20s %s\n", "grub-install", "install GRUB"); + printf ("%-20s %s\n", "hexdump", "dump a file in hexadecimal"); + printf ("%-20s %s\n", "is-busy", "is busy processing a command"); + printf ("%-20s %s\n", "is-config", "is in configuration state"); + printf ("%-20s %s\n", "is-dir", "test if file exists"); + printf ("%-20s %s\n", "is-file", "test if file exists"); + printf ("%-20s %s\n", "is-launching", "is launching subprocess"); + printf ("%-20s %s\n", "is-ready", "is ready to accept commands"); printf ("%-20s %s\n", "kill-subprocess", "kill the qemu subprocess"); printf ("%-20s %s\n", "launch", "launch the qemu subprocess"); printf ("%-20s %s\n", "list-devices", "list the block devices"); printf ("%-20s %s\n", "list-partitions", "list the partitions"); printf ("%-20s %s\n", "ll", "list the files in a directory (long format)"); printf ("%-20s %s\n", "ls", "list the files in a directory"); + printf ("%-20s %s\n", "lstat", "get file information for a symbolic link"); + printf ("%-20s %s\n", "lvcreate", "create an LVM volume group"); + printf ("%-20s %s\n", "lvm-remove-all", "remove all LVM LVs, VGs and PVs"); + printf ("%-20s %s\n", "lvremove", "remove an LVM logical volume"); printf ("%-20s %s\n", "lvs", "list the LVM logical volumes (LVs)"); printf ("%-20s %s\n", "lvs-full", "list the LVM logical volumes (LVs)"); + printf ("%-20s %s\n", "mkdir", "create a directory"); + printf ("%-20s %s\n", "mkdir-p", "create a directory and parents"); + printf ("%-20s %s\n", "mkfs", "make a filesystem"); printf ("%-20s %s\n", "mount", "mount a guest disk at a position in the filesystem"); + printf ("%-20s %s\n", "mount-options", "mount a guest disk with mount options"); + printf ("%-20s %s\n", "mount-ro", "mount a guest disk, read-only"); + printf ("%-20s %s\n", "mount-vfs", "mount a guest disk with mount options and vfstype"); + printf ("%-20s %s\n", "mounts", "show mounted filesystems"); + printf ("%-20s %s\n", "mv", "move a file"); + printf ("%-20s %s\n", "ping-daemon", "ping the guest daemon"); + printf ("%-20s %s\n", "pvcreate", "create an LVM physical volume"); + printf ("%-20s %s\n", "pvremove", "remove an LVM physical volume"); printf ("%-20s %s\n", "pvs", "list the LVM physical volumes (PVs)"); printf ("%-20s %s\n", "pvs-full", "list the LVM physical volumes (PVs)"); printf ("%-20s %s\n", "read-lines", "read file as lines"); + printf ("%-20s %s\n", "rm", "remove a file"); + printf ("%-20s %s\n", "rm-rf", "remove a file or directory recursively"); + printf ("%-20s %s\n", "rmdir", "remove a directory"); + printf ("%-20s %s\n", "set-append", "add options to kernel command line"); printf ("%-20s %s\n", "set-autosync", "set autosync mode"); + printf ("%-20s %s\n", "set-e2label", "set the ext2/3/4 filesystem label"); + printf ("%-20s %s\n", "set-e2uuid", "set the ext2/3/4 filesystem UUID"); printf ("%-20s %s\n", "set-path", "set the search path"); + printf ("%-20s %s\n", "set-qemu", "set the qemu binary"); printf ("%-20s %s\n", "set-verbose", "set verbose mode"); + printf ("%-20s %s\n", "sfdisk", "create partitions on a block device"); + printf ("%-20s %s\n", "stat", "get file information"); + printf ("%-20s %s\n", "statvfs", "get file system statistics"); + printf ("%-20s %s\n", "strings", "print the printable strings in a file"); + printf ("%-20s %s\n", "strings-e", "print the printable strings in a file"); printf ("%-20s %s\n", "sync", "sync disks, writes are flushed through to the disk image"); + printf ("%-20s %s\n", "tar-in", "unpack tarfile to directory"); + printf ("%-20s %s\n", "tar-out", "pack directory into tarfile"); + printf ("%-20s %s\n", "tgz-in", "unpack compressed tarball to directory"); + printf ("%-20s %s\n", "tgz-out", "pack directory into compressed tarball"); printf ("%-20s %s\n", "touch", "update file timestamps or create a new file"); + printf ("%-20s %s\n", "tune2fs-l", "get ext2/ext3/ext4 superblock details"); + printf ("%-20s %s\n", "umount", "unmount a filesystem"); + printf ("%-20s %s\n", "umount-all", "unmount all filesystems"); + printf ("%-20s %s\n", "upload", "upload a file from the local machine"); + printf ("%-20s %s\n", "vgcreate", "create an LVM volume group"); + printf ("%-20s %s\n", "vgremove", "remove an LVM volume group"); printf ("%-20s %s\n", "vgs", "list the LVM volume groups (VGs)"); printf ("%-20s %s\n", "vgs-full", "list the LVM volume groups (VGs)"); + printf ("%-20s %s\n", "write-file", "create a file"); + printf ("%-20s %s\n", "zero", "write zeroes to the device"); printf (" Use -h / help to show detailed help for a command.\n"); } @@ -77,14 +167,26 @@ void display_command (const char *cmd) if (strcasecmp (cmd, "config") == 0) pod2text ("config - add qemu parameters", " config \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 string must be a C<-> (dash).\n\nC can be NULL."); else + if (strcasecmp (cmd, "set_qemu") == 0 || strcasecmp (cmd, "set-qemu") == 0 || strcasecmp (cmd, "qemu") == 0) + pod2text ("set-qemu - set the qemu binary", " set-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\nenvironment variable.\n\nSetting C to C restores the default qemu binary.\n\nYou can use 'qemu' as an alias for this command."); + else + if (strcasecmp (cmd, "get_qemu") == 0 || strcasecmp (cmd, "get-qemu") == 0) + 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."); + else if (strcasecmp (cmd, "set_path") == 0 || strcasecmp (cmd, "set-path") == 0 || strcasecmp (cmd, "path") == 0) - pod2text ("set-path - set the search path", " set-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 environment variable.\n\nThe string C is stashed in the libguestfs handle, so the caller\nmust make sure it remains valid for the lifetime of the handle.\n\nSetting C to C restores the default path.\n\nYou can use 'path' as an alias for this command."); + pod2text ("set-path - set the search path", " set-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 environment variable.\n\nSetting C to C restores the default path.\n\nYou can use 'path' as an alias for this command."); else if (strcasecmp (cmd, "get_path") == 0 || strcasecmp (cmd, "get-path") == 0) 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."); else + if (strcasecmp (cmd, "set_append") == 0 || strcasecmp (cmd, "set-append") == 0 || strcasecmp (cmd, "append") == 0) + pod2text ("set-append - add options to kernel command line", " set-append \n\nThis function is used to add additional options to the\nguest kernel command line.\n\nThe default is C unless overridden by setting\nC environment variable.\n\nSetting C to C means I additional options\nare passed (libguestfs always adds a few of its own).\n\nYou can use 'append' as an alias for this command."); + else + if (strcasecmp (cmd, "get_append") == 0 || strcasecmp (cmd, "get-append") == 0) + 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 then no options are added."); + else if (strcasecmp (cmd, "set_autosync") == 0 || strcasecmp (cmd, "set-autosync") == 0 || strcasecmp (cmd, "autosync") == 0) - pod2text ("set-autosync - set autosync mode", " set-autosync \n\nIf C is true, this enables autosync. Libguestfs will make a\nbest effort attempt to run C when the handle is closed\n(also if the program exits without closing handles).\n\nYou can use 'autosync' as an alias for this command."); + pod2text ("set-autosync - set autosync mode", " set-autosync \n\nIf C is true, this enables autosync. Libguestfs will make a\nbest effort attempt to run C followed by\nC 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."); else if (strcasecmp (cmd, "get_autosync") == 0 || strcasecmp (cmd, "get-autosync") == 0) pod2text ("get-autosync - get autosync mode", " get-autosync\n\nGet the autosync flag."); @@ -95,6 +197,21 @@ void display_command (const char *cmd) if (strcasecmp (cmd, "get_verbose") == 0 || strcasecmp (cmd, "get-verbose") == 0) pod2text ("get-verbose - get verbose mode", " get-verbose\n\nThis returns the verbose messages flag."); else + if (strcasecmp (cmd, "is_ready") == 0 || strcasecmp (cmd, "is-ready") == 0) + 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 state).\n\nFor more information on states, see L."); + else + if (strcasecmp (cmd, "is_config") == 0 || strcasecmp (cmd, "is-config") == 0) + pod2text ("is-config - is in configuration state", " is-config\n\nThis returns true iff this handle is being configured\n(in the C state).\n\nFor more information on states, see L."); + else + if (strcasecmp (cmd, "is_launching") == 0 || strcasecmp (cmd, "is-launching") == 0) + pod2text ("is-launching - is launching subprocess", " is-launching\n\nThis returns true iff this handle is launching the subprocess\n(in the C state).\n\nFor more information on states, see L."); + else + if (strcasecmp (cmd, "is_busy") == 0 || strcasecmp (cmd, "is-busy") == 0) + 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 state).\n\nFor more information on states, see L."); + else + if (strcasecmp (cmd, "get_state") == 0 || strcasecmp (cmd, "get-state") == 0) + 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."); + else if (strcasecmp (cmd, "mount") == 0) pod2text ("mount - mount a guest disk at a position in the filesystem", " mount \n\nMount a guest disk at a position in the filesystem. Block devices\nare named C, C and so on, as they were added to\nthe guest. If those block devices contain partitions, they will have\nthe usual names (eg. C). Also LVM C-style\nnames can be used.\n\nThe rules are the same as for L: 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 and C are set with this\ncall, in order to improve reliability."); else @@ -105,7 +222,7 @@ void display_command (const char *cmd) pod2text ("touch - update file timestamps or create a new file", " touch \n\nTouch acts like the L 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."); else if (strcasecmp (cmd, "cat") == 0) - pod2text ("cat - list the contents of a file", " cat \n\nReturn the contents of the file named C.\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\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."); + pod2text ("cat - list the contents of a file", " cat \n\nReturn the contents of the file named C.\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\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."); else if (strcasecmp (cmd, "ll") == 0) pod2text ("ll - list the files in a directory (long format)", " ll \n\nList the files in C (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 intended that you try to parse the output string."); @@ -140,6 +257,249 @@ void display_command (const char *cmd) if (strcasecmp (cmd, "read_lines") == 0 || strcasecmp (cmd, "read-lines") == 0) pod2text ("read-lines - read file as lines", " read-lines \n\nReturn the contents of the file named C.\n\nThe file contents are returned as a list of lines. Trailing\nC and C character sequences are I 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\nfunction which has a more complex interface."); else + if (strcasecmp (cmd, "aug_init") == 0 || strcasecmp (cmd, "aug-init") == 0) + pod2text ("aug-init - create a new Augeas handle", " aug-init \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\ncommands.\n\nC is the filesystem root. C must not be NULL,\nuse C instead.\n\nThe flags are the same as the flags defined in\nEaugeas.hE, the logical I of the following\nintegers:\n\n=over 4\n\n=item C = 1\n\nKeep the original file with a C<.augsave> extension.\n\n=item C = 2\n\nSave changes into a file with extension C<.augnew>, and\ndo not overwrite original. Overrides C.\n\n=item C = 4\n\nTypecheck lenses (can be expensive).\n\n=item C = 8\n\nDo not use standard load path for modules.\n\n=item C = 16\n\nMake save a no-op, just record what would have been changed.\n\n=item C = 32\n\nDo not load the tree in C.\n\n=back\n\nTo close the handle, you can call C.\n\nTo find out more about Augeas, see L."); + else + if (strcasecmp (cmd, "aug_close") == 0 || strcasecmp (cmd, "aug-close") == 0) + 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 again before you can use any other\nAugeas functions."); + else + if (strcasecmp (cmd, "aug_defvar") == 0 || strcasecmp (cmd, "aug-defvar") == 0) + pod2text ("aug-defvar - define an Augeas variable", " aug-defvar \n\nDefines an Augeas variable C whose value is the result\nof evaluating C. If C is NULL, then C is\nundefined.\n\nOn success this returns the number of nodes in C, or\nC<0> if C evaluates to something which is not a nodeset."); + else + if (strcasecmp (cmd, "aug_defnode") == 0 || strcasecmp (cmd, "aug-defnode") == 0) + pod2text ("aug-defnode - define an Augeas node", " aug-defnode \n\nDefines a variable C whose value is the result of\nevaluating C.\n\nIf C evaluates to an empty nodeset, a node is created,\nequivalent to calling C C, C.\nC 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."); + else + if (strcasecmp (cmd, "aug_get") == 0 || strcasecmp (cmd, "aug-get") == 0) + pod2text ("aug-get - look up the value of an Augeas path", " aug-get \n\nLook up the value associated with C. If C\nmatches exactly one node, the C is returned."); + else + if (strcasecmp (cmd, "aug_set") == 0 || strcasecmp (cmd, "aug-set") == 0) + pod2text ("aug-set - set Augeas path to value", " aug-set \n\nSet the value associated with C to C."); + else + if (strcasecmp (cmd, "aug_insert") == 0 || strcasecmp (cmd, "aug-insert") == 0) + pod2text ("aug-insert - insert a sibling Augeas node", " aug-insert