packages: lesspipe/lesspipe.sh - handle lzma and xz compressed initrd images
glen
glen at pld-linux.org
Sun Dec 19 12:20:01 CET 2010
Author: glen Date: Sun Dec 19 11:20:01 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- handle lzma and xz compressed initrd images
---- Files affected:
packages/lesspipe:
lesspipe.sh (1.44 -> 1.45)
---- Diffs:
================================================================
Index: packages/lesspipe/lesspipe.sh
diff -u packages/lesspipe/lesspipe.sh:1.44 packages/lesspipe/lesspipe.sh:1.45
--- packages/lesspipe/lesspipe.sh:1.44 Tue Oct 19 18:04:46 2010
+++ packages/lesspipe/lesspipe.sh Sun Dec 19 12:19:56 2010
@@ -25,25 +25,61 @@
# This is a preprocessor for 'less'. It is used when this environment
# variable is set: LESSOPEN="|lesspipe.sh %s"
+# attempt to reveal info about initrd image
+initrd() {
+ local ft=$(file "$1" 2>/dev/null) dec tmp ft2
+
+ case "$ft" in
+ *LZMA?compressed?data*)
+ dec="lzma -dc"
+ ;;
+ *gzip?compressed?data*)
+ dec="gzip -dc"
+ ;;
+ *data*)
+ dec="xz -dc"
+ ;;
+ esac
+
+ [ "$ft" ] || return 1
+ tmp=$(mktemp -d) || return 1
+ $dec "$1" > $tmp/initrd.img || {
+ rm -rf $tmp
+ return 1
+ }
+
+ ft2=$(file $tmp/initrd.img 2>/dev/null)
+ echo "$ft:${ft2#$tmp/initrd.img:}"
+ case "$ft2" in
+ *cpio?archive*)
+ ;;
+ *)
+ rm -rf $tmp
+ return 0
+ ;;
+ esac
+
+ local out=$(cpio -itv --quiet < $tmp/initrd.img)
+ echo "initrd contents:"
+ echo "$out"
+
+ # also display linuxrc
+ if [[ "$out" == *linuxrc* ]] ;then
+ echo ""
+ echo "/linuxrc program:"
+ (cd $tmp && cpio -dimu --quiet < $tmp/initrd.img)
+ cat $tmp/linuxrc
+ fi
+
+ rm -rf $tmp
+ return 0
+}
+
lesspipe() {
case "$1" in
# possible initrd images
*initrd-*.gz)
- if [[ $(file -z "$1" 2>/dev/null) == *cpio?archive* ]]; then
- echo "initrd contents:"
- local out=$(gzip -dc "$1" | cpio -itv --quiet)
- echo "$out"
-
- # also display linuxrc
- if [[ "$out" == *linuxrc* ]] ;then
- echo ""
- echo "/linuxrc program:"
- local tmp=$(mktemp -d)
- gzip -dc "$1" | (cd $tmp && cpio -dimu --quiet)
- cat $tmp/linuxrc
- rm -rf $tmp
- fi
- fi
+ initrd "$1" && return 0
;;
*.tar|*.phar) tar tvvf "$1" ;;
@@ -79,14 +115,18 @@
groff -s -p -t -e -Tlatin1 -mandoc "$1"
fi
;;
- *) case $TERM in
- xterm|xterm-color|xterm*88color|xterm*256color) output=xterm256;;
- *) output=ansi;;
- esac
- run-mailcap "$1" || \
- { echo $LESS | grep -qi r || ps -p `ps -p $PPID -oppid=` -oargs= | grep -qiw -- -r && highlight --$output --style=darkblue "$1"; }
- # Check to see if binary, if so -- view with 'strings'
- # FILE=$(file -L "$1")
+ *)
+ case $TERM in
+ xterm|xterm-color|xterm*88color|xterm*256color)
+ output=xterm256;;
+ *)
+ output=ansi;;
+ esac
+ run-mailcap "$1" || {
+ echo "$LESS" | grep -qi r || ps -p $(ps -p $PPID -oppid=) -oargs= | grep -qiw -- -r && highlight --$output --style=darkblue "$1";
+ }
+ # Check to see if binary, if so -- view with 'strings'
+ # FILE=$(file -L "$1")
esac
}
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/lesspipe/lesspipe.sh?r1=1.44&r2=1.45&f=u
More information about the pld-cvs-commit
mailing list