From be990b308ae2e7a725852f22f285267dcfeeaa2a Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Mon, 4 Jul 2011 07:48:51 +0000 Subject: Bug 373808: init.d/modules skipped certain variable combinations The version iteration code missed certain combinations: KV=1.2.3.4 skips: 1.2.3, 1 KV=1.2.3 skips: 1 Simplify the code to use a loop and build the list of versions directly instead of unique variables per version component. Signed-off-by: Robin H. Johnson --- init.d/modules.in | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'init.d') diff --git a/init.d/modules.in b/init.d/modules.in index ee4fdab9..631e2e57 100644 --- a/init.d/modules.in +++ b/init.d/modules.in @@ -16,18 +16,21 @@ start() # support compiled in ... [ ! -f /proc/modules ] && return 0 - local KV=$(uname -r) - local KV_MAJOR=${KV%%.*} - local x=${KV#*.} - local KV_MINOR=${x%%.*} - x=${KV#*.*.} - local KV_MICRO=${x%%-*} + local KV x y kv_variant_list + KV=$(uname -r) + # full $KV + kv_variant_list="${KV}" + # remove any KV_EXTRA options to just get the full version + x=${KV%%-*} + # now slowly strip them + while [ -n "$x" ] && [ "$x" != "$y" ]; do + kv_variant_list="${kv_variant_list} $x" + y=$x + x=${x%.*} + done local list= x= xx= y= args= mpargs= cnt=0 a= - for x in "$KV" \ - $KV_MAJOR.$KV_MINOR.$KV_MICRO \ - $KV_MAJOR.$KV_MINOR \ - ; do + for x in $kv_variant_list ; do eval list=\$modules_$(shell_var "$x") [ -n "$list" ] && break done @@ -45,10 +48,7 @@ start() fi aa=$(shell_var "$a") xx=$(shell_var "$x") - for y in "$KV" \ - $KV_MAJOR.$KV_MINOR.$KV_MICRO \ - $KV_MAJOR.$KV_MINOR \ - ; do + for y in $kv_variant_list ; do eval args=\$module_${aa}_args_$(shell_var "$y") [ -n "${args}" ] && break eval args=\$module_${xx}_args_$(shell_var "$y") -- cgit v1.2.3