AC_DEFINE(SUPPORT_ALOAD, "1", [Support /dev/aload* access for auto-loading])
fi
+dnl Check for non-standard /dev directory
+AC_MSG_CHECKING([for ALSA device file directory])
+AC_ARG_WITH(alsa-devdir,
+ [ --with-alsa-devdir=dir directory with ALSA device files (default /dev/snd)],
+ [alsa_dev_dir="$withval"],
+ [alsa_dev_dir="/dev/snd"])
+dnl make sure it has a trailing slash
+if echo "$alsa_dev_dir" | grep -v '/$' > /dev/null; then
+ alsa_dev_dir="$alsa_dev_dir/"
+fi
+AC_DEFINE_UNQUOTED(ALSA_DEVICE_DIRECTORY, "$alsa_dev_dir", [Directory with ALSA device files])
+AC_MSG_RESULT([$alsa_dev_dir])
+
+AC_MSG_CHECKING([for aload* device file directory])
+AC_ARG_WITH(aload-devdir,
+ [ --with-aload-devdir=dir directory with aload* device files (default /dev)],
+ [aload_dev_dir="$withval"],
+ [aload_dev_dir="/dev"])
+if echo "$aload_dev_dir" | grep -v '/$' > /dev/null; then
+ aload_dev_dir="$aload_dev_dir/"
+fi
+AC_DEFINE_UNQUOTED(ALOAD_DEVICE_DIRECTORY, "$aload_dev_dir", [Directory with aload* device files])
+AC_MSG_RESULT([$aload_dev_dir])
+
dnl Build conditions
AC_ARG_ENABLE(mixer,
[ --disable-mixer Disable the mixer component],
#include "control_local.h"
#ifndef DOC_HIDDEN
-#define SND_FILE_CONTROL "/dev/snd/controlC%i"
-#define SND_FILE_LOAD "/dev/aloadC%i"
+#define SND_FILE_CONTROL ALSA_DEVICE_DIRECTORY "controlC%i"
+#define SND_FILE_LOAD ALOAD_DEVICE_DIRECTORY "aloadC%i"
#endif
/**
int snd_card_load(int card)
{
int open_dev;
- char control[32];
+ char control[sizeof(SND_FILE_CONTROL) + 10];
sprintf(control, SND_FILE_CONTROL, card);
open_dev = snd_open_device(control, O_RDONLY);
#ifdef SUPPORT_ALOAD
if (open_dev < 0) {
- char aload[32];
+ char aload[sizeof(SND_FILE_LOAD) + 10];
sprintf(aload, SND_FILE_LOAD, card);
open_dev = snd_open_device(aload, O_RDONLY);
}
#endif
#ifndef DOC_HIDDEN
-#define SNDRV_FILE_CONTROL "/dev/snd/controlC%i"
+#define SNDRV_FILE_CONTROL ALSA_DEVICE_DIRECTORY "controlC%i"
#define SNDRV_CTL_VERSION_MAX SNDRV_PROTOCOL_VERSION(2, 0, 3)
typedef struct {
int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode)
{
int fd, ver;
- char filename[32];
+ char filename[sizeof(SNDRV_FILE_CONTROL) + 10];
int fmode;
snd_ctl_t *ctl;
snd_ctl_hw_t *hw;
const char *_snd_module_hwdep_hw = "";
#endif
-#define SNDRV_FILE_HWDEP "/dev/snd/hwC%iD%i"
+#define SNDRV_FILE_HWDEP ALSA_DEVICE_DIRECTORY "hwC%iD%i"
#define SNDRV_HWDEP_VERSION_MAX SNDRV_PROTOCOL_VERSION(1, 0, 1)
static int snd_hwdep_hw_close(snd_hwdep_t *hwdep)
int snd_hwdep_hw_open(snd_hwdep_t **handle, const char *name, int card, int device, int mode)
{
int fd, ver, ret;
- char filename[32];
+ char filename[sizeof(SNDRV_FILE_HWDEP) + 20];
snd_hwdep_t *hwdep;
assert(handle);
snd_pcm_uframes_t appl_ptr;
} snd_pcm_hw_t;
-#define SNDRV_FILE_PCM_STREAM_PLAYBACK "/dev/snd/pcmC%iD%ip"
-#define SNDRV_FILE_PCM_STREAM_CAPTURE "/dev/snd/pcmC%iD%ic"
+#define SNDRV_FILE_PCM_STREAM_PLAYBACK ALSA_DEVICE_DIRECTORY "pcmC%iD%ip"
+#define SNDRV_FILE_PCM_STREAM_CAPTURE ALSA_DEVICE_DIRECTORY "pcmC%iD%ic"
#define SNDRV_PCM_VERSION_MAX SNDRV_PROTOCOL_VERSION(2, 0, 5)
/* update appl_ptr with driver */
snd_pcm_stream_t stream, int mode,
int mmap_emulation, int sync_ptr_ioctl)
{
- char filename[32];
+ char filename[sizeof(SNDRV_FILE_PCM_STREAM_PLAYBACK) + 20];
const char *filefmt;
int ret = 0, fd = -1;
int attempt = 0;
const char *_snd_module_rawmidi_hw = "";
#endif
-#define SNDRV_FILE_RAWMIDI "/dev/snd/midiC%iD%i"
+#define SNDRV_FILE_RAWMIDI ALSA_DEVICE_DIRECTORY "midiC%iD%i"
#define SNDRV_RAWMIDI_VERSION_MAX SNDRV_PROTOCOL_VERSION(2, 0, 0)
#ifndef DOC_HIDDEN
{
int fd, ver, ret;
int attempt = 0;
- char filename[32];
+ char filename[sizeof(SNDRV_FILE_RAWMIDI) + 20];
snd_ctl_t *ctl;
snd_rawmidi_t *rmidi;
snd_rawmidi_hw_t *hw = NULL;
#endif
#ifndef DOC_HIDDEN
-#define SNDRV_FILE_SEQ "/dev/snd/seq"
-#define SNDRV_FILE_ALOADSEQ "/dev/aloadSEQ"
+#define SNDRV_FILE_SEQ ALSA_DEVICE_DIRECTORY "seq"
+#define SNDRV_FILE_ALOADSEQ ALOAD_DEVICE_DIRECTORY "aloadSEQ"
#define SNDRV_SEQ_VERSION_MAX SNDRV_PROTOCOL_VERSION(1, 0, 1)
typedef struct {
const char *_snd_module_timer_hw = "";
#endif
-#define SNDRV_FILE_TIMER "/dev/snd/timer"
+#define SNDRV_FILE_TIMER ALSA_DEVICE_DIRECTORY "timer"
#define SNDRV_TIMER_VERSION_MAX SNDRV_PROTOCOL_VERSION(2, 0, 5)
#define SNDRV_TIMER_IOCTL_STATUS_OLD _IOW('T', 0x14, struct sndrv_timer_status)
const char *_snd_module_timer_query_hw = "";
#endif
-#define SNDRV_FILE_TIMER "/dev/snd/timer"
+#define SNDRV_FILE_TIMER ALSA_DEVICE_DIRECTORY "timer"
#define SNDRV_TIMER_VERSION_MAX SNDRV_PROTOCOL_VERSION(2, 0, 0)
static int snd_timer_query_hw_close(snd_timer_query_t *handle)