From f9708da22345aa11bfa0d5514eefef11f542526b Mon Sep 17 00:00:00 2001 From: John Reiser Date: Mon, 29 Aug 2011 16:03:35 -0700 Subject: [PATCH] instmods: factor out egrep of "FATAL: Module .* not found" --- dracut-functions | 34 +++++++++++++++++++--------------- 1 files changed, 19 insertions(+), 15 deletions(-) diff --git a/dracut-functions b/dracut-functions index 6c16cae..507f0c3 100755 --- a/dracut-functions +++ b/dracut-functions @@ -820,7 +820,7 @@ install_kmod_with_fw() { for_each_kmod_dep() { local _func=$1 _kmod=$2 _cmd _modpath _options _found=0 shift 2 - modprobe "$@" --ignore-install --show-depends $_kmod 2>"$initdir/modprobe.err" | ( + modprobe "$@" --ignore-install --show-depends $_kmod 2>&$modprobe_stderr | ( while read _cmd _modpath _options; do [[ $_cmd = insmod ]] || continue $_func ${_modpath} || exit $? @@ -829,9 +829,6 @@ for_each_kmod_dep() { [[ $_found -eq 0 ]] && exit 1 exit 0 ) - egrep -v 'FATAL: Module .* not found.' "$initdir/modprobe.err" | derror - rm -f "$initdir/modprobe.err" - return $? } # filter kernel modules to install certain modules that meet specific @@ -934,16 +931,23 @@ instmods() { esac } - local _mpargs _ret=0 - if (($# == 0)); then # filenames from stdin - local _mod - while read _mod; do - inst1mod "${_mod%.ko*}" + function instmods_1() { + local _ret=0 _mod _mpargs + if (($# == 0)); then # filenames from stdin + while read _mod; do + inst1mod "${_mod%.ko*}" + done + fi + while (($# > 0)); do # filenames as arguments + inst1mod ${1%.ko*} + shift done - fi - while (($# > 0)); do # filenames as args - inst1mod ${1%.ko*} - shift - done - return $_ret + return $_ret + } + + # Capture all stderr from modprobe onto a new fd $modprobe_stderr, + # and pipe it into egrep. See REDIRECTION in bash manpage. + ( instmods_1 "$@" ) {modprobe_stderr}>&1 \ + | egrep -v 'FATAL: Module .* not found.' | derror + return $? }