alsactl: Move asound.state location to /var/lib/alsa

.... and add configure switch for it.

/etc might be on a read-only partition which is not suitable for dynamic
data such as the mixer settings. Hence move the location of asound.state
to /var/lib.

This is based on a patch from Ubuntu/Debian which hardcoded the pah in
/var/lib.

Signed-off-by: Lennart Poettering <mznyfn@0pointer.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Lennart Poettering 2010-11-23 02:59:18 +01:00 committed by Jaroslav Kysela
parent de7c3eff0e
commit 81f015f5ab
6 changed files with 18 additions and 5 deletions

View file

@ -38,5 +38,8 @@ dist-hook:
$(TAR) --create --verbose --file=- $(distdir) | bzip2 -c -9 > $(distdir).tar.bz2 ; \ $(TAR) --create --verbose --file=- $(distdir) | bzip2 -c -9 > $(distdir).tar.bz2 ; \
fi fi
install-data-hook:
$(MKDIR_P) -m 0755 $(DESTDIR)$(ASOUND_STATE_DIR)
DISTCHECK_CONFIGURE_FLAGS = \ DISTCHECK_CONFIGURE_FLAGS = \
--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)

View file

@ -956,8 +956,9 @@ If you have a big amplifier, lower your volumes or say no.
aplay -N $TESTSOUND aplay -N $TESTSOUND
fi fi
fi fi
if [ ! -r /etc/asound.state ]; then mkdir -p -m 0755 @ASOUND_STATE_DIR@
xecho "Saving the mixer setup used for this in /etc/asound.state." if [ ! -r @ASOUND_STATE_DIR@/asound.state ]; then
xecho "Saving the mixer setup used for this in @ASOUND_STATE_DIR@/asound.state."
$sbindir/alsactl store $sbindir/alsactl store
fi fi
clear clear

View file

@ -8,6 +8,7 @@ endif
EXTRA_DIST=alsactl.1 alsactl_init.xml EXTRA_DIST=alsactl.1 alsactl_init.xml
alsactl_SOURCES=alsactl.c state.c utils.c init_parse.c alsactl_SOURCES=alsactl.c state.c utils.c init_parse.c
alsactl_CFLAGS=$(AM_CFLAGS) -DSYS_ASOUNDRC=\"$(ASOUND_STATE_DIR)/asound.state\"
noinst_HEADERS=alsactl.h list.h init_sysdeps.c init_utils_string.c init_utils_run.c init_sysfs.c noinst_HEADERS=alsactl.h list.h init_sysdeps.c init_utils_string.c init_utils_run.c init_sysfs.c
udevrulesdir=/lib/udev/rules.d udevrulesdir=/lib/udev/rules.d

View file

@ -43,7 +43,7 @@ Print alsactl version number.
.TP .TP
\fI\-f, \-\-file\fP \fI\-f, \-\-file\fP
Select the configuration file to use. The default is /etc/asound.state. Select the configuration file to use. The default is /var/lib/alsa/asound.state.
.TP .TP
\fI\-F, \-\-force\fP \fI\-F, \-\-force\fP
@ -90,7 +90,7 @@ The configuration file for init. By default, PREFIX/share/alsa/init/00main
is used. is used.
.SH FILES .SH FILES
\fI/etc/asound.state\fP (or whatever file you specify with the \fI/var/lib/alsa/asound.state\fP (or whatever file you specify with the
\fB\-f\fP flag) is used to store current settings for your \fB\-f\fP flag) is used to store current settings for your
soundcards. The settings include all the usual soundcard mixer soundcards. The settings include all the usual soundcard mixer
settings. More importantly, alsactl is settings. More importantly, alsactl is

View file

@ -30,7 +30,9 @@
#include <alsa/asoundlib.h> #include <alsa/asoundlib.h>
#include "alsactl.h" #include "alsactl.h"
#define SYS_ASOUNDRC "/etc/asound.state" #ifndef SYS_ASOUNDRC
#define SYS_ASOUNDRC "/var/lib/alsa/asound.state"
#endif
int debugflag = 0; int debugflag = 0;
int force_restore = 1; int force_restore = 1;

View file

@ -289,6 +289,12 @@ if test "x$with_systemdsystemunitdir" != xno; then
fi fi
AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ]) AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
AC_ARG_WITH(ASOUND_STATE_DIR,
AS_HELP_STRING([--with-asound-state-dir=DIR], [Directory to place asound.state file in]),
[ASOUND_STATE_DIR="$withval"],
[ASOUND_STATE_DIR="/var/lib/alsa"])
AC_SUBST(ASOUND_STATE_DIR)
AC_OUTPUT(Makefile alsactl/Makefile alsactl/init/Makefile \ AC_OUTPUT(Makefile alsactl/Makefile alsactl/init/Makefile \
alsamixer/Makefile amidi/Makefile amixer/Makefile \ alsamixer/Makefile amidi/Makefile amixer/Makefile \
m4/Makefile po/Makefile.in \ m4/Makefile po/Makefile.in \