mixer

FreeBSD OSS mixer library implementation and a complete rewrite of mixer(8)
git clone git://git.margiolis.net/mixer.git
Log | Files | Refs | README

mixer (2535B)


      1 #!/bin/sh -
      2 #
      3 # Copyright (c) 2004  The FreeBSD Project
      4 # All rights reserved.
      5 #
      6 # Redistribution and use in source and binary forms, with or without
      7 # modification, are permitted provided that the following conditions
      8 # are met:
      9 # 1. Redistributions of source code must retain the above copyright
     10 #    notice, this list of conditions and the following disclaimer.
     11 # 2. Redistributions in binary form must reproduce the above copyright
     12 #    notice, this list of conditions and the following disclaimer in the
     13 #    documentation and/or other materials provided with the distribution.
     14 #
     15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     18 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     25 # SUCH DAMAGE.
     26 #
     27 # $FreeBSD: releng/12.2/libexec/rc/rc.d/mixer 298514 2016-04-23 16:10:54Z lme $
     28 #
     29 
     30 # PROVIDE: mixer
     31 # REQUIRE: FILESYSTEMS
     32 # KEYWORD: nojail shutdown
     33 
     34 . /etc/rc.subr
     35 
     36 name="mixer"
     37 desc="Save and restore soundcard mixer values"
     38 rcvar="mixer_enable"
     39 stop_cmd="mixer_stop"
     40 start_cmd="mixer_start"
     41 reload_cmd="mixer_start"
     42 extra_commands="reload"
     43 
     44 #
     45 # List current mixer devices to stdout.
     46 #
     47 list_mixers()
     48 {
     49 	( cd /dev ; ls mixer* 2>/dev/null )
     50 }
     51 
     52 #
     53 # Save state of an individual mixer specified as $1
     54 #
     55 mixer_save()
     56 {
     57 	local dev
     58 
     59 	dev="/dev/${1}"
     60 	if [ -r ${dev} ]; then
     61 		/usr/sbin/mixer_prog -f ${dev} -o > /var/db/${1}-state 2>/dev/null
     62 	fi
     63 }
     64 
     65 #
     66 # Restore the state of an individual mixer specified as $1
     67 #
     68 mixer_restore()
     69 {
     70 	local file dev
     71 
     72 	dev="/dev/${1}"
     73 	file="/var/db/${1}-state"
     74 	if [ -r ${dev} -a -r ${file} ]; then
     75 		/usr/sbin/mixer_prog -f ${dev} `cat ${file}` > /dev/null
     76 	fi
     77 }
     78 
     79 #
     80 # Restore state of all mixers
     81 #
     82 mixer_start()
     83 {
     84 	local mixer
     85 
     86 	for mixer in `list_mixers`; do
     87 		mixer_restore ${mixer}
     88 	done
     89 }
     90 
     91 #
     92 # Save the state of all mixers
     93 #
     94 mixer_stop()
     95 {
     96 	local mixer
     97 
     98 	for mixer in `list_mixers`; do
     99 		mixer_save ${mixer}
    100 	done
    101 }
    102 
    103 load_rc_config $name
    104 run_rc_command "$1"