--- /usr/portage/media-sound/alsa-utils/files/alsasound.initd-r5 2012-02-20 13:03:53.000000000 +0400 +++ /etc/init.d/alsasound 2012-11-27 11:59:13.693737102 +0400 @@ -5,6 +5,7 @@ alsastatedir=/var/lib/alsa alsascrdir=/etc/alsa.d +alsahomedir=/var/run/alsasound extra_commands="save restore" @@ -16,6 +17,8 @@ restore() { ebegin "Restoring Mixer Levels" + checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1 + if [ ! -r "${alsastatedir}/asound.state" ] ; then ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!" eend 0 @@ -29,7 +32,7 @@ [ -e /dev/snd/controlC${cardnum} ] || sleep 2 [ -e /dev/snd/controlC${cardnum} ] || sleep 2 [ -e /dev/snd/controlC${cardnum} ] || sleep 2 - alsactl -I -f "${alsastatedir}/asound.state" restore ${cardnum} \ + alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \ || ewarn "Errors while restoring defaults, ignoring" done @@ -49,8 +52,10 @@ save() { ebegin "Storing ALSA Mixer Levels" + checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1 + mkdir -p "${alsastatedir}" - if ! alsactl -f "${alsastatedir}/asound.state" store; then + if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then eerror "Error saving levels." eend 1 return 1