[Fai-commit] r6668 - trunk/lib

Thomas Lange lange at alioth.debian.org
Tue Oct 4 14:59:49 UTC 2011


Author: lange
Date: 2011-10-04 14:59:49 +0000 (Tue, 04 Oct 2011)
New Revision: 6668

Modified:
   trunk/lib/subroutines
Log:
use associative array hclasses for subroutine ifclass, needs bash > 4


Modified: trunk/lib/subroutines
===================================================================
--- trunk/lib/subroutines	2011-09-16 08:44:13 UTC (rev 6667)
+++ trunk/lib/subroutines	2011-10-04 14:59:49 UTC (rev 6668)
@@ -79,12 +79,17 @@
     # check one single class
     [ "$debug" ] && echo "Test if class $1 is in $classes" >&2
     # test if a class is defined
-    local cl
-    local ret=1
+    local ret
 
-    for cl in $classes; do
-	[ x$cl = x$1 ] && ret=0 && break
-    done
+    if [ "${#hclasses[@]}" = 0 ]; then
+	echo "ifclass: WARNING. Associative array hclasses is empty." >&2
+    fi
+
+    if [ X${hclasses[$1]} = X1 ]; then
+	ret=0
+    else
+    	ret=1
+    fi
     [ "$debug" ] && echo "ifclass returns $ret" >&2
     return $ret
 }
@@ -399,6 +404,9 @@
     cfclasses=$(echo $classes)
     cfclasses=${cfclasses// /.}
     [ "$debug" ] && echo "cfclasses: $cfclasses"
+    # define a bash hash with all class names. Without this, ifclass does not work
+    declare -A hclasses
+    for c in $classes; do hclasses[$c]=1;done
 }
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 _defvar() {




More information about the Fai-commit mailing list