Convert all TABs-as-indentation to spaces.
authorJim Meyering <meyering@redhat.com>
Mon, 3 Aug 2009 15:10:13 +0000 (11:10 -0400)
committerJim Meyering <meyering@redhat.com>
Mon, 3 Aug 2009 15:17:57 +0000 (17:17 +0200)
Do it by running this command:
[exempted files are matched via .x-sc_TAB_in_indentation]

  git ls-files \
    | pcregrep -vf .x-sc_TAB_in_indentation \
    | xargs pcregrep -l '^ *\t' \
    | xargs perl -MText::Tabs -ni -le \
      '$m=/^( *\t[ \t]*)(.*)/; print $m ? expand($1) . $2 : $_'

50 files changed:
HACKING
appliance/libguestfs-supermin-helper.in
appliance/supermin-split.sh.in
bootstrap
cat/virt-cat.pl
configure.ac
contrib/README
daemon/configure.ac
daemon/daemon.h
daemon/debug.c
daemon/devsparts.c
daemon/dir.c
daemon/ext2.c
daemon/file.c
daemon/guestfsd.c
daemon/inotify.c
daemon/link.c
daemon/lvm.c
daemon/mount.c
daemon/proto.c
daemon/readdir.c
daemon/sfdisk.c
daemon/xattr.c
df/virt-df.pl
examples/to-xml.c
fish/destpaths.c
fish/fish.c
fish/fish.h
fish/glob.c
fish/rc.c
fish/tilde.c
fish/time.c
inspector/virt-inspector.pl
java/com/redhat/et/libguestfs/LibGuestFSException.java
java/t/GuestFS005Load.java
java/t/GuestFS010Launch.java
java/t/GuestFS050LVCreate.java
m4/ocaml.m4
make-recipes.sh
ocaml/t/guestfs_060_readdir.ml
perl/lib/Sys/Guestfs/Lib.pm
perl/t/500-lib-load.t
perl/t/510-lib-file-arch.t
perl/typemap
recipes/squashfs.example
src/generator.ml
src/gettext.h
src/guestfs.c
test-tool/test-tool.c
v2v/virt-v2v.pl

diff --git a/HACKING b/HACKING
index 336fc7c..c6a3022 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -28,74 +28,74 @@ Directories
 ----------------------------------------------------------------------
 
 appliance/
-       The qemu appliance, build scripts and so on.
+        The qemu appliance, build scripts and so on.
 
 cat/
-       The virt-cat tool.
+        The virt-cat tool.
 
 capitests/
-       Automated tests of the C API.
+        Automated tests of the C API.
 
 contrib/
-       Outside contributions, experimental parts.
+        Outside contributions, experimental parts.
 
 daemon/
-       The daemon that runs inside the guest and carries out actions.
+        The daemon that runs inside the guest and carries out actions.
 
 df/
-       The virt-df tool.
+        The virt-df tool.
 
 examples/
-       The examples.
+        The examples.
 
 fish/
-       Guestfish (the command-line program / shell)
+        Guestfish (the command-line program / shell)
 
 haskell/
-       Haskell bindings.
+        Haskell bindings.
 
 images/
-       Some guest images to test against.  These are gzipped to save
-       space.  You have to unzip them before use.
+        Some guest images to test against.  These are gzipped to save
+        space.  You have to unzip them before use.
 
-       Also contains some files used by the test suite.
+        Also contains some files used by the test suite.
 
 inspector/
-       Virtual machine image inspector (virt-inspector).
+        Virtual machine image inspector (virt-inspector).
 
 java/
-       Java bindings.
+        Java bindings.
 
 m4/
-       M4 macros used by autoconf.
+        M4 macros used by autoconf.
 
 ocaml/
-       OCaml bindings.
+        OCaml bindings.
 
 po/
-       Translations.
+        Translations.
 
 perl/
-       Perl bindings.
+        Perl bindings.
 
 python/
-       Python bindings.
+        Python bindings.
 
 regressions/
-       Regression tests.
+        Regression tests.
 
 ruby/
-       Ruby bindings.
+        Ruby bindings.
 
 src/
-       Source code to the C library.
-       Also contains the crucial generator program.
+        Source code to the C library.
+        Also contains the crucial generator program.
 
 test-tool/
-       Interactive qemu/kernel test tool.
+        Interactive qemu/kernel test tool.
 
 v2v/
-       Xen to KVM (V2V) conversion tool.
+        Xen to KVM (V2V) conversion tool.
 
 Debugging
 ----------------------------------------------------------------------
index e521020..a096ea4 100755 (executable)
@@ -44,8 +44,8 @@ for f in $kernels; do
     b=$(echo "$b" | sed 's,vmlinuz-,,')
     modpath="/lib/modules/$b"
     if [ -d "$modpath" ]; then
-       ln -sf "$f" "$kernel"
-       break
+        ln -sf "$f" "$kernel"
+        break
     fi
     modpath=
 done
index fe4ab6e..61df891 100755 (executable)
@@ -54,40 +54,40 @@ for path in $(find -not -name fakeroot.log); do
     # All we're going to keep are the special files /init, the daemon,
     # configuration files (/etc), devices and modifiable stuff (/var).
     if [ "$path" = "./init" -o "$file" = "guestfsd" ]; then
-       echo "$path" >&5
+        echo "$path" >&5
 
     elif [[ "$path" =~ '^\./etc' || "$path" =~ '^./dev' || "$path" =~ '^\./var' ]]; then
-       echo "$path" >&5
+        echo "$path" >&5
 
     # Kernel modules are always copied in from the host, including all
     # the dependency files.
     elif [[ "$path" =~ '^\./lib/modules/' ]]; then
-       :
+        :
 
     elif [ -d "$path" ]; then
-       # Always write directory names to both output files.
-       echo "$path" >&5
-       echo "$path" >&6
+        # Always write directory names to both output files.
+        echo "$path" >&5
+        echo "$path" >&6
 
     # Some libraries need fixed version numbers replaced by wildcards.
 
     elif [[ "$file" =~ '^ld-[.0-9]+\.so$' ]]; then
-       echo "$dir/ld-*.so" >&6
+        echo "$dir/ld-*.so" >&6
 
     # libfoo-1.2.3.so
     elif [[ "$file" =~ '^lib(.*)-[-.0-9]+\.so$' ]]; then
-       echo "$dir/lib${BASH_REMATCH[1]}-*.so" >&6
+        echo "$dir/lib${BASH_REMATCH[1]}-*.so" >&6
 
     # libfoo-1.2.3.so.1.2.3 (but NOT '*.so.N')
     elif [[ "$file" =~ '^lib(.*)-[-.0-9]+\.so\.([0-9]+)\.' ]]; then
-       echo "$dir/lib${BASH_REMATCH[1]}-*.so.${BASH_REMATCH[2]}.*" >&6
+        echo "$dir/lib${BASH_REMATCH[1]}-*.so.${BASH_REMATCH[2]}.*" >&6
 
     # libfoo.so.1.2.3 (but NOT '*.so.N')
     elif [[ "$file" =~ '^lib(.*)\.so\.([0-9]+)\.' ]]; then
-       echo "$dir/lib${BASH_REMATCH[1]}.so.${BASH_REMATCH[2]}.*" >&6
+        echo "$dir/lib${BASH_REMATCH[1]}.so.${BASH_REMATCH[2]}.*" >&6
 
     else
-       # Anything else comes from the host directly.
-       echo "$path" >&6
+        # Anything else comes from the host directly.
+        echo "$path" >&6
     fi
 done
index 73a5e04..e4ddf85 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -46,7 +46,7 @@ case ${GNULIB_SRCDIR--} in
   # Redirect the gnulib submodule to the directory on the command line
   # if possible.
   if test -d "$GNULIB_SRCDIR"/.git && \
-       git config --file .gitmodules submodule.gnulib.url >/dev/null; then
+        git config --file .gitmodules submodule.gnulib.url >/dev/null; then
     git submodule init
     GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
     git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
index 1ac720c..1017876 100755 (executable)
@@ -116,8 +116,8 @@ at all.
 =cut
 
 GetOptions ("help|?" => \$help,
-           "version" => \$version,
-           "connect|c=s" => \$uri,
+            "version" => \$version,
+            "connect|c=s" => \$uri,
     ) or pod2usage (2);
 pod2usage (1) if $help;
 if ($version) {
index df466fa..28514b6 100644 (file)
@@ -62,8 +62,8 @@ dnl Check for rpcgen and XDR library.  rpcgen is optional.
 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
-       AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
-       ])
+        AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
+        ])
 
 dnl Check for pod2man and pod2text.
 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
@@ -75,19 +75,19 @@ test "x$POD2TEXT" = "xno" &&
 
 dnl Check for mksquashfs.
 AC_PATH_PROGS([MKSQUASHFS],[mksquashfs],[no],
-       [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
+        [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
 test "x$MKSQUASHFS" = "xno" && AC_MSG_ERROR([mksquashfs must be installed])
 
 dnl Check for QEMU for running binaries on this $host_cpu, fall
 dnl back to basic 'qemu'.  Allow the user to override it.
 default_qemu="qemu-kvm qemu-system-$host_cpu qemu"
 AC_ARG_WITH([qemu],
-       [AS_HELP_STRING([--with-qemu],
-         [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
-       [],
-       [with_qemu="$default_qemu"])
+        [AS_HELP_STRING([--with-qemu],
+          [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
+        [],
+        [with_qemu="$default_qemu"])
 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
-       [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
+        [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
 
@@ -100,13 +100,13 @@ if test "x$vmchannel_test" != "xno"; then
     else
         AC_MSG_RESULT([no])
         AC_MSG_CHECKING([for "-net channel" support in $QEMU])
-       vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:`
-       echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD
-       if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then
-           AC_MSG_RESULT([yes])
-       else
-           AC_MSG_RESULT([no])
-           AC_MSG_FAILURE(
+        vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:`
+        echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD
+        if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then
+            AC_MSG_RESULT([yes])
+        else
+            AC_MSG_RESULT([no])
+            AC_MSG_FAILURE(
 [I did not find vmchannel support in $QEMU.
 
 vmchannel support is vital for libguestfs to operate.  You need a version
@@ -122,7 +122,7 @@ If I am using the wrong qemu or you want to compile qemu from source
 and install it in another location, then you should configure with
 the --with-qemu option.
 ])
-       fi
+        fi
     fi
 fi
 
@@ -132,37 +132,37 @@ dnl
 dnl NB. We will change the default in future to virtio, but at the
 dnl moment this causes a performance problem, RHBZ#509383.
 AC_ARG_WITH([drive-if],
-       [AS_HELP_STRING([--with-drive-if],
-         [set default driver (ide|scsi|virtio) @<:@default=ide@:>@])],
-       [],
-       [with_drive_if=ide])
+        [AS_HELP_STRING([--with-drive-if],
+          [set default driver (ide|scsi|virtio) @<:@default=ide@:>@])],
+        [],
+        [with_drive_if=ide])
 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
 
 dnl Check for febootstrap etc.
 AC_CHECK_PROG([FEBOOTSTRAP],
-       [febootstrap],[febootstrap],[no])
+        [febootstrap],[febootstrap],[no])
 if test "x$FEBOOTSTRAP" != "xno"; then
   AC_CHECK_PROG([FEBOOTSTRAP_RUN],
-       [febootstrap-run],[febootstrap-run],[no])
+        [febootstrap-run],[febootstrap-run],[no])
   test "x$FEBOOTSTRAP_RUN" = "xno" && \
      AC_MSG_ERROR([febootstrap-run must be installed])
   AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
-       [febootstrap-install],[febootstrap-install],[no])
+        [febootstrap-install],[febootstrap-install],[no])
   test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
      AC_MSG_ERROR([febootstrap-install must be installed])
   AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
-       [febootstrap-minimize],[febootstrap-minimize],[no])
+        [febootstrap-minimize],[febootstrap-minimize],[no])
   test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
      AC_MSG_ERROR([febootstrap-minimize must be installed])
   AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
-       [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
+        [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
   test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
      AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
 
   dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
   dnl of febootstrap, but old versions will fail with yum).
   AC_CHECK_PROG([FAKECHROOT],
-       [fakechroot],[fakechroot],[no])
+        [fakechroot],[fakechroot],[no])
   test "x$FAKECHROOT" = "xno" && \
     AC_MSG_ERROR([fakechroot must be installed])
 
@@ -184,9 +184,9 @@ if test "x$FEBOOTSTRAP" != "xno"; then
 else
   # check for debootstrap and debirf
   AC_CHECK_PROG([DEBOOTSTRAP],
-       [debootstrap],[debootstrap],[no])
+        [debootstrap],[debootstrap],[no])
   test "x$DEBOOTSTRAP" = "xno" && \
-       AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
+        AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
   AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
   test "x$DEBIRF" = "xno" &&
         AC_MSG_ERROR([debirf must be installed])
@@ -209,20 +209,20 @@ AC_SUBST(DIST)
 
 dnl --with-repo to specify a Fedora repository.
 AC_ARG_WITH([repo],
-       [AS_HELP_STRING([--with-repo],
-         [set name of Fedora repository @<:@default=fedora-11@:>@])],
-       [],
-       [with_repo=fedora-11])
+        [AS_HELP_STRING([--with-repo],
+          [set name of Fedora repository @<:@default=fedora-11@:>@])],
+        [],
+        [with_repo=fedora-11])
 REPO="$with_repo"
 AC_SUBST(REPO)
 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
 
 dnl --with-updates to specify a Fedora updates repository.
 AC_ARG_WITH([updates],
-       [AS_HELP_STRING([--with-updates],
-         [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
-       [],
-       [with_updates=updates-released-f11])
+        [AS_HELP_STRING([--with-updates],
+          [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
+        [],
+        [with_updates=updates-released-f11])
 UPDATES="$with_updates"
 AC_SUBST(UPDATES)
 
@@ -231,20 +231,20 @@ AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
 
 dnl --with-mirror to specify a local Fedora mirror.
 AC_ARG_WITH([mirror],
-       [AS_HELP_STRING([--with-mirror],
-         [set URI of a local Fedora mirror])],
-       [],
-       [with_mirror=])
+        [AS_HELP_STRING([--with-mirror],
+          [set URI of a local Fedora mirror])],
+        [],
+        [with_mirror=])
 MIRROR="$with_mirror"
 AC_SUBST(MIRROR)
 
 dnl Build the supermin appliance?  Please see README file before
 dnl enabling this option.
 AC_ARG_ENABLE([supermin],
-       [AS_HELP_STRING([--enable-supermin],
-         [enable supermin appliance (see README) @<:@default=no@:>@])],
-       [],
-       [enable_supermin=no])
+        [AS_HELP_STRING([--enable-supermin],
+          [enable supermin appliance (see README) @<:@default=no@:>@])],
+        [],
+        [enable_supermin=no])
 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
 
 if test "x$enable_supermin" = "xyes"; then
@@ -255,7 +255,7 @@ if test "x$enable_supermin" = "xyes"; then
     echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
     if ! echo "$out" | grep -sq -e --files ; then
         AC_MSG_RESULT([no])
-       AC_MSG_FAILURE(
+        AC_MSG_FAILURE(
 [febootstrap-to-initramfs does not support the --files option.
 
 To build the supermin appliance, you need to upgrade to the latest
@@ -271,7 +271,7 @@ version of febootstrap.
     echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
     if ! echo "$out" | grep -sq -e --nocompress ; then
         AC_MSG_RESULT([no])
-       AC_MSG_FAILURE(
+        AC_MSG_FAILURE(
 [febootstrap-to-initramfs does not support the --nocompress option.
 
 To build the supermin appliance, you need to upgrade to the latest
@@ -351,11 +351,11 @@ if test "x$PYTHON" != "xno"; then
     do
         AC_MSG_CHECKING([Python.h in $d])
         if test -r "$d/Python.h"; then
-           AC_MSG_RESULT([found])
-           PYTHON_INCLUDEDIR=$d
-           break
-       fi
-       AC_MSG_RESULT([not found])
+            AC_MSG_RESULT([found])
+            PYTHON_INCLUDEDIR=$d
+            break
+        fi
+        AC_MSG_RESULT([not found])
     done
     for d in \
         $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
@@ -366,11 +366,11 @@ if test "x$PYTHON" != "xno"; then
     do
         AC_MSG_CHECKING([for $d])
         if test -d "$d"; then
-           AC_MSG_RESULT([found])
-           PYTHON_SITE_PACKAGES=$d
-           break
-       fi
-       AC_MSG_RESULT([not found])
+            AC_MSG_RESULT([found])
+            PYTHON_SITE_PACKAGES=$d
+            break
+        fi
+        AC_MSG_RESULT([not found])
     done
 fi
 
@@ -399,46 +399,46 @@ AC_ARG_WITH(java_home,
 if test "x$with_java_home" != "xno"; then
     if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
     then
-       # Reject unsafe characters in $JAVA_HOME
-       jh_lf='
+        # Reject unsafe characters in $JAVA_HOME
+        jh_lf='
 '
-       case $JAVA_HOME in
-         *[\\\"\#\$\&\'\`$jh_lf\ \     ]*)
+        case $JAVA_HOME in
+          *[\\\"\#\$\&\'\`$jh_lf\ \    ]*)
             AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
-       esac
+        esac
         if test -d "$with_java_home"; then
-           JAVA_HOME="$with_java_home"
-       else
+            JAVA_HOME="$with_java_home"
+        else
             AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
-       fi
+        fi
     fi
 
     if test "x$JAVA_HOME" = "x"; then
         # Look for Java in some likely locations.
-       for d in \
-           /usr/lib/jvm/java \
-           /usr/lib/jvm/java-6-openjdk
-       do
-           if test -d $d -a -f $d/bin/java; then
+        for d in \
+            /usr/lib/jvm/java \
+            /usr/lib/jvm/java-6-openjdk
+        do
+            if test -d $d -a -f $d/bin/java; then
                 JAVA_HOME=$d
-               break
-           fi
-       done
+                break
+            fi
+        done
     fi
 
     if test "x$JAVA_HOME" != "x"; then
         AC_MSG_CHECKING(for JDK in $JAVA_HOME)
-       if test ! -x "$JAVA_HOME/bin/java"; then
+        if test ! -x "$JAVA_HOME/bin/java"; then
             AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
-       else
-           JAVA="$JAVA_HOME/bin/java"
-       fi
-       if test ! -x "$JAVA_HOME/bin/javac"; then
+        else
+            JAVA="$JAVA_HOME/bin/java"
+        fi
+        if test ! -x "$JAVA_HOME/bin/javac"; then
             AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
-       else
-           JAVAC="$JAVA_HOME/bin/javac"
+        else
+            JAVAC="$JAVA_HOME/bin/javac"
         fi
-       if test ! -x "$JAVA_HOME/bin/javah"; then
+        if test ! -x "$JAVA_HOME/bin/javah"; then
             AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
         else
             JAVAH="$JAVA_HOME/bin/javah"
@@ -463,10 +463,10 @@ if test "x$with_java_home" != "xno"; then
         else
             if test "`find $JAVA_HOME -name jni.h`" != ""; then
                 head=`find $JAVA_HOME -name jni.h | tail -1`
-               dir=`dirname "$head"`
-               JNI_CFLAGS="-I$dir"
+                dir=`dirname "$head"`
+                JNI_CFLAGS="-I$dir"
             else
-               AC_MSG_FAILURE([missing jni.h header file])
+                AC_MSG_FAILURE([missing jni.h header file])
             fi
         fi
         AC_MSG_RESULT([$JNI_CFLAGS])
@@ -570,37 +570,37 @@ dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
 AC_CONFIG_FILES([appliance/make.sh],
-               [chmod +x appliance/make.sh])
+                [chmod +x appliance/make.sh])
 AC_CONFIG_FILES([appliance/update.sh],
-               [chmod +x appliance/update.sh])
+                [chmod +x appliance/update.sh])
 AC_CONFIG_FILES([appliance/supermin-split.sh],
-               [chmod +x appliance/supermin-split.sh])
+                [chmod +x appliance/supermin-split.sh])
 AC_CONFIG_FILES([appliance/supermin-make.sh],
-               [chmod +x appliance/supermin-make.sh])
+                [chmod +x appliance/supermin-make.sh])
 AC_CONFIG_FILES([appliance/libguestfs-supermin-helper],
-               [chmod +x appliance/libguestfs-supermin-helper])
+                [chmod +x appliance/libguestfs-supermin-helper])
 AC_CONFIG_FILES([Makefile
-                src/Makefile fish/Makefile po/Makefile.in examples/Makefile
-                appliance/Makefile
-                appliance/debian/debirf.conf
-                images/Makefile
-                capitests/Makefile
-                regressions/Makefile
-                test-tool/Makefile
-                ocaml/Makefile ocaml/examples/Makefile
-                perl/Makefile
-                python/Makefile
-                ruby/Makefile ruby/Rakefile
-                java/Makefile
-                haskell/Makefile
-                cat/Makefile
-                df/Makefile
-                inspector/Makefile
-                v2v/Makefile
-                libguestfs.pc
-                gnulib/lib/Makefile
-                gnulib/tests/Makefile
-                ocaml/META perl/Makefile.PL])
+                 src/Makefile fish/Makefile po/Makefile.in examples/Makefile
+                 appliance/Makefile
+                 appliance/debian/debirf.conf
+                 images/Makefile
+                 capitests/Makefile
+                 regressions/Makefile
+                 test-tool/Makefile
+                 ocaml/Makefile ocaml/examples/Makefile
+                 perl/Makefile
+                 python/Makefile
+                 ruby/Makefile ruby/Rakefile
+                 java/Makefile
+                 haskell/Makefile
+                 cat/Makefile
+                 df/Makefile
+                 inspector/Makefile
+                 v2v/Makefile
+                 libguestfs.pc
+                 gnulib/lib/Makefile
+                 gnulib/tests/Makefile
+                 ocaml/META perl/Makefile.PL])
 AC_OUTPUT
 
 dnl Produce summary.
index 0d9bf0b..4f7329f 100644 (file)
@@ -1,15 +1,15 @@
 centos5.3-libguestfs.spec
-       [REMOVED]
-       This used to be a centos5.3 specfile.  Please use the specfile
-       from EL-5 here:
-       http://cvs.fedoraproject.org/viewvc/rpms/libguestfs/EL-5/
+        [REMOVED]
+        This used to be a centos5.3 specfile.  Please use the specfile
+        from EL-5 here:
+        http://cvs.fedoraproject.org/viewvc/rpms/libguestfs/EL-5/
 
 febootstrap/
-       An experimental, non-working attempt to use febootstrap
-       to install operating systems.
+        An experimental, non-working attempt to use febootstrap
+        to install operating systems.
 
 fedora-libguestfs.spec
-       [REMOVED]
-       This used to be a Fedora 10+ specfile.  Please use the specfile
-       from Fedora instead:
-       http://cvs.fedoraproject.org/viewvc/rpms/libguestfs/devel/
+        [REMOVED]
+        This used to be a Fedora 10+ specfile.  Please use the specfile
+        from Fedora instead:
+        http://cvs.fedoraproject.org/viewvc/rpms/libguestfs/devel/
index 243f353..3bfd2ed 100644 (file)
@@ -48,19 +48,19 @@ AM_PROG_CC_C_O
 
 dnl Check for Augeas (now optional).
 AC_CHECK_LIB([augeas],[aug_match],[
-       LIBS="-laugeas $LIBS"
-       have_augeas=yes
-       dnl Check for functions not available in earlier versions of Augeas.
-       AC_CHECK_FUNCS([aug_load aug_defvar aug_defnode])
-       ],[have_augeas=no])
+        LIBS="-laugeas $LIBS"
+        have_augeas=yes
+        dnl Check for functions not available in earlier versions of Augeas.
+        AC_CHECK_FUNCS([aug_load aug_defvar aug_defnode])
+        ],[have_augeas=no])
 if test "x$have_augeas" = "xyes"; then
-       AC_DEFINE([HAVE_AUGEAS],[1],[Define to 1 if you have Augeas])
+        AC_DEFINE([HAVE_AUGEAS],[1],[Define to 1 if you have Augeas])
 fi
 
 dnl Check for XDR library.
 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
-       AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
-       ])
+        AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
+        ])
 
 dnl Functions which may not be available in older distributions.
 AC_CHECK_FUNCS([futimens listxattr llistxattr getxattr lgetxattr setxattr lsetxattr removexattr lremovexattr])
