--- /usr/portage/media-sound/alsa-utils/files/alsasound.initd-r5 2012-02-20 13:03:53.000000000 +0400 +++ /etc/init.d/alsasound 2012-11-12 20:59:59.877248664 +0400 @@ -5,6 +5,7 @@ alsastatedir=/var/lib/alsa alsascrdir=/etc/alsa.d +alsahomedir=/run/alsasound extra_commands="save restore" @@ -13,9 +14,20 @@ after bootmisc modules isapnp coldplug hotplug } +mkalsahomedir() { + if [ ! -d "$alsahomedir" ] ; then + if ! mkdir -p "$alsahomedir"; then + eerror "Directory $alsahomedir does not exist and cannot be created" + return 1 + fi + fi +} + restore() { ebegin "Restoring Mixer Levels" + mkalsahomedir || 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 +41,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 +61,10 @@ save() { ebegin "Storing ALSA Mixer Levels" + mkalsahomedir || 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