25 #if SDL_AUDIO_DRIVER_BSD || SDL_AUDIO_DRIVER_OSS || SDL_AUDIO_DRIVER_SUNAUDIO
32 #include "SDL_stdinc.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 char *fname,
int flags,
int (*test) (
int fd),
54 if ((stat(fname, &sb) == 0) && (S_ISCHR(sb.st_mode))) {
55 const int audio_fd = open(fname, flags, 0);
86 audiodev = _PATH_DEV_AUDIO;
91 if (((stat(
"/dev/sound", &sb) == 0) && S_ISDIR(sb.st_mode))
92 && ((stat(_PATH_DEV_DSP24, &sb) == 0)
93 && S_ISCHR(sb.st_mode))) {
94 audiodev = _PATH_DEV_DSP24;
96 audiodev = _PATH_DEV_DSP;
100 test_device(audiodev, flags, test, addfn);
102 if (
SDL_strlen(audiodev) < (
sizeof(audiopath) - 3)) {
104 while (instance++ <= 64) {
106 "%s%d", audiodev, instance);
107 test_device(audiopath, flags, test, addfn);
void(* SDL_AddAudioDevice)(const char *name)
void SDL_EnumUnixAudioDevices(int iscapture, int classic, int(*test)(int fd), SDL_AddAudioDevice addfn)
DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt,...)
#define OPEN_FLAGS_OUTPUT
DECLSPEC size_t SDLCALL SDL_strlen(const char *str)
#define SDL_arraysize(array)
GLenum GLsizei GLsizei GLsizei GLsizei GLbitfield flags
DECLSPEC char *SDLCALL SDL_getenv(const char *name)