summaryrefslogtreecommitdiffstats
path: root/0027-lsinitrd-switch-to-getopt-and-add-f-and-k-parameter.patch
diff options
context:
space:
mode:
Diffstat (limited to '0027-lsinitrd-switch-to-getopt-and-add-f-and-k-parameter.patch')
-rw-r--r--0027-lsinitrd-switch-to-getopt-and-add-f-and-k-parameter.patch140
1 files changed, 140 insertions, 0 deletions
diff --git a/0027-lsinitrd-switch-to-getopt-and-add-f-and-k-parameter.patch b/0027-lsinitrd-switch-to-getopt-and-add-f-and-k-parameter.patch
new file mode 100644
index 0000000..11d58df
--- /dev/null
+++ b/0027-lsinitrd-switch-to-getopt-and-add-f-and-k-parameter.patch
@@ -0,0 +1,140 @@
+From 7d9bb76ac7cf6996318a0cfbc8576d8d307bff3e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 16 Apr 2013 10:44:56 +0200
+Subject: [PATCH] lsinitrd: switch to getopt and add "-f" and "-k" parameter
+
+---
+ lsinitrd.1.asc | 10 +++++++++-
+ lsinitrd.sh | 61 +++++++++++++++++++++++++++++++++++++++++++---------------
+ 2 files changed, 54 insertions(+), 17 deletions(-)
+
+diff --git a/lsinitrd.1.asc b/lsinitrd.1.asc
+index fd98161..4293910 100644
+--- a/lsinitrd.1.asc
++++ b/lsinitrd.1.asc
+@@ -10,7 +10,9 @@ lsinitrd - tool to show the contents of an initramfs image
+
+ SYNOPSIS
+ --------
+-*lsinitrd* ['OPTION...'] [<image>]
++*lsinitrd* ['OPTION...'] [<image> [<filename> [<filename> [...] ]]]
++
++*lsinitrd* ['OPTION...'] -k <kernel-version>
+
+ DESCRIPTION
+ -----------
+@@ -26,6 +28,12 @@ OPTIONS
+ **-s, --size**::
+ sort the contents of the initramfs by size.
+
++**-f, --file** _<filename>_::
++ print the contents of <filename>.
++
++**-k, --kver** _<kernel version>_::
++ inspect the initramfs of <kernel version>.
++
+ AVAILABILITY
+ ------------
+ The lsinitrd command is part of the dracut package and is available from
+diff --git a/lsinitrd.sh b/lsinitrd.sh
+index 1b27393..42e30d9 100755
+--- a/lsinitrd.sh
++++ b/lsinitrd.sh
+@@ -22,29 +22,51 @@
+ usage()
+ {
+ {
+- echo "Usage: ${0##*/} [-s] [<initramfs file> [<filename>]]"
++ echo "Usage: ${0##*/} [options] [<initramfs file> [<filename> [<filename> [...] ]]]"
++ echo "Usage: ${0##*/} [options] -k <kernel version>"
+ echo
+- echo "-h, --help print a help message and exit."
+- echo "-s, --size sort the contents of the initramfs by size."
++ echo "-h, --help print a help message and exit."
++ echo "-s, --size sort the contents of the initramfs by size."
++ echo "-f, --file <filename> print the contents of <filename>."
++ echo "-k, --kver <kernel version> inspect the initramfs of <kernel version>."
+ echo
+ } >&2
+ }
+
+-[[ $# -le 2 ]] || { usage ; exit 1 ; }
+-
+ sorted=0
+-while getopts "s" opt; do
+- case $opt in
+- s) sorted=1;;
+- h) usage; exit 0;;
+- \?) usage; exit 1;;
++declare -A filenames
++
++unset POSIXLY_CORRECT
++TEMP=$(getopt \
++ -o "shf:k:" \
++ --long kver: \
++ --long file: \
++ --long help \
++ --long size \
++ -- "$@")
++
++if (( $? != 0 )); then
++ usage
++ exit 1
++fi
++
++eval set -- "$TEMP"
++
++while (($# > 0)); do
++ case $1 in
++ -k|--kver) KERNEL_VERSION="$2"; shift;;
++ -f|--file) filenames[${2#/}]=1; shift;;
++ -s|--size) sorted=1;;
++ -h|--help) usage; exit 0;;
++ --) shift;break;;
++ *) usage; exit 1;;
+ esac
++ shift
+ done
+-shift $((OPTIND-1))
+
+-KERNEL_VERSION="$(uname -r)"
++[[ $KERNEL_VERSION ]] || KERNEL_VERSION="$(uname -r)"
+
+-if [[ "$1" ]]; then
++if [[ $1 ]]; then
+ image="$1"
+ if ! [[ -f "$image" ]]; then
+ {
+@@ -57,13 +79,20 @@ if [[ "$1" ]]; then
+ else
+ [[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id
+
+- if [[ $MACHINE_ID ]] && [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]] ; then
++ if [[ -d /boot/loader/entries || -L /boot/loader/entries ]] \
++ && [[ $MACHINE_ID ]] \
++ && [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]] ; then
+ image="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
+ else
+ image="/boot/initramfs-${KERNEL_VERSION}.img"
+ fi
+ fi
+
++shift
++while (($# > 0)); do
++ filenames[${1#/}]=1;
++ shift
++done
+
+ if ! [[ -f "$image" ]]; then
+ {
+@@ -93,8 +122,8 @@ elif [[ "$FILE_T" =~ :\ data ]]; then
+ CAT="xzcat $XZ_SINGLE_STREAM"
+ fi
+
+-if [[ $# -eq 2 ]]; then
+- $CAT $image | cpio --extract --verbose --quiet --to-stdout ${2#/} 2>/dev/null
++if (( ${#filenames[@]} > 0 )); then
++ $CAT $image | cpio --extract --verbose --quiet --to-stdout ${!filenames[@]} 2>/dev/null
+ exit $?
+ fi
+