@@ -68,14 +68,14 @@ AC_CHECK_FUNCS([futimens listxattr llistxattr getxattr lgetxattr setxattr lsetxa
 dnl For modified printf, we need glibc either (old-style)
 dnl register_printf_function or (new-style) register_printf_specifier.
 AC_CHECK_FUNC([register_printf_specifier],[
-       AC_DEFINE([HAVE_REGISTER_PRINTF_SPECIFIER],[1],
-               [Define to 1 if you have new-style register_printf_specifier])
-       ],[
-       AC_CHECK_FUNC([register_printf_function],[
-               AC_DEFINE([HAVE_REGISTER_PRINTF_FUNCTION],[1],
-                       [Define to 1 if you have old-style register_printf_function])
-               ],[
-               AC_MSG_FAILURE(
+        AC_DEFINE([HAVE_REGISTER_PRINTF_SPECIFIER],[1],
+                [Define to 1 if you have new-style register_printf_specifier])
+        ],[
+        AC_CHECK_FUNC([register_printf_function],[
+                AC_DEFINE([HAVE_REGISTER_PRINTF_FUNCTION],[1],
+                        [Define to 1 if you have old-style register_printf_function])
+                ],[
+                AC_MSG_FAILURE(
 [No support for glibc-style extended printf formatters.
 
 This means you either have a very old glibc (pre-2.0) or you
index 9aa831a..70a2351 100644 (file)
@@ -48,9 +48,9 @@ extern void free_stringslen (char **argv, int len);
 extern int command (char **stdoutput, char **stderror, const char *name, ...);
 extern int commandr (char **stdoutput, char **stderror, const char *name, ...);
 extern int commandv (char **stdoutput, char **stderror,
-                    char * const* const argv);
+                     char * const* const argv);
 extern int commandrv (char **stdoutput, char **stderror,
-                     char * const* const argv);
+                      char * const* const argv);
 
 extern char **split_lines (char *str);
 
index 68320a3..13b7240 100644 (file)
@@ -157,11 +157,11 @@ debug_fds (const char *subcmd, int argc, char *const *const argv)
     if (S_ISLNK (statbuf.st_mode)) {
       r = readlink (fname, link, sizeof link - 1);
       if (r == -1) {
-       reply_with_perror ("readline: %s", fname);
-       fclose (fp);
-       free (out);
-       closedir (dir);
-       return NULL;
+        reply_with_perror ("readline: %s", fname);
+        fclose (fp);
+        free (out);
+        closedir (dir);
+        return NULL;
       }
       link[r] = '\0';
 
index 33579ba..1970e7d 100644 (file)
@@ -46,8 +46,8 @@ do_list_devices (void)
 
   while ((d = readdir (dir)) != NULL) {
     if (strncmp (d->d_name, "sd", 2) == 0 ||
-       strncmp (d->d_name, "hd", 2) == 0 ||
-       strncmp (d->d_name, "vd", 2) == 0) {
+        strncmp (d->d_name, "hd", 2) == 0 ||
+        strncmp (d->d_name, "vd", 2) == 0) {
       snprintf (buf, sizeof buf, "/dev/%s", d->d_name);
 
       /* RHBZ#514505: Some versions of qemu <= 0.10 add a
@@ -56,14 +56,14 @@ do_list_devices (void)
        */
       int fd = open (buf, O_RDONLY);
       if (fd == -1) {
-       perror (buf);
-       continue;
+        perror (buf);
+        continue;
       }
       close (fd);
 
       if (add_string (&r, &size, &alloc, buf) == -1) {
-       closedir (dir);
-       return NULL;
+        closedir (dir);
+        return NULL;
       }
     }
   }
@@ -100,8 +100,8 @@ do_list_partitions (void)
 
   while ((d = readdir (dir)) != NULL) {
     if (strncmp (d->d_name, "sd", 2) == 0 ||
-       strncmp (d->d_name, "hd", 2) == 0 ||
-       strncmp (d->d_name, "vd", 2) == 0) {
+        strncmp (d->d_name, "hd", 2) == 0 ||
+        strncmp (d->d_name, "vd", 2) == 0) {
       snprintf (buf, sizeof buf, "/dev/%s", d->d_name);
 
       /* RHBZ#514505: Some versions of qemu <= 0.10 add a
@@ -110,8 +110,8 @@ do_list_partitions (void)
        */
       int fd = open (buf, O_RDONLY);
       if (fd == -1) {
-       perror (buf);
-       continue;
+        perror (buf);
+        continue;
       }
       close (fd);
 
@@ -122,26 +122,26 @@ do_list_partitions (void)
 
       dir2 = opendir (buf);
       if (!dir2) {
-       reply_with_perror ("opendir: %s", buf);
-       free_stringslen (r, size);
-       return NULL;
+        reply_with_perror ("opendir: %s", buf);
+        free_stringslen (r, size);
+        return NULL;
       }
       while ((d = readdir (dir2)) != NULL) {
-       if (strncmp (d->d_name, devname, strlen (devname)) == 0) {
-         snprintf (buf, sizeof buf, "/dev/%s", d->d_name);
-
-         if (add_string (&r, &size, &alloc, buf) == -1) {
-           closedir (dir2);
-           closedir (dir);
-           return NULL;
-         }
-       }
+        if (strncmp (d->d_name, devname, strlen (devname)) == 0) {
+          snprintf (buf, sizeof buf, "/dev/%s", d->d_name);
+
+          if (add_string (&r, &size, &alloc, buf) == -1) {
+            closedir (dir2);
+            closedir (dir);
+            return NULL;
+          }
+        }
       }
 
       if (closedir (dir2) == -1) {
-       reply_with_perror ("closedir: /sys/block/%s", devname);
-       free_stringslen (r, size);
-       return NULL;
+        reply_with_perror ("closedir: /sys/block/%s", devname);
+        free_stringslen (r, size);
+        return NULL;
       }
     }
   }
index a8f066f..5945862 100644 (file)
@@ -123,8 +123,8 @@ recursive_mkdir (const char *path)
       r = lstat (path, &buf);
       if (r == -1) return -1;
       if (!S_ISDIR (buf.st_mode)) {
-       errno = ENOTDIR;
-       return -1;
+        errno = ENOTDIR;
+        return -1;
       }
       return 0;                        /* OK - directory exists here already. */
     }
index 5a1d0fd..0f7a66c 100644 (file)
@@ -77,31 +77,31 @@ do_tune2fs_l (char *device)
       do { colon++; } while (*colon && isspace (*colon));
 
       if (add_string (&ret, &size, &alloc, p) == -1) {
-       free (out);
-       return NULL;
+        free (out);
+        return NULL;
       }
       if (strcmp (colon, "<none>") == 0 ||
-         strcmp (colon, "<not available>") == 0 ||
-         strcmp (colon, "(none)") == 0) {
-       if (add_string (&ret, &size, &alloc, "") == -1) {
-         free (out);
-         return NULL;
-       }
+          strcmp (colon, "<not available>") == 0 ||
+          strcmp (colon, "(none)") == 0) {
+        if (add_string (&ret, &size, &alloc, "") == -1) {
+          free (out);
+          return NULL;
+        }
       } else {
-       if (add_string (&ret, &size, &alloc, colon) == -1) {
-         free (out);
-         return NULL;
-       }
+        if (add_string (&ret, &size, &alloc, colon) == -1) {
+          free (out);
+          return NULL;
+        }
       }
     }
     else {
       if (add_string (&ret, &size, &alloc, p) == -1) {
-       free (out);
-       return NULL;
+        free (out);
+        return NULL;
       }
       if (add_string (&ret, &size, &alloc, "") == -1) {
-       free (out);
-       return NULL;
+        free (out);
+        return NULL;
       }
     }
 
index aab7e93..63d8dd2 100644 (file)
@@ -97,18 +97,18 @@ do_cat (char *path)
     if (size >= alloc) {
       alloc += 8192;
       if (alloc > max) {
-       reply_with_error ("cat: %s: file is too large for message buffer",
-                         path);
-       free (buf);
-       close (fd);
-       return NULL;
+        reply_with_error ("cat: %s: file is too large for message buffer",
+                          path);
+        free (buf);
+        close (fd);
+        return NULL;
       }
       buf2 = realloc (buf, alloc);
       if (buf2 == NULL) {
-       reply_with_perror ("realloc");
-       free (buf);
-       close (fd);
-       return NULL;
+        reply_with_perror ("realloc");
+        free (buf);
+        close (fd);
+        return NULL;
       }
       buf = buf2;
     }
index e8fb48f..07a1c5e 100644 (file)
@@ -159,11 +159,11 @@ main (int argc, char *argv[])
       p += 8;
       p2 = strchr (p, ':');
       if (p2) {
-       *p2++ = '\0';
-       host = p;
-       r = strcspn (p2, " \n");
-       p2[r] = '\0';
-       port = p2;
+        *p2++ = '\0';
+        host = p;
+        r = strcspn (p2, " \n");
+        p2[r] = '\0';
+        port = p2;
       }
     }
   }
@@ -209,7 +209,7 @@ main (int argc, char *argv[])
     sock = socket (rr->ai_family, rr->ai_socktype, rr->ai_protocol);
     if (sock != -1) {
       if (connect (sock, rr->ai_addr, rr->ai_addrlen) == 0)
-       break;
+        break;
       perror ("connect");
 
       close (sock);
@@ -578,40 +578,40 @@ commandrv (char **stdoutput, char **stderror, char * const* const argv)
     if (FD_ISSET (so_fd[0], &rset2)) { /* something on stdout */
       r = read (so_fd[0], buf, sizeof buf);
       if (r == -1) {
-       perror ("read");
-       goto quit;
+        perror ("read");
+        goto quit;
       }
       if (r == 0) { FD_CLR (so_fd[0], &rset); quit++; }
 
       if (r > 0 && stdoutput) {
-       so_size += r;
-       p = realloc (*stdoutput, so_size);
-       if (p == NULL) {
-         perror ("realloc");
-         goto quit;
-       }
-       *stdoutput = p;
-       memcpy (*stdoutput + so_size - r, buf, r);
+        so_size += r;
+        p = realloc (*stdoutput, so_size);
+        if (p == NULL) {
+          perror ("realloc");
+          goto quit;
+        }
+        *stdoutput = p;
+        memcpy (*stdoutput + so_size - r, buf, r);
       }
     }
 
     if (FD_ISSET (se_fd[0], &rset2)) { /* something on stderr */
       r = read (se_fd[0], buf, sizeof buf);
       if (r == -1) {
-       perror ("read");
-       goto quit;
+        perror ("read");
+        goto quit;
       }
       if (r == 0) { FD_CLR (se_fd[0], &rset); quit++; }
 
       if (r > 0 && stderror) {
-       se_size += r;
-       p = realloc (*stderror, se_size);
-       if (p == NULL) {
-         perror ("realloc");
-         goto quit;
-       }
-       *stderror = p;
-       memcpy (*stderror + se_size - r, buf, r);
+        se_size += r;
+        p = realloc (*stderror, se_size);
+        if (p == NULL) {
+          perror ("realloc");
+          goto quit;
+        }
+        *stderror = p;
+        memcpy (*stderror + se_size - r, buf, r);
       }
     }
   }
@@ -643,7 +643,7 @@ commandrv (char **stdoutput, char **stderror, char * const* const argv)
       (*stderror)[se_size] = '\0';
       se_size--;
       while (se_size >= 0 && (*stderror)[se_size] == '\n')
-       (*stderror)[se_size--] = '\0';
+        (*stderror)[se_size--] = '\0';
     }
   }
 
@@ -722,7 +722,7 @@ print_shell_quote (FILE *stream,
                    const void *const *args)
 {
 #define SAFE(c) (isalnum((c)) ||                                       \
-                (c) == '/' || (c) == '-' || (c) == '_' || (c) == '.')
+                 (c) == '/' || (c) == '-' || (c) == '_' || (c) == '.')
   int i, len;
   const char *str = *((const char **) (args[0]));
 
@@ -740,11 +740,11 @@ print_shell_quote (FILE *stream,
 
 static int
 print_sysroot_shell_quote (FILE *stream,
-                          const struct printf_info *info,
-                          const void *const *args)
+                           const struct printf_info *info,
+                           const void *const *args)
 {
 #define SAFE(c) (isalnum((c)) ||                                       \
-                (c) == '/' || (c) == '-' || (c) == '_' || (c) == '.')
+                 (c) == '/' || (c) == '-' || (c) == '_' || (c) == '.')
   fputs (sysroot, stream);
   return sysroot_len + print_shell_quote (stream, info, args);
 }
@@ -752,7 +752,7 @@ print_sysroot_shell_quote (FILE *stream,
 #ifdef HAVE_REGISTER_PRINTF_SPECIFIER
 static int
 print_arginfo (const struct printf_info *info,
-              size_t n, int *argtypes, int *size)
+               size_t n, int *argtypes, int *size)
 {
   if (n > 0) {
     argtypes[0] = PA_STRING;
index 43f282d..4bc6f17 100644 (file)
@@ -165,10 +165,10 @@ do_inotify_read (void)
     int n, r;
 
     r = read (inotify_fd, inotify_buf + inotify_posn,
-             sizeof (inotify_buf) - inotify_posn);
+              sizeof (inotify_buf) - inotify_posn);
     if (r == -1) {
       if (errno == EWOULDBLOCK || errno == EAGAIN) /* End of list. */
-       break;
+        break;
       reply_with_perror ("read");
       goto error;
     }
@@ -190,18 +190,18 @@ do_inotify_read (void)
       /* Have we got a complete event in the buffer? */
 #ifdef __GNUC__
       if (n + sizeof (struct inotify_event) > inotify_posn ||
-         n + sizeof (struct inotify_event) + event->len > inotify_posn)
-       break;
+          n + sizeof (struct inotify_event) + event->len > inotify_posn)
+        break;
 #else
 #error "this code needs fixing so it works on non-GCC compilers"
 #endif
 
       np = realloc (ret->guestfs_int_inotify_event_list_val,
-                   (ret->guestfs_int_inotify_event_list_len + 1) *
-                   sizeof (guestfs_int_inotify_event));
+                    (ret->guestfs_int_inotify_event_list_len + 1) *
+                    sizeof (guestfs_int_inotify_event));
       if (np == NULL) {
-       reply_with_perror ("realloc");
-       goto error;
+        reply_with_perror ("realloc");
+        goto error;
       }
       ret->guestfs_int_inotify_event_list_val = np;
       in = &ret->guestfs_int_inotify_event_list_val[ret->guestfs_int_inotify_event_list_len];
@@ -212,12 +212,12 @@ do_inotify_read (void)
       in->in_cookie = event->cookie;
 
       if (event->len > 0)
-       in->in_name = strdup (event->name);
+        in->in_name = strdup (event->name);
       else
-       in->in_name = strdup (""); /* Should have optional string fields XXX. */
+        in->in_name = strdup (""); /* Should have optional string fields XXX. */
       if (in->in_name == NULL) {
-       reply_with_perror ("strdup");
-       goto error;
+        reply_with_perror ("strdup");
+        goto error;
       }
 
       /* Estimate space used by this event in the message. */
@@ -279,7 +279,7 @@ do_inotify_files (void)
       const char *name = events->guestfs_int_inotify_event_list_val[i].in_name;
 
       if (name[0] != '\0')
-       fprintf (fp, "%s\n", name);
+        fprintf (fp, "%s\n", name);
     }
 
     xdr_free ((xdrproc_t) xdr_guestfs_int_inotify_event_list, (char *) events);
index 57e3538..29ae679 100644 (file)
@@ -90,19 +90,19 @@ _link (const char *flag, int symbolic, const char *target, const char *linkname)
 
   if (flag)
     r = command (NULL, &err,
-                "ln", flag, "--", /* target could begin with '-' */
-                buf_target ? : target, buf_linkname, NULL);
+                 "ln", flag, "--", /* target could begin with '-' */
+                 buf_target ? : target, buf_linkname, NULL);
   else
     r = command (NULL, &err,
-                "ln", "--",
-                buf_target ? : target, buf_linkname, NULL);
+                 "ln", "--",
+                 buf_target ? : target, buf_linkname, NULL);
   free (buf_linkname);
   free (buf_target);
   if (r == -1) {
     reply_with_error ("ln%s%s: %s: %s: %s",
-                     flag ? " " : "",
-                     flag ? : "",
-                     target, linkname, err);
+                      flag ? " " : "",
+                      flag ? : "",
+                      target, linkname, err);
     free (err);
     return -1;
   }
index 01b6435..624dcf3 100644 (file)
@@ -93,7 +93,7 @@ do_pvs (void)
   int r;
 
   r = command (&out, &err,
-              "/sbin/lvm", "pvs", "-o", "pv_name", "--noheadings", NULL);
+               "/sbin/lvm", "pvs", "-o", "pv_name", "--noheadings", NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (out);
@@ -113,7 +113,7 @@ do_vgs (void)
   int r;
 
   r = command (&out, &err,
-              "/sbin/lvm", "vgs", "-o", "vg_name", "--noheadings", NULL);
+               "/sbin/lvm", "vgs", "-o", "vg_name", "--noheadings", NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (out);
@@ -133,9 +133,9 @@ do_lvs (void)
   int r;
 
   r = command (&out, &err,
-              "/sbin/lvm", "lvs",
-              "-o", "vg_name,lv_name", "--noheadings",
-              "--separator", "/", NULL);
+               "/sbin/lvm", "lvs",
+               "-o", "vg_name,lv_name", "--noheadings",
+               "--separator", "/", NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (out);
@@ -179,7 +179,7 @@ do_pvcreate (char *device)
   IS_DEVICE (device, -1);
 
   r = command (NULL, &err,
-              "/sbin/lvm", "pvcreate", device, NULL);
+               "/sbin/lvm", "pvcreate", device, NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (err);
@@ -240,8 +240,8 @@ do_lvcreate (char *logvol, char *volgroup, int mbytes)
   snprintf (size, sizeof size, "%d", mbytes);
 
   r = command (NULL, &err,
-              "/sbin/lvm", "lvcreate",
-              "-L", size, "-n", logvol, volgroup, NULL);
+               "/sbin/lvm", "lvcreate",
+               "-L", size, "-n", logvol, volgroup, NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (err);
@@ -267,8 +267,8 @@ do_lvresize (char *logvol, int mbytes)
   snprintf (size, sizeof size, "%d", mbytes);
 
   r = command (NULL, &err,
-              "/sbin/lvm", "lvresize",
-              "-L", size, logvol, NULL);
+               "/sbin/lvm", "lvresize",
+               "-L", size, logvol, NULL);
   if (r == -1) {
     reply_with_error ("lvresize: %s", err);
     free (err);
@@ -355,7 +355,7 @@ do_lvremove (char *device)
   IS_DEVICE (device, -1);
 
   r = command (NULL, &err,
-              "/sbin/lvm", "lvremove", "-f", device, NULL);
+               "/sbin/lvm", "lvremove", "-f", device, NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (err);
@@ -376,7 +376,7 @@ do_vgremove (char *device)
   int r;
 
   r = command (NULL, &err,
-              "/sbin/lvm", "vgremove", "-f", device, NULL);
+               "/sbin/lvm", "vgremove", "-f", device, NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (err);
@@ -399,7 +399,7 @@ do_pvremove (char *device)
   IS_DEVICE (device, -1);
 
   r = command (NULL, &err,
-              "/sbin/lvm", "pvremove", "-ff", device, NULL);
+               "/sbin/lvm", "pvremove", "-ff", device, NULL);
   if (r == -1) {
     reply_with_error ("%s", err);
     free (err);
@@ -422,7 +422,7 @@ do_pvresize (char *device)
   IS_DEVICE (device, -1);
 
   r = command (NULL, &err,
-              "/sbin/lvm", "pvresize", device, NULL);
+               "/sbin/lvm", "pvresize", device, NULL);
   if (r == -1) {
     reply_with_error ("pvresize: %s: %s", device, err);
     free (err);
index e7265fe..9754ca9 100644 (file)
@@ -42,7 +42,7 @@ int root_mounted = 0;
 
 int
 do_mount_vfs (char *options, char *vfstype,
-             char *device, char *mountpoint)
+              char *device, char *mountpoint)
 {
   int r, is_root;
   char *mp;
@@ -65,10 +65,10 @@ do_mount_vfs (char *options, char *vfstype,
 
   if (vfstype)
     r = command (NULL, &error,
-                "mount", "-o", options, "-t", vfstype, device, mp, NULL);
+                 "mount", "-o", options, "-t", vfstype, device, mp, NULL);
   else
     r = command (NULL, &error,
-                "mount", "-o", options, device, mp, NULL);
+                 "mount", "-o", options, device, mp, NULL);
   free (mp);
   if (r == -1) {
     reply_with_error ("mount: %s on %s: %s", device, mountpoint, error);
@@ -96,7 +96,7 @@ do_mount_ro (char *device, char *mountpoint)
 
 int
 do_mount_options (char *options, char *device,
-                 char *mountpoint)
+                  char *mountpoint)
 {
   return do_mount_vfs (options, NULL, device, mountpoint);
 }
@@ -176,22 +176,22 @@ mounts_or_mountpoints (int mp)
     if (p2 != NULL) {
       *p2 = '\0';
       if (add_string (&ret, &size, &alloc, p) == -1) {
-       free (out);
-       return NULL;
+        free (out);
+        return NULL;
       }
       if (mp) {
-       p2 += 4 + sysroot_len;  /* skip " on /sysroot" */
-       len = strcspn (p2, " ");
-
-       if (len == 0)           /* .. just /sysroot, so we turn it into "/" */
-         p2 = (char *) "/";
-       else
-         p2[len] = '\0';
-
-       if (add_string (&ret, &size, &alloc, p2) == -1) {
-         free (out);
-         return NULL;
-       }
+        p2 += 4 + sysroot_len; /* skip " on /sysroot" */
+        len = strcspn (p2, " ");
+
+        if (len == 0)          /* .. just /sysroot, so we turn it into "/" */
+          p2 = (char *) "/";
+        else
+          p2[len] = '\0';
+
+        if (add_string (&ret, &size, &alloc, p2) == -1) {
+          free (out);
+          return NULL;
+        }
       }
     }
 
@@ -277,8 +277,8 @@ do_umount_all (void)
       p3 = p2 + strcspn (p2, " ");
       *p3 = '\0';
       if (add_string (&mounts, &size, &alloc, p2) == -1) {
-       free (out);
-       return -1;
+        free (out);
+        return -1;
       }
     }
 
index acd6601..709f978 100644 (file)
@@ -69,7 +69,7 @@ main_loop (int _sock)
 
     if (len > GUESTFS_MESSAGE_MAX) {
       fprintf (stderr, "guestfsd: incoming message is too long (%u bytes)\n",
-              len);
+               len);
       exit (1);
     }
 
@@ -86,20 +86,20 @@ main_loop (int _sock)
       int i, j;
 
       for (i = 0; i < len; i += 16) {
-       printf ("%04x: ", i);
-       for (j = i; j < MIN (i+16, len); ++j)
-         printf ("%02x ", (unsigned char) buf[j]);
-       for (; j < i+16; ++j)
-         printf ("   ");
-       printf ("|");
-       for (j = i; j < MIN (i+16, len); ++j)
-         if (isprint (buf[j]))
-           printf ("%c", buf[j]);
-         else
-           printf (".");
-       for (; j < i+16; ++j)
-         printf (" ");
-       printf ("|\n");
+        printf ("%04x: ", i);
+        for (j = i; j < MIN (i+16, len); ++j)
+          printf ("%02x ", (unsigned char) buf[j]);
+        for (; j < i+16; ++j)
+          printf ("   ");
+        printf ("|");
+        for (j = i; j < MIN (i+16, len); ++j)
+          if (isprint (buf[j]))
+            printf ("%c", buf[j]);
+          else
+            printf (".");
+        for (; j < i+16; ++j)
+          printf (" ");
+        printf ("|\n");
       }
     }
 #endif
@@ -147,11 +147,11 @@ main_loop (int _sock)
       end_us = (int64_t) end_t.tv_sec * 1000000 + end_t.tv_usec;
       elapsed_us = end_us - start_us;
       fprintf (stderr, "proc %d (%s) took %d.%02d seconds\n",
-              proc_nr,
-              proc_nr >= 0 && proc_nr < GUESTFS_PROC_NR_PROCS
-              ? function_names[proc_nr] : "UNKNOWN PROCEDURE",
-              (int) (elapsed_us / 1000000),
-              (int) ((elapsed_us / 10000) % 100));
+               proc_nr,
+               proc_nr >= 0 && proc_nr < GUESTFS_PROC_NR_PROCS
+               ? function_names[proc_nr] : "UNKNOWN PROCEDURE",
+               (int) (elapsed_us / 1000000),
+               (int) ((elapsed_us / 10000) % 100));
     }
 
   cont:
@@ -317,7 +317,7 @@ receive_file (receive_cb cb, void *opaque)
 
     if (len > GUESTFS_MESSAGE_MAX) {
       fprintf (stderr, "guestfsd: incoming message is too long (%u bytes)\n",
-              len);
+               len);
       exit (1);
     }
 
@@ -341,7 +341,7 @@ receive_file (receive_cb cb, void *opaque)
 
     if (verbose)
       printf ("receive_file: got chunk: cancel = %d, len = %d, buf = %p\n",
-             chunk.cancel, chunk.data.data_len, chunk.data.data_val);
+              chunk.cancel, chunk.data.data_len, chunk.data.data_val);
 
     if (chunk.cancel) {
       fprintf (stderr, "receive_file: received cancellation from library\n");
@@ -397,7 +397,7 @@ send_file_write (const void *buf, int len)
 
   if (len > GUESTFS_MAX_CHUNK_SIZE) {
     fprintf (stderr, "send_file_write: len (%d) > GUESTFS_MAX_CHUNK_SIZE (%d)\n",
-            len, GUESTFS_MAX_CHUNK_SIZE);
+             len, GUESTFS_MAX_CHUNK_SIZE);
     return -1;
   }
 
@@ -455,7 +455,7 @@ check_for_library_cancellation (void)
 
   if (flag != GUESTFS_CANCEL_FLAG) {
     fprintf (stderr, "check_for_library_cancellation: read 0x%x from library, expected 0x%x\n",
-            flag, GUESTFS_CANCEL_FLAG);
+             flag, GUESTFS_CANCEL_FLAG);
     return 0;
   }
 
