X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/937be4c02816d026de3063f32d82fafda1f3c512..ac06ceb3be8d9356b74bcc028a8bed2f8dab07fd:/lib/configuration.c?ds=sidebyside diff --git a/lib/configuration.c b/lib/configuration.c index 448a8ab..a506ee9 100644 --- a/lib/configuration.c +++ b/lib/configuration.c @@ -439,7 +439,7 @@ static int set_backend(const struct config_state *cs, return -1; } if(!strcmp(vec[0], "alsa")) { -#if API_ALSA +#if HAVE_ALSA_ASOUNDLIB_H *valuep = BACKEND_ALSA; #else error(0, "%s:%d: ALSA is not available on this platform", @@ -457,6 +457,14 @@ static int set_backend(const struct config_state *cs, error(0, "%s:%d: Core Audio is not available on this platform", cs->path, cs->line); return -1; +#endif + } else if(!strcmp(vec[0], "oss")) { +#if HAVE_SYS_SOUNDCARD_H + *valuep = BACKEND_OSS; +#else + error(0, "%s:%d: OSS is not available on this platform", + cs->path, cs->line); + return -1; #endif } else { error(0, "%s:%d: invalid '%s' value '%s'", @@ -1076,8 +1084,10 @@ static void config_postdefaults(struct config *c, else if(c->broadcast.n) c->speaker_backend = BACKEND_NETWORK; else { -#if API_ALSA +#if HAVE_ALSA_ASOUNDLIB_H c->speaker_backend = BACKEND_ALSA; +#elif HAVE_SYS_SOUNDCARD_H + c->speaker_backend = BACKEND_OSS; #elif HAVE_COREAUDIO_AUDIOHARDWARE_H c->speaker_backend = BACKEND_COREAUDIO; #else @@ -1091,20 +1101,21 @@ static void config_postdefaults(struct config *c, if(c->speaker_backend == BACKEND_NETWORK && !c->broadcast.n) fatal(0, "speaker_backend is network but broadcast is not set"); } - if(c->speaker_backend == BACKEND_NETWORK) { - /* Override sample format */ + /* Override sample format */ + switch(c->speaker_backend) { + case BACKEND_NETWORK: c->sample_format.rate = 44100; c->sample_format.channels = 2; c->sample_format.bits = 16; c->sample_format.endian = ENDIAN_BIG; - } - if(c->speaker_backend == BACKEND_COREAUDIO) { - /* Override sample format */ + break; + case BACKEND_COREAUDIO: c->sample_format.rate = 44100; c->sample_format.channels = 2; c->sample_format.bits = 16; c->sample_format.endian = ENDIAN_NATIVE; - } + break; + } } /** @brief (Re-)read the config file