21 #include "../SDL_internal.h"
25 #if SDL_AUDIO_DRIVER_NETBSD || SDL_AUDIO_DRIVER_OSS || SDL_AUDIO_DRIVER_SUNAUDIO
28 #include <sys/types.h>
36 #if defined(__NETBSD__) || defined(__OPENBSD__)
37 #define _PATH_DEV_DSP "/dev/audio"
39 #define _PATH_DEV_DSP "/dev/dsp"
42 #ifndef _PATH_DEV_DSP24
43 #define _PATH_DEV_DSP24 "/dev/sound/dsp"
45 #ifndef _PATH_DEV_AUDIO
46 #define _PATH_DEV_AUDIO "/dev/audio"
50 test_device(
const int iscapture,
const char *
fname,
int flags,
int (*test) (
int fd))
53 if ((stat(
fname, &sb) == 0) && (S_ISCHR(sb.st_mode))) {
56 const int okay = test(audio_fd);
59 static size_t dummyhandle = 0;
75 SDL_EnumUnixAudioDevices_Internal(
const int iscapture,
const int classic,
int (*test)(
int))
88 audiodev = _PATH_DEV_AUDIO;
93 if (((stat(
"/dev/sound", &sb) == 0) && S_ISDIR(sb.st_mode))
94 && ((stat(_PATH_DEV_DSP24, &sb) == 0)
95 && S_ISCHR(sb.st_mode))) {
96 audiodev = _PATH_DEV_DSP24;
98 audiodev = _PATH_DEV_DSP;
102 test_device(iscapture, audiodev,
flags, test);
104 if (
SDL_strlen(audiodev) < (
sizeof(audiopath) - 3)) {
106 while (instance <= 64) {
108 "%s%d", audiodev, instance);
110 test_device(iscapture, audiopath,
flags, test);
118 SDL_EnumUnixAudioDevices_Internal(
SDL_TRUE, classic, test);
119 SDL_EnumUnixAudioDevices_Internal(
SDL_FALSE, classic, test);