summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <d@falconindy.com>2011-06-03 16:29:55 +0200
committerDave Reisner <d@falconindy.com>2011-06-06 21:44:02 +0200
commit51d63c7556b5de04420dad4951c97199607f9b27 (patch)
treefedf7fbb0db37af7c4baae4eb96841f25a635f02
parentbfee40e4d6080e218fc50a23d6a6111ccfb709dd (diff)
downloadmkinitcpio-51d63c7556b5de04420dad4951c97199607f9b27.tar.gz
mkinitcpio-51d63c7556b5de04420dad4951c97199607f9b27.tar.xz
functions: refactor auto_modules
sort/uniq the modaliases files' contents, before passing _all_ of them to modprobe -a. This cuts back on execution time as well as cleaning up the resulting list of modules. Signed-off-by: Dave Reisner <d@falconindy.com>
-rw-r--r--functions15
1 files changed, 6 insertions, 9 deletions
diff --git a/functions b/functions
index 4cd3136..f179135 100644
--- a/functions
+++ b/functions
@@ -41,16 +41,13 @@ in_array() {
auto_modules ()
{
- aliases="$(find /sys/devices/ -name modalias -exec cat {} +)"
- mods=""
- for a in $aliases; do
- m="$(modprobe --set-version ${KERNELVERSION} --resolve-alias "$a")"
- [ -n "$m" ] && mods="$mods $m"
- done
+ IFS=$'\n' read -rd '' -a mods < \
+ <(find /sys/devices -name modalias -exec sort -zu {} + |
+ xargs -0 modprobe -aRS "$KERNELVERSION" |
+ sort -u)
- echo "${mods}" | tr '-' '_'
- [ -z "${mods}" ] && return 1
- return 0
+ printf "%s\n" "${mods[@]//-/_}"
+ (( ${#mods[*]} ))
}
all_modules ()