summaryrefslogtreecommitdiff
path: root/pcr/openrc-desktop/alsasound.initd-r6
diff options
context:
space:
mode:
authorfreaj <freaj@riseup.net>2015-03-25 19:29:42 +0100
committerfreaj <freaj@riseup.net>2015-03-25 19:29:42 +0100
commit3051c65e16e655957c38bc1df237e170a50bd784 (patch)
tree5f1bdbcad064af9243389c1f8c93ad2d7c2e92be /pcr/openrc-desktop/alsasound.initd-r6
parentf955ecf3f6bc9af1733c4a12e27c5fac6d7d7d7f (diff)
downloadabslibre-3051c65e16e655957c38bc1df237e170a50bd784.tar.gz
abslibre-3051c65e16e655957c38bc1df237e170a50bd784.tar.bz2
abslibre-3051c65e16e655957c38bc1df237e170a50bd784.zip
openrc-desktop-20150325-1: Insert missing files
Diffstat (limited to 'pcr/openrc-desktop/alsasound.initd-r6')
-rw-r--r--pcr/openrc-desktop/alsasound.initd-r688
1 files changed, 88 insertions, 0 deletions
diff --git a/pcr/openrc-desktop/alsasound.initd-r6 b/pcr/openrc-desktop/alsasound.initd-r6
new file mode 100644
index 000000000..2eddfd308
--- /dev/null
+++ b/pcr/openrc-desktop/alsasound.initd-r6
@@ -0,0 +1,88 @@
+#!/sbin/runscript
+# $Header: /var/cvsroot/gentoo-x86/media-sound/alsa-utils/files/alsasound.initd-r6,v 1.1 2014/06/23 21:34:42 ssuominen Exp $
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+alsastatedir=/var/lib/alsa
+alsascrdir=/etc/alsa.d
+alsahomedir=/var/run/alsasound
+
+extra_commands="save restore"
+
+depend() {
+ need localmount
+ after bootmisc modules isapnp coldplug hotplug
+}
+
+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
+ return 0
+ fi
+
+ local cards="$(sed -n -e 's/ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)"
+ local CARDNUM
+ for cardnum in ${cards}; do
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \
+ || ewarn "Errors while restoring defaults, ignoring"
+ done
+
+ for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do
+ [ -e "${ossfile}" ] || continue
+ # We use cat because I'm not sure if cp works properly on /proc
+ local procfile=${ossfile##${alsastatedir}/oss}
+ procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
+ if [ -e /proc/asound/"${procfile}"/oss ] ; then
+ cat "${ossfile}" > /proc/asound/"${procfile}"/oss
+ fi
+ done
+
+ eend 0
+}
+
+save() {
+ ebegin "Storing ALSA Mixer Levels"
+
+ checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
+
+ mkdir -p "${alsastatedir}"
+ if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then
+ eerror "Error saving levels."
+ eend 1
+ return 1
+ fi
+
+ for ossfile in /proc/asound/card*/pcm*/oss; do
+ [ -e "${ossfile}" ] || continue
+ local device=${ossfile##/proc/asound/} ; device=${device%%/oss}
+ device="$(echo "${device}" | sed -e 's,/,_,g')"
+ mkdir -p "${alsastatedir}/oss/"
+ cp "${ossfile}" "${alsastatedir}/oss/${device}"
+ done
+
+ eend 0
+}
+
+start() {
+ if [ "${RESTORE_ON_START}" = "yes" ]; then
+ restore
+ fi
+
+ return 0
+}
+
+stop() {
+ if [ "${SAVE_ON_STOP}" = "yes" ]; then
+ save
+ fi
+ return 0
+}