slitaz-tools rev 22

soundconf is now compatible with Ash (Bash out)
author Christophe Lincoln <pankso@slitaz.org>
date Wed Dec 12 13:54:43 2007 +0100 (2007-12-12)
parents 0ab99d7c12d0
children b04ce844fbf2
files tinyutils/soundconf
line diff
     1.1 --- a/tinyutils/soundconf	Tue Dec 04 18:51:45 2007 +0100
     1.2 +++ b/tinyutils/soundconf	Wed Dec 12 13:54:43 2007 +0100
     1.3 @@ -1,4 +1,4 @@
     1.4 -#!/bin/bash
     1.5 +#!/bin/ash
     1.6  #
     1.7  #  ALSA Configurator - Modified for SliTaz GNU/Linux
     1.8  #  Last modif : 20071202
     1.9 @@ -33,18 +33,13 @@
    1.10  SYSFS="/sys"
    1.11  
    1.12  # i18n stuff
    1.13 -if test "$USE_NLS" = "yes" && which gettext > /dev/null; then
    1.14 -  xecho() {
    1.15 -    gettext -s "$*"
    1.16 -  }
    1.17 -else
    1.18    xecho() {
    1.19      echo "$*"
    1.20    }
    1.21    gettext() {
    1.22      echo -n "$*"
    1.23    }
    1.24 -fi
    1.25 +
    1.26  xmsg() {
    1.27    msg=$(gettext "$1")
    1.28    shift
    1.29 @@ -414,7 +409,8 @@
    1.30      let b='(('$1' & 0x03) << 3) | (('$1' >> 13) & 0x07)'
    1.31      let c='('$1'>> 8) & 0x1f'
    1.32      strs='@ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    1.33 -    echo ${strs:$a:1}${strs:$b:1}${strs:$c:1}
    1.34 +    echo $strs | awk "{ printf \"%s%s%s\n\", \
    1.35 +          substr(\$0,$a+1,1),substr(\$0,$b+1,1),substr(\$0,$c+1,1) }"
    1.36  }
    1.37  
    1.38  # swap high & low bytes
    1.39 @@ -670,7 +666,7 @@
    1.40  ac_config_card () {
    1.41  
    1.42      CARD_DRIVER=snd-$1
    1.43 -    CARD_OPTS="${*:2}"
    1.44 +    shift; CARD_OPTS="$*"
    1.45  	SOUND_CORE="snd"
    1.46  
    1.47  	# Keep card driver name in /var/lib to be used by boot scripts.
    1.48 @@ -704,12 +700,14 @@
    1.49  # check playback
    1.50  # return 0 - OK, 1 - NG, 2 - not working (irq/dma problem)
    1.51  ac_try_load () {
    1.52 -    test -n "$LOGFILE" && echo "$1 ${*:2}" >> "$LOGFILE"
    1.53 -    /sbin/modprobe snd-$1 ${*:2} >/dev/null 2>&1
    1.54 -    if $lsmod | grep -q -E '^(snd-|snd_)'$1' '; then
    1.55 +    local p1=$1
    1.56 +    shift
    1.57 +    test -n "$LOGFILE" && echo "$p1 $*" >> "$LOGFILE"
    1.58 +    /sbin/modprobe snd-$p1 $* >/dev/null 2>&1
    1.59 +    if $lsmod | grep -q -E '^(snd-|snd_)'$p1' '; then
    1.60  	: ;
    1.61      else
    1.62 -	/sbin/modprobe -r snd-$1 >/dev/null 2>&1
    1.63 +	/sbin/modprobe -r snd-$p1 >/dev/null 2>&1
    1.64  	return 1
    1.65      fi
    1.66  
    1.67 @@ -727,7 +725,7 @@
    1.68      kill -9 $pp > /dev/null 2>&1
    1.69      st=$?
    1.70      ac_cardname=`head -n 1 $PROCFS/asound/cards | sed -e 's/^[0-9].* - \(.*\)$/\1/'`
    1.71 -    /sbin/modprobe -r snd-$1 >/dev/null 2>&1
    1.72 +    /sbin/modprobe -r snd-$p1 >/dev/null 2>&1
    1.73      if [ $st = 0 ]; then
    1.74  	# irq problem?
    1.75  	test -n "$LOGFILE" && echo "no playback return" >> "$LOGFILE"
    1.76 @@ -743,12 +741,15 @@
    1.77  # return 0 - OK, 1 - NG, 2 - not working (irq/dma problem)
    1.78  # ac_try_capture card duplex opts
    1.79  ac_try_capture () {
    1.80 -    test -n "$LOGFILE" && echo "$1 ${*:2}" >> "$LOGFILE"
    1.81 -    /sbin/modprobe snd-$1 ${*:3} >/dev/null 2>&1
    1.82 -    if $lsmod | grep -q -E '^(snd-|snd_)'$1' '; then
    1.83 +    local p1=$1
    1.84 +    local p2=$2
    1.85 +    shift 2
    1.86 +    test -n "$LOGFILE" && echo "$p1 $p2 $*" >> "$LOGFILE"
    1.87 +    /sbin/modprobe snd-$p1 $* >/dev/null 2>&1
    1.88 +    if $lsmod | grep -q -E '^(snd-|snd_)'$p1' '; then
    1.89  	: ;
    1.90      else
    1.91 -	/sbin/modprobe -r snd-$1 >/dev/null 2>&1
    1.92 +	/sbin/modprobe -r snd-$p1 >/dev/null 2>&1
    1.93  	return 1
    1.94      fi
    1.95  
    1.96 @@ -757,7 +758,7 @@
    1.97      amixer set PCM 0% mute >/dev/null 2>&1
    1.98  
    1.99      play_pid=0
   1.100 -    if [ $2 = yes ]; then
   1.101 +    if [ $p2 = yes ]; then
   1.102  	# try duplex - start dummy playing
   1.103  	aplay -N -r8000 -fS16_LE -traw -c1 < /dev/zero > /dev/null 2>&1 &
   1.104  	play_pid=$!
   1.105 @@ -773,7 +774,7 @@
   1.106      st=$?
   1.107      # kill playback process if any
   1.108      test $play_pid != 0 && kill -9 $play_pid
   1.109 -    /sbin/modprobe -r snd-$1 >/dev/null 2>&1
   1.110 +    /sbin/modprobe -r snd-$p1 >/dev/null 2>&1
   1.111      if [ $st = 0 ]; then
   1.112  	test -n "$LOGFILE" && echo "capture no return" >> "$LOGFILE"
   1.113  	return 2
   1.114 @@ -803,6 +804,7 @@
   1.115  # return 0 - OK, 1 - NG, 2 - not working (dma problem?)
   1.116  #
   1.117  ac_try_irq () {
   1.118 +    local p2=$2
   1.119      card=$1
   1.120      opts="$2 ${mpfx}irq=$3"
   1.121      ac_try_load $card $opts >/dev/null 2>&1
   1.122 @@ -813,8 +815,9 @@
   1.123  	return 0
   1.124  	;;
   1.125      2)
   1.126 -	for irq in ${*:4}; do
   1.127 -	    opts="$2 ${mpfx}irq=$irq"
   1.128 +	shift 3
   1.129 +	for irq in $*; do
   1.130 +	    opts="$p2 ${mpfx}irq=$irq"
   1.131  	    ac_try_load $card $opts >/dev/null 2>&1
   1.132  	    if [ $? = 0 ]; then
   1.133  		ac_opts="$opts"
   1.134 @@ -834,12 +837,15 @@
   1.135  # return 0 - OK, 1 - NG
   1.136  #
   1.137  ac_try_dmas () {
   1.138 +    local p1=$1
   1.139 +    local p2=$2
   1.140 +    shift 2
   1.141      dma_list=`check_dma_avail 1 0 3 5`
   1.142 -    for irq in ${*:3}; do
   1.143 +    for irq in $*; do
   1.144  	for dma1 in $dma_list; do
   1.145  	    for dma2 in `get_dma_pair $dma1`; do
   1.146 -		opts="$2 ${mpfx}dma1=$dma1 ${mpfx}dma2=$dma2 ${mpfx}irq=$irq"
   1.147 -		ac_try_load $1 $opts >/dev/null 2>&1
   1.148 +		opts="$p2 ${mpfx}dma1=$dma1 ${mpfx}dma2=$dma2 ${mpfx}irq=$irq"
   1.149 +		ac_try_load $p1 $opts >/dev/null 2>&1
   1.150  		result=$?
   1.151  		if [ $result = 1 ]; then
   1.152  		    if [ $try_all_combination = 1 ]; then
   1.153 @@ -850,13 +856,13 @@
   1.154  		elif [ $result = 0 ]; then
   1.155  		    test -n "$LOGFILE" && echo "Now checking capture..." >> "$LOGFILE"
   1.156  		    ac_opts="$opts"
   1.157 -		    ac_try_capture $1 yes $opts >/dev/null 2>&1 && return 0
   1.158 +		    ac_try_capture $p1 yes $opts >/dev/null 2>&1 && return 0
   1.159  		    for d in yes no; do
   1.160  			for dma2 in $dma_list; do
   1.161  			    if [ $dma1 != $dma2 ]; then
   1.162 -				opts="$2 ${mpfx}dma1=$dma1 ${mpfx}dma2=$dma2 ${mpfx}irq=$irq"
   1.163 +				opts="$p2 ${mpfx}dma1=$dma1 ${mpfx}dma2=$dma2 ${mpfx}irq=$irq"
   1.164  				ac_opts="$opts"
   1.165 -				ac_try_capture $1 $d $opts >/dev/null 2>&1 && return 0
   1.166 +				ac_try_capture $p1 $d $opts >/dev/null 2>&1 && return 0
   1.167  			    fi
   1.168  			done
   1.169  		    done
   1.170 @@ -1013,15 +1019,15 @@
   1.171      else
   1.172  	probe_list=$*
   1.173      fi
   1.174 -    menu_args=()
   1.175 +    menu_args=""
   1.176  
   1.177      for card in $probe_list; do
   1.178  	cardname=`/sbin/modinfo -d snd-$card | sed -e 's/^\"\(.*\)\"$/\1/g'`
   1.179  	if [ x"$cardname" != x ]; then
   1.180 -	    menu_args=("${menu_args[@]}" "$card" "$cardname" "on")
   1.181 +	    menu_args="$menu_args \"$card\" \"$cardname\" on"
   1.182  	fi
   1.183      done
   1.184 -    if [ x$menu_args = x ]; then
   1.185 +    if [ "$menu_args" = "" ]; then
   1.186  	msg=$(gettext "No legacy drivers are available
   1.187     for your machine")
   1.188  	$DIALOG --msgbox "$msg" 5 50
   1.189 @@ -1031,8 +1037,7 @@
   1.190      msg=$(gettext "           Probing legacy ISA cards
   1.191  
   1.192          Please select the drivers to probe:")
   1.193 -    $DIALOG --title "$title" --checklist "$msg" \
   1.194 -	17 64 8 "${menu_args[@]}" 2> $FOUND || acex 0
   1.195 +    eval $DIALOG --title \"$title\" --checklist \"$msg\" 17 64 8 $menu_args 2> $FOUND || acex 0
   1.196  
   1.197      if [ $try_all_combination != 1 ]; then
   1.198  	msg=$(gettext "
   1.199 @@ -1094,7 +1099,7 @@
   1.200      
   1.201  probe_cards
   1.202  
   1.203 -devs_found=()
   1.204 +devs_found=""
   1.205  devs_olist=""
   1.206  
   1.207  if [ -s "$FOUND" ]; then
   1.208 @@ -1106,16 +1111,16 @@
   1.209  	    cardname="$card"
   1.210  	fi
   1.211  	card=${card##snd-}
   1.212 -	devs_found=("${devs_found[@]}" "$card" "$cardname")
   1.213 -	devs_devs=("${devs_devs[@]}" "$card" "$dev")
   1.214 +	devs_found="$devs_found $card \"$cardname\""
   1.215 +	#devs_devs=("${devs_devs[@]}" "$card" "$dev")
   1.216      done <"$FOUND"
   1.217      devs_olist=`cat $FOUND`
   1.218  fi
   1.219 -if [ x$devs_found != x ]; then
   1.220 +if [ "$devs_found" != "" ]; then
   1.221      #
   1.222      # check for TP600E
   1.223      #
   1.224 -    if [ ${devs_found[0]} = cs46xx ]; then
   1.225 +    if [ "${devs_found%% *}" = "cs46xx" ]; then
   1.226  	if $lspci -nv 2>/dev/null| grep -q "Subsystem: 1014:1010"; then
   1.227  	    msg=$(gettext "
   1.228   Looks like you having a Thinkpad 600E or 770 notebook.
   1.229 @@ -1147,13 +1152,13 @@
   1.230          fi	
   1.231      fi
   1.232     
   1.233 -    devs_found=("${devs_found[@]}" "legacy" "Probe legacy ISA (non-PnP) chips")
   1.234 +    devs_found="$devs_found legacy 'Probe legacy ISA (non-PnP) chips'"
   1.235      title=$(gettext "Soundcard Selection")
   1.236      msg=$(gettext "
   1.237           Following card(s) are found on your system.
   1.238           Please skip or choose a soundcard to configure :
   1.239  ")
   1.240 -    $DIALOG --title "$title" --menu "$msg" 17 76 8 "${devs_found[@]}" 2> $FOUND || acex 0
   1.241 +    eval $DIALOG --title \"$title\" --menu \"$msg\" 17 76 8 $devs_found 2> $FOUND || acex 0
   1.242      card=`head -n 1 $FOUND`
   1.243      if [ "$card" = "legacy" ]; then
   1.244  	ac_config_legacy