On Mon, Sep 20, 2010 at 11:57:06AM +1000, Allan McRae wrote:
> On 20/09/10 11:54, Dave Reisner wrote:
> >Use modprobe -a and a bash PE to filter the MODULES array.
> >
> >Signed-off-by: Dave Reisner<d...@falconindy.com>
> >---
> >  rc.sysinit |   12 ++++--------
> >  1 files changed, 4 insertions(+), 8 deletions(-)
> >
> >diff --git a/rc.sysinit b/rc.sysinit
> >index 09d5e97..4b6e1e7 100755
> >--- a/rc.sysinit
> >+++ b/rc.sysinit
> >@@ -92,14 +92,10 @@ if /bin/pidof -o %PPID /sbin/udevd>/dev/null; then
> >  fi
> >
> >  # Load modules from the MODULES array defined in rc.conf
> >-if [[ $load_modules != off&&  -f /proc/modules ]]; then
> >-    stat_busy "Loading Modules"
> >-    for mod in "${modul...@]}"; do
> >-    if [[ $mod = ${mod#!} ]]; then
> >-        /sbin/modprobe $mod
> >-    fi
> >-    done
> >-    stat_done
> >+if [[ $load_modules != off&&  -f /proc/modules ]]&&  (( ${#modul...@]}>  0 
> >)); then
> >+    stat_busy "Loading Modules"
> >+            /sbin/modprobe -a "${modul...@]/#\!*/}"
> >+    stat_done
> >  fi
> >
> >  # Wait for udev uevents
> 
> Does this still work in the "null" case where there is only modules
> specified with "!" in the front?
> 
> Allan
> 

Excellent observation -- it would not. Counting the size of the array
with the PE in place isn't possible (or desirable), either. Perhaps a
more graceful solution is to reassign the output of the PE to a new
array and operate based on that. Certainly still beats calling modprobe
for every element in the array, imo.

d

Reply via email to