diff options
author | Greg Ward <gward@python.net> | 2003-03-10 03:17:06 (GMT) |
---|---|---|
committer | Greg Ward <gward@python.net> | 2003-03-10 03:17:06 (GMT) |
commit | 0b6dfb808cf3b6738bf92427b01c82856f7d5ef6 (patch) | |
tree | fe90dd1f88fe261f95220780a1ea3fd65089d897 | |
parent | f882c77d706841fcc0c9728bb3908563ba774403 (diff) | |
download | cpython-0b6dfb808cf3b6738bf92427b01c82856f7d5ef6.zip cpython-0b6dfb808cf3b6738bf92427b01c82856f7d5ef6.tar.gz cpython-0b6dfb808cf3b6738bf92427b01c82856f7d5ef6.tar.bz2 |
<sys/soundcard.h> seems to exist on both Linux and FreeBSD, so include
it instead of the OS-specific <linux/soundcard.h> or <machine/soundcard.h>.
Mixers devices have an ioctl-only interface, no read/write -- so the
flags passed to open() don't really matter. Thus, drop the 'mode'
parameter to openmixer() (ie. second arg to newossmixerobject()) and
always open mixers with O_RDWR.
-rw-r--r-- | Modules/ossaudiodev.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index 87a98e1..2f4693d 100644 --- a/Modules/ossaudiodev.c +++ b/Modules/ossaudiodev.c @@ -29,19 +29,18 @@ #define O_WRONLY 01 #endif - #include <sys/ioctl.h> +#include <sys/soundcard.h> + #if defined(linux) -#include <linux/soundcard.h> typedef unsigned long uint32_t; #elif defined(__FreeBSD__) -#include <machine/soundcard.h> -#ifndef SNDCTL_DSP_CHANNELS -#define SNDCTL_DSP_CHANNELS SOUND_PCM_WRITE_CHANNELS -#endif +# ifndef SNDCTL_DSP_CHANNELS +# define SNDCTL_DSP_CHANNELS SOUND_PCM_WRITE_CHANNELS +# endif #endif @@ -169,11 +168,11 @@ oss_dealloc(oss_audio_t *self) static oss_mixer_t * newossmixerobject(PyObject *arg) { - char *basedev = NULL, *mode = NULL; - int fd, imode; + char *basedev = NULL; + int fd; oss_mixer_t *self; - if (!PyArg_ParseTuple(arg, "|ss", &basedev, &mode)) { + if (!PyArg_ParseTuple(arg, "|s", &basedev)) { return NULL; } @@ -183,22 +182,11 @@ newossmixerobject(PyObject *arg) basedev = "/dev/mixer"; } - if (mode == NULL || strcmp(mode, "r") == 0) - imode = O_RDONLY; - else if (strcmp(mode, "w") == 0) - imode = O_WRONLY; - else if (strcmp(mode, "rw") == 0) - imode = O_RDWR; - else { - PyErr_SetString(OSSAudioError, "mode must be 'r', 'w', or 'rw'"); - return NULL; - } - - if ((fd = open(basedev, imode)) == -1) { + if ((fd = open(basedev, O_RDWR)) == -1) { PyErr_SetFromErrnoWithFilename(PyExc_IOError, basedev); return NULL; } - + if ((self = PyObject_New(oss_mixer_t, &OSSMixerType)) == NULL) { close(fd); return NULL; |