summaryrefslogtreecommitdiffstats
path: root/fish
Commit message (Collapse)AuthorAgeFilesLines
* fish: Use a perfect hash for faster command lookups.Richard W.M. Jones2010-11-052-3/+62
| | | | | | | Existing command lookups are approx O(n^2). Replace this with a perfect hash implementation which should be a lot faster. (cherry picked from commit 58915725b1e464f7d447c0051ad916fbc1a82210)
* Unify guestfish and guestmount options processing (RHBZ#642932).Richard W.M. Jones2010-10-278-272/+452
| | | | | | | | | | | | | | | In guestfish, factor out the processing of the options -a, -c, -d, -i, -m, -n, -r, -v, -V, -x into a separate set of files: options.c, options.h, inspect.c, virt.c. Change guestmount so that it uses these same files (from the ../fish directory) to process the same options. This unifies the handling of these options between the two programs. It also adds the useful inspection feature to guestmount, so you can now do: guestmount -d Guest -i --ro mnt/
* Enable autosync by default.Richard W.M. Jones2010-10-271-2/+0
|
* fish: Fix too-short allocation in tilde expansion (RHBZ#636061).Karel Klíč2010-10-251-1/+1
|
* fish: Specify format of disks (RHBZ#642934,CVE-2010-3851).Richard W.M. Jones2010-10-224-49/+125
| | | | | | | | For libvirt guests, the disk format is copied from libvirt (if libvirt knows it). For command line disk images, you can use --format to override format auto-detection.
* generator: Optional arguments, add-drive-opts (RHBZ#642934,CVE-2010-3851).Richard W.M. Jones2010-10-221-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This large commit changes the generator so that optional arguments can be supported for functions. The model for arguments (known as the "style") is changed from (ret, args) to (ret, args, optargs) where optargs is a more limited list of arguments. One function has been added which takes optional arguments, it is "add-drive-opts", modelled as: (RErr, [String "filename"], #required [Bool "readonly"; String "format"; String "iface"]) #optional Note that this function is processed in the library (does not go over the RPC protocol to the daemon). This has allowed us to simplify the current implementation by omitting changes related to RPC or the daemon, although we plan to add these at some point in the future. From C this function can be called in 3 different ways as in these examples: guestfs_add_drive_opts (g, filename, GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", -1); (the argument(s) between 'filename' and '-1' are the optional ones). guestfs_add_drive_opts_va (g, filename, args); where 'args' is a va_list. This works like the first version. struct guestfs_add_drive_opts_argv optargs = { .bitmask = GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK, .readonly = 1, } guestfs_add_drive_opts_argv (g, filename, &optargs); This last form lets you construct lists of optional arguments, and is used by guestfish and the language bindings. In guestfish optional arguments are used like this: add-drive-opts filename readonly:true In OCaml these are mapped naturally to OCaml optional arguments, eg: g#add_drive_opts ~readonly:true filename; In Perl these are mapped to extra arguments, eg: $g->add_drive_opts ($filename, readonly => 1); In Python these are mapped to optional arguments, eg: g.add_drive_opts ("file", readonly = 1, format = "qcow2") In Ruby these are mapped to a final hash argument, eg: g.add_drive_opts("file", {}) g.add_drive_opts("file", :readonly => 1) g.add_drive_opts("file", :readonly => 1, :iface => "virtio") In PHP these are mapped to extra parameters. This is not quite accurate since you cannot omit arbitrary optional parameters, but there's not much than can be done within the limitations of PHP as a language. Unimplemented in: Haskell, C#, Java.
* fish: Change 'int argc' to 'size_t argc' throughout.Richard W.M. Jones2010-10-2114-38/+40
|
* fish: Fix glob command (RHBZ#635969).Richard W.M. Jones2010-10-011-9/+3
| | | | | | | | | This is a fix for the glob command in guestfish which was inadvertently broken in commit c359347dd42c9f5b875630537ee3641264826b89. This also appears to fix: https://bugzilla.redhat.com/show_bug.cgi?id=635969 glob echo mkfs ext2 /dev/vd[b-t]1 prints garbage
* fish: Refresh guestfish documentation.Richard W.M. Jones2010-09-261-25/+48
|
* Document accurately how supermin appliance uses /tmp as a cache.Richard W.M. Jones2010-09-241-3/+3
|
* Allow $TMPDIR to override most temporary directory uses.Richard W.M. Jones2010-09-245-4/+9
| | | | | | | Be more consistent in allowing the user to override use of the temporary directory by specifying $TMPDIR. Also prefer P_tmpdir macro (defined in <stdio.h>) if that is defined, rather than hard-coding "/tmp" for the fallback location.
* fish: Fix segfault in free_drives() function.Richard W.M. Jones2010-09-221-2/+2
| | | | | This updates commit 8ea62c8d7f3f7f7e4057b93105cf979271aa13f4 so it doesn't try to free the optarg (stack-allocated) strings.
* fish: Implement 'hexedit' command.Richard W.M. Jones2010-09-214-1/+202
|
* leak: Clear history before exiting guestfish.Richard W.M. Jones2010-09-211-0/+1
| | | | | | | | | Clear the in-memory history before exiting. This removes some but not all memory leaks associated with using the GNU History library. As far as I can tell it is not possible to free up everything used by GNU History. (Found by valgrind).
* leak: Free list of drives and mountpoints in guestfish.Richard W.M. Jones2010-09-213-2/+53
| | | | | | | | | | Previously the list of -a, -d, -m, -N parameters were leaked. This change frees them explicitly. This is not such an important fix since guestfish is a one-shot program, but it aids in finding other leaks in future. (Found by valgrind).
* fish: Add --echo-keys option to allow passphrases/keys to be echoed.Richard W.M. Jones2010-09-212-8/+22
| | | | | See also: http://catless.ncl.ac.uk/Risks/26.17.html#subj13.3
* generator: Generate guestfish-only commands.Richard W.M. Jones2010-09-1815-388/+35
| | | | | | The guestfish-only commands such as 'alloc' and 'edit' are now generated from one place in the generator instead of being spread around ad-hoc in the C code.
* fish: Correction for online help for 'edit' and 'more' commands.Richard W.M. Jones2010-09-171-8/+2
| | | | | This corrects commit b5c287bcd456bdb02d8ec0443483df34f4fd6b5d and commit 639ca1828b167bf59353f0cd3c8c79c6289bbd5d.
* fish: If -m option fails, suggest a mountpoint.Richard Jones2010-09-151-1/+14
|
* fish: In usage message use new-style -i option syntax.Richard Jones2010-09-141-2/+2
|
* fish: Update copyright dates in usage message.Richard Jones2010-09-141-1/+1
|
* fish: Remove extraneous space from usage message.Richard Jones2010-09-141-1/+1
|
* syntax: Remove unused assert.h header.Richard Jones2010-09-102-2/+0
|
* fish: glob should only print commands when trace mode is enabled.Richard Jones2010-09-101-5/+7
|
* fish: const-correctness fixes in copy.cRichard Jones2010-09-101-6/+6
|
* fish: Fix 'copy-out' command when local directory is "/foo".Richard Jones2010-09-101-1/+4
|
* fish: Fix typo in documentation of copy-out.Richard Jones2010-09-101-1/+1
|
* fish: Implement copy-in and copy-out commands.Richard Jones2010-09-095-0/+377
|
* fish: Fix 'more' command to work with any file.Richard Jones2010-09-092-13/+2
|
* fish: Fix 'edit' command to work with any file.Richard Jones2010-09-092-70/+19
|
* fish: Add guestfish -N bootroot and -N bootrootlv for creating boot+root disks.Richard Jones2010-09-085-5/+171
|
* fish: Add guestfish -N lvfs for creating formatted LVs.Richard Jones2010-09-081-0/+58
|
* fish: Add guestfish -N lv for creating disks with LVs.Richard Jones2010-09-082-0/+114
|
* fish: Improve appearance of guestfish -N help output.Richard Jones2010-09-081-1/+1
|
* fish: Allow guestfish -N help for listing prepared disk image help.Richard Jones2010-09-083-5/+8
|
* fish: Generate list of prepared disk image types.Richard Jones2010-09-086-138/+156
| | | | This commit shouldn't change the semantics of the code.
* build: Link static -ltinfo into guestfish.static binary.Richard Jones2010-09-011-1/+1
|
* fish: Add missing header file to sources.Richard Jones2010-09-011-0/+1
|
* fish: Implement progress bars in guestfish.Richard Jones2010-09-017-1/+374
| | | | | | | | | | | | | | | | | The progress bar is updated 3 times per second, and is not displayed at all for operations which take less than two seconds. You can disable progress bars by using the flag --no-progress-bars, and you can enable progress bars in non-interactive sessions with the flag --progress-bars. A good way to test this is to use the following command: guestfish --progress-bars \ -N disk:10G \ zero-device /dev/sda (adjust "10G" to get different lengths of time).
* fish: Detect UTF-8 output and open termcap/terminfo database.Richard Jones2010-09-012-0/+37
| | | | | | Provide a generic mechanism within guestfish to detect if output if UTF-8 and to open the termcap (or terminfo) database for the current terminal type.
* build: Don't add version extra string to the version number.Richard Jones2010-08-271-2/+6
| | | | | | | | | | | | If this string was non-empty, then it broke a lot of things because autoconf and other parts of the build system were expecting this string to contain a simple MAJOR.MINOR.RELEASE version number. This requires changes to guestfish and guestmount so they use the guestfs_version API to fetch the version from the library. (The Perl tools were already doing it this way). In a way this is more accurate, because it's no longer hard-coded in the binary, but fetched from the dynamically linked libguestfs.so.
* Include statically linked binaries in the binary distribution.Richard Jones2010-08-251-0/+6
|
* Rename global 'xdr_str'.Richard Jones2010-08-251-2/+2
| | | | | | | Two bits of XDR both contained a definition called 'str' which means that 'xdr_str' was being exported globally twice. Because of the linker script this didn't affect us. But it's best to rename this global so that conflicts cannot arise.
* fish: Reimplement -i option using new C-based inspection.Richard Jones2010-08-175-137/+186
| | | | | | | | | | | | | | Don't shell out to virt-inspector. Instead, use the new C-based inspection APIs. This is much faster. The new syntax is slightly different: guestfish -a disk.img -i guestfish -d guest -i However, the old syntax still works.
* fish: Add -c/--connect and -d/--domain options.Richard Jones2010-08-175-33/+311
| | | | | | | | The -d option lets you specify libvirt domains. The disks from these domains are found and added, as if you'd named them with -a. The -c option lets you specify a libvirt URI, which is needed when we consult libvirt to implement the above.
* New APIs: Support for opening LUKS-encrypted disks.Richard Jones2010-07-211-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for opening LUKS-encrypted disks, via three new APIs: luks_open: Create a mapping for an encrypted disk. luks_open_ro: Same, but read-only mapping. luks_close: Close a mapping. A typical guestfish session using this functionality looks like this: $ guestfish --ro -a encrypted.img ><fs> run ><fs> list-devices /dev/vda ><fs> list-partitions /dev/vda1 /dev/vda2 ><fs> vfs-type /dev/vda2 crypto_LUKS ><fs> luks-open /dev/vda2 luksdev Enter key or passphrase ("key"): ><fs> vgscan ><fs> vg-activate-all true ><fs> pvs /dev/dm-0 ><fs> vgs vg_f13x64encrypted ><fs> lvs /dev/vg_f13x64encrypted/lv_root /dev/vg_f13x64encrypted/lv_swap ><fs> mount /dev/vg_f13x64encrypted/lv_root / ><fs> ll / total 132 dr-xr-xr-x. 24 root root 4096 Jul 21 12:01 . dr-xr-xr-x 20 root root 0 Jul 21 20:06 .. drwx------. 3 root root 4096 Jul 21 11:59 .dbus drwx------. 2 root root 4096 Jul 21 12:00 .pulse -rw-------. 1 root root 256 Jul 21 12:00 .pulse-cookie dr-xr-xr-x. 2 root root 4096 May 13 03:03 bin NOT included in this patch: - An easier way to use this from guestfish. - Ability to create LUKS devices. - Ability to change LUKS keys on existing devices. - Direct access to the /dev/mapper device (eg. if it contains anything apart from VGs).
* generator: Add 'Key' parameter type.Richard Jones2010-07-213-0/+73
| | | | | | | | | | | | | Add a 'Key' parameter type, used for passing sensitive key material into libguestfs. Eventually the plan is to mlock() key material into memory. However this is very difficult to achieve because the encoded XDR strings end up in many places. Therefore users should note that key material passed to libguestfs might end up in swap. The only difference between 'Key' and 'String' currently is that guestfish requests the key from /dev/tty with echoing turned off.
* fish: Don't fail if -m and --listen flags are both given (RHBZ#612178).Richard Jones2010-07-071-0/+11
| | | | | | | | | | | | | Testing this against a Fedora disk image: $ ./fish/guestfish --ro -a F13.img -m /dev/sda1 --listen export GUESTFISH_PID=6033 $ ./fish/guestfish --remote=6033 -- ping-daemon $ ./fish/guestfish --remote=6033 -- ping-daemon $ ./fish/guestfish --remote=6033 -- exit Without this fix the first remote command would fail because qemu would have already been killed.
* fish: help command return error for non-existent commands (RHBZ#597145).Richard Jones2010-06-022-25/+57
| | | | | | | | | | | | | | With this change, the exit status indicates error for non-existent commands. $ guestfish -h foo foo: command not known, use -h to list all commands $ echo $? 1 $ guestfish help foo foo: command not known, use -h to list all commands $ echo $? 1
* Add bash complation script to EXTRA_DIST.Richard Jones2010-05-251-1/+2
|