xref: /dragonfly/etc/rc.d/mixer (revision ce083385)
14a8c3632SSascha Wildner#!/bin/sh -
27484ccd1SJoerg Sonnenberger#
34a8c3632SSascha Wildner# Copyright (c) 2004  The FreeBSD Project
44a8c3632SSascha Wildner# All rights reserved.
54a8c3632SSascha Wildner#
64a8c3632SSascha Wildner# Redistribution and use in source and binary forms, with or without
74a8c3632SSascha Wildner# modification, are permitted provided that the following conditions
84a8c3632SSascha Wildner# are met:
94a8c3632SSascha Wildner# 1. Redistributions of source code must retain the above copyright
104a8c3632SSascha Wildner#    notice, this list of conditions and the following disclaimer.
114a8c3632SSascha Wildner# 2. Redistributions in binary form must reproduce the above copyright
124a8c3632SSascha Wildner#    notice, this list of conditions and the following disclaimer in the
134a8c3632SSascha Wildner#    documentation and/or other materials provided with the distribution.
144a8c3632SSascha Wildner#
154a8c3632SSascha Wildner# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
164a8c3632SSascha Wildner# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
174a8c3632SSascha Wildner# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
184a8c3632SSascha Wildner# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
194a8c3632SSascha Wildner# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
204a8c3632SSascha Wildner# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
214a8c3632SSascha Wildner# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
224a8c3632SSascha Wildner# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
234a8c3632SSascha Wildner# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
244a8c3632SSascha Wildner# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
254a8c3632SSascha Wildner# SUCH DAMAGE.
264a8c3632SSascha Wildner#
274a8c3632SSascha Wildner# $FreeBSD: head/etc/rc.d/mixer 240336 2012-09-11 05:04:59Z obrien $
287484ccd1SJoerg Sonnenberger#
297484ccd1SJoerg Sonnenberger
307484ccd1SJoerg Sonnenberger# PROVIDE: mixer
31*ce083385SAaron LI# REQUIRE: FILESYSTEMS
324a8c3632SSascha Wildner# KEYWORD: nojail shutdown
337484ccd1SJoerg Sonnenberger
347484ccd1SJoerg Sonnenberger. /etc/rc.subr
357484ccd1SJoerg Sonnenberger
367484ccd1SJoerg Sonnenbergername="mixer"
374a8c3632SSascha Wildnerrcvar="mixer_enable"
387484ccd1SJoerg Sonnenbergerstop_cmd="mixer_stop"
394a8c3632SSascha Wildnerstart_cmd="mixer_start"
404a8c3632SSascha Wildnerreload_cmd="mixer_start"
414a8c3632SSascha Wildnerextra_commands="reload"
427484ccd1SJoerg Sonnenberger
434a8c3632SSascha Wildner#
444a8c3632SSascha Wildner# List current mixer devices to stdout.
454a8c3632SSascha Wildner#
464a8c3632SSascha Wildnerlist_mixers()
477484ccd1SJoerg Sonnenberger{
484a8c3632SSascha Wildner	( cd /dev ; ls mixer* 2>/dev/null )
494a8c3632SSascha Wildner}
504a8c3632SSascha Wildner
514a8c3632SSascha Wildner#
524a8c3632SSascha Wildner# Save state of an individual mixer specified as $1
534a8c3632SSascha Wildner#
544a8c3632SSascha Wildnermixer_save()
554a8c3632SSascha Wildner{
564a8c3632SSascha Wildner	local dev
574a8c3632SSascha Wildner
584a8c3632SSascha Wildner	dev="/dev/${1}"
594a8c3632SSascha Wildner	if [ -r ${dev} ]; then
604a8c3632SSascha Wildner		/usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null
617484ccd1SJoerg Sonnenberger	fi
627484ccd1SJoerg Sonnenberger}
637484ccd1SJoerg Sonnenberger
644a8c3632SSascha Wildner#
654a8c3632SSascha Wildner# Restore the state of an individual mixer specified as $1
664a8c3632SSascha Wildner#
674a8c3632SSascha Wildnermixer_restore()
684a8c3632SSascha Wildner{
694a8c3632SSascha Wildner	local file dev
704a8c3632SSascha Wildner
714a8c3632SSascha Wildner	dev="/dev/${1}"
724a8c3632SSascha Wildner	file="/var/db/${1}-state"
734a8c3632SSascha Wildner	if [ -r ${dev} -a -r ${file} ]; then
744a8c3632SSascha Wildner		/usr/sbin/mixer -f ${dev} `cat ${file}` > /dev/null
754a8c3632SSascha Wildner	fi
764a8c3632SSascha Wildner}
774a8c3632SSascha Wildner
784a8c3632SSascha Wildner#
794a8c3632SSascha Wildner# Restore state of all mixers
804a8c3632SSascha Wildner#
814a8c3632SSascha Wildnermixer_start()
824a8c3632SSascha Wildner{
834a8c3632SSascha Wildner	local mixer
844a8c3632SSascha Wildner
854a8c3632SSascha Wildner	for mixer in `list_mixers`; do
864a8c3632SSascha Wildner		mixer_restore ${mixer}
874a8c3632SSascha Wildner	done
884a8c3632SSascha Wildner}
894a8c3632SSascha Wildner
904a8c3632SSascha Wildner#
914a8c3632SSascha Wildner# Save the state of all mixers
924a8c3632SSascha Wildner#
937484ccd1SJoerg Sonnenbergermixer_stop()
947484ccd1SJoerg Sonnenberger{
954a8c3632SSascha Wildner	local mixer
964a8c3632SSascha Wildner
974a8c3632SSascha Wildner	for mixer in `list_mixers`; do
984a8c3632SSascha Wildner		mixer_save ${mixer}
99289ad5f6SSimon Schubert	done
1007484ccd1SJoerg Sonnenberger}
1017484ccd1SJoerg Sonnenberger
1027484ccd1SJoerg Sonnenbergerload_rc_config $name
1037484ccd1SJoerg Sonnenbergerrun_rc_command "$1"
104