summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2010-11-22 12:37:55 +0000
committerRichard W.M. Jones <rjones@redhat.com>2010-11-23 09:48:05 +0000
commitf6d3d5677194ae7aaea70d43845341d91907b5ee (patch)
tree2e50bbad7ec4407127e2a9f869917da36421a3e5 /tools
parentf33d899fd0900b0cfe6dbbb152ce2fcf479bd38c (diff)
downloadlibguestfs-f6d3d5677194ae7aaea70d43845341d91907b5ee.tar.gz
libguestfs-f6d3d5677194ae7aaea70d43845341d91907b5ee.tar.xz
libguestfs-f6d3d5677194ae7aaea70d43845341d91907b5ee.zip
ls: Rewrite virt-ls in C.
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile.am2
-rwxr-xr-xtools/test-virt-ls.sh20
-rwxr-xr-xtools/virt-ls263
3 files changed, 0 insertions, 285 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 651daf9b..c5131bd8 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -22,7 +22,6 @@ tools = \
edit \
list-filesystems \
list-partitions \
- ls \
make-fs \
rescue \
resize \
@@ -76,7 +75,6 @@ TESTS_ENVIRONMENT = \
TESTS = test-virt-df.sh \
test-virt-list-filesystems.sh \
- test-virt-ls.sh \
test-virt-make-fs.sh \
test-virt-resize.sh \
test-virt-tar.sh
diff --git a/tools/test-virt-ls.sh b/tools/test-virt-ls.sh
deleted file mode 100755
index a0c9fc53..00000000
--- a/tools/test-virt-ls.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -
-
-export LANG=C
-set -e
-
-# Just a random UUID.
-uuid=868b1447-0ec5-41bf-a2e5-6a77a4c9b66f
-
-# Read out the test directory using virt-ls.
-if [ "$(./virt-ls ../images/fedora.img /bin)" != "ls
-test1
-test2
-test3
-test4
-test5
-test6
-test7" ]; then
- echo "$0: error: unexpected output from virt-ls"
- exit 1
-fi
diff --git a/tools/virt-ls b/tools/virt-ls
deleted file mode 100755
index 03733f7b..00000000
--- a/tools/virt-ls
+++ /dev/null
@@ -1,263 +0,0 @@
-#!/usr/bin/perl -w
-# virt-ls
-# Copyright (C) 2009-2010 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-use warnings;
-use strict;
-
-use Sys::Guestfs;
-use Sys::Guestfs::Lib qw(open_guest);
-use Pod::Usage;
-use Getopt::Long;
-use File::Temp qw/tempdir/;
-use File::Basename;
-use Locale::TextDomain 'libguestfs';
-
-=encoding utf8
-
-=head1 NAME
-
-virt-ls - List files in a virtual machine
-
-=head1 SYNOPSIS
-
- virt-ls [--options] domname directory
-
- virt-ls [--options] disk.img [disk.img ...] directory
-
-=head1 DESCRIPTION
-
-C<virt-ls> is a command line tool to list the names of files in a
-directory inside a virtual machine or disk image.
-
-C<virt-ls> is just a simple wrapper around L<libguestfs(3)>
-functionality. For more complex cases you should look at the
-L<guestfish(1)> tool.
-
-C<virt-ls> can be used in one of three modes: simple, long and
-recursive. A simple listing is like the ordinary L<ls(1)> command:
-
- $ virt-ls myguest /
- bin
- boot
- [etc.]
-
-With the C<-l> (C<--long>) option, C<virt-ls> shows more detail:
-
- $ virt-ls -l myguest /
- total 204
- dr-xr-xr-x. 2 root root 4096 2009-08-25 19:06 bin
- dr-xr-xr-x. 5 root root 3072 2009-08-25 19:06 boot
- [etc.]
-
-With the C<-R> (C<--recursive>) option, C<virt-ls> lists the
-names of files and directories recursively:
-
- $ virt-ls -R myguest /tmp
- foo
- foo/bar
- [etc.]
-
-You I<cannot> combine these options. To do more complicated things,
-use L<guestfish(1)>.
-
-=head1 OPTIONS
-
-=over 4
-
-=cut
-
-my $help;
-
-=item B<--help>
-
-Display brief help.
-
-=cut
-
-my $version;
-
-=item B<--version>
-
-Display version number and exit.
-
-=cut
-
-my $uri;
-
-=item B<--connect URI> | B<-c URI>
-
-If using libvirt, connect to the given I<URI>. If omitted, then we
-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.
-
-=cut
-
-my $mode;
-
-=item B<-l> | B<--long>
-
-=item B<-R> | B<--recursive>
-
-Select the mode. With neither of these options, C<virt-ls>
-produces a simple, flat list of the files in the named directory.
-
-C<virt-ls -l> produces a "long listing", which shows more detail (just
-like the plain C<ls -l> command).
-
-C<virt-ls -R> produces a recursive list of files starting at the named
-directory. See the documentation for L<guestfs(3)/guestfs_find>
-for precise details.
-
-You cannot combine these options.
-
-=back
-
-=cut
-
-sub set_mode_l
-{
- die __"virt-ls: cannot combine -l and -R options\n" if $mode;
- $mode = "l";
-}
-
-sub set_mode_R
-{
- die __"virt-ls: cannot combine -l and -R options\n" if $mode;
- $mode = "R";
-}
-
-GetOptions ("help|?" => \$help,
- "version" => \$version,
- "connect|c=s" => \$uri,
- "format=s" => \$format,
- "long|l" => \&set_mode_l,
- "recursive|R" => \&set_mode_R,
- ) or pod2usage (2);
-pod2usage (1) if $help;
-if ($version) {
- my $g = Sys::Guestfs->new ();
- my %h = $g->version ();
- print "$h{major}.$h{minor}.$h{release}$h{extra}\n";
- exit
-}
-
-pod2usage (__"virt-ls: no image, VM names or directory to list given")
- if @ARGV <= 1;
-
-my $directory = pop @ARGV;
-
-my $g;
-if ($uri) {
- $g = open_guest (\@ARGV, address => $uri, format => $format);
-} else {
- $g = open_guest (\@ARGV, format => $format);
-}
-
-$g->launch ();
-
-my @roots = $g->inspect_os ();
-if (@roots == 0) {
- die __x("{prog}: No operating system could be detected inside this disk image.\n\nThis may be because the file is not a disk image, or is not a virtual machine\nimage, or because the OS type is not understood by libguestfs.\n\nIf you feel this is an error, please file a bug report including as much\ninformation about the disk image as possible.\n",
- prog => basename ($0));
-}
-if (@roots > 1) {
- die __x("{prog}: multiboot operating systems are not supported.\n",
- prog => basename ($0))
-}
-my %fses = $g->inspect_get_mountpoints ($roots[0]);
-my @fses = sort { length $a <=> length $b } keys %fses;
-foreach (@fses) {
- $g->mount_ro ($fses{$_}, $_);
-}
-
-unless ($mode) {
- my @r = $g->ls ($directory);
- print "$_\n" foreach @r;
-} elsif ($mode eq "l") {
- print ($g->ll ($directory));
-} else { # $mode eq "R"
- my $dir = tempdir (CLEANUP => 1);
- $g->find0 ($directory, "$dir/find0");
- open F, "$dir/find0" or die "$dir/find0: $!\n";
- my $r;
- my $line;
- while (($r = read (F, $line, 1024)) > 0) {
- $line =~ tr{\0}{\n};
- print $line;
- }
- close F;
-}
-
-=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<sh(1)> for details.
-
-=head1 SEE ALSO
-
-L<guestfs(3)>,
-L<guestfish(1)>,
-L<virt-cat(1)>,
-L<virt-tar(1)>,
-L<Sys::Guestfs(3)>,
-L<Sys::Guestfs::Lib(3)>,
-L<Sys::Virt(3)>,
-L<http://libguestfs.org/>.
-
-=head1 AUTHOR
-
-Richard W.M. Jones L<http://people.redhat.com/~rjones/>
-
-=head1 COPYRIGHT
-
-Copyright (C) 2009 Red Hat Inc.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.