index e3851db..17fc619 100644 (file)
@@ -63,7 +63,7 @@ do_readdir (char *path)
     guestfs_int_dirent *p;
 
     p = realloc (ret->guestfs_int_dirent_list_val,
-                sizeof (guestfs_int_dirent) * (i+1));
+                 sizeof (guestfs_int_dirent) * (i+1));
     v.name = strdup (d->d_name);
     if (!p || !v.name) {
       reply_with_perror ("allocate");
index f512e26..e06d0bf 100644 (file)
@@ -31,8 +31,8 @@
 
 static int
 sfdisk (char *device, int n, int cyls, int heads, int sectors,
-       const char *extra_flag,
-       char * const* const lines)
+        const char *extra_flag,
+        char * const* const lines)
 {
   FILE *fp;
   char buf[256];
@@ -85,14 +85,14 @@ sfdisk (char *device, int n, int cyls, int heads, int sectors,
 
 int
 do_sfdisk (char *device, int cyls, int heads, int sectors,
-          char **lines)
+           char **lines)
 {
   return sfdisk (device, 0, cyls, heads, sectors, NULL, lines);
 }
 
 int
 do_sfdisk_N (char *device, int n, int cyls, int heads, int sectors,
-            char *line)
+             char *line)
 {
   const char *lines[2] = { line, NULL };
 
index 23b00d8..a908a44 100644 (file)
@@ -107,9 +107,9 @@ do_lremovexattr (char *xattr, char *path)
 
 static guestfs_int_xattr_list *
 getxattrs (char *path,
-          ssize_t (*listxattr) (const char *path, char *list, size_t size),
-          ssize_t (*getxattr) (const char *path, const char *name,
-                               void *value, size_t size))
+           ssize_t (*listxattr) (const char *path, char *list, size_t size),
+           ssize_t (*getxattr) (const char *path, const char *name,
+                                void *value, size_t size))
 {
   ssize_t len, vlen;
   char *buf = NULL;
@@ -175,15 +175,15 @@ getxattrs (char *path,
     r->guestfs_int_xattr_list_val[j].attrval.attrval_len = vlen;
 
     if (r->guestfs_int_xattr_list_val[j].attrname == NULL ||
-       r->guestfs_int_xattr_list_val[j].attrval.attrval_val == NULL) {
+        r->guestfs_int_xattr_list_val[j].attrval.attrval_val == NULL) {
       reply_with_perror ("malloc");
       goto error;
     }
 
     CHROOT_IN;
     vlen = getxattr (path, &buf[i],
-                    r->guestfs_int_xattr_list_val[j].attrval.attrval_val,
-                    vlen);
+                     r->guestfs_int_xattr_list_val[j].attrval.attrval_val,
+                     vlen);
     CHROOT_OUT;
     if (vlen == -1) {
       reply_with_perror ("getxattr");
@@ -200,8 +200,8 @@ getxattrs (char *path,
   if (r) {
     if (r->guestfs_int_xattr_list_val)
       for (i = 0; i < r->guestfs_int_xattr_list_len; ++i) {
-       free (r->guestfs_int_xattr_list_val[i].attrname);
-       free (r->guestfs_int_xattr_list_val[i].attrval.attrval_val);
+        free (r->guestfs_int_xattr_list_val[i].attrname);
+        free (r->guestfs_int_xattr_list_val[i].attrval.attrval_val);
       }
     free (r->guestfs_int_xattr_list_val);
   }
@@ -211,8 +211,8 @@ getxattrs (char *path,
 
 static int
 _setxattr (char *xattr, char *val, int vallen, char *path,
-          int (*setxattr) (const char *path, const char *name,
-                           const void *value, size_t size, int flags))
+           int (*setxattr) (const char *path, const char *name,
+                            const void *value, size_t size, int flags))
 {
   int r;
 
@@ -229,7 +229,7 @@ _setxattr (char *xattr, char *val, int vallen, char *path,
 
 static int
 _removexattr (char *xattr, char *path,
-             int (*removexattr) (const char *path, const char *name))
+              int (*removexattr) (const char *path, const char *name))
 {
   int r;
 
index 25fd6a8..a1b2228 100755 (executable)
@@ -131,8 +131,8 @@ Print inodes instead of blocks.
 =cut
 
 GetOptions ("help|?" => \$help,
-           "version" => \$version,
-           "connect|c=s" => \$uri,
+            "version" => \$version,
+            "connect|c=s" => \$uri,
             "csv" => \$csv,
             "human-readable|human|h" => \$human,
             "inodes|i" => \$inodes,
@@ -151,9 +151,9 @@ if (@ARGV == 0) {
     my $conn;
 
     if ($uri) {
-       $conn = Sys::Virt->new (readonly => 1, address => $uri);
+        $conn = Sys::Virt->new (readonly => 1, address => $uri);
     } else {
-       $conn = Sys::Virt->new (readonly => 1);
+        $conn = Sys::Virt->new (readonly => 1);
     }
 
     my @doms = $conn->list_defined_domains ();
@@ -162,10 +162,10 @@ if (@ARGV == 0) {
     my @domnames = map { $_->get_name () } @doms;
 
     if (@domnames) {
-       print_title ();
-       foreach (@domnames) {
-           do_df ($_);
-       }
+        print_title ();
+        foreach (@domnames) {
+            do_df ($_);
+        }
     }
 } else {
     print_title ();
@@ -177,9 +177,9 @@ sub do_df
     my $g;
 
     if ($uri) {
-       $g = open_guest (\@_, address => $uri);
+        $g = open_guest (\@_, address => $uri);
     } else {
-       $g = open_guest (\@_);
+        $g = open_guest (\@_);
     }
 
     $g->launch ();
@@ -195,15 +195,15 @@ sub do_df
 
     # Mount each partition in turn, and if mountable, do a statvfs on it.
     foreach my $partition (@partitions) {
-       my %stat;
-       eval {
-           $g->mount_ro ($partition, "/");
-           %stat = $g->statvfs ("/");
-       };
-       if (!$@) {
-           print_stat ($domname, $partition, \%stat);
-       }
-       $g->umount_all ();
+        my %stat;
+        eval {
+            $g->mount_ro ($partition, "/");
+            %stat = $g->statvfs ("/");
+        };
+        if (!$@) {
+            print_stat ($domname, $partition, \%stat);
+        }
+        $g->umount_all ();
     }
 }
 
@@ -216,38 +216,38 @@ sub print_stat
     my @cols = ($domname, $partition);
 
     if (!$inodes) {
-       my $bsize = $stat->{bsize};     # block size
-       my $blocks = $stat->{blocks};   # total number of blocks
-       my $bfree = $stat->{bfree};     # blocks free (total)
-       my $bavail = $stat->{bavail};   # blocks free (for non-root users)
-
-       my $factor = $bsize / 1024;
-
-       push @cols, $blocks*$factor;    # total 1K blocks
-       push @cols, ($blocks-$bfree)*$factor; # total 1K blocks used
-       push @cols, $bavail*$factor;    # total 1K blocks available
-
-       # XXX %used column comes out different from the native 'df'
-       # program.  Need to check how 'df' calculates this.
-       push @cols, 100.0 - 100.0 * $bavail / $blocks;
-
-       if ($human) {
-           $cols[2] = human_size ($cols[2]);
-           $cols[3] = human_size ($cols[3]);
-           $cols[4] = human_size ($cols[4]);
-       }
+        my $bsize = $stat->{bsize};    # block size
+        my $blocks = $stat->{blocks};  # total number of blocks
+        my $bfree = $stat->{bfree};    # blocks free (total)
+        my $bavail = $stat->{bavail};  # blocks free (for non-root users)
+
+        my $factor = $bsize / 1024;
+
+        push @cols, $blocks*$factor;   # total 1K blocks
+        push @cols, ($blocks-$bfree)*$factor; # total 1K blocks used
+        push @cols, $bavail*$factor;   # total 1K blocks available
+
+        # XXX %used column comes out different from the native 'df'
+        # program.  Need to check how 'df' calculates this.
+        push @cols, 100.0 - 100.0 * $bavail / $blocks;
+
+        if ($human) {
+            $cols[2] = human_size ($cols[2]);
+            $cols[3] = human_size ($cols[3]);
+            $cols[4] = human_size ($cols[4]);
+        }
     } else {
-       my $files = $stat->{files};     # total number of inodes
-       my $ffree = $stat->{ffree};     # inodes free (total)
-       my $favail = $stat->{favail};   # inodes free (for non-root users)
+        my $files = $stat->{files};    # total number of inodes
+        my $ffree = $stat->{ffree};    # inodes free (total)
+        my $favail = $stat->{favail};  # inodes free (for non-root users)
 
-       push @cols, $files;
-       push @cols, $files-$ffree;
-       push @cols, $ffree;
+        push @cols, $files;
+        push @cols, $files-$ffree;
+        push @cols, $ffree;
 
-       # XXX %used column comes out different from the native 'df'
-       # program.  Need to check how 'df' calculates this.
-       push @cols, 100.0 - 100.0 * $favail / $files;
+        # XXX %used column comes out different from the native 'df'
+        # program.  Need to check how 'df' calculates this.
+        push @cols, 100.0 - 100.0 * $favail / $files;
     }
 
     print_cols (@cols);
@@ -257,42 +257,42 @@ sub print_title
 {
     my @cols = (__"Virtual Machine", __"Filesystem");
     if (!$inodes) {
-       if (!$human) {
-           push @cols, __"1K-blocks";
-       } else {
-           push @cols, __"Size";
-       }
-       push @cols, __"Used";
-       push @cols, __"Available";
-       push @cols, __"Use%";
+        if (!$human) {
+            push @cols, __"1K-blocks";
+        } else {
+            push @cols, __"Size";
+        }
+        push @cols, __"Used";
+        push @cols, __"Available";
+        push @cols, __"Use%";
     } else {
-       push @cols, __"Inodes";
-       push @cols, __"IUsed";
-       push @cols, __"IFree";
-       push @cols, __"IUse%";
+        push @cols, __"Inodes";
+        push @cols, __"IUsed";
+        push @cols, __"IFree";
+        push @cols, __"IUse%";
     }
 
     if (!$csv) {
-       # ignore $cols[0] in this mode
-       printf "%-36s%10s %10s %10s %5s\n",
-         $cols[1], $cols[2], $cols[3], $cols[4], $cols[5];
+        # ignore $cols[0] in this mode
+        printf "%-36s%10s %10s %10s %5s\n",
+          $cols[1], $cols[2], $cols[3], $cols[4], $cols[5];
     } else {
-       print (join (",", @cols), "\n");
+        print (join (",", @cols), "\n");
     }
 }
 
 sub print_cols
 {
     if (!$csv) {
-       my $label = sprintf "%s:%s", $_[0], $_[1];
+        my $label = sprintf "%s:%s", $_[0], $_[1];
 
-       printf ("%-36s", $label);
-       print "\n"," "x36 if length ($label) > 36;
+        printf ("%-36s", $label);
+        print "\n"," "x36 if length ($label) > 36;
 
-       my $percent = sprintf "%3.1f%%", $_[5];
-       printf ("%10s %10s %10s %5s\n", $_[2], $_[3], $_[4], $percent);
+        my $percent = sprintf "%3.1f%%", $_[5];
+        printf ("%10s %10s %10s %5s\n", $_[2], $_[3], $_[4], $percent);
     } else {
-       printf ("\"%s\",\"%s\",%d,%d,%d,%.1f%%\n", @_);
+        printf ("\"%s\",\"%s\",%d,%d,%d,%.1f%%\n", @_);
     }
 }
 
@@ -302,11 +302,11 @@ sub human_size
     local $_ = shift;
 
     if ($_ < 1024) {
-       sprintf "%dK", $_;
+        sprintf "%dK", $_;
     } elsif ($_ < 1024 * 1024) {
-       sprintf "%.1fM", ($_ / 1024);
+        sprintf "%.1fM", ($_ / 1024);
     } else {
-       sprintf "%.1fG", ($_ / 1024 / 1024);
+        sprintf "%.1fG", ($_ / 1024 / 1024);
     }
 }
 
index a62660c..2cf3de8 100644 (file)
@@ -89,14 +89,14 @@ main (int argc, char *argv[])
     int j;
     for (j = 0; lvs[j] != NULL; ++j) {
       if (strncmp (lvs[j], "/dev/", 5) == 0 &&
-         strncmp (&lvs[j][5], vgs[i], len) == 0 &&
-         lvs[j][len+5] == '/') {
-       int64_t size;
-       CALL (size = guestfs_blockdev_getsize64 (g, lvs[j]), -1);
-       printf ("<logvol name=\"%s\" size=\"%" PRIi64 "\">\n", lvs[j], size);
-       display_partition (g, lvs[j]);
-       printf ("</logvol>\n");
-       free (lvs[j]);
+          strncmp (&lvs[j][5], vgs[i], len) == 0 &&
+          lvs[j][len+5] == '/') {
+        int64_t size;
+        CALL (size = guestfs_blockdev_getsize64 (g, lvs[j]), -1);
+        printf ("<logvol name=\"%s\" size=\"%" PRIi64 "\">\n", lvs[j], size);
+        display_partition (g, lvs[j]);
+        printf ("</logvol>\n");
+        free (lvs[j]);
       }
     }
 
index a9d65a5..f4f1318 100644 (file)
@@ -112,24 +112,24 @@ complete_dest_paths_generator (const char *text, int state)
     if (strs) {                                                                \
       size_t i;                                                                \
       size_t n = count_strings (strs);                                 \
-                                                                       \
+                                                                        \
       if ( ! xalloc_oversized (nr_words + n, sizeof (struct word))) {  \
-       struct word *w;                                                 \
-       w = realloc (words, sizeof (struct word) * (nr_words + n));     \
-                                                                       \
-       if (w == NULL) {                                                \
-         free_words (words, nr_words);                                 \
-         words = NULL;                                                 \
-         nr_words = 0;                                                 \
-       } else {                                                        \
-         words = w;                                                    \
-         for (i = 0; i < n; ++i) {                                     \
-           words[nr_words].name = strs[i];                             \
-           words[nr_words].is_dir = 0;                                 \
-           nr_words++;                                                 \
-                                                                     \
-                                                                     \
-       free (strs);                                                    \
+        struct word *w;                                                        \
+        w = realloc (words, sizeof (struct word) * (nr_words + n));    \
+                                                                        \
+        if (w == NULL) {                                               \
+          free_words (words, nr_words);                                        \
+          words = NULL;                                                        \
+          nr_words = 0;                                                        \
+        } else {                                                       \
+          words = w;                                                   \
+          for (i = 0; i < n; ++i) {                                    \
+            words[nr_words].name = strs[i];                            \
+            words[nr_words].is_dir = 0;                                        \
+            nr_words++;                                                        \
+          }                                                            \
+        }                                                              \
+        free (strs);                                                   \
       }                                                                        \
     }                                                                  \
   } while (0)
@@ -157,46 +157,46 @@ complete_dest_paths_generator (const char *text, int state)
       p = strrchr (text, '/');
       dir = p && p > text ? strndup (text, p - text) : strdup ("/");
       if (dir) {
-       dirents = guestfs_readdir (g, dir);
-
-       /* Prepend directory to names before adding them to the list
-        * of words.
-        */
-       if (dirents) {
-         size_t i;
-
-         for (i = 0; i < dirents->len; ++i) {
-           int err;
-
-           if (strcmp (dirents->val[i].name, ".") != 0 &&
-               strcmp (dirents->val[i].name, "..") != 0) {
-             if (strcmp (dir, "/") == 0)
-               err = asprintf (&p, "/%s", dirents->val[i].name);
-             else
-               err = asprintf (&p, "%s/%s", dir, dirents->val[i].name);
-             if (err >= 0) {
-               if (!xalloc_oversized (nr_words+1, sizeof (struct word))) {
-                 struct word *w;
-
-                 w = realloc (words, sizeof (struct word) * (nr_words+1));
-                 if (w == NULL) {
-                   free_words (words, nr_words);
-                   words = NULL;
-                   nr_words = 0;
-                 }
-                 else {
-                   words = w;
-                   words[nr_words].name = p;
-                   words[nr_words].is_dir = dirents->val[i].ftyp == 'd';
-                   nr_words++;
-                 }
-               }
-             }
-           }
-         }
-
-         guestfs_free_dirent_list (dirents);
-       }
+        dirents = guestfs_readdir (g, dir);
+
+        /* Prepend directory to names before adding them to the list
+         * of words.
+         */
+        if (dirents) {
+          size_t i;
+
+          for (i = 0; i < dirents->len; ++i) {
+            int err;
+
+            if (strcmp (dirents->val[i].name, ".") != 0 &&
+                strcmp (dirents->val[i].name, "..") != 0) {
+              if (strcmp (dir, "/") == 0)
+                err = asprintf (&p, "/%s", dirents->val[i].name);
+              else
+                err = asprintf (&p, "%s/%s", dir, dirents->val[i].name);
+              if (err >= 0) {
+                if (!xalloc_oversized (nr_words+1, sizeof (struct word))) {
+                  struct word *w;
+
+                  w = realloc (words, sizeof (struct word) * (nr_words+1));
+                  if (w == NULL) {
+                    free_words (words, nr_words);
+                    words = NULL;
+                    nr_words = 0;
+                  }
+                  else {
+                    words = w;
+                    words[nr_words].name = p;
+                    words[nr_words].is_dir = dirents->val[i].ftyp == 'd';
+                    nr_words++;
+                  }
+                }
+              }
+            }
+          }
+
+          guestfs_free_dirent_list (dirents);
+        }
       }
     }
 
@@ -219,7 +219,7 @@ complete_dest_paths_generator (const char *text, int state)
 
     if (strncasecmp (word->name, text, len) == 0) {
       if (word->is_dir)
-       rl_completion_append_character = '/';
+        rl_completion_append_character = '/';
 
       return strdup (word->name);
     }
index b0d123d..f245de1 100644 (file)
@@ -91,36 +91,36 @@ static void
 usage (void)
 {
   fprintf (stderr,
-          _("guestfish: guest filesystem shell\n"
-            "guestfish lets you edit virtual machine filesystems\n"
-            "Copyright (C) 2009 Red Hat Inc.\n"
-            "Usage:\n"
-            "  guestfish [--options] cmd [: cmd : cmd ...]\n"
-            "  guestfish -i libvirt-domain\n"
-            "  guestfish -i disk-image(s)\n"
-            "or for interactive use:\n"
-            "  guestfish\n"
-            "or from a shell script:\n"
-            "  guestfish <<EOF\n"
-            "  cmd\n"
-            "  ...\n"
-            "  EOF\n"
-            "Options:\n"
-            "  -h|--cmd-help        List available commands\n"
-            "  -h|--cmd-help cmd    Display detailed help on 'cmd'\n"
-            "  -a|--add image       Add image\n"
-            "  -D|--no-dest-paths   Don't tab-complete paths from guest fs\n"
-            "  -f|--file file       Read commands from file\n"
-            "  -i|--inspector       Run virt-inspector to get disk mountpoints\n"
-            "  --listen             Listen for remote commands\n"
-            "  -m|--mount dev[:mnt] Mount dev on mnt (if omitted, /)\n"
-            "  -n|--no-sync         Don't autosync\n"
-            "  --remote[=pid]       Send commands to remote guestfish\n"
-            "  -r|--ro              Mount read-only\n"
-            "  -v|--verbose         Verbose messages\n"
-            "  -x                   Echo each command before executing it\n"
-            "  -V|--version         Display version and exit\n"
-            "For more information,  see the manpage guestfish(1).\n"));
+           _("guestfish: guest filesystem shell\n"
+             "guestfish lets you edit virtual machine filesystems\n"
+             "Copyright (C) 2009 Red Hat Inc.\n"
+             "Usage:\n"
+             "  guestfish [--options] cmd [: cmd : cmd ...]\n"
+             "  guestfish -i libvirt-domain\n"
+             "  guestfish -i disk-image(s)\n"
+             "or for interactive use:\n"
+             "  guestfish\n"
+             "or from a shell script:\n"
+             "  guestfish <<EOF\n"
+             "  cmd\n"
+             "  ...\n"
+             "  EOF\n"
+             "Options:\n"
+             "  -h|--cmd-help        List available commands\n"
+             "  -h|--cmd-help cmd    Display detailed help on 'cmd'\n"
+             "  -a|--add image       Add image\n"
+             "  -D|--no-dest-paths   Don't tab-complete paths from guest fs\n"
+             "  -f|--file file       Read commands from file\n"
+             "  -i|--inspector       Run virt-inspector to get disk mountpoints\n"
+             "  --listen             Listen for remote commands\n"
+             "  -m|--mount dev[:mnt] Mount dev on mnt (if omitted, /)\n"
+             "  -n|--no-sync         Don't autosync\n"
+             "  --remote[=pid]       Send commands to remote guestfish\n"
+             "  -r|--ro              Mount read-only\n"
+             "  -v|--verbose         Verbose messages\n"
+             "  -x                   Echo each command before executing it\n"
+             "  -V|--version         Display version and exit\n"
+             "For more information,  see the manpage guestfish(1).\n"));
 }
 
 int
@@ -191,31 +191,31 @@ main (int argc, char *argv[])
     switch (c) {
     case 0:                    /* options which are long only */
       if (strcmp (long_options[option_index].name, "listen") == 0)
-       remote_control_listen = 1;
+        remote_control_listen = 1;
       else if (strcmp (long_options[option_index].name, "remote") == 0) {
-       if (optarg) {
-         if (sscanf (optarg, "%d", &remote_control) != 1) {
-           fprintf (stderr, _("guestfish: --listen=PID: PID was not a number: %s\n"), optarg);
-           exit (1);
-         }
-       } else {
-         p = getenv ("GUESTFISH_PID");
-         if (!p || sscanf (p, "%d", &remote_control) != 1) {
-           fprintf (stderr, _("guestfish: remote: $GUESTFISH_PID must be set to the PID of the remote process\n"));
-           exit (1);
-         }
-       }
+        if (optarg) {
+          if (sscanf (optarg, "%d", &remote_control) != 1) {
+            fprintf (stderr, _("guestfish: --listen=PID: PID was not a number: %s\n"), optarg);
+            exit (1);
+          }
+        } else {
+          p = getenv ("GUESTFISH_PID");
+          if (!p || sscanf (p, "%d", &remote_control) != 1) {
+            fprintf (stderr, _("guestfish: remote: $GUESTFISH_PID must be set to the PID of the remote process\n"));
+            exit (1);
+          }
+        }
       } else {
-       fprintf (stderr, _("guestfish: unknown long option: %s (%d)\n"),
-                long_options[option_index].name, option_index);
-       exit (1);
+        fprintf (stderr, _("guestfish: unknown long option: %s (%d)\n"),
+                 long_options[option_index].name, option_index);
+        exit (1);
       }
       break;
 
     case 'a':
       if (access (optarg, R_OK) != 0) {
-       perror (optarg);
-       exit (1);
+        perror (optarg);
+        exit (1);
       }
       drv = malloc (sizeof (struct drv));
       if (!drv) {
@@ -233,19 +233,19 @@ main (int argc, char *argv[])
 
     case 'f':
       if (file) {
-       fprintf (stderr, _("guestfish: only one -f parameter can be given\n"));
-       exit (1);
+        fprintf (stderr, _("guestfish: only one -f parameter can be given\n"));
+        exit (1);
       }
       file = optarg;
       break;
 
     case 'h':
       if (optarg)
-       display_command (optarg);
+        display_command (optarg);
       else if (argv[optind] && argv[optind][0] != '-')
-       display_command (argv[optind++]);
+        display_command (argv[optind++]);
       else
-       list_commands ();
+        list_commands ();
       exit (0);
 
     case 'i':
@@ -255,15 +255,15 @@ main (int argc, char *argv[])
     case 'm':
       mp = malloc (sizeof (struct mp));
       if (!mp) {
-       perror ("malloc");
-       exit (1);
+        perror ("malloc");
+        exit (1);
       }
       p = strchr (optarg, ':');
       if (p) {
-       *p = '\0';
-       mp->mountpoint = p+1;
+        *p = '\0';
+        mp->mountpoint = p+1;
       } else
-       mp->mountpoint = "/";
+        mp->mountpoint = "/";
       mp->device = optarg;
       mp->next = mps;
       mps = mp;
@@ -296,7 +296,7 @@ main (int argc, char *argv[])
 
     default:
       fprintf (stderr, _("guestfish: unexpected command line option 0x%x\n"),
-              c);
+               c);
       exit (1);
     }
   }
@@ -318,9 +318,9 @@ main (int argc, char *argv[])
     strcpy (cmd, "a=`virt-inspector");
     while (optind < argc) {
       if (strlen (cmd) + strlen (argv[optind]) + strlen (argv[0]) + 60
-         >= sizeof cmd) {
-       fprintf (stderr, _("guestfish: virt-inspector command too long for fixed-size buffer\n"));
-       exit (1);
+          >= sizeof cmd) {
+        fprintf (stderr, _("guestfish: virt-inspector command too long for fixed-size buffer\n"));
+        exit (1);
       }
       strcat (cmd, " '");
       strcat (cmd, argv[optind]);
@@ -342,7 +342,7 @@ main (int argc, char *argv[])
 
     if (verbose)
       fprintf (stderr,
-              "guestfish -i: running virt-inspector command:\n%s\n", cmd);
+               "guestfish -i: running virt-inspector command:\n%s\n", cmd);
 
     r = system (cmd);
     if (r == -1) {
@@ -518,12 +518,12 @@ script (int prompt)
 
   if (prompt)
     printf (_("\n"
-             "Welcome to guestfish, the libguestfs filesystem interactive shell for\n"
-             "editing virtual machine filesystems.\n"
-             "\n"
-             "Type: 'help' for help with commands\n"
-             "      'quit' to quit the shell\n"
-             "\n"));
+              "Welcome to guestfish, the libguestfs filesystem interactive shell for\n"
+              "editing virtual machine filesystems.\n"
+              "\n"
+              "Type: 'help' for help with commands\n"
+              "      'quit' to quit the shell\n"
+              "\n"));
 
   while (!quit) {
     char *pipe = NULL;
@@ -552,11 +552,11 @@ script (int prompt)
 
       r = system (buf+1);
       if (exit_on_error) {
-       if (r == -1 ||
-           (WIFSIGNALED (r) &&
-            (WTERMSIG (r) == SIGINT || WTERMSIG (r) == SIGQUIT)) ||
-           WEXITSTATUS (r) != 0)
-         exit (1);
+        if (r == -1 ||
+            (WIFSIGNALED (r) &&
+             (WTERMSIG (r) == SIGINT || WTERMSIG (r) == SIGQUIT)) ||
+            WEXITSTATUS (r) != 0)
+          exit (1);
       }
       continue;
     }
@@ -594,88 +594,88 @@ script (int prompt)
        * specially.  Bare parameters are delimited by whitespace.
        */
       if (*p == '"') {
-       p++;
-       len = strcspn (p, "\"");
-       if (p[len] == '\0') {
-         fprintf (stderr, _("guestfish: unterminated double quote\n"));
-         if (exit_on_error) exit (1);
-         goto next_command;
-       }
-       if (p[len+1] && (p[len+1] != ' ' && p[len+1] != '\t')) {
-         fprintf (stderr, _("guestfish: command arguments not separated by whitespace\n"));
-         if (exit_on_error) exit (1);
-         goto next_command;
-       }
-       p[len] = '\0';
-       pend = p[len+1] ? &p[len+2] : &p[len+1];
+        p++;
+        len = strcspn (p, "\"");
+        if (p[len] == '\0') {
+          fprintf (stderr, _("guestfish: unterminated double quote\n"));
+          if (exit_on_error) exit (1);
+          goto next_command;
+        }
+        if (p[len+1] && (p[len+1] != ' ' && p[len+1] != '\t')) {
+          fprintf (stderr, _("guestfish: command arguments not separated by whitespace\n"));
+          if (exit_on_error) exit (1);
+          goto next_command;
+        }
+        p[len] = '\0';
+        pend = p[len+1] ? &p[len+2] : &p[len+1];
       } else if (*p == '\'') {
-       p++;
-       len = strcspn (p, "'");
-       if (p[len] == '\0') {
-         fprintf (stderr, _("guestfish: unterminated single quote\n"));
-         if (exit_on_error) exit (1);
-         goto next_command;
-       }
-       if (p[len+1] && (p[len+1] != ' ' && p[len+1] != '\t')) {
-         fprintf (stderr, _("guestfish: command arguments not separated by whitespace\n"));
-         if (exit_on_error) exit (1);
-         goto next_command;
-       }
-       p[len] = '\0';
-       pend = p[len+1] ? &p[len+2] : &p[len+1];
+        p++;
+        len = strcspn (p, "'");
+        if (p[len] == '\0') {
+          fprintf (stderr, _("guestfish: unterminated single quote\n"));
+          if (exit_on_error) exit (1);
+          goto next_command;
+        }
+        if (p[len+1] && (p[len+1] != ' ' && p[len+1] != '\t')) {
+          fprintf (stderr, _("guestfish: command arguments not separated by whitespace\n"));
+          if (exit_on_error) exit (1);
+          goto next_command;
+        }
+        p[len] = '\0';
+        pend = p[len+1] ? &p[len+2] : &p[len+1];
       } else if (*p == '|') {
-       *p = '\0';
-       pipe = p+1;
-       continue;
-       /*
+        *p = '\0';
+        pipe = p+1;
+        continue;
+        /*
       } else if (*p == '[') {
-       int c = 1;
-       p++;
-       pend = p;
-       while (*pend && c != 0) {
-         if (*pend == '[') c++;
-         else if (*pend == ']') c--;
-         pend++;
-       }
-       if (c != 0) {
-         fprintf (stderr, _("guestfish: unterminated \"[...]\" sequence\n"));
-         if (exit_on_error) exit (1);
-         goto next_command;
-       }
-       if (*pend && (*pend != ' ' && *pend != '\t')) {
-         fprintf (stderr, _("guestfish: command arguments not separated by whitespace\n"));
-         if (exit_on_error) exit (1);
-         goto next_command;
-       }
-       *(pend-1) = '\0';
-       */
+        int c = 1;
+        p++;
+        pend = p;
+        while (*pend && c != 0) {
+          if (*pend == '[') c++;
+          else if (*pend == ']') c--;
+          pend++;
+        }
+        if (c != 0) {
+          fprintf (stderr, _("guestfish: unterminated \"[...]\" sequence\n"));
+          if (exit_on_error) exit (1);
+          goto next_command;
+        }
+        if (*pend && (*pend != ' ' && *pend != '\t')) {
+          fprintf (stderr, _("guestfish: command arguments not separated by whitespace\n"));
+          if (exit_on_error) exit (1);
+          goto next_command;
+        }
+        *(pend-1) = '\0';
+        */
       } else if (*p != ' ' && *p != '\t') {
-       /* If the first character is a ~ then note that this parameter
-        * is a candidate for ~username expansion.  NB this does not
-        * apply to quoted parameters.
-        */
-       tilde_candidate = *p == '~';
-       len = strcspn (p, " \t");
-       if (p[len]) {
-         p[len] = '\0';
-         pend = &p[len+1];
-       } else
-         pend = &p[len];
+        /* If the first character is a ~ then note that this parameter
+         * is a candidate for ~username expansion.  NB this does not
+         * apply to quoted parameters.
+         */
+        tilde_candidate = *p == '~';
+        len = strcspn (p, " \t");
+        if (p[len]) {
+          p[len] = '\0';
+          pend = &p[len+1];
+        } else
+          pend = &p[len];
       } else {
-       fprintf (stderr, _("guestfish: internal error parsing string at '%s'\n"),
-                p);
-       abort ();
+        fprintf (stderr, _("guestfish: internal error parsing string at '%s'\n"),
+                 p);
+        abort ();
       }
 
       if (!tilde_candidate)
-       argv[i] = p;
+        argv[i] = p;
       else
-       argv[i] = try_tilde_expansion (p);
+        argv[i] = try_tilde_expansion (p);
       i++;
       p = pend;
 
       if (*p)
-       p += strspn (p, " \t");
+        p += strspn (p, " \t");
     }
 
     if (i == sizeof argv / sizeof argv[0]) {
@@ -759,8 +759,8 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd)
 
       r = system (pipecmd);
       if (r == -1) {
-       perror (pipecmd);
-       _exit (1);
+        perror (pipecmd);
+        _exit (1);
       }
       _exit (WEXITSTATUS (r));
     }
@@ -787,26 +787,26 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd)
     r = 0;
   }
   else if (strcasecmp (cmd, "quit") == 0 ||
-          strcasecmp (cmd, "exit") == 0 ||
-          strcasecmp (cmd, "q") == 0) {
+           strcasecmp (cmd, "exit") == 0 ||
+           strcasecmp (cmd, "q") == 0) {
     quit = 1;
     r = 0;
   }
   else if (strcasecmp (cmd, "alloc") == 0 ||
-          strcasecmp (cmd, "allocate") == 0)
+           strcasecmp (cmd, "allocate") == 0)
     r = do_alloc (cmd, argc, argv);
   else if (strcasecmp (cmd, "echo") == 0)
     r = do_echo (cmd, argc, argv);
   else if (strcasecmp (cmd, "edit") == 0 ||
-          strcasecmp (cmd, "vi") == 0 ||
-          strcasecmp (cmd, "emacs") == 0)
+           strcasecmp (cmd, "vi") == 0 ||
+           strcasecmp (cmd, "emacs") == 0)
     r = do_edit (cmd, argc, argv);
   else if (strcasecmp (cmd, "lcd") == 0)
     r = do_lcd (cmd, argc, argv);
   else if (strcasecmp (cmd, "glob") == 0)
     r = do_glob (cmd, argc, argv);
   else if (strcasecmp (cmd, "more") == 0 ||
-          strcasecmp (cmd, "less") == 0)
+           strcasecmp (cmd, "less") == 0)
     r = do_more (cmd, argc, argv);
   else if (strcasecmp (cmd, "reopen") == 0)
     r = do_reopen (cmd, argc, argv);
@@ -835,26 +835,26 @@ list_builtin_commands (void)
 {
   /* help and quit should appear at the top */
   printf ("%-20s %s\n",
-         "help", _("display a list of commands or help on a command"));
+          "help", _("display a list of commands or help on a command"));
   printf ("%-20s %s\n",
-         "quit", _("quit guestfish"));
+          "quit", _("quit guestfish"));
 
   printf ("%-20s %s\n",
-         "alloc", _("allocate an image"));
+          "alloc", _("allocate an image"));
   printf ("%-20s %s\n",
-         "echo", _("display a line of text"));
+          "echo", _("display a line of text"));
   printf ("%-20s %s\n",
-         "edit", _("edit a file in the image"));
+          "edit", _("edit a file in the image"));
   printf ("%-20s %s\n",
-         "lcd", _("local change directory"));
+          "lcd", _("local change directory"));
   printf ("%-20s %s\n",
-         "glob", _("expand wildcards in command"));
+          "glob", _("expand wildcards in command"));
   printf ("%-20s %s\n",
-         "more", _("view a file in the pager"));
+          "more", _("view a file in the pager"));
   printf ("%-20s %s\n",
-         "reopen", _("close and reopen libguestfs handle"));
+          "reopen", _("close and reopen libguestfs handle"));
   printf ("%-20s %s\n",
-         "time", _("measure time taken to run command"));
+          "time", _("measure time taken to run command"));
 
   /* actions are printed after this (see list_commands) */
 }
@@ -867,95 +867,95 @@ display_builtin_command (const char *cmd)
   if (strcasecmp (cmd, "alloc") == 0 ||
       strcasecmp (cmd, "allocate") == 0)
     printf (_("alloc - allocate an image\n"
-             "     alloc <filename> <size>\n"
-             "\n"
-             "    This creates an empty (zeroed) file of the given size,\n"
-             "    and then adds so it can be further examined.\n"
-             "\n"
-             "    For more advanced image creation, see qemu-img utility.\n"
-             "\n"
-             "    Size can be specified (where <nn> means a number):\n"
-             "    <nn>             number of kilobytes\n"
-             "      eg: 1440       standard 3.5\" floppy\n"
-             "    <nn>K or <nn>KB  number of kilobytes\n"
-             "    <nn>M or <nn>MB  number of megabytes\n"
-             "    <nn>G or <nn>GB  number of gigabytes\n"
-             "    <nn>sects        number of 512 byte sectors\n"));
+              "     alloc <filename> <size>\n"
+              "\n"
+              "    This creates an empty (zeroed) file of the given size,\n"
+              "    and then adds so it can be further examined.\n"
+              "\n"
+              "    For more advanced image creation, see qemu-img utility.\n"
+              "\n"
+              "    Size can be specified (where <nn> means a number):\n"
+              "    <nn>             number of kilobytes\n"
+              "      eg: 1440       standard 3.5\" floppy\n"
+              "    <nn>K or <nn>KB  number of kilobytes\n"
+              "    <nn>M or <nn>MB  number of megabytes\n"
+              "    <nn>G or <nn>GB  number of gigabytes\n"
+              "    <nn>sects        number of 512 byte sectors\n"));
   else if (strcasecmp (cmd, "echo") == 0)
     printf (_("echo - display a line of text\n"
-             "     echo [<params> ...]\n"
-             "\n"
-             "    This echos the parameters to the terminal.\n"));
+              "     echo [<params> ...]\n"
+              "\n"
+              "    This echos the parameters to the terminal.\n"));
   else if (strcasecmp (cmd, "edit") == 0 ||
-          strcasecmp (cmd, "vi") == 0 ||
-          strcasecmp (cmd, "emacs") == 0)
+           strcasecmp (cmd, "vi") == 0 ||
+           strcasecmp (cmd, "emacs") == 0)
     printf (_("edit - edit a file in the image\n"
-             "     edit <filename>\n"
-             "\n"
-             "    This is used to edit a file.\n"
-             "\n"
-             "    It is the equivalent of (and is implemented by)\n"
-             "    running \"cat\", editing locally, and then \"write-file\".\n"
-             "\n"
-             "    Normally it uses $EDITOR, but if you use the aliases\n"
-             "    \"vi\" or \"emacs\" you will get those editors.\n"
-             "\n"
-             "    NOTE: This will not work reliably for large files\n"
-             "    (> 2 MB) or binary files containing \\0 bytes.\n"));
+              "     edit <filename>\n"
+              "\n"
+              "    This is used to edit a file.\n"
+              "\n"
+              "    It is the equivalent of (and is implemented by)\n"
+              "    running \"cat\", editing locally, and then \"write-file\".\n"
+              "\n"
+              "    Normally it uses $EDITOR, but if you use the aliases\n"
+              "    \"vi\" or \"emacs\" you will get those editors.\n"
+              "\n"
+              "    NOTE: This will not work reliably for large files\n"
+              "    (> 2 MB) or binary files containing \\0 bytes.\n"));
   else if (strcasecmp (cmd, "lcd") == 0)
     printf (_("lcd - local change directory\n"
-             "    lcd <directory>\n"
-             "\n"
-             "    Change guestfish's current directory. This command is\n"
-             "    useful if you want to download files to a particular\n"
-             "    place.\n"));
+              "    lcd <directory>\n"
+              "\n"
+              "    Change guestfish's current directory. This command is\n"
+              "    useful if you want to download files to a particular\n"
+              "    place.\n"));
   else if (strcasecmp (cmd, "glob") == 0)
     printf (_("glob - expand wildcards in command\n"
-             "    glob <command> [<args> ...]\n"
-             "\n"
-             "    Glob runs <command> with wildcards expanded in any\n"
-             "    command args.  Note that the command is run repeatedly\n"
-             "    once for each expanded argument.\n"));
+              "    glob <command> [<args> ...]\n"
+              "\n"
+              "    Glob runs <command> with wildcards expanded in any\n"
+              "    command args.  Note that the command is run repeatedly\n"
+              "    once for each expanded argument.\n"));
   else if (strcasecmp (cmd, "help") == 0)
     printf (_("help - display a list of commands or help on a command\n"
-             "     help cmd\n"
-             "     help\n"));
+              "     help cmd\n"
+              "     help\n"));
   else if (strcasecmp (cmd, "more") == 0 ||
-          strcasecmp (cmd, "less") == 0)
+           strcasecmp (cmd, "less") == 0)
     printf (_("more - view a file in the pager\n"
-             "     more <filename>\n"
-             "\n"
-             "    This is used to view a file in the pager.\n"
-             "\n"
-             "    It is the equivalent of (and is implemented by)\n"
-             "    running \"cat\" and using the pager.\n"
-             "\n"
-             "    Normally it uses $PAGER, but if you use the alias\n"
-             "    \"less\" then it always uses \"less\".\n"
-             "\n"
-             "    NOTE: This will not work reliably for large files\n"
-             "    (> 2 MB) or binary files containing \\0 bytes.\n"));
+              "     more <filename>\n"
+              "\n"
+              "    This is used to view a file in the pager.\n"
+              "\n"
+              "    It is the equivalent of (and is implemented by)\n"
+              "    running \"cat\" and using the pager.\n"
+              "\n"
+              "    Normally it uses $PAGER, but if you use the alias\n"
+              "    \"less\" then it always uses \"less\".\n"
+              "\n"
+              "    NOTE: This will not work reliably for large files\n"
+              "    (> 2 MB) or binary files containing \\0 bytes.\n"));
   else if (strcasecmp (cmd, "quit") == 0 ||
-          strcasecmp (cmd, "exit") == 0 ||
-          strcasecmp (cmd, "q") == 0)
+           strcasecmp (cmd, "exit") == 0 ||
+           strcasecmp (cmd, "q") == 0)
     printf (_("quit - quit guestfish\n"
-             "     quit\n"));
+              "     quit\n"));
   else if (strcasecmp (cmd, "reopen") == 0)
     printf (_("reopen - close and reopen the libguestfs handle\n"
-             "     reopen\n"
-             "\n"
-             "Close and reopen the libguestfs handle.  It is not necessary to use\n"
-             "this normally, because the handle is closed properly when guestfish\n"
-             "exits.  However this is occasionally useful for testing.\n"));
+              "     reopen\n"
+              "\n"
+              "Close and reopen the libguestfs handle.  It is not necessary to use\n"
+              "this normally, because the handle is closed properly when guestfish\n"
+              "exits.  However this is occasionally useful for testing.\n"));
   else if (strcasecmp (cmd, "time") == 0)
     printf (_("time - measure time taken to run command\n"
-             "    time <command> [<args> ...]\n"
-             "\n"
-             "    This runs <command> as usual, and prints the elapsed\n"
-             "    time afterwards.\n"));
+              "    time <command> [<args> ...]\n"
+              "\n"
+              "    This runs <command> as usual, and prints the elapsed\n"
+              "    time afterwards.\n"));
   else
     fprintf (stderr, _("%s: command not known, use -h to list all commands\n"),
-            cmd);
+             cmd);
 }
 
 void
