aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiloslav Trmac <mitr@volny.cz>2006-07-26 01:30:02 +0000
committerMiloslav Trmac <mitr@volny.cz>2006-07-26 01:30:02 +0000
commit0d27618adb7bd5fa4300a00921d69c1c6aae68fa (patch)
treeb80f344c1a8d94bec07eddada0ff4b5642e82f1e
parentbafb0b214d8e0b9dbaebf5bfa6111fbb35a0039a (diff)
downloadinitscripts-0d27618adb7bd5fa4300a00921d69c1c6aae68fa.tar
initscripts-0d27618adb7bd5fa4300a00921d69c1c6aae68fa.tar.gz
initscripts-0d27618adb7bd5fa4300a00921d69c1c6aae68fa.tar.bz2
initscripts-0d27618adb7bd5fa4300a00921d69c1c6aae68fa.tar.xz
initscripts-0d27618adb7bd5fa4300a00921d69c1c6aae68fa.zip
Use the alias value to lookup an install line.
Use string comparisons instead of regexp matches in the awk conditions, speeding up the awk program several times.
-rw-r--r--sysconfig/network-scripts/network-functions17
1 files changed, 12 insertions, 5 deletions
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 36d207a7..310d9861 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -200,11 +200,18 @@ is_available ()
LC_ALL= LANG= ip -o link | grep -q $1
[ "$?" = "1" ] || return 0
- alias=`modprobe -c | awk "/^(alias|install)[[:space:]]+$1[[:space:]]/ { print \\$3 }"`
- if [ -z "$alias" -o "$alias" = "off" -o "$alias" = "/bin/true" \
- -o "$alias" = ":" ]; then
- return 2
- fi
+ modprobe -c | awk \
+'BEGIN { alias = ""; }
+$1 == "alias" && $2 == "'"$1"'" { alias = $3; }
+$1 == "install" { install[$2] = $3; }
+END {
+ cmd = install[alias];
+ if (alias == "" || alias == "off" || cmd == "/bin/true" || cmd == ":")
+ exit 1;
+ exit 0;
+}'
+ [ $? -eq 0 ] || return 2
+
modprobe $1 > /dev/null 2>&1 || {
return 1
}