X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=tools%2Fvirt-cat;h=66806a1abef1420abf9057210deed34b3a25e8e9;hb=607dcadd2dc7883865ada5ae158e750f19dfff67;hp=c8cdd193b214bed3ab0322a55e99ce966a234dbd;hpb=9a608a1516bd339dc6d5ebe9952d3bced273c416;p=libguestfs.git diff --git a/tools/virt-cat b/tools/virt-cat index c8cdd19..66806a1 100755 --- a/tools/virt-cat +++ b/tools/virt-cat @@ -109,6 +109,23 @@ connect to the default libvirt hypervisor. If you specify guest block devices directly, then libvirt is not used at all. +=cut + +my $format; + +=item B<--format> raw + +Specify the format of disk images given on the command line. If this +is omitted then the format is autodetected from the content of the +disk image. + +If disk images are requested from libvirt, then this program asks +libvirt for this information. In this case, the value of the format +parameter is ignored. + +If working with untrusted raw-format guest disk images, you should +ensure the format is always specified. + =back =cut @@ -116,6 +133,7 @@ at all. GetOptions ("help|?" => \$help, "version" => \$version, "connect|c=s" => \$uri, + "format=s" => \$format, ) or pod2usage (2); pod2usage (1) if $help; if ($version) { @@ -132,9 +150,9 @@ my $filename = pop @ARGV; my $g; if ($uri) { - $g = open_guest (\@ARGV, address => $uri); + $g = open_guest (\@ARGV, address => $uri, format => $format); } else { - $g = open_guest (\@ARGV); + $g = open_guest (\@ARGV, format => $format); } $g->launch (); @@ -150,7 +168,6 @@ my %fses = my $oses = inspect_operating_systems ($g, \%fses); my @roots = keys %$oses; -die __"no root device found in this operating system image" if @roots == 0; die __"multiboot operating systems are not supported by virt-cat" if @roots > 1; my $root_dev = $roots[0]; @@ -161,6 +178,13 @@ mount_operating_system ($g, $os); # NB: https://bugzilla.redhat.com/show_bug.cgi?id=501888 print $g->download($filename, "/dev/stdout"); +=head1 SHELL QUOTING + +Libvirt guest names can contain arbitrary characters, some of which +have meaning to the shell such as C<#> and space. You may need to +quote or escape these characters on the command line. See the shell +manual page L for details. + =head1 SEE ALSO L,