diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2011-07-04 07:48:51 +0000 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2011-07-04 07:48:51 +0000 |
commit | be990b308ae2e7a725852f22f285267dcfeeaa2a (patch) | |
tree | 7f3c3e29ed2bdb6120d3a234130c38ce643a553d | |
parent | 9076baa573a6e7a0ad7fb0de1919b051c8b3b012 (diff) |
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 <robbat2@gentoo.org>
-rw-r--r-- | conf.d/modules | 10 | ||||
-rw-r--r-- | init.d/modules.in | 28 |
2 files changed, 21 insertions, 17 deletions
diff --git a/conf.d/modules b/conf.d/modules index c5a3627c..a062a620 100644 --- a/conf.d/modules +++ b/conf.d/modules @@ -1,8 +1,10 @@ # You can define a list modules for a specific kernel version, # a released kernel version, a main kernel version or just a list. +# The most specific versioned variable will take precedence. #modules_2_6_23_gentoo_r5="ieee1394 ohci1394" #modules_2_6_23="tun ieee1394" #modules_2_6="tun" +#modules_2="ipv6" #modules="ohci1394" # You can give modules a different name when they load - the new name @@ -10,10 +12,12 @@ #modules="dummy:dummy1" # Give the modules some arguments if needed, per version if necessary. +# Again, the most specific versioned variable will take precedence. #module_ieee1394_args="debug" -#module_ieee1394_args_2_6_23_gentoo_r5="ieee1394 ohci1394" -#module_ieee1394_args_2_6_23="tun ieee1394" -#module_ieee1394_args_2_6="tun" +#module_ieee1394_args_2_6_23_gentoo_r5="debug2" +#module_ieee1394_args_2_6_23="debug3" +#module_ieee1394_args_2_6="debug4" +#module_ieee1394_args_2="debug5" # You should consult your kernel documentation and configuration # for a list of modules and their options. 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") |