summaryrefslogtreecommitdiff
path: root/lsinitramfs
diff options
context:
space:
mode:
Diffstat (limited to 'lsinitramfs')
-rwxr-xr-xlsinitramfs51
1 files changed, 51 insertions, 0 deletions
diff --git a/lsinitramfs b/lsinitramfs
new file mode 100755
index 0000000..91c65e1
--- /dev/null
+++ b/lsinitramfs
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+set -eu
+
+usage()
+{
+ echo "Usage: $(basename $0) <initramfs file>"
+}
+
+if [ "$#" -eq 0 ] ; then
+ usage >&2
+ exit 1
+fi
+
+cpio_args="--extract --quiet --list"
+
+OPTIONS=`getopt -o hl --long help,long -n "$0" -- "$@"`
+# Check for non-GNU getopt
+if [ $? != 0 ] ; then echo "W: non-GNU getopt" >&2 ; exit 1 ; fi
+
+eval set -- "$OPTIONS"
+
+while true; do
+ case "$1" in
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -l|--long)
+ cpio_args="${cpio_args:+${cpio_args} --verbose}"
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ echo "Internal error!" >&2
+ exit 1
+ esac
+done
+
+for initramfs in "$@" ; do
+ if ! [ -r "${initramfs}" ] ; then
+ echo "Specified file could not be read." >&2
+ exit 1
+ else
+ echo "${initramfs}"
+ zcat "${initramfs}" | cpio ${cpio_args}
+ fi
+done