]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
lsinitrd: cope with xz and lzma compressed images
authorHarald Hoyer <harald@redhat.com>
Tue, 15 Mar 2011 18:49:13 +0000 (19:49 +0100)
committerHarald Hoyer <harald@redhat.com>
Tue, 15 Mar 2011 18:51:07 +0000 (19:51 +0100)
lsinitrd

index 7e9df9eb0f7fe2a6b44084f0e0fbb86da4206f9c..6e2d82b8f105d858aa72efdca2f3a7e13be76e03 100755 (executable)
--- a/lsinitrd
+++ b/lsinitrd
 [[ $# -eq 1 || $# -eq 2 ]] || { echo "Usage: $(basename $0) <initramfs file> [<filename>]" ; exit 1 ; }
 [[ -f $1 ]]    || { echo "$1 does not exist" ; exit 1 ; }
 
+CAT=zcat
+FILE_T=$(file $1)
+
+if [[ "$FILE_T" =~ ": gzip compressed data" ]]; then
+    CAT=zcat
+elif [[ "$FILE_T" =~ ": xz compressed data" ]]; then
+    CAT=xzcat
+elif [[ "$FILE_T" =~ ": data" ]]; then
+    CAT=lzcat
+fi
+
 if [[ $# -eq 2 ]]; then
-    zcat $1 | cpio --extract --verbose --quiet --to-stdout ${2#/} 2>/dev/null
+    $CAT $1 | cpio --extract --verbose --quiet --to-stdout ${2#/} 2>/dev/null
     exit $?
 fi
 
 echo "$1:"
 echo "========================================================================"
-zcat $1 | cpio --extract --verbose --quiet --to-stdout 'dracut-*' 2>/dev/null
+$CAT $1 | cpio --extract --verbose --quiet --to-stdout 'dracut-*' 2>/dev/null
 echo "========================================================================"
-zcat $1 | cpio --extract --verbose --quiet --list
+$CAT $1 | cpio --extract --verbose --quiet --list
 echo "========================================================================"