index a65fe1b..772d200 100644 (file)
@@ -80,7 +80,7 @@ extern int do_more (const char *cmd, int argc, char *argv[]);
 /* in rc.c (remote control) */
 extern void rc_listen (void);
 extern int rc_remote (int pid, const char *cmd, int argc, char *argv[],
-                     int exit_on_error);
+                      int exit_on_error);
 
 /* in reopen.c */
 extern int do_reopen (const char *cmd, int argc, char *argv[]);
index 581bc28..2731b2f 100644 (file)
@@ -69,46 +69,46 @@ do_glob (const char *cmd, int argc, char *argv[])
     if (argv[i][0] == '/') {
       pp = guestfs_glob_expand (g, argv[i]);
       if (pp == NULL) {                /* real error in glob_expand */
-       fprintf (stderr, _("glob: guestfs_glob_expand call failed: %s\n"),
-                argv[i]);
-       goto error0;
+        fprintf (stderr, _("glob: guestfs_glob_expand call failed: %s\n"),
+                 argv[i]);
+        goto error0;
       }
 
       /* If there were no matches, then we add a single element list
        * containing just the original argv[i] string.
        */
       if (pp[0] == NULL) {
-       char **pp2;
-
-       pp2 = realloc (pp, sizeof (char *) * 2);
-       if (pp2 == NULL) {
-         perror ("realloc");
-         free (pp);
-         goto error0;
-       }
-       pp = pp2;
-
-       pp[0] = strdup (argv[i]);
-       if (pp[0] == NULL) {
-         perror ("strdup");
-         free (pp);
-         goto error0;
-       }
-       pp[1] = NULL;
+        char **pp2;
+
+        pp2 = realloc (pp, sizeof (char *) * 2);
+        if (pp2 == NULL) {
+          perror ("realloc");
+          free (pp);
+          goto error0;
+        }
+        pp = pp2;
+
+        pp[0] = strdup (argv[i]);
+        if (pp[0] == NULL) {
+          perror ("strdup");
+          free (pp);
+          goto error0;
+        }
+        pp[1] = NULL;
       }
     }
     /* Doesn't begin with '/' */
     else {
       pp = malloc (sizeof (char *) * 2);
       if (pp == NULL) {
-       perror ("malloc");
-       goto error0;
+        perror ("malloc");
+        goto error0;
       }
       pp[0] = strdup (argv[i]);
       if (pp[0] == NULL) {
-       perror ("strdup");
-       free (pp);
-       goto error0;
+        perror ("strdup");
+        free (pp);
+        goto error0;
       }
       pp[1] = NULL;
     }
@@ -130,8 +130,8 @@ do_glob (const char *cmd, int argc, char *argv[])
 
 static void
 glob_issue (char *cmd, int argc,
-           char ***globs, int *posn, int *count,
-           int *r)
+            char ***globs, int *posn, int *count,
+            int *r)
 {
   int i;
   char *argv[argc+1];
index 0d67a62..e88716c 100644 (file)
--- a/fish/rc.c
+++ b/fish/rc.c
@@ -131,52 +131,52 @@ rc_listen (void)
       xdrstdio_create (&xdr, fp, XDR_DECODE);
 
       if (!xdr_guestfish_hello (&xdr, &hello)) {
-       fprintf (stderr, _("guestfish: protocol error: could not read 'hello' message\n"));
-       goto error;
+        fprintf (stderr, _("guestfish: protocol error: could not read 'hello' message\n"));
+        goto error;
       }
 
       if (strcmp (hello.vers, PACKAGE_VERSION) != 0) {
-       fprintf (stderr, _("guestfish: protocol error: version mismatch, server version '%s' does not match client version '%s'.  The two versions must match exactly.\n"),
-                PACKAGE_VERSION,
-                hello.vers);
-       xdr_free ((xdrproc_t) xdr_guestfish_hello, (char *) &hello);
-       goto error;
+        fprintf (stderr, _("guestfish: protocol error: version mismatch, server version '%s' does not match client version '%s'.  The two versions must match exactly.\n"),
+                 PACKAGE_VERSION,
+                 hello.vers);
+        xdr_free ((xdrproc_t) xdr_guestfish_hello, (char *) &hello);
+        goto error;
       }
       xdr_free ((xdrproc_t) xdr_guestfish_hello, (char *) &hello);
 
       while (xdr_guestfish_call (&xdr, &call)) {
-       /* We have to extend and NULL-terminate the argv array. */
-       argc = call.args.args_len;
-       argv = realloc (call.args.args_val, (argc+1) * sizeof (char *));
-       if (argv == NULL) {
-         perror ("realloc");
-         exit (1);
-       }
-       call.args.args_val = argv;
-       argv[argc] = NULL;
-
-       if (verbose) {
-         fprintf (stderr, "guestfish(%d): %s", pid, call.cmd);
-         for (i = 0; i < argc; ++i)
-           fprintf (stderr, " %s", argv[i]);
-         fprintf (stderr, "\n");
-       }
-
-       /* Run the command. */
-       reply.r = issue_command (call.cmd, argv, NULL);
-
-       xdr_free ((xdrproc_t) xdr_guestfish_call, (char *) &call);
-
-       /* Send the reply. */
-       xdrstdio_create (&xdr2, fp, XDR_ENCODE);
-       (void) xdr_guestfish_reply (&xdr2, &reply);
-       xdr_destroy (&xdr2);
-
-       /* Exit on error? */
-       if (call.exit_on_error && reply.r == -1) {
-         unlink (sockpath);
-         exit (1);
-       }
+        /* We have to extend and NULL-terminate the argv array. */
+        argc = call.args.args_len;
+        argv = realloc (call.args.args_val, (argc+1) * sizeof (char *));
+        if (argv == NULL) {
+          perror ("realloc");
+          exit (1);
+        }
+        call.args.args_val = argv;
+        argv[argc] = NULL;
+
+        if (verbose) {
+          fprintf (stderr, "guestfish(%d): %s", pid, call.cmd);
+          for (i = 0; i < argc; ++i)
+            fprintf (stderr, " %s", argv[i]);
+          fprintf (stderr, "\n");
+        }
+
+        /* Run the command. */
+        reply.r = issue_command (call.cmd, argv, NULL);
+
+        xdr_free ((xdrproc_t) xdr_guestfish_call, (char *) &call);
+
+        /* Send the reply. */
+        xdrstdio_create (&xdr2, fp, XDR_ENCODE);
+        (void) xdr_guestfish_reply (&xdr2, &reply);
+        xdr_destroy (&xdr2);
+
+        /* Exit on error? */
+        if (call.exit_on_error && reply.r == -1) {
+          unlink (sockpath);
+          exit (1);
+        }
       }
 
     error:
@@ -192,7 +192,7 @@ rc_listen (void)
 /* Remote control client. */
 int
 rc_remote (int pid, const char *cmd, int argc, char *argv[],
-          int exit_on_error)
+           int exit_on_error)
 {
   guestfish_hello hello;
   guestfish_call call;
index 13e6cd8..f0a2259 100644 (file)
@@ -64,8 +64,8 @@ try_tilde_expansion (char *str)
       len = strlen (home) + strlen (rest);
       str = malloc (len);
       if (str == NULL) {
-       perror ("malloc");
-       exit (1);
+        perror ("malloc");
+        exit (1);
       }
       strcpy (str, home);
       strcat (str, rest);
@@ -113,7 +113,7 @@ find_home_for_username (const char *username, int ulen)
   setpwent ();
   while ((pw = getpwent ()) != NULL) {
     if (strlen (pw->pw_name) == ulen &&
-       strncmp (username, pw->pw_name, ulen) == 0)
+        strncmp (username, pw->pw_name, ulen) == 0)
       return pw->pw_dir;
   }
 
index aae9afe..ed00c18 100644 (file)
@@ -47,8 +47,8 @@ do_time (const char *cmd, int argc, char *argv[])
   end_us = (int64_t) end_t.tv_sec * 1000000 + end_t.tv_usec;
   elapsed_us = end_us - start_us;
   printf ("elapsed time: %d.%02d seconds\n",
-         (int) (elapsed_us / 1000000),
-         (int) ((elapsed_us / 10000) % 100));
+          (int) (elapsed_us / 1000000),
+          (int) ((elapsed_us / 10000) % 100));
 
   return 0;
 }
index 17c6375..943f32e 100755 (executable)
@@ -181,19 +181,19 @@ default.
 =cut
 
 GetOptions ("help|?" => \$help,
-           "version" => \$version,
-           "connect|c=s" => \$uri,
-           "text" => sub { $output = "text" },
-           "none" => sub { $output = "none" },
-           "xml" => sub { $output = "xml" },
-           "yaml" => sub { $output = "yaml" },
-           "perl" => sub { $output = "perl" },
-           "fish" => sub { $output = "fish" },
-           "guestfish" => sub { $output = "fish" },
-           "ro-fish" => sub { $output = "ro-fish" },
-           "ro-guestfish" => sub { $output = "ro-fish" },
-           "query" => sub { $output = "query" },
-           "windows-registry" => \$windows_registry,
+            "version" => \$version,
+            "connect|c=s" => \$uri,
+            "text" => sub { $output = "text" },
+            "none" => sub { $output = "none" },
+            "xml" => sub { $output = "xml" },
+            "yaml" => sub { $output = "yaml" },
+            "perl" => sub { $output = "perl" },
+            "fish" => sub { $output = "fish" },
+            "guestfish" => sub { $output = "fish" },
+            "ro-fish" => sub { $output = "ro-fish" },
+            "ro-guestfish" => sub { $output = "ro-fish" },
+            "query" => sub { $output = "query" },
+            "windows-registry" => \$windows_registry,
     ) or pod2usage (2);
 pod2usage (1) if $help;
 if ($version) {
@@ -211,11 +211,11 @@ my @images;
 if ($uri) {
     my ($conn, $dom);
     ($g, $conn, $dom, @images) =
-       open_guest (\@ARGV, rw => $rw, address => $uri);
+        open_guest (\@ARGV, rw => $rw, address => $uri);
 } else {
     my ($conn, $dom);
     ($g, $conn, $dom, @images) =
-       open_guest (\@ARGV, rw => $rw);
+        open_guest (\@ARGV, rw => $rw);
 }
 
 $g->launch ();
@@ -286,10 +286,10 @@ my $oses = inspect_operating_systems ($g, \%fses);
 if ($output !~ /.*fish$/) {
     my $root_dev;
     foreach $root_dev (sort keys %$oses) {
-       my $os = $oses->{$root_dev};
-       mount_operating_system ($g, $os);
-       inspect_in_detail ($g, $os);
-       $g->umount_all ();
+        my $os = $oses->{$root_dev};
+        mount_operating_system ($g, $os);
+        inspect_in_detail ($g, $os);
+        $g->umount_all ();
     }
 }
 
@@ -304,7 +304,7 @@ if ($output eq "fish" || $output eq "ro-fish") {
     my $root_dev = $osdevs[0];
 
     if ($output eq "ro-fish") {
-       print "--ro ";
+        print "--ro ";
     }
 
     print "-a $_ " foreach @images;
@@ -313,7 +313,7 @@ if ($output eq "fish" || $output eq "ro-fish") {
     # Have to mount / first.  Luckily '/' is early in the ASCII
     # character set, so this should be OK.
     foreach (sort keys %$mounts) {
-       print "-m $mounts->{$_}:$_ " if $_ ne "swap" && $_ ne "none";
+        print "-m $mounts->{$_}:$_ " if $_ ne "swap" && $_ ne "none";
     }
     print "\n"
 }
@@ -326,7 +326,7 @@ elsif ($output eq "perl") {
 # YAML output
 elsif ($output eq "yaml") {
     die __"virt-inspector: no YAML support\n"
-       unless exists $INC{"YAML/Any.pm"};
+        unless exists $INC{"YAML/Any.pm"};
 
     print Dump(%$oses);
 }
@@ -366,69 +366,69 @@ sub output_text_os
     print __"  Mountpoints:\n";
     my $mounts = $os->{mounts};
     foreach (sort keys %$mounts) {
-       printf "    %-30s %s\n", $mounts->{$_}, $_
+        printf "    %-30s %s\n", $mounts->{$_}, $_
     }
 
     print __"  Filesystems:\n";
     my $filesystems = $os->{filesystems};
     foreach (sort keys %$filesystems) {
-       print "    $_:\n";
-       print "      label: $filesystems->{$_}{label}\n"
-           if exists $filesystems->{$_}{label};
-       print "      UUID: $filesystems->{$_}{uuid}\n"
-           if exists $filesystems->{$_}{uuid};
-       print "      type: $filesystems->{$_}{fstype}\n"
-           if exists $filesystems->{$_}{fstype};
-       print "      content: $filesystems->{$_}{content}\n"
-           if exists $filesystems->{$_}{content};
+        print "    $_:\n";
+        print "      label: $filesystems->{$_}{label}\n"
+            if exists $filesystems->{$_}{label};
+        print "      UUID: $filesystems->{$_}{uuid}\n"
+            if exists $filesystems->{$_}{uuid};
+        print "      type: $filesystems->{$_}{fstype}\n"
+            if exists $filesystems->{$_}{fstype};
+        print "      content: $filesystems->{$_}{content}\n"
+            if exists $filesystems->{$_}{content};
     }
 
     if (exists $os->{modprobe_aliases}) {
-       my %aliases = %{$os->{modprobe_aliases}};
-       my @keys = sort keys %aliases;
-       if (@keys) {
-           print __"  Modprobe aliases:\n";
-           foreach (@keys) {
-               printf "    %-30s %s\n", $_, $aliases{$_}->{modulename}
-           }
-       }
+        my %aliases = %{$os->{modprobe_aliases}};
+        my @keys = sort keys %aliases;
+        if (@keys) {
+            print __"  Modprobe aliases:\n";
+            foreach (@keys) {
+                printf "    %-30s %s\n", $_, $aliases{$_}->{modulename}
+            }
+        }
     }
 
     if (exists $os->{initrd_modules}) {
-       my %modvers = %{$os->{initrd_modules}};
-       my @keys = sort keys %modvers;
-       if (@keys) {
-           print __"  Initrd modules:\n";
-           foreach (@keys) {
-               my @modules = @{$modvers{$_}};
-               print "    $_:\n";
-               print "      $_\n" foreach @modules;
-           }
-       }
+        my %modvers = %{$os->{initrd_modules}};
+        my @keys = sort keys %modvers;
+        if (@keys) {
+            print __"  Initrd modules:\n";
+            foreach (@keys) {
+                my @modules = @{$modvers{$_}};
+                print "    $_:\n";
+                print "      $_\n" foreach @modules;
+            }
+        }
     }
 
     print __"  Applications:\n";
     my @apps =  @{$os->{apps}};
     foreach (@apps) {
-       print "    $_->{name} $_->{version}\n"
+        print "    $_->{name} $_->{version}\n"
     }
 
     print __"  Kernels:\n";
     my @kernels = @{$os->{kernels}};
     foreach (@kernels) {
-       print "    $_->{version} ($_->{arch})\n";
-       my @modules = @{$_->{modules}};
-       foreach (@modules) {
-           print "      $_\n";
-       }
+        print "    $_->{version} ($_->{arch})\n";
+        my @modules = @{$_->{modules}};
+        foreach (@modules) {
+            print "      $_\n";
+        }
     }
 
     if (exists $os->{root}->{registry}) {
-       print __"  Windows Registry entries:\n";
-       # These are just lumps of text - dump them out.
-       foreach (@{$os->{root}->{registry}}) {
-           print "$_\n";
-       }
+        print __"  Windows Registry entries:\n";
+        # These are just lumps of text - dump them out.
+        foreach (@{$os->{root}->{registry}}) {
+            print "$_\n";
+        }
     }
 }
 
@@ -486,11 +486,11 @@ sub output_xml_os
     $xml->endTag("filesystems");
 
     if (exists $os->{modprobe_aliases}) {
-       my %aliases = %{$os->{modprobe_aliases}};
-       my @keys = sort keys %aliases;
-       if (@keys) {
+        my %aliases = %{$os->{modprobe_aliases}};
+        my @keys = sort keys %aliases;
+        if (@keys) {
             $xml->startTag("modprobealiases");
-           foreach (@keys) {
+            foreach (@keys) {
                 $xml->startTag("alias", "device" => $_);
 
                 foreach my $field ( [ "modulename" => "modulename" ],
@@ -500,24 +500,24 @@ sub output_xml_os
                 }
 
                 $xml->endTag("alias");
-           }
+            }
             $xml->endTag("modprobealiases");
-       }
+        }
     }
 
     if (exists $os->{initrd_modules}) {
-       my %modvers = %{$os->{initrd_modules}};
-       my @keys = sort keys %modvers;
-       if (@keys) {
+        my %modvers = %{$os->{initrd_modules}};
+        my @keys = sort keys %modvers;
+        if (@keys) {
             $xml->startTag("initrds");
-           foreach (@keys) {
-               my @modules = @{$modvers{$_}};
+            foreach (@keys) {
+                my @modules = @{$modvers{$_}};
                 $xml->startTag("initrd", "version" => $_);
                 $xml->dataElement("module", $_) foreach @modules;
                 $xml->endTag("initrd");
-           }
+            }
             $xml->endTag("initrds");
-       }
+        }
     }
 
     $xml->startTag("applications");
@@ -555,13 +555,13 @@ sub output_xml_os
     my @kernels = @{$os->{kernels}};
     foreach (@kernels) {
         $xml->startTag("kernel",
-                      "version" => $_->{version},
-                      "arch" => $_->{arch});
+                       "version" => $_->{version},
+                       "arch" => $_->{arch});
         $xml->startTag("modules");
-       my @modules = @{$_->{modules}};
-       foreach (@modules) {
+        my @modules = @{$_->{modules}};
+        foreach (@modules) {
             $xml->dataElement("module", $_);
-       }
+        }
         $xml->endTag("modules");
         $xml->dataElement("path", $_->{path}) if(defined($_->{path}));
         $xml->dataElement("package", $_->{package}) if(defined($_->{package}));
@@ -571,10 +571,10 @@ sub output_xml_os
 
     if (exists $os->{root}->{registry}) {
         $xml->startTag("windowsregistryentries");
-       # These are just lumps of text - dump them out.
-       foreach (@{$os->{root}->{registry}}) {
+        # These are just lumps of text - dump them out.
+        foreach (@{$os->{root}->{registry}}) {
             $xml->dataElement("windowsregistryentry", $_);
-       }
+        }
         $xml->endTag("windowsregistryentries");
     }
 
@@ -632,7 +632,7 @@ sub output_query_windows
 {
     my $windows = "no";
     foreach my $os (keys %$oses) {
-       $windows="yes" if $oses->{$os}->{os} eq "windows";
+        $windows="yes" if $oses->{$os}->{os} eq "windows";
     }
     print "windows=$windows\n";
 }
@@ -647,7 +647,7 @@ sub output_query_linux
 {
     my $linux = "no";
     foreach my $os (keys %$oses) {
-       $linux="yes" if $oses->{$os}->{os} eq "linux";
+        $linux="yes" if $oses->{$os}->{os} eq "linux";
     }
     print "linux=$linux\n";
 }
@@ -662,7 +662,7 @@ sub output_query_rhel
 {
     my $rhel = "no";
     foreach my $os (keys %$oses) {
-       $rhel="yes" if ($oses->{$os}->{os} eq "linux" &&
+        $rhel="yes" if ($oses->{$os}->{os} eq "linux" &&
                         $oses->{$os}->{distro} eq "rhel");
     }
     print "rhel=$rhel\n";
@@ -678,7 +678,7 @@ sub output_query_fedora
 {
     my $fedora = "no";
     foreach my $os (keys %$oses) {
-       $fedora="yes" if $oses->{$os}->{os} eq "linux" && $oses->{$os}->{distro} eq "fedora";
+        $fedora="yes" if $oses->{$os}->{os} eq "linux" && $oses->{$os}->{distro} eq "fedora";
     }
     print "fedora=$fedora\n";
 }
@@ -693,7 +693,7 @@ sub output_query_debian
 {
     my $debian = "no";
     foreach my $os (keys %$oses) {
-       $debian="yes" if $oses->{$os}->{os} eq "linux" && $oses->{$os}->{distro} eq "debian";
+        $debian="yes" if $oses->{$os}->{os} eq "linux" && $oses->{$os}->{distro} eq "debian";
     }
     print "debian=$debian\n";
 }
@@ -712,13 +712,13 @@ sub output_query_fullvirt
     # are identified as paravirt.
     # XXX Fails on Windows guests.
     foreach my $os (keys %$oses) {
-       foreach my $kernel (@{$oses->{$os}->{kernels}}) {
-           my $is_pv = $kernel->{version} =~ m/xen/;
-           unless ($is_pv) {
-               print "fullvirt=yes\n";
-               return;
-           }
-       }
+        foreach my $kernel (@{$oses->{$os}->{kernels}}) {
+            my $is_pv = $kernel->{version} =~ m/xen/;
+            unless ($is_pv) {
+                print "fullvirt=yes\n";
+                return;
+            }
+        }
     }
     print "fullvirt=no\n";
 }
@@ -734,13 +734,13 @@ guest).
 sub output_query_xen_domU_kernel
 {
     foreach my $os (keys %$oses) {
-       foreach my $kernel (@{$oses->{$os}->{kernels}}) {
-           my $is_xen = $kernel->{version} =~ m/xen/;
-           if ($is_xen) {
-               print "xen_domU_kernel=yes\n";
-               return;
-           }
-       }
+        foreach my $kernel (@{$oses->{$os}->{kernels}}) {
+            my $is_xen = $kernel->{version} =~ m/xen/;
+            if ($is_xen) {
+                print "xen_domU_kernel=yes\n";
+                return;
+            }
+        }
     }
     print "xen_domU_kernel=no\n";
 }
@@ -757,14 +757,14 @@ reasons).
 sub output_query_xen_pv_drivers
 {
     foreach my $os (keys %$oses) {
-       foreach my $kernel (@{$oses->{$os}->{kernels}}) {
-           foreach my $module (@{$kernel->{modules}}) {
-               if ($module =~ m/xen-/) {
-                   print "xen_pv_drivers=yes\n";
-                   return;
-               }
-           }
-       }
+        foreach my $kernel (@{$oses->{$os}->{kernels}}) {
+            foreach my $module (@{$kernel->{modules}}) {
+                if ($module =~ m/xen-/) {
+                    print "xen_pv_drivers=yes\n";
+                    return;
+                }
+            }
+        }
     }
     print "xen_pv_drivers=no\n";
 }
@@ -780,14 +780,14 @@ performance of KVM.
 sub output_query_virtio_drivers
 {
     foreach my $os (keys %$oses) {
-       foreach my $kernel (@{$oses->{$os}->{kernels}}) {
-           foreach my $module (@{$kernel->{modules}}) {
-               if ($module =~ m/virtio_/) {
-                   print "virtio_drivers=yes\n";
-                   return;
-               }
-           }
-       }
+        foreach my $kernel (@{$oses->{$os}->{kernels}}) {
+            foreach my $module (@{$kernel->{modules}}) {
+                if ($module =~ m/virtio_/) {
+                    print "virtio_drivers=yes\n";
+                    return;
+                }
+            }
+        }
     }
     print "virtio_drivers=no\n";
 }
@@ -805,11 +805,11 @@ sub output_query_userspace_arch
     my %arches;
 
     foreach my $os (keys %$oses) {
-       $arches{$oses->{$os}->{arch}} = 1 if exists $oses->{$os}->{arch};
+        $arches{$oses->{$os}->{arch}} = 1 if exists $oses->{$os}->{arch};
     }
 
     foreach (sort keys %arches) {
-       print "userspace_arch=$_\n";
+        print "userspace_arch=$_\n";
     }
 }
 
@@ -826,13 +826,13 @@ sub output_query_kernel_arch
     my %arches;
 
     foreach my $os (keys %$oses) {
-       foreach my $kernel (@{$oses->{$os}->{kernels}}) {
-           $arches{$kernel->{arch}} = 1 if exists $kernel->{arch};
-       }
+        foreach my $kernel (@{$oses->{$os}->{kernels}}) {
+            $arches{$kernel->{arch}} = 1 if exists $kernel->{arch};
+        }
     }
 
     foreach (sort keys %arches) {
-       print "kernel_arch=$_\n";
+        print "kernel_arch=$_\n";
     }
 }
 
index 1c7a224..c7bcc05 100644 (file)
@@ -31,6 +31,6 @@ public class LibGuestFSException extends Exception {
 
     public LibGuestFSException (String msg)
     {
-       super (msg);
+        super (msg);
     }
 }
index a1d1c07..23f1611 100644 (file)
@@ -21,13 +21,13 @@ import com.redhat.et.libguestfs.*;
 public class GuestFS005Load {
     public static void main (String[] argv)
     {
-       try {
-           GuestFS g = new GuestFS ();
-           g.close ();
-       }
-       catch (Exception exn) {
-           System.err.println (exn);
-           System.exit (1);
-       }
+        try {
+            GuestFS g = new GuestFS ();
+            g.close ();
+        }
+        catch (Exception exn) {
+            System.err.println (exn);
+            System.exit (1);
+        }
     }
 }
index 3d145bb..198ea85 100644 (file)
@@ -22,21 +22,21 @@ import com.redhat.et.libguestfs.*;
 public class GuestFS010Launch {
     public static void main (String[] argv)
     {
-       try {
-           GuestFS g = new GuestFS ();
-           RandomAccessFile f = new RandomAccessFile ("test.img", "rw");
-           f.setLength (500 * 1024 * 1024);
-           f.close ();
-           g.add_drive ("test.img");
-           g.launch ();
-           g.wait_ready ();
-           g.close ();
-           File f2 = new File ("test.img");
-           f2.delete ();
-       }
-       catch (Exception exn) {
-           System.err.println (exn);
-           System.exit (1);
-       }
+        try {
+            GuestFS g = new GuestFS ();
+            RandomAccessFile f = new RandomAccessFile ("test.img", "rw");
+            f.setLength (500 * 1024 * 1024);
+            f.close ();
+            g.add_drive ("test.img");
+            g.launch ();
+            g.wait_ready ();
+            g.close ();
+            File f2 = new File ("test.img");
+            f2.delete ();
+        }
+        catch (Exception exn) {
+            System.err.println (exn);
+            System.exit (1);
+        }
     }
 }
index 7430386..012d68b 100644 (file)
@@ -22,35 +22,35 @@ import com.redhat.et.libguestfs.*;
 public class GuestFS050LVCreate {
     public static void main (String[] argv)
     {
-       try {
-           GuestFS g = new GuestFS ();
-
-           RandomAccessFile f = new RandomAccessFile ("test.img", "rw");
-           f.setLength (500 * 1024 * 1024);
-           f.close ();
-
-           g.add_drive ("test.img");
-           g.launch ();
-           g.wait_ready ();
-
-           g.pvcreate ("/dev/sda");
-           g.vgcreate ("VG", new String[] {"/dev/sda"});
-           g.lvcreate ("LV1", "VG", 200);
-           g.lvcreate ("LV2", "VG", 200);
-
-           String[] lvs = g.lvs ();
-           assert lvs[0].equals ("/dev/VG/LV1");
-           assert lvs[1].equals ("/dev/VG/LV2");
-
-           g.sync ();
-           g.close ();
-
-           File f2 = new File ("test.img");
-           f2.delete ();
-       }
-       catch (Exception exn) {
-           System.err.println (exn);
-           System.exit (1);
-       }
+        try {
+            GuestFS g = new GuestFS ();
+
+            RandomAccessFile f = new RandomAccessFile ("test.img", "rw");
+            f.setLength (500 * 1024 * 1024);
+            f.close ();
+
+            g.add_drive ("test.img");
+            g.launch ();
+            g.wait_ready ();
+
+            g.pvcreate ("/dev/sda");
+            g.vgcreate ("VG", new String[] {"/dev/sda"});
+            g.lvcreate ("LV1", "VG", 200);
+            g.lvcreate ("LV2", "VG", 200);
+
+            String[] lvs = g.lvs ();
+            assert lvs[0].equals ("/dev/VG/LV1");
+            assert lvs[1].equals ("/dev/VG/LV2");
+
+            g.sync ();
+            g.close ();
+
+            File f2 = new File ("test.img");
+            f2.delete ();
+        }
+        catch (Exception exn) {
+            System.err.println (exn);
+            System.exit (1);
+        }
     }
 }
