btrfs-progs: tests: Move extract_image out of check_all_images for common use
authorZhao Lei <zhaolei@cn.fujitsu.com>
Wed, 23 Sep 2015 07:19:04 +0000 (15:19 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Oct 2015 09:48:24 +0000 (11:48 +0200)
Move code for extract image file to a function from check_all_images()
for common use, so caller can use this function to extrace single
image file.

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
[minor reformatting and updates]
Signed-off-by: David Sterba <dsterba@suse.com>
tests/common

index 63b0d9f..67d1558 100644 (file)
@@ -62,51 +62,65 @@ check_image()
        run_check $TOP/btrfs check $image
 }
 
-# Process all image dumps in a given directory,
+# Extract a usable image from packed formats
 # - raw btrfs filesystem images, suffix .raw
 # - dtto compressed by XZ, suffix .raw.xz
 # - meta-dump images with suffix .img
 # - dtto compressed by XZ, suffix .img.xz
+extract_image()
+{
+       local image
+       local cleanme
+
+       image="$1"
+       case "$image" in
+       *.img)
+               rm -f $image.restored
+               : ;;
+       *.img.xz)
+               xz --decompress --keep "$image" || \
+                       _fail "failed to decompress image $image" >&2
+               image=${image%%.xz}
+               rm -f $image.restored
+               cleanme=$image
+               ;;
+       *.raw)
+               cp --sparse=auto $image $image.restored
+               ;;
+       *.raw.xz)
+               xz --decompress --keep "$image" || \
+                       _fail "failed to decompress image $image" >&2
+               image=${image%%.xz}
+               mv "$image" "$image".restored
+               ;;
+       esac
+
+       if ! [ -f $image.restored ]; then
+               echo "restoring image $(basename $image)" >> $RESULTS
+               $TOP/btrfs-image -r $image $image.restored || \
+                       _fail "failed to restore image $image" >&2
+       fi
+
+       [ -f "$cleanme" ] && rm -f "$cleanme"
+
+       echo "$image.restored"
+}
+
+# Process all image dumps in a given directory
 check_all_images()
 {
-       dir=$1
+       local dir
+       local extracted
+
+       dir="$1"
        for image in $(find $dir \( -iname '*.img' -o   \
                                -iname '*.img.xz' -o    \
                                -iname '*.raw' -o       \
                                -iname '*.raw.xz' \) | sort)
        do
-               cleanme=
-               case "$image" in
-               *.img)
-                       rm -f $image.restored
-                       : ;;
-               *.img.xz)
-                       xz --decompress --keep "$image" || \
-                               _fail "failed to decompress image $image"
-                       image=${image%%.xz}
-                       rm -f $image.restored
-                       cleanme=$image
-                       ;;
-               *.raw)
-                       cp --sparse=auto $image $image.restored
-                       ;;
-               *.raw.xz)
-                       xz --decompress --keep "$image" || \
-                               _fail "failed to decompress image $image"
-                       image=${image%%.xz}
-                       mv "$image" "$image".restored
-                       ;;
-               esac
-
-               if ! [ -f $image.restored ]; then
-                       echo "restoring image $(basename $image)" >> $RESULTS
-                       $TOP/btrfs-image -r $image $image.restored || \
-                               _fail "failed to restore image $image"
-               fi
-
-               check_image $image.restored
-
-               rm -f $image.restored $cleanme
+               extracted=$(extract_image "$image")
+               check_image "$extracted"
+               rm -f "$extracted"
        done
 }