getarg() { local o line if [ -z "$CMDLINE" ]; then if [ -e /etc/cmdline ]; then while read line; do CMDLINE_ETC="$CMDLINE_ETC $line"; done dracut: FATAL: $@"; echo "<1>dracut: Refusing to continue"; } > /dev/kmsg { echo "dracut: FATAL: $@"; echo "dracut: Refusing to continue"; } >&2 exit 1 } check_quiet() { if [ -z "$DRACUT_QUIET" ]; then DRACUT_QUIET="yes" getarg rdinfo && DRACUT_QUIET="no" getarg quiet || DRACUT_QUIET="yes" fi } warn() { check_quiet echo "<4>dracut Warning: $@" > /dev/kmsg [ "$DRACUT_QUIET" != "yes" ] && \ echo "dracut Warning: $@" >&2 } info() { check_quiet echo "<6>dracut: $@" > /dev/kmsg [ "$DRACUT_QUIET" != "yes" ] && \ echo "dracut: $@" } vinfo() { while read line; do info $line; done } check_occurances() { # Count the number of times the character $ch occurs in $str # Return 0 if the count matches the expected number, 1 otherwise local str="$1" local ch="$2" local expected="$3" local count=0 while [ "${str#*$ch}" != "${str}" ]; do str="${str#*$ch}" count=$(( $count + 1 )) done [ $count -eq $expected ] } incol2() { local dummy check; local file="$1"; local str="$2"; [ -z "$file" ] && return; [ -z "$str" ] && return; while read dummy check restofline; do [ "$check" = "$str" ] && return 0 done < $file return 1 } udevsettle() { [ -z "$UDEVVERSION" ] && UDEVVERSION=$(udevadm --version) if [ $UDEVVERSION -ge 143 ]; then udevadm settle --exit-if-exists=/initqueue/work $settle_exit_if_exists else udevadm settle --timeout=30 fi } udevproperty() { [ -z "$UDEVVERSION" ] && UDEVVERSION=$(udevadm --version) if [ $UDEVVERSION -ge 143 ]; then for i in "$@"; do udevadm control --property=$i; done else for i in "$@"; do udevadm control --env=$i; done fi } wait_for_if_up() { local cnt=0 while [ $cnt -lt 20 ]; do li=$(ip link show $1) [ -z "${li##*state UP*}" ] && return 0 sleep 0.1 cnt=$(($cnt+1)) done return 1 }