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