summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Ward <gward@python.net>2003-03-10 03:17:06 (GMT)
committerGreg Ward <gward@python.net>2003-03-10 03:17:06 (GMT)
commit0b6dfb808cf3b6738bf92427b01c82856f7d5ef6 (patch)
treefe90dd1f88fe261f95220780a1ea3fd65089d897
parentf882c77d706841fcc0c9728bb3908563ba774403 (diff)
downloadcpython-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.c32
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;