File 1000-lsinitrd_optimize-performance-when-handling-multiple-files.patch of Package dracut
diff --git a/lsinitrd.sh b/lsinitrd.sh
index 61f4106..72eaa03 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -116,15 +116,25 @@ dracutlibdirs() {
extract_files()
{
- (( ${#filenames[@]} == 1 )) && nofileinfo=1
- for f in "${!filenames[@]}"; do
- [[ $nofileinfo ]] || echo "initramfs:/$f"
- [[ $nofileinfo ]] || echo "========================================================================"
- $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout "$f" 2>/dev/null
- ((ret+=$?))
- [[ $nofileinfo ]] || echo "========================================================================"
- [[ $nofileinfo ]] || echo
- done
+ if [ "${#filenames[@]}" -eq 1 ]; then
+ for f in "${!filenames[@]}"; do
+ [[ $nofileinfo ]] || echo "initramfs:/$f"
+ [[ $nofileinfo ]] || echo "========================================================================"
+ $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout "$f" 2>/dev/null
+ ((ret+=$?))
+ [[ $nofileinfo ]] || echo "========================================================================"
+ [[ $nofileinfo ]] || echo
+ done
+ else
+ TMPFILE="$(mktemp -t --suffix=.cpio lsinitrd.XXXXXX)"
+ $CAT "$image" 2>/dev/null > "$TMPFILE"
+ trap "rm -f '$TMPFILE'" EXIT
+ pre_decompress()
+ {
+ cat "$TMPFILE"
+ }
+ CAT=pre_decompress
+ fi
}
list_modules()