index fa8c4ce..fddd6a0 100644 (file)
@@ -26,15 +26,15 @@ AC_DEFUN([AC_PROG_OCAML],
      AC_CHECK_TOOL([OCAMLOPT],[ocamlopt],[no])
      OCAMLBEST=byte
      if test "$OCAMLOPT" = "no"; then
-       AC_MSG_WARN([Cannot find ocamlopt; bytecode compilation only.])
+        AC_MSG_WARN([Cannot find ocamlopt; bytecode compilation only.])
      else
-       TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
-       if test "$TMPVERSION" != "$OCAMLVERSION" ; then
-           AC_MSG_RESULT([versions differs from ocamlc; ocamlopt discarded.])
-           OCAMLOPT=no
-       else
-           OCAMLBEST=opt
-       fi
+        TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+        if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+            AC_MSG_RESULT([versions differs from ocamlc; ocamlopt discarded.])
+            OCAMLOPT=no
+        else
+            OCAMLBEST=opt
+        fi
      fi
 
      AC_SUBST([OCAMLBEST])
@@ -42,24 +42,24 @@ AC_DEFUN([AC_PROG_OCAML],
      # checking for ocamlc.opt
      AC_CHECK_TOOL([OCAMLCDOTOPT],[ocamlc.opt],[no])
      if test "$OCAMLCDOTOPT" != "no"; then
-       TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
-       if test "$TMPVERSION" != "$OCAMLVERSION" ; then
-           AC_MSG_RESULT([versions differs from ocamlc; ocamlc.opt discarded.])
-       else
-           OCAMLC=$OCAMLCDOTOPT
-       fi
+        TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+        if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+            AC_MSG_RESULT([versions differs from ocamlc; ocamlc.opt discarded.])
+        else
+            OCAMLC=$OCAMLCDOTOPT
+        fi
      fi
 
      # checking for ocamlopt.opt
      if test "$OCAMLOPT" != "no" ; then
-       AC_CHECK_TOOL([OCAMLOPTDOTOPT],[ocamlopt.opt],[no])
-       if test "$OCAMLOPTDOTOPT" != "no"; then
-          TMPVERSION=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
-          if test "$TMPVERSION" != "$OCAMLVERSION" ; then
-             AC_MSG_RESULT([version differs from ocamlc; ocamlopt.opt discarded.])
-          else
-             OCAMLOPT=$OCAMLOPTDOTOPT
-          fi
+        AC_CHECK_TOOL([OCAMLOPTDOTOPT],[ocamlopt.opt],[no])
+        if test "$OCAMLOPTDOTOPT" != "no"; then
+           TMPVERSION=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+           if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+              AC_MSG_RESULT([version differs from ocamlc; ocamlopt.opt discarded.])
+           else
+              OCAMLOPT=$OCAMLOPTDOTOPT
+           fi
         fi
      fi
 
@@ -92,7 +92,7 @@ AC_DEFUN([AC_PROG_OCAMLLEX],
   if test "$OCAMLLEX" != "no"; then
     AC_CHECK_TOOL([OCAMLLEXDOTOPT],[ocamllex.opt],[no])
     if test "$OCAMLLEXDOTOPT" != "no"; then
-       OCAMLLEX=$OCAMLLEXDOTOPT
+        OCAMLLEX=$OCAMLLEXDOTOPT
     fi
   fi
   AC_SUBST([OCAMLLEX])
@@ -114,7 +114,7 @@ AC_DEFUN([AC_PROG_CAMLP4],
   if test "$CAMLP4" != "no"; then
      TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'`
      if test "$TMPVERSION" != "$OCAMLVERSION" ; then
-       AC_MSG_RESULT([versions differs from ocamlc])
+        AC_MSG_RESULT([versions differs from ocamlc])
         CAMLP4=no
      fi
   fi
index ebed325..b93b0b2 100755 (executable)
@@ -43,8 +43,8 @@ for f in recipes/*.sh; do
     b=`basename $f .sh`
     echo -n '    <li> <a href="#'$b'">'$b.sh
     if [ -r recipes/$b.title ]; then
-       echo -n ': '
-       cat recipes/$b.title
+        echo -n ': '
+        cat recipes/$b.title
     fi
     echo '</a> </li>'
 done
@@ -57,23 +57,23 @@ for f in recipes/*.sh; do
     echo -n '<a name="'$b'"></a>'
     echo -n '<h2>'$b'.sh'
     if [ -r recipes/$b.title ]; then
-       echo -n ': '
-       cat recipes/$b.title
+        echo -n ': '
+        cat recipes/$b.title
     fi
     echo -n '<small style="font-size: 8pt; margin-left: 2em;"><a href="#'$b'">permalink</a></small>'
     echo '</h2>'
     if [ -r recipes/$b.html ]; then
-       cat recipes/$b.html
+        cat recipes/$b.html
     fi
     echo '<h3>'$b'.sh</h3>'
     echo '<pre class="example">'
     sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < $f
     echo '</pre>'
     if [ -r recipes/$b.example ]; then
-       echo '<h3>Example output</h3>'
-       echo '<pre>'
-       sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < recipes/$b.example
-       echo '</pre>'
+        echo '<h3>Example output</h3>'
+        echo '<pre>'
+        sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < recipes/$b.example
+        echo '</pre>'
     fi
 done
 
index f333810..e9368a8 100644 (file)
@@ -44,10 +44,10 @@ let () =
   ) dirs in
 
   if dirs <> [ ".", 'd';
-              "..", 'd';
-              "lost+found", 'd';
-              "p", 'd';
-              "q", 'r' ] then
+               "..", 'd';
+               "lost+found", 'd';
+               "p", 'd';
+               "q", 'r' ] then
     failwith "Guestfs.readdir returned incorrect result";
 
   Guestfs.close g;
index 8e20593..72b0f7d 100644 (file)
@@ -128,80 +128,80 @@ sub open_guest
 
     my @images = ();
     if (ref ($first) eq "ARRAY") {
-       @images = @$first;
+        @images = @$first;
     } elsif (ref ($first) eq "SCALAR") {
-       @images = ($first);
+        @images = ($first);
     } else {
-       die __"open_guest: first parameter must be a string or an arrayref"
+        die __"open_guest: first parameter must be a string or an arrayref"
     }
 
     my ($conn, $dom);
 
     if (-e $images[0]) {
-       foreach (@images) {
-           die __x("guest image {imagename} does not exist or is not readable",
-                   imagename => $_)
-               unless -r $_;
-       }
+        foreach (@images) {
+            die __x("guest image {imagename} does not exist or is not readable",
+                    imagename => $_)
+                unless -r $_;
+        }
     } else {
-       die __"open_guest: no libvirt support (install Sys::Virt, XML::XPath and XML::XPath::XMLParser)"
-           unless exists $INC{"Sys/Virt.pm"} &&
-           exists $INC{"XML/XPath.pm"} &&
-           exists $INC{"XML/XPath/XMLParser.pm"};
-
-       die __"open_guest: too many domains listed on command line"
-           if @images > 1;
-
-       $conn = Sys::Virt->new (readonly => 1, @_);
-       die __"open_guest: cannot connect to libvirt" unless $conn;
-
-       my @doms = $conn->list_defined_domains ();
-       my $isitinactive = 1;
-       unless ($readwrite) {
-           # In the case where we want read-only access to a domain,
-           # allow the user to specify an active domain too.
-           push @doms, $conn->list_domains ();
-           $isitinactive = 0;
-       }
-       foreach (@doms) {
-           if ($_->get_name () eq $images[0]) {
-               $dom = $_;
-               last;
-           }
-       }
-
-       unless ($dom) {
-           if ($isitinactive) {
-               die __x("{imagename} is not the name of an inactive libvirt domain\n",
-                       imagename => $images[0]);
-           } else {
-               die __x("{imagename} is not the name of a libvirt domain\n",
-                       imagename => $images[0]);
-           }
-       }
-
-       # Get the names of the image(s).
-       my $xml = $dom->get_xml_description ();
-
-       my $p = XML::XPath->new (xml => $xml);
-       my @disks = $p->findnodes ('//devices/disk/source/@dev');
-       push (@disks, $p->findnodes ('//devices/disk/source/@file'));
-
-       die __x("{imagename} seems to have no disk devices\n",
-               imagename => $images[0])
-           unless @disks;
-
-       @images = map { $_->getData } @disks;
+        die __"open_guest: no libvirt support (install Sys::Virt, XML::XPath and XML::XPath::XMLParser)"
+            unless exists $INC{"Sys/Virt.pm"} &&
+            exists $INC{"XML/XPath.pm"} &&
+            exists $INC{"XML/XPath/XMLParser.pm"};
+
+        die __"open_guest: too many domains listed on command line"
+            if @images > 1;
+
+        $conn = Sys::Virt->new (readonly => 1, @_);
+        die __"open_guest: cannot connect to libvirt" unless $conn;
+
+        my @doms = $conn->list_defined_domains ();
+        my $isitinactive = 1;
+        unless ($readwrite) {
+            # In the case where we want read-only access to a domain,
+            # allow the user to specify an active domain too.
+            push @doms, $conn->list_domains ();
+            $isitinactive = 0;
+        }
+        foreach (@doms) {
+            if ($_->get_name () eq $images[0]) {
+                $dom = $_;
+                last;
+            }
+        }
+
+        unless ($dom) {
+            if ($isitinactive) {
+                die __x("{imagename} is not the name of an inactive libvirt domain\n",
+                        imagename => $images[0]);
+            } else {
+                die __x("{imagename} is not the name of a libvirt domain\n",
+                        imagename => $images[0]);
+            }
+        }
+
+        # Get the names of the image(s).
+        my $xml = $dom->get_xml_description ();
+
+        my $p = XML::XPath->new (xml => $xml);
+        my @disks = $p->findnodes ('//devices/disk/source/@dev');
+        push (@disks, $p->findnodes ('//devices/disk/source/@file'));
+
+        die __x("{imagename} seems to have no disk devices\n",
+                imagename => $images[0])
+            unless @disks;
+
+        @images = map { $_->getData } @disks;
     }
 
     # We've now got the list of @images, so feed them to libguestfs.
     my $g = Sys::Guestfs->new ();
     foreach (@images) {
-       if ($readwrite) {
-           $g->add_drive ($_);
-       } else {
-           $g->add_drive_ro ($_);
-       }
+        if ($readwrite) {
+            $g->add_drive ($_);
+        } else {
+            $g->add_drive_ro ($_);
+        }
     }
 
     return wantarray ? ($g, $conn, $dom, @images) : $g
@@ -239,7 +239,7 @@ sub _is_pv {
     my $t = shift;
 
     foreach (@_) {
-       return 1 if $_ eq $t;
+        return 1 if $_ eq $t;
     }
     0;
 }
@@ -271,8 +271,8 @@ sub resolve_windows_path
     my $path = shift;
 
     if (substr ($path, 0, 1) ne "/") {
-       warn __"resolve_windows_path: path must start with a / character";
-       return undef;
+        warn __"resolve_windows_path: path must start with a / character";
+        return undef;
     }
 
     my @elems = split (/\//, $path);
@@ -282,19 +282,19 @@ sub resolve_windows_path
     $path = "/";
 
     foreach my $dir (@elems) {
-       my $found = 0;
-       foreach ($g->ls ($path)) {
-           if (lc ($_) eq lc ($dir)) {
-               if ($path eq "/") {
-                   $path = "/$_";
-                   $found = 1;
-               } else {
-                   $path = "$path/$_";
-                   $found = 1;
-               }
-           }
-       }
-       return undef unless $found;
+        my $found = 0;
+        foreach ($g->ls ($path)) {
+            if (lc ($_) eq lc ($dir)) {
+                if ($path eq "/") {
+                    $path = "/$_";
+                    $found = 1;
+                } else {
+                    $path = "$path/$_";
+                    $found = 1;
+                }
+            }
+        }
+        return undef unless $found;
     }
 
     return $path;
@@ -376,27 +376,27 @@ sub _elf_arch_to_canonical
     local $_ = shift;
 
     if ($_ eq "Intel 80386") {
-       return "i386";
+        return "i386";
     } elsif ($_ eq "Intel 80486") {
-       return "i486";  # probably not in the wild
+        return "i486"; # probably not in the wild
     } elsif ($_ eq "x86-64") {
-       return "x86_64";
+        return "x86_64";
     } elsif ($_ eq "AMD x86-64") {
-       return "x86_64";
+        return "x86_64";
     } elsif (/SPARC32/) {
-       return "sparc";
+        return "sparc";
     } elsif (/SPARC V9/) {
-       return "sparc64";
+        return "sparc64";
     } elsif ($_ eq "IA-64") {
-       return "ia64";
+        return "ia64";
     } elsif (/64.*PowerPC/) {
-       return "ppc64";
+        return "ppc64";
     } elsif (/PowerPC/) {
-       return "ppc";
+        return "ppc";
     } else {
-       warn __x("returning non-canonical architecture type '{arch}'",
-                arch => $_);
-       return $_;
+        warn __x("returning non-canonical architecture type '{arch}'",
+                 arch => $_);
+        return $_;
     }
 }
 
@@ -412,49 +412,49 @@ sub file_architecture
     my $file = $g->file ($path);
 
     if ($file =~ /ELF.*(?:executable|shared object|relocatable), (.+?),/) {
-       # ELF executable or shared object.  We need to convert
-       # what file(1) prints into the canonical form.
-       return _elf_arch_to_canonical ($1);
+        # ELF executable or shared object.  We need to convert
+        # what file(1) prints into the canonical form.
+        return _elf_arch_to_canonical ($1);
     } elsif ($file =~ /PE32 executable/) {
-       return "i386";          # Win32 executable or DLL
+        return "i386";         # Win32 executable or DLL
     } elsif ($file =~ /PE32\+ executable/) {
-       return "x86_64";        # Win64 executable or DLL
+        return "x86_64";       # Win64 executable or DLL
     }
 
     elsif ($file =~ /cpio archive/) {
-       # Probably an initrd.
-       my $zcat = "cat";
-       if ($file =~ /gzip/) {
-           $zcat = "zcat";
-       } elsif ($file =~ /bzip2/) {
-           $zcat = "bzcat";
-       }
-
-       # Download and unpack it to find a binary file.
-       my $dir = tempdir (CLEANUP => 1);
-       $g->download ($path, "$dir/initrd");
-
-       my $bins = join " ", map { "bin/$_" } @_initrd_binaries;
-       my $cmd = "cd $dir && $zcat initrd | cpio --quiet -id $bins";
-       my $r = system ($cmd);
-       die __x("cpio command failed: {error}", error => $?)
-           unless $r == 0;
-
-       foreach my $bin (@_initrd_binaries) {
-           if (-f "$dir/bin/$bin") {
-               $_ = `file $dir/bin/$bin`;
-               if (/ELF.*executable, (.+?),/) {
-                   return _elf_arch_to_canonical ($1);
-               }
-           }
-       }
-
-       die __x("file_architecture: no known binaries found in initrd image: {path}",
-               path => $path);
+        # Probably an initrd.
+        my $zcat = "cat";
+        if ($file =~ /gzip/) {
+            $zcat = "zcat";
+        } elsif ($file =~ /bzip2/) {
+            $zcat = "bzcat";
+        }
+
+        # Download and unpack it to find a binary file.
+        my $dir = tempdir (CLEANUP => 1);
+        $g->download ($path, "$dir/initrd");
+
+        my $bins = join " ", map { "bin/$_" } @_initrd_binaries;
+        my $cmd = "cd $dir && $zcat initrd | cpio --quiet -id $bins";
+        my $r = system ($cmd);
+        die __x("cpio command failed: {error}", error => $?)
+            unless $r == 0;
+
+        foreach my $bin (@_initrd_binaries) {
+            if (-f "$dir/bin/$bin") {
+                $_ = `file $dir/bin/$bin`;
+                if (/ELF.*executable, (.+?),/) {
+                    return _elf_arch_to_canonical ($1);
+                }
+            }
+        }
+
+        die __x("file_architecture: no known binaries found in initrd image: {path}",
+                path => $path);
     }
 
     die __x("file_architecture: unknown architecture: {path}",
-           path => $path);
+            path => $path);
 }
 
 =head1 OPERATING SYSTEM INSPECTION FUNCTIONS
@@ -689,84 +689,84 @@ sub inspect_partition
     # First try 'file(1)' on it.
     my $file = $g->file ($dev);
     if ($file =~ /ext2 filesystem data/) {
-       $r{fstype} = "ext2";
-       $r{fsos} = "linux";
+        $r{fstype} = "ext2";
+        $r{fsos} = "linux";
     } elsif ($file =~ /ext3 filesystem data/) {
-       $r{fstype} = "ext3";
-       $r{fsos} = "linux";
+        $r{fstype} = "ext3";
+        $r{fsos} = "linux";
     } elsif ($file =~ /ext4 filesystem data/) {
-       $r{fstype} = "ext4";
-       $r{fsos} = "linux";
+        $r{fstype} = "ext4";
+        $r{fsos} = "linux";
     } elsif ($file =~ m{Linux/i386 swap file}) {
-       $r{fstype} = "swap";
-       $r{fsos} = "linux";
-       $r{is_swap} = 1;
+        $r{fstype} = "swap";
+        $r{fsos} = "linux";
+        $r{is_swap} = 1;
     }
 
     # If it's ext2/3/4, then we want the UUID and label.
     if (exists $r{fstype} && $r{fstype} =~ /^ext/) {
-       $r{uuid} = $g->get_e2uuid ($dev);
-       $r{label} = $g->get_e2label ($dev);
+        $r{uuid} = $g->get_e2uuid ($dev);
+        $r{label} = $g->get_e2label ($dev);
     }
 
     # Try mounting it, fnarrr.
     if (!$r{is_swap}) {
-       $r{is_mountable} = 1;
-       eval { $g->mount_ro ($dev, "/") };
-       if ($@) {
-           # It's not mountable, probably empty or some format
-           # we don't understand.
-           $r{is_mountable} = 0;
-           goto OUT;
-       }
-
-       # Grub /boot?
-       if ($g->is_file ("/grub/menu.lst") ||
-           $g->is_file ("/grub/grub.conf")) {
-           $r{content} = "linux-grub";
-           _check_grub ($g, \%r);
-           goto OUT;
-       }
-
-       # Linux root?
-       if ($g->is_dir ("/etc") && $g->is_dir ("/bin") &&
-           $g->is_file ("/etc/fstab")) {
-           $r{content} = "linux-root";
-           $r{is_root} = 1;
-           _check_linux_root ($g, \%r);
-           goto OUT;
-       }
-
-       # Linux /usr/local.
-       if ($g->is_dir ("/etc") && $g->is_dir ("/bin") &&
-           $g->is_dir ("/share") && !$g->exists ("/local") &&
-           !$g->is_file ("/etc/fstab")) {
-           $r{content} = "linux-usrlocal";
-           goto OUT;
-       }
-
-       # Linux /usr.
-       if ($g->is_dir ("/etc") && $g->is_dir ("/bin") &&
-           $g->is_dir ("/share") && $g->exists ("/local") &&
-           !$g->is_file ("/etc/fstab")) {
-           $r{content} = "linux-usr";
-           goto OUT;
-       }
-
-       # Windows root?
-       if ($g->is_file ("/AUTOEXEC.BAT") ||
-           $g->is_file ("/autoexec.bat") ||
-           $g->is_dir ("/Program Files") ||
-           $g->is_dir ("/WINDOWS") ||
-           $g->is_file ("/boot.ini") ||
-           $g->is_file ("/ntldr")) {
-           $r{fstype} = "ntfs"; # XXX this is a guess
-           $r{fsos} = "windows";
-           $r{content} = "windows-root";
-           $r{is_root} = 1;
-           _check_windows_root ($g, \%r, $use_windows_registry);
-           goto OUT;
-       }
+        $r{is_mountable} = 1;
+        eval { $g->mount_ro ($dev, "/") };
+        if ($@) {
+            # It's not mountable, probably empty or some format
+            # we don't understand.
+            $r{is_mountable} = 0;
+            goto OUT;
+        }
+
+        # Grub /boot?
+        if ($g->is_file ("/grub/menu.lst") ||
+            $g->is_file ("/grub/grub.conf")) {
+            $r{content} = "linux-grub";
+            _check_grub ($g, \%r);
+            goto OUT;
+        }
+
+        # Linux root?
+        if ($g->is_dir ("/etc") && $g->is_dir ("/bin") &&
+            $g->is_file ("/etc/fstab")) {
+            $r{content} = "linux-root";
+            $r{is_root} = 1;
+            _check_linux_root ($g, \%r);
+            goto OUT;
+        }
+
+        # Linux /usr/local.
+        if ($g->is_dir ("/etc") && $g->is_dir ("/bin") &&
+            $g->is_dir ("/share") && !$g->exists ("/local") &&
+            !$g->is_file ("/etc/fstab")) {
+            $r{content} = "linux-usrlocal";
+            goto OUT;
+        }
+
+        # Linux /usr.
+        if ($g->is_dir ("/etc") && $g->is_dir ("/bin") &&
+            $g->is_dir ("/share") && $g->exists ("/local") &&
+            !$g->is_file ("/etc/fstab")) {
+            $r{content} = "linux-usr";
+            goto OUT;
+        }
+
+        # Windows root?
+        if ($g->is_file ("/AUTOEXEC.BAT") ||
+            $g->is_file ("/autoexec.bat") ||
+            $g->is_dir ("/Program Files") ||
+            $g->is_dir ("/WINDOWS") ||
+            $g->is_file ("/boot.ini") ||
+            $g->is_file ("/ntldr")) {
+            $r{fstype} = "ntfs"; # XXX this is a guess
+            $r{fsos} = "windows";
+            $r{content} = "windows-root";
+            $r{is_root} = 1;
+            _check_windows_root ($g, \%r, $use_windows_registry);
+            goto OUT;
+        }
     }
 
   OUT:
@@ -785,13 +785,13 @@ sub _check_linux_root
     if ($g->exists ("/etc/redhat-release")) {
         $r->{package_format} = "rpm";
 
-       $_ = $g->cat ("/etc/redhat-release");
-       if (/Fedora release (\d+)(?:\.(\d+))?/) {
-           $r->{osdistro} = "fedora";
-           $r->{os_major_version} = "$1";
-           $r->{os_minor_version} = "$2" if(defined($2));
-           $r->{package_management} = "yum";
-       }
+        $_ = $g->cat ("/etc/redhat-release");
+        if (/Fedora release (\d+)(?:\.(\d+))?/) {
+            $r->{osdistro} = "fedora";
+            $r->{os_major_version} = "$1";
+            $r->{os_minor_version} = "$2" if(defined($2));
+            $r->{package_management} = "yum";
+        }
 
         elsif (/(Red Hat Enterprise Linux|CentOS|Scientific Linux)/) {
             my $distro = $1;
@@ -839,51 +839,51 @@ sub _check_linux_root
         }
 
         else {
-           $r->{osdistro} = "redhat-based";
-       }
+            $r->{osdistro} = "redhat-based";
+        }
     } elsif ($g->is_file ("/etc/debian_version")) {
         $r->{package_format} = "dpkg";
         $r->{package_management} = "apt";
 
-       $_ = $g->cat ("/etc/debian_version");
-       if (/(\d+)\.(\d+)/) {
-           $r->{osdistro} = "debian";
-           $r->{os_major_version} = "$1";
-           $r->{os_minor_version} = "$2";
-       } else {
-           $r->{osdistro} = "debian";
-       }
+        $_ = $g->cat ("/etc/debian_version");
+        if (/(\d+)\.(\d+)/) {
+            $r->{osdistro} = "debian";
+            $r->{os_major_version} = "$1";
+            $r->{os_minor_version} = "$2";
+        } else {
+            $r->{osdistro} = "debian";
+        }
     }
 
     # Parse the contents of /etc/fstab.  This is pretty vital so
     # we can determine where filesystems are supposed to be mounted.
     eval "\$_ = \$g->cat ('/etc/fstab');";
     if (!$@ && $_) {
-       my @lines = split /\n/;
-       my @fstab;
-       foreach (@lines) {
-           my @fields = split /[ \t]+/;
-           if (@fields >= 2) {
-               my $spec = $fields[0]; # first column (dev/label/uuid)
-               my $file = $fields[1]; # second column (mountpoint)
-               if ($spec =~ m{^/} ||
-                   $spec =~ m{^LABEL=} ||
-                   $spec =~ m{^UUID=} ||
-                   $file eq "swap") {
-                   push @fstab, [$spec, $file]
-               }
-           }
-       }
-       $r->{fstab} = \@fstab if @fstab;
+        my @lines = split /\n/;
+        my @fstab;
+        foreach (@lines) {
+            my @fields = split /[ \t]+/;
+            if (@fields >= 2) {
+                my $spec = $fields[0]; # first column (dev/label/uuid)
+                my $file = $fields[1]; # second column (mountpoint)
+                if ($spec =~ m{^/} ||
+                    $spec =~ m{^LABEL=} ||
+                    $spec =~ m{^UUID=} ||
+                    $file eq "swap") {
+                    push @fstab, [$spec, $file]
+                }
+            }
+        }
+        $r->{fstab} = \@fstab if @fstab;
     }
 
     # Determine the architecture of this root.
     my $arch;
     foreach ("/bin/bash", "/bin/ls", "/bin/echo", "/bin/rm", "/bin/sh") {
-       if ($g->is_file ($_)) {
-           $arch = file_architecture ($g, $_);
-           last;
-       }
+        if ($g->is_file ($_)) {
+            $arch = file_architecture ($g, $_);
+            last;
+        }
     }
 
     $r->{arch} = $arch if defined $arch;
@@ -907,31 +907,31 @@ sub _check_windows_root
     $r->{boot_ini} = $boot_ini;
 
     if (defined $r->{boot_ini}) {
-       $_ = $g->cat ($boot_ini);
-       my @lines = split /\n/;
-       my $section;
-       my $systemroot;
-       foreach (@lines) {
-           if (m/\[.*\]/) {
-               $section = $1;
-           } elsif (m/^default=.*?\\(\w+)$/i) {
-               $systemroot = $1;
-               last;
-           } elsif (m/\\(\w+)=/) {
-               $systemroot = $1;
-               last;
-           }
-       }
-
-       if (defined $systemroot) {
-           $r->{systemroot} = resolve_windows_path ($g, "/$systemroot");
-           if (defined $r->{systemroot}) {
-               _check_windows_arch ($g, $r, $r->{systemroot});
-               if ($use_windows_registry) {
-                   _check_windows_registry ($g, $r, $r->{systemroot});
-               }
-           }
-       }
+        $_ = $g->cat ($boot_ini);
+        my @lines = split /\n/;
+        my $section;
+        my $systemroot;
+        foreach (@lines) {
+            if (m/\[.*\]/) {
+                $section = $1;
+            } elsif (m/^default=.*?\\(\w+)$/i) {
+                $systemroot = $1;
+                last;
+            } elsif (m/\\(\w+)=/) {
+                $systemroot = $1;
+                last;
+            }
+        }
+
+        if (defined $systemroot) {
+            $r->{systemroot} = resolve_windows_path ($g, "/$systemroot");
+            if (defined $r->{systemroot}) {
+                _check_windows_arch ($g, $r, $r->{systemroot});
+                if ($use_windows_registry) {
+                    _check_windows_registry ($g, $r, $r->{systemroot});
+                }
+            }
+        }
     }
 }
 
@@ -945,7 +945,7 @@ sub _check_windows_arch
     my $systemroot = shift;
 
     my $cmd_exe =
-       resolve_windows_path ($g, $r->{systemroot} . "/system32/cmd.exe");
+        resolve_windows_path ($g, $r->{systemroot} . "/system32/cmd.exe");
     $r->{arch} = file_architecture ($g, $cmd_exe) if $cmd_exe;
 }
 
@@ -961,16 +961,16 @@ sub _check_windows_registry
 
     my $configdir = resolve_windows_path ($g, "$systemroot/system32/config");
     if (defined $configdir) {
-       my $softwaredir = resolve_windows_path ($g, "$configdir/software");
-       if (defined $softwaredir) {
-           _load_windows_registry ($g, $r, $softwaredir,
-                                   "HKEY_LOCAL_MACHINE\\SOFTWARE");
-       }
-       my $systemdir = resolve_windows_path ($g, "$configdir/system");
-       if (defined $systemdir) {
-           _load_windows_registry ($g, $r, $systemdir,
-                                   "HKEY_LOCAL_MACHINE\\System");
-       }
+        my $softwaredir = resolve_windows_path ($g, "$configdir/software");
+        if (defined $softwaredir) {
+            _load_windows_registry ($g, $r, $softwaredir,
+                                    "HKEY_LOCAL_MACHINE\\SOFTWARE");
+        }
+        my $systemdir = resolve_windows_path ($g, "$configdir/system");
+        if (defined $systemdir) {
+            _load_windows_registry ($g, $r, $systemdir,
+                                    "HKEY_LOCAL_MACHINE\\System");
+        }
     }
 }
 
@@ -1004,8 +1004,8 @@ sub _load_windows_registry
     close SAVEERR;
 
     unless ($res == 0) {
-       warn __x("reged command failed: {errormsg}", errormsg => $?);
-       return;
+        warn __x("reged command failed: {errormsg}", errormsg => $?);
+        return;
     }
 
     # Some versions of reged segfault on inputs.  If that happens we
@@ -1013,8 +1013,8 @@ sub _load_windows_registry
     # it.
     my $content;
     unless (open F, "$dir/out") {
-       warn __x("no output from reged command: {errormsg}", errormsg => $!);
-       return;
+        warn __x("no output from reged command: {errormsg}", errormsg => $!);
+        return;
     }
     { local $/ = undef; $content = <F>; }
     close F;
@@ -1120,15 +1120,15 @@ sub inspect_operating_systems
     my %oses = ();
 
     foreach (sort keys %$fses) {
-       if ($fses->{$_}->{is_root}) {
-           my %r = (
-               root => $fses->{$_},
-               root_device => $_
-               );
-           _get_os_version ($g, \%r);
-           _assign_mount_points ($g, $fses, \%r);
-           $oses{$_} = \%r;
-       }
+        if ($fses->{$_}->{is_root}) {
+            my %r = (
+                root => $fses->{$_},
+                root_device => $_
+                );
+            _get_os_version ($g, \%r);
+            _assign_mount_points ($g, $fses, \%r);
+            $oses{$_} = \%r;
+        }
     }
 
     return \%oses;
@@ -1165,22 +1165,22 @@ sub _assign_mount_points
 
     # Use /etc/fstab if we have it to mount the rest.
     if (exists $r->{root}->{fstab}) {
-       my @fstab = @{$r->{root}->{fstab}};
-       foreach (@fstab) {
-           my ($spec, $file) = @$_;
-
-           my ($dev, $fs) = _find_filesystem ($g, $fses, $spec);
-           if ($dev) {
-               $r->{mounts}->{$file} = $dev;
-               $r->{filesystems}->{$dev} = $fs;
-               if (exists $fs->{used}) {
-                   $fs->{used}++
-               } else {
-                   $fs->{used} = 1
-               }
+        my @fstab = @{$r->{root}->{fstab}};
+        foreach (@fstab) {
+            my ($spec, $file) = @$_;
+
+            my ($dev, $fs) = _find_filesystem ($g, $fses, $spec);
+            if ($dev) {
+                $r->{mounts}->{$file} = $dev;
+                $r->{filesystems}->{$dev} = $fs;
+                if (exists $fs->{used}) {
+                    $fs->{used}++
+                } else {
+                    $fs->{used} = 1
+                }
                 $fs->{spec} = $spec;
-           }
-       }
+            }
+        }
     }
 }
 
@@ -1192,27 +1192,27 @@ sub _find_filesystem
     local $_ = shift;
 
     if (/^LABEL=(.*)/) {
-       my $label = $1;
-       foreach (sort keys %$fses) {
-           if (exists $fses->{$_}->{label} &&
-               $fses->{$_}->{label} eq $label) {
-               return ($_, $fses->{$_});
-           }
-       }
-       warn __x("unknown filesystem label {label}\n", label => $label);
-       return ();
+        my $label = $1;
+        foreach (sort keys %$fses) {
+            if (exists $fses->{$_}->{label} &&
+                $fses->{$_}->{label} eq $label) {
+                return ($_, $fses->{$_});
+            }
+        }
+        warn __x("unknown filesystem label {label}\n", label => $label);
+        return ();
     } elsif (/^UUID=(.*)/) {
-       my $uuid = $1;
-       foreach (sort keys %$fses) {
-           if (exists $fses->{$_}->{uuid} &&
-               $fses->{$_}->{uuid} eq $uuid) {
-               return ($_, $fses->{$_});
-           }
-       }
-       warn __x("unknown filesystem UUID {uuid}\n", uuid => $uuid);
-       return ();
+        my $uuid = $1;
+        foreach (sort keys %$fses) {
+            if (exists $fses->{$_}->{uuid} &&
+                $fses->{$_}->{uuid} eq $uuid) {
+                return ($_, $fses->{$_});
+            }
+        }
+        warn __x("unknown filesystem UUID {uuid}\n", uuid => $uuid);
+        return ();
     } else {
-       return ($_, $fses->{$_}) if exists $fses->{$_};
+        return ($_, $fses->{$_}) if exists $fses->{$_};
 
         # The following is to handle the case where an fstab entry specifies a
         # specific device rather than its label or uuid, and the libguestfs
@@ -1220,20 +1220,20 @@ sub _find_filesystem
         # different driver.
         # This will work as long as the underlying drivers recognise devices in
         # the same order.
-       if (m{^/dev/hd(.*)} && exists $fses->{"/dev/sd$1"}) {
-           return ("/dev/sd$1", $fses->{"/dev/sd$1"});
-       }
-       if (m{^/dev/xvd(.*)} && exists $fses->{"/dev/sd$1"}) {
-           return ("/dev/sd$1", $fses->{"/dev/sd$1"});
-       }
-       if (m{^/dev/mapper/(.*)-(.*)$} && exists $fses->{"/dev/$1/$2"}) {
-           return ("/dev/$1/$2", $fses->{"/dev/$1/$2"});
-       }
-
-       return () if m{/dev/cdrom};
-
-       warn __x("unknown filesystem {fs}\n", fs => $_);
-       return ();
+        if (m{^/dev/hd(.*)} && exists $fses->{"/dev/sd$1"}) {
+            return ("/dev/sd$1", $fses->{"/dev/sd$1"});
+        }
+        if (m{^/dev/xvd(.*)} && exists $fses->{"/dev/sd$1"}) {
+            return ("/dev/sd$1", $fses->{"/dev/sd$1"});
+        }
+        if (m{^/dev/mapper/(.*)-(.*)$} && exists $fses->{"/dev/$1/$2"}) {
+            return ("/dev/$1/$2", $fses->{"/dev/$1/$2"});
+        }
+
+        return () if m{/dev/cdrom};
+
+        warn __x("unknown filesystem {fs}\n", fs => $_);
+        return ();
     }
 }
 
@@ -1388,7 +1388,7 @@ sub inspect_in_detail
     _check_for_applications ($g, $os);
     _check_for_kernels ($g, $os);
     if ($os->{os} eq "linux") {
-       _find_modprobe_aliases ($g, $os);
+        _find_modprobe_aliases ($g, $os);
     }
 }
 
@@ -1402,34 +1402,34 @@ sub _check_for_applications
 
     my $osn = $os->{os};
     if ($osn eq "linux") {
-       my $package_format = $os->{package_format};
-       if (defined $package_format && $package_format eq "rpm") {
-           my @lines = $g->command_lines
-               (["rpm",
-                 "-q", "-a",
-                 "--qf", "%{name} %{epoch} %{version} %{release} %{arch}\n"]);
-           foreach (@lines) {
-               if (m/^(.*) (.*) (.*) (.*) (.*)$/) {
-                   my $epoch = $2;
-                   $epoch = "" if $epoch eq "(none)";
-                   my $app = {
-                       name => $1,
-                       epoch => $epoch,
-                       version => $3,
-                       release => $4,
-                       arch => $5
-                   };
-                   push @apps, $app
-               }
-           }
-       }
+        my $package_format = $os->{package_format};
+        if (defined $package_format && $package_format eq "rpm") {
+            my @lines = $g->command_lines
+                (["rpm",
+                  "-q", "-a",
+                  "--qf", "%{name} %{epoch} %{version} %{release} %{arch}\n"]);
+            foreach (@lines) {
+                if (m/^(.*) (.*) (.*) (.*) (.*)$/) {
+                    my $epoch = $2;
+                    $epoch = "" if $epoch eq "(none)";
+                    my $app = {
+                        name => $1,
+                        epoch => $epoch,
+                        version => $3,
+                        release => $4,
+                        arch => $5
+                    };
+                    push @apps, $app
+                }
+            }
+        }
     } elsif ($osn eq "windows") {
-       # XXX
-       # I worked out a general plan for this, but haven't
-       # implemented it yet.  We can iterate over /Program Files
-       # looking for *.EXE files, which we download, then use
-       # i686-pc-mingw32-windres on, to find the VERSIONINFO
-       # section, which has a lot of useful information.
+        # XXX
+        # I worked out a general plan for this, but haven't
+        # implemented it yet.  We can iterate over /Program Files
+        # looking for *.EXE files, which we download, then use
+        # i686-pc-mingw32-windres on, to find the VERSIONINFO
+        # section, which has a lot of useful information.
     }
 
     $os->{apps} = \@apps;
@@ -1537,7 +1537,7 @@ sub _check_for_kernels
     }
 
     elsif ($os->{os} eq "windows") {
-       # XXX
+        # XXX
     }
 }
 
@@ -1652,7 +1652,7 @@ sub _find_modprobe_aliases
         for my $path ( $g->aug_match($pattern) ) {
             $path =~ m{^/files(.*)/alias(?:\[\d*\])?$}
                 or die __x("{path} doesn't match augeas pattern",
-                          path => $path);
+                           path => $path);
             my $file = $1;
 
             my $alias;
index de928ae..7ce28c6 100644 (file)
@@ -23,10 +23,10 @@ BEGIN {
 
     eval "use Locale::TextDomain";;
     if (exists $INC{"Locale/TextDomain.pm"}) {
-       plan tests => 1;
+        plan tests => 1;
     } else {
-       plan skip_all => "no perl-libintl module";
-       exit 0;
+        plan skip_all => "no perl-libintl module";
+        exit 0;
     }
 }
 
index b0a96e9..c4b9d31 100644 (file)
@@ -22,10 +22,10 @@ BEGIN {
     use Test::More;
     eval "use Locale::TextDomain";;
     if (exists $INC{"Locale/TextDomain.pm"}) {
-       plan tests => 17;
+        plan tests => 17;
     } else {
-       plan skip_all => "no perl-libintl module";
-       exit 0;
+        plan skip_all => "no perl-libintl module";
+        exit 0;
     }
 }
 
index 421e73a..97788d3 100644 (file)
@@ -9,7 +9,7 @@ O_OBJECT_guestfs_h
         $var = ($type) SvIV ((SV *) SvRV ($arg));
     else {
         warn (\"${Package}::$func_name(): $var is not a blessed SV reference\");
-       XSRETURN_UNDEF;
+        XSRETURN_UNDEF;
     }
 
 OUTPUT
index 9dae930..f10d195 100644 (file)
@@ -3,14 +3,14 @@ Parallel mksquashfs: Using 2 processors
 Creating 4.0 filesystem on test.sqsh, block size 131072.
 [===============================================================|] 663/663 100%
 Exportable Squashfs 4.0 filesystem, data block size 131072
-       compressed data, compressed metadata, compressed fragments
-       duplicates are removed
+        compressed data, compressed metadata, compressed fragments
+        duplicates are removed
 Filesystem size 1518.07 Kbytes (1.48 Mbytes)
-       98.41% of uncompressed filesystem size (1542.53 Kbytes)
+        98.41% of uncompressed filesystem size (1542.53 Kbytes)
 Inode table size 8095 bytes (7.91 Kbytes)
-       35.59% of uncompressed inode table size (22748 bytes)
+        35.59% of uncompressed inode table size (22748 bytes)
 Directory table size 7612 bytes (7.43 Kbytes)
-       49.11% of uncompressed directory table size (15499 bytes)
+        49.11% of uncompressed directory table size (15499 bytes)
 Number of duplicate files found 6
 Number of inodes 701
 Number of files 663
@@ -22,9 +22,9 @@ Number of socket nodes 0
 Number of directories 1
 Number of ids (unique uids + gids) 1
 Number of uids 1
-       root (0)
+        root (0)
 Number of gids 1
-       root (0)
+        root (0)
 total 1732
 drwxr-xr-x  2 root root 15498 May 27 10:34 .
 drwxr-xr-x 18 root root     0 May 29 08:44 ..
index b6f6f42..9ef99bd 100755 (executable)
@@ -375,9 +375,9 @@ You probably don't want to call this function.");
   List.map (
     fun (name, ret) ->
       [(name, (ret, [String "val"]), -1, [NotInFish; NotInDocs],
-       [],
-       "internal test function - do not use",
-       "\
+        [],
+        "internal test function - do not use",
+        "\
 This is an internal test function which is used to test whether
 the automatically generated bindings can handle every possible
 return type correctly.
@@ -386,9 +386,9 @@ It converts string C<val> to the return type.
 
 You probably don't want to call this function.");
        (name ^ "err", (ret, []), -1, [NotInFish; NotInDocs],
-       [],
-       "internal test function - do not use",
-       "\
+        [],
+        "internal test function - do not use",
+        "\
 This is an internal test function which is used to test whether
 the automatically generated bindings can handle every possible
 return type correctly.
@@ -822,8 +822,8 @@ or C<guestfs_download> functions which have a more complex interface.");
 
   ("ll", (RString "listing", [String "directory"]), 5, [],
    [], (* XXX Tricky to test because it depends on the exact format
-       * of the 'ls -l' command, which changes between F10 and F11.
-       *)
+        * of the 'ls -l' command, which changes between F10 and F11.
+        *)
    "list the files in a directory (long format)",
    "\
 List the files in C<directory> (relative to the root directory,
@@ -1320,8 +1320,8 @@ or LVM logical volume).  The filesystem type is C<fstype>, for
 example C<ext3>.");
 
   ("sfdisk", (RErr, [String "device";
-                    Int "cyls"; Int "heads"; Int "sectors";
-                    StringList "lines"]), 43, [DangerWillRobinson],
+                     Int "cyls"; Int "heads"; Int "sectors";
+                     StringList "lines"]), 43, [DangerWillRobinson],
    [],
    "create partitions on a block device",
    "\
@@ -1620,7 +1620,7 @@ This is the same as the C<lstat(2)> system call.");
   ("statvfs", (RStruct ("statbuf", "statvfs"), [String "path"]), 54, [],
    [InitSquashFS, Always, TestOutputStruct (
       [["statvfs"; "/"]], [CompareWithInt ("namemax", 256);
-                          CompareWithInt ("bsize", 131072)])],
+                           CompareWithInt ("bsize", 131072)])],
    "get file system statistics",
    "\
 Returns file system statistics for any mounted file system.
@@ -2307,8 +2307,8 @@ This resizes (expands or shrinks) an existing LVM physical
 volume to match the new size of the underlying device.");
 
   ("sfdisk_N", (RErr, [String "device"; Int "partnum";
-                      Int "cyls"; Int "heads"; Int "sectors";
-                      String "line"]), 99, [DangerWillRobinson],
+                       Int "cyls"; Int "heads"; Int "sectors";
+                       String "line"]), 99, [DangerWillRobinson],
    [],
    "modify a single partition on a block device",
    "\
@@ -2682,8 +2682,8 @@ If the parameter C<nrlines> is zero, this returns an empty list.");
 
   ("df", (RString "output", []), 125, [],
    [], (* XXX Tricky to test because it depends on the exact format
-       * of the 'df' command and other imponderables.
-       *)
+        * of the 'df' command and other imponderables.
+        *)
    "report file system disk space usage",
    "\
 This command runs the C<df> command to report disk space used.
@@ -2694,8 +2694,8 @@ Use C<statvfs> from programs.");
 
   ("df_h", (RString "output", []), 126, [],
    [], (* XXX Tricky to test because it depends on the exact format
-       * of the 'df' command and other imponderables.
-       *)
+        * of the 'df' command and other imponderables.
+        *)
    "report file system disk space usage (human readable)",
    "\
 This command runs the C<df -h> command to report disk space used
@@ -2821,8 +2821,8 @@ It is just a convenient wrapper around C<guestfs_mknod>.");
 
   ("umask", (RInt "oldmask", [Int "mask"]), 137, [],
    [], (* XXX umask is one of those stateful things that we should
-       * reset between each test.
-       *)
+        * reset between each test.
+        *)
    "set file mode creation mask (umask)",
    "\
 This function sets the mask used for creating new files and
@@ -2944,8 +2944,8 @@ is a symbolic link, then it returns the extended attributes
 of the link itself.");
 
   ("setxattr", (RErr, [String "xattr";
-                      String "val"; Int "vallen"; (* will be BufferIn *)
-                      String "path"]), 143, [],
+                       String "val"; Int "vallen"; (* will be BufferIn *)
+                       String "path"]), 143, [],
    [],
    "set extended attribute of a file or directory",
    "\
@@ -2956,8 +2956,8 @@ The value is arbitrary 8 bit data.
 See also: C<guestfs_lsetxattr>, L<attr(5)>.");
 
   ("lsetxattr", (RErr, [String "xattr";
-                       String "val"; Int "vallen"; (* will be BufferIn *)
-                       String "path"]), 144, [],
+                        String "val"; Int "vallen"; (* will be BufferIn *)
+                        String "path"]), 144, [],
    [],
    "set extended attribute of a file or directory",
    "\
@@ -3402,7 +3402,7 @@ let all_functions = non_daemon_functions @ daemon_functions
  *)
 let all_functions_sorted =
   List.sort (fun (n1,_,_,_,_,_,_) (n2,_,_,_,_,_,_) ->
-              compare n1 n2) all_functions
+               compare n1 n2) all_functions
 
 (* Field types for structures. *)
 type field =
@@ -3646,11 +3646,11 @@ let rec find s sub =
   let rec loop i =
     if i <= len-sublen then (
       let rec loop2 j =
-       if j < sublen then (
-         if s.[i+j] = sub.[j] then loop2 (j+1)
-         else -1
-       ) else
-         i (* found *)
+        if j < sublen then (
+          if s.[i+j] = sub.[j] then loop2 (j+1)
+          else -1
+        ) else
+          i (* found *)
       in
       let r = loop2 0 in
       if r = -1 then loop (i+1) else r
@@ -3772,9 +3772,9 @@ let check_functions () =
     let rec loop i =
       if i >= len then false
       else (
-       let c = str.[i] in
-       if c >= 'A' && c <= 'Z' then true
-       else loop (i+1)
+        let c = str.[i] in
+        if c >= 'A' && c <= 'Z' then true
+        else loop (i+1)
       )
     in
     loop 0
@@ -3784,34 +3784,34 @@ let check_functions () =
   List.iter (
     fun (name, _, _, _, _, _, _) ->
       if String.length name >= 7 && String.sub name 0 7 = "guestfs" then
-       failwithf "function name %s does not need 'guestfs' prefix" name;
+        failwithf "function name %s does not need 'guestfs' prefix" name;
       if name = "" then
-       failwithf "function name is empty";
+        failwithf "function name is empty";
       if name.[0] < 'a' || name.[0] > 'z' then
-       failwithf "function name %s must start with lowercase a-z" name;
+        failwithf "function name %s must start with lowercase a-z" name;
       if String.contains name '-' then
-       failwithf "function name %s should not contain '-', use '_' instead."
-         name
+        failwithf "function name %s should not contain '-', use '_' instead."
+          name
   ) all_functions;
 
   (* Check function parameter/return names. *)
   List.iter (
     fun (name, style, _, _, _, _, _) ->
       let check_arg_ret_name n =
-       if contains_uppercase n then
-         failwithf "%s param/ret %s should not contain uppercase chars"
-           name n;
-       if String.contains n '-' || String.contains n '_' then
-         failwithf "%s param/ret %s should not contain '-' or '_'"
-           name n;
-       if n = "value" then
-         failwithf "%s has a param/ret called 'value', which causes conflicts in the OCaml bindings, use something like 'val' or a more descriptive name" name;
-       if n = "int" || n = "char" || n = "short" || n = "long" then
-         failwithf "%s has a param/ret which conflicts with a C type (eg. 'int', 'char' etc.)" name;
-       if n = "i" || n = "n" then
-         failwithf "%s has a param/ret called 'i' or 'n', which will cause some conflicts in the generated code" name;
-       if n = "argv" || n = "args" then
-         failwithf "%s has a param/ret called 'argv' or 'args', which will cause some conflicts in the generated code" name
+        if contains_uppercase n then
+          failwithf "%s param/ret %s should not contain uppercase chars"
+            name n;
+        if String.contains n '-' || String.contains n '_' then
+          failwithf "%s param/ret %s should not contain '-' or '_'"
+            name n;
+        if n = "value" then
+          failwithf "%s has a param/ret called 'value', which causes conflicts in the OCaml bindings, use something like 'val' or a more descriptive name" name;
+        if n = "int" || n = "char" || n = "short" || n = "long" then
+          failwithf "%s has a param/ret which conflicts with a C type (eg. 'int', 'char' etc.)" name;
+        if n = "i" || n = "n" then
+          failwithf "%s has a param/ret called 'i' or 'n', which will cause some conflicts in the generated code" name;
+        if n = "argv" || n = "args" then
+          failwithf "%s has a param/ret called 'argv' or 'args', which will cause some conflicts in the generated code" name
       in
 
       (match fst style with
@@ -3820,7 +3820,7 @@ let check_functions () =
        | RConstString n | RConstOptString n | RString n
        | RStringList n | RStruct (n, _) | RStructList (n, _)
        | RHashtable n | RBufferOut n ->
-          check_arg_ret_name n
+           check_arg_ret_name n
       );
       List.iter (fun arg -> check_arg_ret_name (name_of_argt arg)) (snd style)
   ) all_functions;
@@ -3829,30 +3829,30 @@ let check_functions () =
   List.iter (
     fun (name, _, _, _, _, shortdesc, _) ->
       if shortdesc.[0] <> Char.lowercase shortdesc.[0] then
-       failwithf "short description of %s should begin with lowercase." name;
+        failwithf "short description of %s should begin with lowercase." name;
       let c = shortdesc.[String.length shortdesc-1] in
       if c = '\n' || c = '.' then
-       failwithf "short description of %s should not end with . or \\n." name
+        failwithf "short description of %s should not end with . or \\n." name
   ) all_functions;
 
   (* Check long dscriptions. *)
   List.iter (
     fun (name, _, _, _, _, _, longdesc) ->
       if longdesc.[String.length longdesc-1] = '\n' then
-       failwithf "long description of %s should not end with \\n." name
+        failwithf "long description of %s should not end with \\n." name
   ) all_functions;
 
   (* Check proc_nrs. *)
   List.iter (
     fun (name, _, proc_nr, _, _, _, _) ->
       if proc_nr <= 0 then
-       failwithf "daemon function %s should have proc_nr > 0" name
+        failwithf "daemon function %s should have proc_nr > 0" name
   ) daemon_functions;
 
   List.iter (
     fun (name, _, proc_nr, _, _, _, _) ->
       if proc_nr <> -1 then
-       failwithf "non-daemon function %s should have proc_nr -1" name
+        failwithf "non-daemon function %s should have proc_nr -1" name
   ) non_daemon_functions;
 
   let proc_nrs =
@@ -3864,10 +3864,10 @@ let check_functions () =
     | [] -> ()
     | [_] -> ()
     | (name1,nr1) :: ((name2,nr2) :: _ as rest) when nr1 < nr2 ->
-       loop rest
+        loop rest
     | (name1,nr1) :: (name2,nr2) :: _ ->
-       failwithf "%s and %s have conflicting procedure numbers (%d, %d)"
-         name1 name2 nr1 nr2
+        failwithf "%s and %s have conflicting procedure numbers (%d, %d)"
+          name1 name2 nr1 nr2
   in
   loop proc_nrs;
 
@@ -3879,20 +3879,20 @@ let check_functions () =
        *)
     | name, _, _, _, [], _, _ -> ()
     | name, _, _, _, tests, _, _ ->
-       let funcs =
-         List.map (
-           fun (_, _, test) ->
-             match seq_of_test test with
-             | [] ->
-                 failwithf "%s has a test containing an empty sequence" name
-             | cmds -> List.map List.hd cmds
-         ) tests in
-       let funcs = List.flatten funcs in
-
-       let tested = List.mem name funcs in
-
-       if not tested then
-         failwithf "function %s has tests but does not test itself" name
+        let funcs =
+          List.map (
+            fun (_, _, test) ->
+              match seq_of_test test with
+              | [] ->
+                  failwithf "%s has a test containing an empty sequence" name
+              | cmds -> List.map List.hd cmds
+          ) tests in
+        let funcs = List.flatten funcs in
+
+        let tested = List.mem name funcs in
+
+        if not tested then
+          failwithf "function %s has tests but does not test itself" name
   ) all_functions
 
 (* 'pr' prints to the current output file. *)
@@ -3961,62 +3961,62 @@ let rec generate_actions_pod () =
   List.iter (
     fun (shortname, style, _, flags, _, _, longdesc) ->
       if not (List.mem NotInDocs flags) then (
-       let name = "guestfs_" ^ shortname in
-       pr "=head2 %s\n\n" name;
-       pr " ";
-       generate_prototype ~extern:false ~handle:"handle" name style;
-       pr "\n\n";
-       pr "%s\n\n" longdesc;
-       (match fst style with
-        | RErr ->
-            pr "This function returns 0 on success or -1 on error.\n\n"
-        | RInt _ ->
-            pr "On error this function returns -1.\n\n"
-        | RInt64 _ ->
-            pr "On error this function returns -1.\n\n"
-        | RBool _ ->
-            pr "This function returns a C truth value on success or -1 on error.\n\n"
-        | RConstString _ ->
-            pr "This function returns a string, or NULL on error.
+        let name = "guestfs_" ^ shortname in
+        pr "=head2 %s\n\n" name;
+        pr " ";
+        generate_prototype ~extern:false ~handle:"handle" name style;
+        pr "\n\n";
+        pr "%s\n\n" longdesc;
+        (match fst style with
+         | RErr ->
+             pr "This function returns 0 on success or -1 on error.\n\n"
+         | RInt _ ->
+             pr "On error this function returns -1.\n\n"
+         | RInt64 _ ->
+             pr "On error this function returns -1.\n\n"
+         | RBool _ ->
+             pr "This function returns a C truth value on success or -1 on error.\n\n"
+         | RConstString _ ->
+             pr "This function returns a string, or NULL on error.
 The string is owned by the guest handle and must I<not> be freed.\n\n"
-        | RConstOptString _ ->
-            pr "This function returns a string which may be NULL.
+         | RConstOptString _ ->
+             pr "This function returns a string which may be NULL.
 There is way to return an error from this function.
 The string is owned by the guest handle and must I<not> be freed.\n\n"
-        | RString _ ->
-            pr "This function returns a string, or NULL on error.
+         | RString _ ->
+             pr "This function returns a string, or NULL on error.
 I<The caller must free the returned string after use>.\n\n"
-        | RStringList _ ->
-            pr "This function returns a NULL-terminated array of strings
+         | RStringList _ ->
+             pr "This function returns a NULL-terminated array of strings
 (like L<environ(3)>), or NULL if there was an error.
 I<The caller must free the strings and the array after use>.\n\n"
-        | RStruct (_, typ) ->
-            pr "This function returns a C<struct guestfs_%s *>,
+         | RStruct (_, typ) ->
+             pr "This function returns a C<struct guestfs_%s *>,
 or NULL if there was an error.
 I<The caller must call C<guestfs_free_%s> after use>.\n\n" typ typ
-        | RStructList (_, typ) ->
-            pr "This function returns a C<struct guestfs_%s_list *>
+         | RStructList (_, typ) ->
+             pr "This function returns a C<struct guestfs_%s_list *>
 (see E<lt>guestfs-structs.hE<gt>),
 or NULL if there was an error.
 I<The caller must call C<guestfs_free_%s_list> after use>.\n\n" typ typ
-        | RHashtable _ ->
-            pr "This function returns a NULL-terminated array of
+         | RHashtable _ ->
+             pr "This function returns a NULL-terminated array of
 strings, or NULL if there was an error.
 The array of strings will always have length C<2n+1>, where
 C<n> keys and values alternate, followed by the trailing NULL entry.
 I<The caller must free the strings and the array after use>.\n\n"
-        | RBufferOut _ ->
-            pr "This function returns a buffer, or NULL on error.
+         | RBufferOut _ ->
+             pr "This function returns a buffer, or NULL on error.
 The size of the returned buffer is written to C<*size_r>.
 I<The caller must free the returned buffer after use>.\n\n"
-       );
-       if List.mem ProtocolLimitWarning flags then
-         pr "%s\n\n" protocol_limit_warning;
-       if List.mem DangerWillRobinson flags then
-         pr "%s\n\n" danger_will_robinson;
-       match deprecation_notice flags with
-       | None -> ()
-       | Some txt -> pr "%s\n\n" txt
+        );
+        if List.mem ProtocolLimitWarning flags then
+          pr "%s\n\n" protocol_limit_warning;
+        if List.mem DangerWillRobinson flags then
+          pr "%s\n\n" danger_will_robinson;
+        match deprecation_notice flags with
+        | None -> ()
+        | Some txt -> pr "%s\n\n" txt
       )
   ) all_functions_sorted
 
@@ -4028,23 +4028,23 @@ and generate_structs_pod () =
       pr "\n";
       pr " struct guestfs_%s {\n" typ;
       List.iter (
-       function
-       | name, FChar -> pr "   char %s;\n" name
-       | name, FUInt32 -> pr "   uint32_t %s;\n" name
-       | name, FInt32 -> pr "   int32_t %s;\n" name
-       | name, (FUInt64|FBytes) -> pr "   uint64_t %s;\n" name
-       | name, FInt64 -> pr "   int64_t %s;\n" name
-       | name, FString -> pr "   char *%s;\n" name
-       | name, FBuffer ->
-           pr "   /* The next two fields describe a byte array. */\n";
-           pr "   uint32_t %s_len;\n" name;
-           pr "   char *%s;\n" name
-       | name, FUUID ->
-           pr "   /* The next field is NOT nul-terminated, be careful when printing it: */\n";
-           pr "   char %s[32];\n" name
-       | name, FOptPercent ->
-           pr "   /* The next field is [0..100] or -1 meaning 'not present': */\n";
-           pr "   float %s;\n" name
+        function
+        | name, FChar -> pr "   char %s;\n" name
+        | name, FUInt32 -> pr "   uint32_t %s;\n" name
+        | name, FInt32 -> pr "   int32_t %s;\n" name
+        | name, (FUInt64|FBytes) -> pr "   uint64_t %s;\n" name
+        | name, FInt64 -> pr "   int64_t %s;\n" name
+        | name, FString -> pr "   char *%s;\n" name
+        | name, FBuffer ->
+            pr "   /* The next two fields describe a byte array. */\n";
+            pr "   uint32_t %s_len;\n" name;
+            pr "   char *%s;\n" name
+        | name, FUUID ->
+            pr "   /* The next field is NOT nul-terminated, be careful when printing it: */\n";
+            pr "   char %s[32];\n" name
+        | name, FOptPercent ->
+            pr "   /* The next field is [0..100] or -1 meaning 'not present': */\n";
+            pr "   float %s;\n" name
       ) cols;
       pr " };\n";
       pr " \n";
@@ -4055,7 +4055,7 @@ and generate_structs_pod () =
       pr " \n";
       pr " void guestfs_free_%s (struct guestfs_free_%s *);\n" typ typ;
       pr " void guestfs_free_%s_list (struct guestfs_free_%s_list *);\n"
-       typ typ;
+        typ typ;
       pr "\n"
   ) structs
 
@@ -4078,20 +4078,20 @@ and generate_xdr () =
   List.iter (
     function
     | typ, cols ->
-       pr "struct guestfs_int_%s {\n" typ;
-       List.iter (function
-                  | name, FChar -> pr "  char %s;\n" name
-                  | name, FString -> pr "  string %s<>;\n" name
-                  | name, FBuffer -> pr "  opaque %s<>;\n" name
-                  | name, FUUID -> pr "  opaque %s[32];\n" name
-                  | name, (FInt32|FUInt32) -> pr "  int %s;\n" name
-                  | name, (FInt64|FUInt64|FBytes) -> pr "  hyper %s;\n" name
-                  | name, FOptPercent -> pr "  float %s;\n" name
-                 ) cols;
-       pr "};\n";
-       pr "\n";
-       pr "typedef struct guestfs_int_%s guestfs_int_%s_list<>;\n" typ typ;
-       pr "\n";
+        pr "struct guestfs_int_%s {\n" typ;
+        List.iter (function
+                   | name, FChar -> pr "  char %s;\n" name
+                   | name, FString -> pr "  string %s<>;\n" name
+                   | name, FBuffer -> pr "  opaque %s<>;\n" name
+                   | name, FUUID -> pr "  opaque %s[32];\n" name
+                   | name, (FInt32|FUInt32) -> pr "  int %s;\n" name
+                   | name, (FInt64|FUInt64|FBytes) -> pr "  hyper %s;\n" name
+                   | name, FOptPercent -> pr "  float %s;\n" name
+                  ) cols;
+        pr "};\n";
+        pr "\n";
+        pr "typedef struct guestfs_int_%s guestfs_int_%s_list<>;\n" typ typ;
+        pr "\n";
   ) structs;
 
   List.iter (
@@ -4101,58 +4101,58 @@ and generate_xdr () =
       (match snd style with
        | [] -> ()
        | args ->
-          pr "struct %s_args {\n" name;
-          List.iter (
-            function
-            | String n -> pr "  string %s<>;\n" n
-            | OptString n -> pr "  str *%s;\n" n
-            | StringList n -> pr "  str %s<>;\n" n
-            | Bool n -> pr "  bool %s;\n" n
-            | Int n -> pr "  int %s;\n" n
-            | FileIn _ | FileOut _ -> ()
-          ) args;
-          pr "};\n\n"
+           pr "struct %s_args {\n" name;
+           List.iter (
+             function
+             | String n -> pr "  string %s<>;\n" n
+             | OptString n -> pr "  str *%s;\n" n
+             | StringList n -> pr "  str %s<>;\n" n
+             | Bool n -> pr "  bool %s;\n" n
+             | Int n -> pr "  int %s;\n" n
+             | FileIn _ | FileOut _ -> ()
+           ) args;
+           pr "};\n\n"
       );
       (match fst style with
        | RErr -> ()
        | RInt n ->
-          pr "struct %s_ret {\n" name;
-          pr "  int %s;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  int %s;\n" n;
+           pr "};\n\n"
        | RInt64 n ->
-          pr "struct %s_ret {\n" name;
-          pr "  hyper %s;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  hyper %s;\n" n;
+           pr "};\n\n"
        | RBool n ->
-          pr "struct %s_ret {\n" name;
-          pr "  bool %s;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  bool %s;\n" n;
+           pr "};\n\n"
        | RConstString _ | RConstOptString _ ->
-          failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
        | RString n ->
-          pr "struct %s_ret {\n" name;
-          pr "  string %s<>;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  string %s<>;\n" n;
+           pr "};\n\n"
        | RStringList n ->
-          pr "struct %s_ret {\n" name;
-          pr "  str %s<>;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  str %s<>;\n" n;
+           pr "};\n\n"
        | RStruct (n, typ) ->
-          pr "struct %s_ret {\n" name;
-          pr "  guestfs_int_%s %s;\n" typ n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  guestfs_int_%s %s;\n" typ n;
+           pr "};\n\n"
        | RStructList (n, typ) ->
-          pr "struct %s_ret {\n" name;
-          pr "  guestfs_int_%s_list %s;\n" typ n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  guestfs_int_%s_list %s;\n" typ n;
+           pr "};\n\n"
        | RHashtable n ->
-          pr "struct %s_ret {\n" name;
-          pr "  str %s<>;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  str %s<>;\n" n;
+           pr "};\n\n"
        | RBufferOut n ->
-          pr "struct %s_ret {\n" name;
-          pr "  opaque %s<>;\n" n;
-          pr "};\n\n"
+           pr "struct %s_ret {\n" name;
+           pr "  opaque %s<>;\n" n;
+           pr "};\n\n"
       );
   ) daemon_functions;
 
@@ -4245,18 +4245,18 @@ and generate_structs_h () =
     fun (typ, cols) ->
       pr "struct guestfs_%s {\n" typ;
       List.iter (
-       function
-       | name, FChar -> pr "  char %s;\n" name
-       | name, FString -> pr "  char *%s;\n" name
-       | name, FBuffer ->
-           pr "  uint32_t %s_len;\n" name;
-           pr "  char *%s;\n" name
-       | name, FUUID -> pr "  char %s[32]; /* this is NOT nul-terminated, be careful when printing */\n" name
-       | name, FUInt32 -> pr "  uint32_t %s;\n" name
-       | name, FInt32 -> pr "  int32_t %s;\n" name
-       | name, (FUInt64|FBytes) -> pr "  uint64_t %s;\n" name
-       | name, FInt64 -> pr "  int64_t %s;\n" name
-       | name, FOptPercent -> pr "  float %s; /* [0..100] or -1 */\n" name
+        function
+        | name, FChar -> pr "  char %s;\n" name
+        | name, FString -> pr "  char *%s;\n" name
+        | name, FBuffer ->
+            pr "  uint32_t %s_len;\n" name;
+            pr "  char *%s;\n" name
+        | name, FUUID -> pr "  char %s[32]; /* this is NOT nul-terminated, be careful when printing */\n" name
+        | name, FUInt32 -> pr "  uint32_t %s;\n" name
+        | name, FInt32 -> pr "  int32_t %s;\n" name
+        | name, (FUInt64|FBytes) -> pr "  uint64_t %s;\n" name
+        | name, FInt64 -> pr "  int64_t %s;\n" name
+        | name, FOptPercent -> pr "  float %s; /* [0..100] or -1 */\n" name
       ) cols;
       pr "};\n";
       pr "\n";
@@ -4277,7 +4277,7 @@ and generate_actions_h () =
     fun (shortname, style, _, _, _, _, _) ->
       let name = "guestfs_" ^ shortname in
       generate_prototype ~single_line:true ~newline:true ~handle:"handle"
-       name style
+        name style
   ) all_functions
 
 (* Generate the client-side dispatch stubs. *)
@@ -4310,12 +4310,12 @@ check_reply_header (guestfs_h *g,
   }
   if (hdr->vers != GUESTFS_PROTOCOL_VERSION) {
     error (g, \"wrong protocol version (%%d/%%d)\",
-          hdr->vers, GUESTFS_PROTOCOL_VERSION);
+           hdr->vers, GUESTFS_PROTOCOL_VERSION);
     return -1;
   }
   if (hdr->direction != GUESTFS_DIRECTION_REPLY) {
     error (g, \"unexpected message direction (%%d/%%d)\",
-          hdr->direction, GUESTFS_DIRECTION_REPLY);
+           hdr->direction, GUESTFS_DIRECTION_REPLY);
     return -1;
   }
   if (hdr->proc != proc_nr) {
@@ -4370,12 +4370,12 @@ check_state (guestfs_h *g, const char *caller)
       (match fst style with
        | RErr -> ()
        | RConstString _ | RConstOptString _ ->
-          failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
        | RInt _ | RInt64 _
        | RBool _ | RString _ | RStringList _
        | RStruct _ | RStructList _
        | RHashtable _ | RBufferOut _ ->
-          pr "  struct %s_ret ret;\n" name
+           pr "  struct %s_ret ret;\n" name
       );
       pr "};\n";
       pr "\n";
@@ -4402,7 +4402,7 @@ check_state (guestfs_h *g, const char *caller)
       pr "  if (ctx->hdr.status == GUESTFS_STATUS_ERROR) {\n";
       pr "    if (!xdr_guestfs_message_error (xdr, &ctx->err)) {\n";
       pr "      error (g, \"%%s: failed to parse reply error\", \"%s\");\n"
-       name;
+        name;
       pr "      return;\n";
       pr "    }\n";
       pr "    goto done;\n";
@@ -4411,15 +4411,15 @@ check_state (guestfs_h *g, const char *caller)
       (match fst style with
        | RErr -> ()
        | RConstString _ | RConstOptString _ ->
-          failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
        | RInt _ | RInt64 _
        | RBool _ | RString _ | RStringList _
        | RStruct _ | RStructList _
        | RHashtable _ | RBufferOut _ ->
-          pr "  if (!xdr_%s_ret (xdr, &ctx->ret)) {\n" name;
-          pr "    error (g, \"%%s: failed to parse reply\", \"%s\");\n" name;
-          pr "    return;\n";
-          pr "  }\n";
+           pr "  if (!xdr_%s_ret (xdr, &ctx->ret)) {\n" name;
+           pr "    error (g, \"%%s: failed to parse reply\", \"%s\");\n" name;
+           pr "    return;\n";
+           pr "  }\n";
       );
 
       pr " done:\n";
@@ -4428,17 +4428,17 @@ check_state (guestfs_h *g, const char *caller)
 
       (* Generate the action stub. *)
       generate_prototype ~extern:false ~semicolon:false ~newline:true
-       ~handle:"g" name style;
+        ~handle:"g" name style;
 
       let error_code =
-       match fst style with
-       | RErr | RInt _ | RInt64 _ | RBool _ -> "-1"
-       | RConstString _ | RConstOptString _ ->
-           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
-       | RString _ | RStringList _
-       | RStruct _ | RStructList _
-       | RHashtable _ | RBufferOut _ ->
-           "NULL" in
+        match fst style with
+        | RErr | RInt _ | RInt64 _ | RBool _ -> "-1"
+        | RConstString _ | RConstOptString _ ->
+            failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+        | RString _ | RStringList _
+        | RStruct _ | RStructList _
+        | RHashtable _ | RBufferOut _ ->
+            "NULL" in
 
       pr "{\n";
 
@@ -4460,28 +4460,28 @@ check_state (guestfs_h *g, const char *caller)
       (* Send the main header and arguments. *)
       (match snd style with
        | [] ->
-          pr "  serial = guestfs__send_sync (g, GUESTFS_PROC_%s, NULL, NULL);\n"
-            (String.uppercase shortname)
+           pr "  serial = guestfs__send_sync (g, GUESTFS_PROC_%s, NULL, NULL);\n"
+             (String.uppercase shortname)
        | args ->
-          List.iter (
-            function
-            | String n ->
-                pr "  args.%s = (char *) %s;\n" n n
-            | OptString n ->
-                pr "  args.%s = %s ? (char **) &%s : NULL;\n" n n n
-            | StringList n ->
-                pr "  args.%s.%s_val = (char **) %s;\n" n n n;
-                pr "  for (args.%s.%s_len = 0; %s[args.%s.%s_len]; args.%s.%s_len++) ;\n" n n n n n n n;
-            | Bool n ->
-                pr "  args.%s = %s;\n" n n
-            | Int n ->
-                pr "  args.%s = %s;\n" n n
-            | FileIn _ | FileOut _ -> ()
-          ) args;
-          pr "  serial = guestfs__send_sync (g, GUESTFS_PROC_%s,\n"
-            (String.uppercase shortname);
-          pr "        (xdrproc_t) xdr_%s_args, (char *) &args);\n"
-            name;
+           List.iter (
+             function
+             | String n ->
+                 pr "  args.%s = (char *) %s;\n" n n
+             | OptString n ->
+                 pr "  args.%s = %s ? (char **) &%s : NULL;\n" n n n
+             | StringList n ->
+                 pr "  args.%s.%s_val = (char **) %s;\n" n n n;
+                 pr "  for (args.%s.%s_len = 0; %s[args.%s.%s_len]; args.%s.%s_len++) ;\n" n n n n n n n;
+             | Bool n ->
+                 pr "  args.%s = %s;\n" n n
+             | Int n ->
+                 pr "  args.%s = %s;\n" n n
+             | FileIn _ | FileOut _ -> ()
+           ) args;
+           pr "  serial = guestfs__send_sync (g, GUESTFS_PROC_%s,\n"
+             (String.uppercase shortname);
+           pr "        (xdrproc_t) xdr_%s_args, (char *) &args);\n"
+             name;
       );
       pr "  if (serial == -1) {\n";
       pr "    guestfs_end_busy (g);\n";
@@ -4492,22 +4492,22 @@ check_state (guestfs_h *g, const char *caller)
       (* Send any additional files (FileIn) requested. *)
       let need_read_reply_label = ref false in
       List.iter (
-       function
-       | FileIn n ->
-           pr "  {\n";
-           pr "    int r;\n";
-           pr "\n";
-           pr "    r = guestfs__send_file_sync (g, %s);\n" n;
-           pr "    if (r == -1) {\n";
-           pr "      guestfs_end_busy (g);\n";
-           pr "      return %s;\n" error_code;
-           pr "    }\n";
-           pr "    if (r == -2) /* daemon cancelled */\n";
-           pr "      goto read_reply;\n";
-           need_read_reply_label := true;
-           pr "  }\n";
-           pr "\n";
-       | _ -> ()
+        function
+        | FileIn n ->
+            pr "  {\n";
+            pr "    int r;\n";
+            pr "\n";
+            pr "    r = guestfs__send_file_sync (g, %s);\n" n;
+            pr "    if (r == -1) {\n";
+            pr "      guestfs_end_busy (g);\n";
+            pr "      return %s;\n" error_code;
+            pr "    }\n";
+            pr "    if (r == -2) /* daemon cancelled */\n";
+            pr "      goto read_reply;\n";
+            need_read_reply_label := true;
+            pr "  }\n";
+            pr "\n";
+        | _ -> ()
       ) (snd style);
 
       (* Wait for the reply from the remote end. *)
@@ -4525,7 +4525,7 @@ check_state (guestfs_h *g, const char *caller)
       pr "\n";
 
       pr "  if (check_reply_header (g, &ctx.hdr, GUESTFS_PROC_%s, serial) == -1) {\n"
-       (String.uppercase shortname);
+        (String.uppercase shortname);
       pr "    guestfs_end_busy (g);\n";
       pr "    return %s;\n" error_code;
       pr "  }\n";
@@ -4541,14 +4541,14 @@ check_state (guestfs_h *g, const char *caller)
 
       (* Expecting to receive further files (FileOut)? *)
       List.iter (
-       function
-       | FileOut n ->
-           pr "  if (guestfs__receive_file_sync (g, %s) == -1) {\n" n;
-           pr "    guestfs_end_busy (g);\n";
-           pr "    return %s;\n" error_code;
-           pr "  }\n";
-           pr "\n";
-       | _ -> ()
+        function
+        | FileOut n ->
+            pr "  if (guestfs__receive_file_sync (g, %s) == -1) {\n" n;
+            pr "    guestfs_end_busy (g);\n";
+            pr "    return %s;\n" error_code;
+            pr "  }\n";
+            pr "\n";
+        | _ -> ()
       ) (snd style);
 
       pr "  guestfs_end_busy (g);\n";
@@ -4556,28 +4556,28 @@ check_state (guestfs_h *g, const char *caller)
       (match fst style with
        | RErr -> pr "  return 0;\n"
        | RInt n | RInt64 n | RBool n ->
-          pr "  return ctx.ret.%s;\n" n
+           pr "  return ctx.ret.%s;\n" n
        | RConstString _ | RConstOptString _ ->
-          failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
        | RString n ->
-          pr "  return ctx.ret.%s; /* caller will free */\n" n
+           pr "  return ctx.ret.%s; /* caller will free */\n" n
        | RStringList n | RHashtable n ->
-          pr "  /* caller will free this, but we need to add a NULL entry */\n";
-          pr "  ctx.ret.%s.%s_val =\n" n n;
-          pr "    safe_realloc (g, ctx.ret.%s.%s_val,\n" n n;
-          pr "                  sizeof (char *) * (ctx.ret.%s.%s_len + 1));\n"
-            n n;
-          pr "  ctx.ret.%s.%s_val[ctx.ret.%s.%s_len] = NULL;\n" n n n n;
-          pr "  return ctx.ret.%s.%s_val;\n" n n
+           pr "  /* caller will free this, but we need to add a NULL entry */\n";
+           pr "  ctx.ret.%s.%s_val =\n" n n;
+           pr "    safe_realloc (g, ctx.ret.%s.%s_val,\n" n n;
+           pr "                  sizeof (char *) * (ctx.ret.%s.%s_len + 1));\n"
+             n n;
+           pr "  ctx.ret.%s.%s_val[ctx.ret.%s.%s_len] = NULL;\n" n n n n;
+           pr "  return ctx.ret.%s.%s_val;\n" n n
        | RStruct (n, _) ->
-          pr "  /* caller will free this */\n";
-          pr "  return safe_memdup (g, &ctx.ret.%s, sizeof (ctx.ret.%s));\n" n n
+           pr "  /* caller will free this */\n";
+           pr "  return safe_memdup (g, &ctx.ret.%s, sizeof (ctx.ret.%s));\n" n n
        | RStructList (n, _) ->
-          pr "  /* caller will free this */\n";
-          pr "  return safe_memdup (g, &ctx.ret.%s, sizeof (ctx.ret.%s));\n" n n
+           pr "  /* caller will free this */\n";
+           pr "  return safe_memdup (g, &ctx.ret.%s, sizeof (ctx.ret.%s));\n" n n
        | RBufferOut n ->
-          pr "  *size_r = ctx.ret.%s.%s_len;\n" n n;
-          pr "  return ctx.ret.%s.%s_val; /* caller will free */\n" n n
+           pr "  *size_r = ctx.ret.%s.%s_len;\n" n n;
+           pr "  return ctx.ret.%s.%s_val; /* caller will free */\n" n n
       );
 
       pr "}\n\n"
@@ -4620,8 +4620,8 @@ and generate_daemon_actions_h () =
   List.iter (
     fun (name, style, _, _, _, _, _) ->
       generate_prototype
-       ~single_line:true ~newline:true ~in_daemon:true ~prefix:"do_"
-       name style;
+        ~single_line:true ~newline:true ~in_daemon:true ~prefix:"do_"
+        name style;
   ) daemon_functions
 
 (* Generate the server-side stubs. *)
@@ -4649,76 +4649,76 @@ and generate_daemon_actions () =
       pr "static void %s_stub (XDR *xdr_in)\n" name;
       pr "{\n";
       let error_code =
-       match fst style with
-       | RErr | RInt _ -> pr "  int r;\n"; "-1"
-       | RInt64 _ -> pr "  int64_t r;\n"; "-1"
-       | RBool _ -> pr "  int r;\n"; "-1"
-       | RConstString _ | RConstOptString _ ->
-           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
-       | RString _ -> pr "  char *r;\n"; "NULL"
-       | RStringList _ | RHashtable _ -> pr "  char **r;\n"; "NULL"
-       | RStruct (_, typ) -> pr "  guestfs_int_%s *r;\n" typ; "NULL"
-       | RStructList (_, typ) -> pr "  guestfs_int_%s_list *r;\n" typ; "NULL"
-       | RBufferOut _ ->
-           pr "  size_t size;\n";
-           pr "  char *r;\n";
-           "NULL" in
+        match fst style with
+        | RErr | RInt _ -> pr "  int r;\n"; "-1"
+        | RInt64 _ -> pr "  int64_t r;\n"; "-1"
+        | RBool _ -> pr "  int r;\n"; "-1"
+        | RConstString _ | RConstOptString _ ->
+            failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+        | RString _ -> pr "  char *r;\n"; "NULL"
+        | RStringList _ | RHashtable _ -> pr "  char **r;\n"; "NULL"
+        | RStruct (_, typ) -> pr "  guestfs_int_%s *r;\n" typ; "NULL"
+        | RStructList (_, typ) -> pr "  guestfs_int_%s_list *r;\n" typ; "NULL"
+        | RBufferOut _ ->
+            pr "  size_t size;\n";
+            pr "  char *r;\n";
+            "NULL" in
 
       (match snd style with
        | [] -> ()
        | args ->
-          pr "  struct guestfs_%s_args args;\n" name;
-          List.iter (
-            function
-              (* Note we allow the string to be writable, in order to
-               * allow device name translation.  This is safe because
-               * we can modify the string (passed from RPC).
-               *)
-            | String n
-            | OptString n -> pr "  char *%s;\n" n
-            | StringList n -> pr "  char **%s;\n" n
-            | Bool n -> pr "  int %s;\n" n
-            | Int n -> pr "  int %s;\n" n
-            | FileIn _ | FileOut _ -> ()
-          ) args
+           pr "  struct guestfs_%s_args args;\n" name;
+           List.iter (
+             function
+               (* Note we allow the string to be writable, in order to
+                * allow device name translation.  This is safe because
+                * we can modify the string (passed from RPC).
+                *)
+             | String n
+             | OptString n -> pr "  char *%s;\n" n
+             | StringList n -> pr "  char **%s;\n" n
+             | Bool n -> pr "  int %s;\n" n
+             | Int n -> pr "  int %s;\n" n
+             | FileIn _ | FileOut _ -> ()
+           ) args
       );
       pr "\n";
 
       (match snd style with
        | [] -> ()
        | args ->
-          pr "  memset (&args, 0, sizeof args);\n";
-          pr "\n";
-          pr "  if (!xdr_guestfs_%s_args (xdr_in, &args)) {\n" name;
-          pr "    reply_with_error (\"%%s: daemon failed to decode procedure arguments\", \"%s\");\n" name;
-          pr "    return;\n";
-          pr "  }\n";
-          List.iter (
-            function
-            | String n -> pr "  %s = args.%s;\n" n n
-            | OptString n -> pr "  %s = args.%s ? *args.%s : NULL;\n" n n n
-            | StringList n ->
-                pr "  %s = realloc (args.%s.%s_val,\n" n n n;
-                pr "                sizeof (char *) * (args.%s.%s_len+1));\n" n n;
-                pr "  if (%s == NULL) {\n" n;
-                pr "    reply_with_perror (\"realloc\");\n";
-                pr "    goto done;\n";
-                pr "  }\n";
-                pr "  %s[args.%s.%s_len] = NULL;\n" n n n;
-                pr "  args.%s.%s_val = %s;\n" n n n;
-            | Bool n -> pr "  %s = args.%s;\n" n n
-            | Int n -> pr "  %s = args.%s;\n" n n
-            | FileIn _ | FileOut _ -> ()
-          ) args;
-          pr "\n"
+           pr "  memset (&args, 0, sizeof args);\n";
+           pr "\n";
+           pr "  if (!xdr_guestfs_%s_args (xdr_in, &args)) {\n" name;
+           pr "    reply_with_error (\"%%s: daemon failed to decode procedure arguments\", \"%s\");\n" name;
+           pr "    return;\n";
+           pr "  }\n";
+           List.iter (
+             function
+             | String n -> pr "  %s = args.%s;\n" n n
+             | OptString n -> pr "  %s = args.%s ? *args.%s : NULL;\n" n n n
+             | StringList n ->
+                 pr "  %s = realloc (args.%s.%s_val,\n" n n n;
+                 pr "                sizeof (char *) * (args.%s.%s_len+1));\n" n n;
+                 pr "  if (%s == NULL) {\n" n;
+                 pr "    reply_with_perror (\"realloc\");\n";
+                 pr "    goto done;\n";
+                 pr "  }\n";
+                 pr "  %s[args.%s.%s_len] = NULL;\n" n n n;
+                 pr "  args.%s.%s_val = %s;\n" n n n;
+             | Bool n -> pr "  %s = args.%s;\n" n n
+             | Int n -> pr "  %s = args.%s;\n" n n
+             | FileIn _ | FileOut _ -> ()
+           ) args;
+           pr "\n"
       );
 
       (* Don't want to call the impl with any FileIn or FileOut
        * parameters, since these go "outside" the RPC protocol.
        *)
       let args' =
-       List.filter (function FileIn _ | FileOut _ -> false | _ -> true)
-         (snd style) in
+        List.filter (function FileIn _ | FileOut _ -> false | _ -> true)
+          (snd style) in
       pr "  r = do_%s " name;
       generate_c_call_args (fst style, args');
       pr ";\n";
@@ -4732,63 +4732,63 @@ and generate_daemon_actions () =
        * send its own reply.
        *)
       let no_reply =
-       List.exists (function FileOut _ -> true | _ -> false) (snd style) in
+        List.exists (function FileOut _ -> true | _ -> false) (snd style) in
       if no_reply then
-       pr "  /* do_%s has already sent a reply */\n" name
+        pr "  /* do_%s has already sent a reply */\n" name
       else (
-       match fst style with
-       | RErr -> pr "  reply (NULL, NULL);\n"
-       | RInt n | RInt64 n | RBool n ->
-           pr "  struct guestfs_%s_ret ret;\n" name;
-           pr "  ret.%s = r;\n" n;
-           pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name
-       | RConstString _ | RConstOptString _ ->
-           failwithf "RConstString|RConstOptString cannot be used by daemon functions"
-       | RString n ->
-           pr "  struct guestfs_%s_ret ret;\n" name;
-           pr "  ret.%s = r;\n" n;
-           pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name;
-           pr "  free (r);\n"
-       | RStringList n | RHashtable n ->
-           pr "  struct guestfs_%s_ret ret;\n" name;
-           pr "  ret.%s.%s_len = count_strings (r);\n" n n;
-           pr "  ret.%s.%s_val = r;\n" n n;
-           pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name;
-           pr "  free_strings (r);\n"
-       | RStruct (n, _) ->
-           pr "  struct guestfs_%s_ret ret;\n" name;
-           pr "  ret.%s = *r;\n" n;
-           pr "  reply ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name;
-           pr "  xdr_free ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name
-       | RStructList (n, _) ->
-           pr "  struct guestfs_%s_ret ret;\n" name;
-           pr "  ret.%s = *r;\n" n;
-           pr "  reply ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name;
-           pr "  xdr_free ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name
-       | RBufferOut n ->
-           pr "  struct guestfs_%s_ret ret;\n" name;
-           pr "  ret.%s.%s_val = r;\n" n n;
-           pr "  ret.%s.%s_len = size;\n" n n;
-           pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
-             name;
-           pr "  free (r);\n"
+        match fst style with
+        | RErr -> pr "  reply (NULL, NULL);\n"
+        | RInt n | RInt64 n | RBool n ->
+            pr "  struct guestfs_%s_ret ret;\n" name;
+            pr "  ret.%s = r;\n" n;
+            pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name
+        | RConstString _ | RConstOptString _ ->
+            failwithf "RConstString|RConstOptString cannot be used by daemon functions"
+        | RString n ->
+            pr "  struct guestfs_%s_ret ret;\n" name;
+            pr "  ret.%s = r;\n" n;
+            pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name;
+            pr "  free (r);\n"
+        | RStringList n | RHashtable n ->
+            pr "  struct guestfs_%s_ret ret;\n" name;
+            pr "  ret.%s.%s_len = count_strings (r);\n" n n;
+            pr "  ret.%s.%s_val = r;\n" n n;
+            pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name;
+            pr "  free_strings (r);\n"
+        | RStruct (n, _) ->
+            pr "  struct guestfs_%s_ret ret;\n" name;
+            pr "  ret.%s = *r;\n" n;
+            pr "  reply ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name;
+            pr "  xdr_free ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name
+        | RStructList (n, _) ->
+            pr "  struct guestfs_%s_ret ret;\n" name;
+            pr "  ret.%s = *r;\n" n;
+            pr "  reply ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name;
+            pr "  xdr_free ((xdrproc_t) xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name
+        | RBufferOut n ->
+            pr "  struct guestfs_%s_ret ret;\n" name;
+            pr "  ret.%s.%s_val = r;\n" n n;
+            pr "  ret.%s.%s_len = size;\n" n n;
+            pr "  reply ((xdrproc_t) &xdr_guestfs_%s_ret, (char *) &ret);\n"
+              name;
+            pr "  free (r);\n"
       );
 
       (* Free the args. *)
       (match snd style with
        | [] ->
-          pr "done: ;\n";
+           pr "done: ;\n";
        | _ ->
-          pr "done:\n";
-          pr "  xdr_free ((xdrproc_t) xdr_guestfs_%s_args, (char *) &args);\n"
-            name
+           pr "done:\n";
+           pr "  xdr_free ((xdrproc_t) xdr_guestfs_%s_args, (char *) &args);\n"
+             name
       );
 
       pr "}\n\n";
@@ -4819,164 +4819,164 @@ and generate_daemon_actions () =
   List.iter (
     function
     | typ, cols ->
-       pr "static const char *lvm_%s_cols = \"%s\";\n"
-         typ (String.concat "," (List.map fst cols));
-       pr "\n";
-
-       pr "static int lvm_tokenize_%s (char *str, guestfs_int_lvm_%s *r)\n" typ typ;
-       pr "{\n";
-       pr "  char *tok, *p, *next;\n";
-       pr "  int i, j;\n";
-       pr "\n";
-       (*
-         pr "  fprintf (stderr, \"%%s: <<%%s>>\\n\", __func__, str);\n";
-         pr "\n";
-       *)
-       pr "  if (!str) {\n";
-       pr "    fprintf (stderr, \"%%s: failed: passed a NULL string\\n\", __func__);\n";
-       pr "    return -1;\n";
-       pr "  }\n";
-       pr "  if (!*str || isspace (*str)) {\n";
-       pr "    fprintf (stderr, \"%%s: failed: passed a empty string or one beginning with whitespace\\n\", __func__);\n";
-       pr "    return -1;\n";
-       pr "  }\n";
-       pr "  tok = str;\n";
-       List.iter (
-         fun (name, coltype) ->
-           pr "  if (!tok) {\n";
-           pr "    fprintf (stderr, \"%%s: failed: string finished early, around token %%s\\n\", __func__, \"%s\");\n" name;
-           pr "    return -1;\n";
-           pr "  }\n";
-           pr "  p = strchrnul (tok, ',');\n";
-           pr "  if (*p) next = p+1; else next = NULL;\n";
-           pr "  *p = '\\0';\n";
-           (match coltype with
-            | FString ->
-                pr "  r->%s = strdup (tok);\n" name;
-                pr "  if (r->%s == NULL) {\n" name;
-                pr "    perror (\"strdup\");\n";
-                pr "    return -1;\n";
-                pr "  }\n"
-            | FUUID ->
-                pr "  for (i = j = 0; i < 32; ++j) {\n";
-                pr "    if (tok[j] == '\\0') {\n";
-                pr "      fprintf (stderr, \"%%s: failed to parse UUID from '%%s'\\n\", __func__, tok);\n";
-                pr "      return -1;\n";
-                pr "    } else if (tok[j] != '-')\n";
-                pr "      r->%s[i++] = tok[j];\n" name;
-                pr "  }\n";
-            | FBytes ->
-                pr "  if (sscanf (tok, \"%%\"SCNu64, &r->%s) != 1) {\n" name;
-                pr "    fprintf (stderr, \"%%s: failed to parse size '%%s' from token %%s\\n\", __func__, tok, \"%s\");\n" name;
-                pr "    return -1;\n";
-                pr "  }\n";
-            | FInt64 ->
-                pr "  if (sscanf (tok, \"%%\"SCNi64, &r->%s) != 1) {\n" name;
-                pr "    fprintf (stderr, \"%%s: failed to parse int '%%s' from token %%s\\n\", __func__, tok, \"%s\");\n" name;
-                pr "    return -1;\n";
-                pr "  }\n";
-            | FOptPercent ->
-                pr "  if (tok[0] == '\\0')\n";
-                pr "    r->%s = -1;\n" name;
-                pr "  else if (sscanf (tok, \"%%f\", &r->%s) != 1) {\n" name;
-                pr "    fprintf (stderr, \"%%s: failed to parse float '%%s' from token %%s\\n\", __func__, tok, \"%s\");\n" name;
-                pr "    return -1;\n";
-                pr "  }\n";
-            | FBuffer | FInt32 | FUInt32 | FUInt64 | FChar ->
-                assert false (* can never be an LVM column *)
-           );
-           pr "  tok = next;\n";
-       ) cols;
-
-       pr "  if (tok != NULL) {\n";
-       pr "    fprintf (stderr, \"%%s: failed: extra tokens at end of string\\n\", __func__);\n";
-       pr "    return -1;\n";
-       pr "  }\n";
-       pr "  return 0;\n";
-       pr "}\n";
-       pr "\n";
-
-       pr "guestfs_int_lvm_%s_list *\n" typ;
-       pr "parse_command_line_%ss (void)\n" typ;
-       pr "{\n";
-       pr "  char *out, *err;\n";
-       pr "  char *p, *pend;\n";
-       pr "  int r, i;\n";
-       pr "  guestfs_int_lvm_%s_list *ret;\n" typ;
-       pr "  void *newp;\n";
-       pr "\n";
-       pr "  ret = malloc (sizeof *ret);\n";
-       pr "  if (!ret) {\n";
-       pr "    reply_with_perror (\"malloc\");\n";
-       pr "    return NULL;\n";
-       pr "  }\n";
-       pr "\n";
-       pr "  ret->guestfs_int_lvm_%s_list_len = 0;\n" typ;
-       pr "  ret->guestfs_int_lvm_%s_list_val = NULL;\n" typ;
-       pr "\n";
-       pr "  r = command (&out, &err,\n";
-       pr "           \"/sbin/lvm\", \"%ss\",\n" typ;
-       pr "           \"-o\", lvm_%s_cols, \"--unbuffered\", \"--noheadings\",\n" typ;
-       pr "           \"--nosuffix\", \"--separator\", \",\", \"--units\", \"b\", NULL);\n";
-       pr "  if (r == -1) {\n";
-       pr "    reply_with_error (\"%%s\", err);\n";
-       pr "    free (out);\n";
-       pr "    free (err);\n";
-       pr "    free (ret);\n";
-       pr "    return NULL;\n";
-       pr "  }\n";
-       pr "\n";
-       pr "  free (err);\n";
-       pr "\n";
-       pr "  /* Tokenize each line of the output. */\n";
-       pr "  p = out;\n";
-       pr "  i = 0;\n";
-       pr "  while (p) {\n";
-       pr "    pend = strchr (p, '\\n');       /* Get the next line of output. */\n";
-       pr "    if (pend) {\n";
-       pr "      *pend = '\\0';\n";
-       pr "      pend++;\n";
-       pr "    }\n";
-       pr "\n";
-       pr "    while (*p && isspace (*p))      /* Skip any leading whitespace. */\n";
-       pr "      p++;\n";
-       pr "\n";
-       pr "    if (!*p) {                      /* Empty line?  Skip it. */\n";
-       pr "      p = pend;\n";
-       pr "      continue;\n";
-       pr "    }\n";
-       pr "\n";
-       pr "    /* Allocate some space to store this next entry. */\n";
-       pr "    newp = realloc (ret->guestfs_int_lvm_%s_list_val,\n" typ;
-       pr "                sizeof (guestfs_int_lvm_%s) * (i+1));\n" typ;
-       pr "    if (newp == NULL) {\n";
-       pr "      reply_with_perror (\"realloc\");\n";
-       pr "      free (ret->guestfs_int_lvm_%s_list_val);\n" typ;
-       pr "      free (ret);\n";
-       pr "      free (out);\n";
-       pr "      return NULL;\n";
-       pr "    }\n";
-       pr "    ret->guestfs_int_lvm_%s_list_val = newp;\n" typ;
-       pr "\n";
-       pr "    /* Tokenize the next entry. */\n";
-       pr "    r = lvm_tokenize_%s (p, &ret->guestfs_int_lvm_%s_list_val[i]);\n" typ typ;
-       pr "    if (r == -1) {\n";
-       pr "      reply_with_error (\"failed to parse output of '%ss' command\");\n" typ;
+        pr "static const char *lvm_%s_cols = \"%s\";\n"
+          typ (String.concat "," (List.map fst cols));
+        pr "\n";
+
+        pr "static int lvm_tokenize_%s (char *str, guestfs_int_lvm_%s *r)\n" typ typ;
+        pr "{\n";
+        pr "  char *tok, *p, *next;\n";
+        pr "  int i, j;\n";
+        pr "\n";
+        (*
+          pr "  fprintf (stderr, \"%%s: <<%%s>>\\n\", __func__, str);\n";
+          pr "\n";
+        *)
+        pr "  if (!str) {\n";
+        pr "    fprintf (stderr, \"%%s: failed: passed a NULL string\\n\", __func__);\n";
+        pr "    return -1;\n";
+        pr "  }\n";
+        pr "  if (!*str || isspace (*str)) {\n";
+        pr "    fprintf (stderr, \"%%s: failed: passed a empty string or one beginning with whitespace\\n\", __func__);\n";
+        pr "    return -1;\n";
+        pr "  }\n";
+        pr "  tok = str;\n";
+        List.iter (
+          fun (name, coltype) ->
+            pr "  if (!tok) {\n";
+            pr "    fprintf (stderr, \"%%s: failed: string finished early, around token %%s\\n\", __func__, \"%s\");\n" name;
+            pr "    return -1;\n";
+            pr "  }\n";
+            pr "  p = strchrnul (tok, ',');\n";
+            pr "  if (*p) next = p+1; else next = NULL;\n";
+            pr "  *p = '\\0';\n";
+            (match coltype with
+             | FString ->
+                 pr "  r->%s = strdup (tok);\n" name;
+                 pr "  if (r->%s == NULL) {\n" name;
+                 pr "    perror (\"strdup\");\n";
+                 pr "    return -1;\n";
+                 pr "  }\n"
+             | FUUID ->
+                 pr "  for (i = j = 0; i < 32; ++j) {\n";
+                 pr "    if (tok[j] == '\\0') {\n";
+                 pr "      fprintf (stderr, \"%%s: failed to parse UUID from '%%s'\\n\", __func__, tok);\n";
+                 pr "      return -1;\n";
+                 pr "    } else if (tok[j] != '-')\n";
+                 pr "      r->%s[i++] = tok[j];\n" name;
+                 pr "  }\n";
+             | FBytes ->
+                 pr "  if (sscanf (tok, \"%%\"SCNu64, &r->%s) != 1) {\n" name;
+                 pr "    fprintf (stderr, \"%%s: failed to parse size '%%s' from token %%s\\n\", __func__, tok, \"%s\");\n" name;
+                 pr "    return -1;\n";
+                 pr "  }\n";
+             | FInt64 ->
+                 pr "  if (sscanf (tok, \"%%\"SCNi64, &r->%s) != 1) {\n" name;
+                 pr "    fprintf (stderr, \"%%s: failed to parse int '%%s' from token %%s\\n\", __func__, tok, \"%s\");\n" name;
+                 pr "    return -1;\n";
+                 pr "  }\n";
+             | FOptPercent ->
+                 pr "  if (tok[0] == '\\0')\n";
+                 pr "    r->%s = -1;\n" name;
+                 pr "  else if (sscanf (tok, \"%%f\", &r->%s) != 1) {\n" name;
+                 pr "    fprintf (stderr, \"%%s: failed to parse float '%%s' from token %%s\\n\", __func__, tok, \"%s\");\n" name;
+                 pr "    return -1;\n";
+                 pr "  }\n";
+             | FBuffer | FInt32 | FUInt32 | FUInt64 | FChar ->
+                 assert false (* can never be an LVM column *)
+            );
+            pr "  tok = next;\n";
+        ) cols;
+
+        pr "  if (tok != NULL) {\n";
+        pr "    fprintf (stderr, \"%%s: failed: extra tokens at end of string\\n\", __func__);\n";
+        pr "    return -1;\n";
+        pr "  }\n";
+        pr "  return 0;\n";
+        pr "}\n";
+        pr "\n";
+
+        pr "guestfs_int_lvm_%s_list *\n" typ;
+        pr "parse_command_line_%ss (void)\n" typ;
+        pr "{\n";
+        pr "  char *out, *err;\n";
+        pr "  char *p, *pend;\n";
+        pr "  int r, i;\n";
+        pr "  guestfs_int_lvm_%s_list *ret;\n" typ;
+        pr "  void *newp;\n";
+        pr "\n";
+        pr "  ret = malloc (sizeof *ret);\n";
+        pr "  if (!ret) {\n";
+        pr "    reply_with_perror (\"malloc\");\n";
+        pr "    return NULL;\n";
+        pr "  }\n";
+        pr "\n";
+        pr "  ret->guestfs_int_lvm_%s_list_len = 0;\n" typ;
+        pr "  ret->guestfs_int_lvm_%s_list_val = NULL;\n" typ;
+        pr "\n";
+        pr "  r = command (&out, &err,\n";
+        pr "          \"/sbin/lvm\", \"%ss\",\n" typ;
+        pr "          \"-o\", lvm_%s_cols, \"--unbuffered\", \"--noheadings\",\n" typ;
+        pr "          \"--nosuffix\", \"--separator\", \",\", \"--units\", \"b\", NULL);\n";
+        pr "  if (r == -1) {\n";
+        pr "    reply_with_error (\"%%s\", err);\n";
+        pr "    free (out);\n";
+        pr "    free (err);\n";
+        pr "    free (ret);\n";
+        pr "    return NULL;\n";
+        pr "  }\n";
+        pr "\n";
+        pr "  free (err);\n";
+        pr "\n";
+        pr "  /* Tokenize each line of the output. */\n";
+        pr "  p = out;\n";
+        pr "  i = 0;\n";
+        pr "  while (p) {\n";
+        pr "    pend = strchr (p, '\\n');      /* Get the next line of output. */\n";
+        pr "    if (pend) {\n";
+        pr "      *pend = '\\0';\n";
+        pr "      pend++;\n";
+        pr "    }\n";
+        pr "\n";
+        pr "    while (*p && isspace (*p))     /* Skip any leading whitespace. */\n";
+        pr "      p++;\n";
+        pr "\n";
+        pr "    if (!*p) {                     /* Empty line?  Skip it. */\n";
+        pr "      p = pend;\n";
+        pr "      continue;\n";
+        pr "    }\n";
+        pr "\n";
+        pr "    /* Allocate some space to store this next entry. */\n";
+        pr "    newp = realloc (ret->guestfs_int_lvm_%s_list_val,\n" typ;
+        pr "               sizeof (guestfs_int_lvm_%s) * (i+1));\n" typ;
+        pr "    if (newp == NULL) {\n";
+        pr "      reply_with_perror (\"realloc\");\n";
         pr "      free (ret->guestfs_int_lvm_%s_list_val);\n" typ;
         pr "      free (ret);\n";
-       pr "      free (out);\n";
-       pr "      return NULL;\n";
-       pr "    }\n";
-       pr "\n";
-       pr "    ++i;\n";
-       pr "    p = pend;\n";
-       pr "  }\n";
-       pr "\n";
-       pr "  ret->guestfs_int_lvm_%s_list_len = i;\n" typ;
-       pr "\n";
-       pr "  free (out);\n";
-       pr "  return ret;\n";
-       pr "}\n"
+        pr "      free (out);\n";
+        pr "      return NULL;\n";
+        pr "    }\n";
+        pr "    ret->guestfs_int_lvm_%s_list_val = newp;\n" typ;
+        pr "\n";
+        pr "    /* Tokenize the next entry. */\n";
+        pr "    r = lvm_tokenize_%s (p, &ret->guestfs_int_lvm_%s_list_val[i]);\n" typ typ;
+        pr "    if (r == -1) {\n";
+        pr "      reply_with_error (\"failed to parse output of '%ss' command\");\n" typ;
+        pr "      free (ret->guestfs_int_lvm_%s_list_val);\n" typ;
+        pr "      free (ret);\n";
+        pr "      free (out);\n";
+        pr "      return NULL;\n";
+        pr "    }\n";
+        pr "\n";
+        pr "    ++i;\n";
+        pr "    p = pend;\n";
+        pr "  }\n";
+        pr "\n";
+        pr "  ret->guestfs_int_lvm_%s_list_len = i;\n" typ;
+        pr "\n";
+        pr "  free (out);\n";
+        pr "  return ret;\n";
+        pr "}\n"
 
   ) ["pv", lvm_pv_cols; "vg", lvm_vg_cols; "lv", lvm_lv_cols]
 
@@ -5047,9 +5047,9 @@ static void print_table (char * const * const argv)
   List.iter (
     fun (_, _, _, _, tests, _, _) ->
       let tests = filter_map (
-       function
-       | (_, (Always|If _|Unless _), test) -> Some test
-       | (_, Disabled, _) -> None
+        function
+        | (_, (Always|If _|Unless _), test) -> Some test
+        | (_, Disabled, _) -> None
       ) tests in
       let seq = List.concat (List.map seq_of_test tests) in
       let cmds_tested = List.map List.hd seq in
@@ -5059,7 +5059,7 @@ static void print_table (char * const * const argv)
   List.iter (
     fun (name, _, _, _, _, _, _) ->
       if not (Hashtbl.mem hash name) then
-       pr "  fprintf (stderr, \"warning: \\\"guestfs_%s\\\" has no tests\\n\");\n" name
+        pr "  fprintf (stderr, \"warning: \\\"guestfs_%s\\\" has no tests\\n\");\n" name
   ) all_functions;
 
   pr "}\n";
@@ -5073,7 +5073,7 @@ static void print_table (char * const * const argv)
   let test_names =
     List.map (
       fun (name, _, _, _, tests, _, _) ->
-       mapi (generate_one_test name) tests
+        mapi (generate_one_test name) tests
     ) (List.rev all_functions) in
   let test_names = List.concat test_names in
   let nr_tests = List.length test_names in
@@ -5305,54 +5305,54 @@ static int %s (void)
 and generate_one_test_body name i test_name init test =
   (match init with
    | InitNone (* XXX at some point, InitNone and InitEmpty became
-              * folded together as the same thing.  Really we should
-              * make InitNone do nothing at all, but the tests may
-              * need to be checked to make sure this is OK.
-              *)
+               * folded together as the same thing.  Really we should
+               * make InitNone do nothing at all, but the tests may
+               * need to be checked to make sure this is OK.
+               *)
    | InitEmpty ->
        pr "  /* InitNone|InitEmpty for %s */\n" test_name;
        List.iter (generate_test_command_call test_name)
-        [["blockdev_setrw"; "/dev/sda"];
-         ["umount_all"];
-         ["lvm_remove_all"]]
+         [["blockdev_setrw"; "/dev/sda"];
+          ["umount_all"];
+          ["lvm_remove_all"]]
    | InitBasicFS ->
        pr "  /* InitBasicFS for %s: create ext2 on /dev/sda1 */\n" test_name;
        List.iter (generate_test_command_call test_name)
-        [["blockdev_setrw"; "/dev/sda"];
-         ["umount_all"];
-         ["lvm_remove_all"];
-         ["sfdiskM"; "/dev/sda"; ","];
-         ["mkfs"; "ext2"; "/dev/sda1"];
-         ["mount"; "/dev/sda1"; "/"]]
+         [["blockdev_setrw"; "/dev/sda"];
+          ["umount_all"];
+          ["lvm_remove_all"];
+          ["sfdiskM"; "/dev/sda"; ","];
+          ["mkfs"; "ext2"; "/dev/sda1"];
+          ["mount"; "/dev/sda1"; "/"]]
    | InitBasicFSonLVM ->
        pr "  /* InitBasicFSonLVM for %s: create ext2 on /dev/VG/LV */\n"
-        test_name;
+         test_name;
        List.iter (generate_test_command_call test_name)
-        [["blockdev_setrw"; "/dev/sda"];
-         ["umount_all"];
-         ["lvm_remove_all"];
-         ["sfdiskM"; "/dev/sda"; ","];
-         ["pvcreate"; "/dev/sda1"];
-         ["vgcreate"; "VG"; "/dev/sda1"];
-         ["lvcreate"; "LV"; "VG"; "8"];
-         ["mkfs"; "ext2"; "/dev/VG/LV"];
-         ["mount"; "/dev/VG/LV"; "/"]]
+         [["blockdev_setrw"; "/dev/sda"];
+          ["umount_all"];
+          ["lvm_remove_all"];
+          ["sfdiskM"; "/dev/sda"; ","];
+          ["pvcreate"; "/dev/sda1"];
+          ["vgcreate"; "VG"; "/dev/sda1"];
+          ["lvcreate"; "LV"; "VG"; "8"];
+          ["mkfs"; "ext2"; "/dev/VG/LV"];
+          ["mount"; "/dev/VG/LV"; "/"]]
    | InitSquashFS ->
        pr "  /* InitSquashFS for %s */\n" test_name;
        List.iter (generate_test_command_call test_name)
-        [["blockdev_setrw"; "/dev/sda"];
-         ["umount_all"];
-         ["lvm_remove_all"];
-         ["mount_vfs"; "ro"; "squashfs"; "/dev/sdd"; "/"]]
+         [["blockdev_setrw"; "/dev/sda"];
+          ["umount_all"];
+          ["lvm_remove_all"];
+          ["mount_vfs"; "ro"; "squashfs"; "/dev/sdd"; "/"]]
   );
 
   let get_seq_last = function
     | [] ->
-       failwithf "%s: you cannot use [] (empty list) when expecting a command"
-         test_name
+        failwithf "%s: you cannot use [] (empty list) when expecting a command"
+          test_name
     | seq ->
-       let seq = List.rev seq in
-       List.rev (List.tl seq), List.hd seq
+        let seq = List.rev seq in
+        List.rev (List.tl seq), List.hd seq
   in
 
   match test with
@@ -5364,10 +5364,10 @@ and generate_one_test_body name i test_name init test =
       pr "  const char *expected = \"%s\";\n" (c_quote expected);
       let seq, last = get_seq_last seq in
       let test () =
-       pr "    if (strcmp (r, expected) != 0) {\n";
-       pr "      fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r);\n" test_name;
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    if (strcmp (r, expected) != 0) {\n";
+        pr "      fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r);\n" test_name;
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5375,27 +5375,27 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputList for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       iteri (
-         fun i str ->
-           pr "    if (!r[%d]) {\n" i;
-           pr "      fprintf (stderr, \"%s: short list returned from command\\n\");\n" test_name;
-           pr "      print_strings (r);\n";
-           pr "      return -1;\n";
-           pr "    }\n";
+        iteri (
+          fun i str ->
+            pr "    if (!r[%d]) {\n" i;
+            pr "      fprintf (stderr, \"%s: short list returned from command\\n\");\n" test_name;
+            pr "      print_strings (r);\n";
+            pr "      return -1;\n";
+            pr "    }\n";
             pr "    {\n";
             pr "      const char *expected = \"%s\";\n" (c_quote str);
-           pr "      if (strcmp (r[%d], expected) != 0) {\n" i;
-           pr "        fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r[%d]);\n" test_name i;
-           pr "        return -1;\n";
-           pr "      }\n";
-           pr "    }\n"
-       ) expected;
-       pr "    if (r[%d] != NULL) {\n" (List.length expected);
-       pr "      fprintf (stderr, \"%s: extra elements returned from command\\n\");\n"
-         test_name;
-       pr "      print_strings (r);\n";
-       pr "      return -1;\n";
-       pr "    }\n"
+            pr "      if (strcmp (r[%d], expected) != 0) {\n" i;
+            pr "        fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r[%d]);\n" test_name i;
+            pr "        return -1;\n";
+            pr "      }\n";
+            pr "    }\n"
+        ) expected;
+        pr "    if (r[%d] != NULL) {\n" (List.length expected);
+        pr "      fprintf (stderr, \"%s: extra elements returned from command\\n\");\n"
+          test_name;
+        pr "      print_strings (r);\n";
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5403,28 +5403,28 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputListOfDevices for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       iteri (
-         fun i str ->
-           pr "    if (!r[%d]) {\n" i;
-           pr "      fprintf (stderr, \"%s: short list returned from command\\n\");\n" test_name;
-           pr "      print_strings (r);\n";
-           pr "      return -1;\n";
-           pr "    }\n";
+        iteri (
+          fun i str ->
+            pr "    if (!r[%d]) {\n" i;
+            pr "      fprintf (stderr, \"%s: short list returned from command\\n\");\n" test_name;
+            pr "      print_strings (r);\n";
+            pr "      return -1;\n";
+            pr "    }\n";
             pr "    {\n";
             pr "      const char *expected = \"%s\";\n" (c_quote str);
-           pr "      r[%d][5] = 's';\n" i;
-           pr "      if (strcmp (r[%d], expected) != 0) {\n" i;
-           pr "        fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r[%d]);\n" test_name i;
-           pr "        return -1;\n";
-           pr "      }\n";
-           pr "    }\n"
-       ) expected;
-       pr "    if (r[%d] != NULL) {\n" (List.length expected);
-       pr "      fprintf (stderr, \"%s: extra elements returned from command\\n\");\n"
-         test_name;
-       pr "      print_strings (r);\n";
-       pr "      return -1;\n";
-       pr "    }\n"
+            pr "      r[%d][5] = 's';\n" i;
+            pr "      if (strcmp (r[%d], expected) != 0) {\n" i;
+            pr "        fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r[%d]);\n" test_name i;
+            pr "        return -1;\n";
+            pr "      }\n";
+            pr "    }\n"
+        ) expected;
+        pr "    if (r[%d] != NULL) {\n" (List.length expected);
+        pr "      fprintf (stderr, \"%s: extra elements returned from command\\n\");\n"
+          test_name;
+        pr "      print_strings (r);\n";
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5432,12 +5432,12 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputInt for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       pr "    if (r != %d) {\n" expected;
-       pr "      fprintf (stderr, \"%s: expected %d but got %%d\\n\","
-         test_name expected;
-       pr "               (int) r);\n";
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    if (r != %d) {\n" expected;
+        pr "      fprintf (stderr, \"%s: expected %d but got %%d\\n\","
+          test_name expected;
+        pr "               (int) r);\n";
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5445,12 +5445,12 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputIntOp for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       pr "    if (! (r %s %d)) {\n" op expected;
-       pr "      fprintf (stderr, \"%s: expected %s %d but got %%d\\n\","
-         test_name op expected;
-       pr "               (int) r);\n";
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    if (! (r %s %d)) {\n" op expected;
+        pr "      fprintf (stderr, \"%s: expected %s %d but got %%d\\n\","
+          test_name op expected;
+        pr "               (int) r);\n";
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5458,11 +5458,11 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputTrue for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       pr "    if (!r) {\n";
-       pr "      fprintf (stderr, \"%s: expected true, got false\\n\");\n"
-         test_name;
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    if (!r) {\n";
+        pr "      fprintf (stderr, \"%s: expected true, got false\\n\");\n"
+          test_name;
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5470,11 +5470,11 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputFalse for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       pr "    if (r) {\n";
-       pr "      fprintf (stderr, \"%s: expected false, got true\\n\");\n"
-         test_name;
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    if (r) {\n";
+        pr "      fprintf (stderr, \"%s: expected false, got true\\n\");\n"
+          test_name;
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5482,20 +5482,20 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputLength for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       pr "    int j;\n";
-       pr "    for (j = 0; j < %d; ++j)\n" expected;
-       pr "      if (r[j] == NULL) {\n";
-       pr "        fprintf (stderr, \"%s: short list returned\\n\");\n"
-         test_name;
-       pr "        print_strings (r);\n";
-       pr "        return -1;\n";
-       pr "      }\n";
-       pr "    if (r[j] != NULL) {\n";
-       pr "      fprintf (stderr, \"%s: long list returned\\n\");\n"
-         test_name;
-       pr "      print_strings (r);\n";
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    int j;\n";
+        pr "    for (j = 0; j < %d; ++j)\n" expected;
+        pr "      if (r[j] == NULL) {\n";
+        pr "        fprintf (stderr, \"%s: short list returned\\n\");\n"
+          test_name;
+        pr "        print_strings (r);\n";
+        pr "        return -1;\n";
+        pr "      }\n";
+        pr "    if (r[j] != NULL) {\n";
+        pr "      fprintf (stderr, \"%s: long list returned\\n\");\n"
+          test_name;
+        pr "      print_strings (r);\n";
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5505,14 +5505,14 @@ and generate_one_test_body name i test_name init test =
       let seq, last = get_seq_last seq in
       let len = String.length expected in
       let test () =
-       pr "    if (size != %d) {\n" len;
-       pr "      fprintf (stderr, \"%s: returned size of buffer wrong, expected %d but got %%zu\\n\", size);\n" test_name len;
-       pr "      return -1;\n";
-       pr "    }\n";
-       pr "    if (strncmp (r, expected, size) != 0) {\n";
-       pr "      fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r);\n" test_name;
-       pr "      return -1;\n";
-       pr "    }\n"
+        pr "    if (size != %d) {\n" len;
+        pr "      fprintf (stderr, \"%s: returned size of buffer wrong, expected %d but got %%zu\\n\", size);\n" test_name len;
+        pr "      return -1;\n";
+        pr "    }\n";
+        pr "    if (strncmp (r, expected, size) != 0) {\n";
+        pr "      fprintf (stderr, \"%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", expected, r);\n" test_name;
+        pr "      return -1;\n";
+        pr "    }\n"
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5520,44 +5520,44 @@ and generate_one_test_body name i test_name init test =
       pr "  /* TestOutputStruct for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
       let test () =
-       List.iter (
-         function
-         | CompareWithInt (field, expected) ->
-             pr "    if (r->%s != %d) {\n" field expected;
-             pr "      fprintf (stderr, \"%s: %s was %%d, expected %d\\n\",\n"
-               test_name field expected;
-             pr "               (int) r->%s);\n" field;
-             pr "      return -1;\n";
-             pr "    }\n"
-         | CompareWithIntOp (field, op, expected) ->
-             pr "    if (!(r->%s %s %d)) {\n" field op expected;
-             pr "      fprintf (stderr, \"%s: %s was %%d, expected %s %d\\n\",\n"
-               test_name field op expected;
-             pr "               (int) r->%s);\n" field;
-             pr "      return -1;\n";
-             pr "    }\n"
-         | CompareWithString (field, expected) ->
-             pr "    if (strcmp (r->%s, \"%s\") != 0) {\n" field expected;
-             pr "      fprintf (stderr, \"%s: %s was \"%%s\", expected \"%s\"\\n\",\n"
-               test_name field expected;
-             pr "               r->%s);\n" field;
-             pr "      return -1;\n";
-             pr "    }\n"
-         | CompareFieldsIntEq (field1, field2) ->
-             pr "    if (r->%s != r->%s) {\n" field1 field2;
-             pr "      fprintf (stderr, \"%s: %s (%%d) <> %s (%%d)\\n\",\n"
-               test_name field1 field2;
-             pr "               (int) r->%s, (int) r->%s);\n" field1 field2;
-             pr "      return -1;\n";
-             pr "    }\n"
-         | CompareFieldsStrEq (field1, field2) ->
-             pr "    if (strcmp (r->%s, r->%s) != 0) {\n" field1 field2;
-             pr "      fprintf (stderr, \"%s: %s (\"%%s\") <> %s (\"%%s\")\\n\",\n"
-               test_name field1 field2;
-             pr "               r->%s, r->%s);\n" field1 field2;
-             pr "      return -1;\n";
-             pr "    }\n"
-       ) checks
+        List.iter (
+          function
+          | CompareWithInt (field, expected) ->
+              pr "    if (r->%s != %d) {\n" field expected;
+              pr "      fprintf (stderr, \"%s: %s was %%d, expected %d\\n\",\n"
+                test_name field expected;
+              pr "               (int) r->%s);\n" field;
+              pr "      return -1;\n";
+              pr "    }\n"
+          | CompareWithIntOp (field, op, expected) ->
+              pr "    if (!(r->%s %s %d)) {\n" field op expected;
+              pr "      fprintf (stderr, \"%s: %s was %%d, expected %s %d\\n\",\n"
+                test_name field op expected;
+              pr "               (int) r->%s);\n" field;
+              pr "      return -1;\n";
+              pr "    }\n"
+          | CompareWithString (field, expected) ->
+              pr "    if (strcmp (r->%s, \"%s\") != 0) {\n" field expected;
+              pr "      fprintf (stderr, \"%s: %s was \"%%s\", expected \"%s\"\\n\",\n"
+                test_name field expected;
+              pr "               r->%s);\n" field;
+              pr "      return -1;\n";
+              pr "    }\n"
+          | CompareFieldsIntEq (field1, field2) ->
+              pr "    if (r->%s != r->%s) {\n" field1 field2;
+              pr "      fprintf (stderr, \"%s: %s (%%d) <> %s (%%d)\\n\",\n"
+                test_name field1 field2;
+              pr "               (int) r->%s, (int) r->%s);\n" field1 field2;
+              pr "      return -1;\n";
+              pr "    }\n"
+          | CompareFieldsStrEq (field1, field2) ->
+              pr "    if (strcmp (r->%s, r->%s) != 0) {\n" field1 field2;
+              pr "      fprintf (stderr, \"%s: %s (\"%%s\") <> %s (\"%%s\")\\n\",\n"
+                test_name field1 field2;
+              pr "               r->%s, r->%s);\n" field1 field2;
+              pr "      return -1;\n";
+              pr "    }\n"
+        ) checks
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
@@ -5576,84 +5576,84 @@ and generate_test_command_call ?(expect_error = false) ?test test_name cmd =
   | name :: args ->
       (* Look up the command to find out what args/ret it has. *)
       let style =
-       try
-         let _, style, _, _, _, _, _ =
-           List.find (fun (n, _, _, _, _, _, _) -> n = name) all_functions in
-         style
-       with Not_found ->
-         failwithf "%s: in test, command %s was not found" test_name name in
+        try
+          let _, style, _, _, _, _, _ =
+            List.find (fun (n, _, _, _, _, _, _) -> n = name) all_functions in
+          style
+        with Not_found ->
+          failwithf "%s: in test, command %s was not found" test_name name in
 
       if List.length (snd style) <> List.length args then
-       failwithf "%s: in test, wrong number of args given to %s"
-         test_name name;
+        failwithf "%s: in test, wrong number of args given to %s"
+          test_name name;
 
       pr "  {\n";
 
       List.iter (
-       function