bpo-30022: Get rid of using EnvironmentError and IOError (except test… (#1051)

diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c
index 1cdbbae..8bb4d0d 100644
--- a/Modules/ossaudiodev.c
+++ b/Modules/ossaudiodev.c
@@ -128,13 +128,13 @@
        expected write() semantics. */
     if (fcntl(fd, F_SETFL, 0) == -1) {
         close(fd);
-        PyErr_SetFromErrnoWithFilename(PyExc_IOError, devicename);
+        PyErr_SetFromErrnoWithFilename(PyExc_OSError, devicename);
         return NULL;
     }
 
     if (ioctl(fd, SNDCTL_DSP_GETFMTS, &afmts) == -1) {
         close(fd);
-        PyErr_SetFromErrnoWithFilename(PyExc_IOError, devicename);
+        PyErr_SetFromErrnoWithFilename(PyExc_OSError, devicename);
         return NULL;
     }
     /* Create and initialize the object */
@@ -253,7 +253,7 @@
         return NULL;
 
     if (ioctl(fd, cmd, &arg) == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     return PyLong_FromLong(arg);
 }
 
@@ -278,7 +278,7 @@
         return NULL;
 
     if (ioctl(fd, cmd, &arg) == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     return PyLong_FromLong(arg);
 }
 
@@ -306,7 +306,7 @@
     Py_END_ALLOW_THREADS
 
     if (rv == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     Py_RETURN_NONE;
 }
 
@@ -324,7 +324,7 @@
     /* Hmmm: it doesn't appear to be possible to return to blocking
        mode once we're in non-blocking mode! */
     if (ioctl(self->fd, SNDCTL_DSP_NONBLOCK, NULL) == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     Py_RETURN_NONE;
 }
 
@@ -346,7 +346,7 @@
         return NULL;
 
     if (ioctl(self->fd, SNDCTL_DSP_GETFMTS, &mask) == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     return PyLong_FromLong(mask);
 }
 
@@ -491,7 +491,7 @@
         assert(select_rv != 0);   /* no timeout, can't expire */
         if (select_rv == -1) {
             PyBuffer_Release(&data);
-            return PyErr_SetFromErrno(PyExc_IOError);
+            return PyErr_SetFromErrno(PyExc_OSError);
         }
 
         rv = _Py_write(self->fd, cp, Py_MIN(size, INT_MAX));
@@ -575,7 +575,7 @@
 
     fmt = wanted_fmt;
     if (ioctl(self->fd, SNDCTL_DSP_SETFMT, &fmt) == -1) {
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     }
     if (strict && fmt != wanted_fmt) {
         return PyErr_Format
@@ -586,7 +586,7 @@
 
     channels = wanted_channels;
     if (ioctl(self->fd, SNDCTL_DSP_CHANNELS, &channels) == -1) {
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     }
     if (strict && channels != wanted_channels) {
         return PyErr_Format
@@ -597,7 +597,7 @@
 
     rate = wanted_rate;
     if (ioctl(self->fd, SNDCTL_DSP_SPEED, &rate) == -1) {
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
     }
     if (strict && rate != wanted_rate) {
         return PyErr_Format
@@ -656,11 +656,11 @@
         return NULL;
 
     if (_ssize(self, &nchannels, &ssize) < 0 || !nchannels || !ssize) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     if (ioctl(self->fd, SNDCTL_DSP_GETOSPACE, &ai) < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     return PyLong_FromLong((ai.fragstotal * ai.fragsize) / (nchannels * ssize));
@@ -678,11 +678,11 @@
         return NULL;
 
     if (_ssize(self, &nchannels, &ssize) < 0 || !nchannels || !ssize) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     if (ioctl(self->fd, SNDCTL_DSP_GETOSPACE, &ai) < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     return PyLong_FromLong((ai.fragstotal * ai.fragsize - ai.bytes) /
@@ -701,11 +701,11 @@
         return NULL;
 
     if (_ssize(self, &nchannels, &ssize) < 0 || !nchannels || !ssize) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     if (ioctl(self->fd, SNDCTL_DSP_GETOSPACE, &ai) < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     return PyLong_FromLong(ai.bytes / (ssize * nchannels));
@@ -725,7 +725,7 @@
     else
         req = SNDCTL_DSP_GETOPTR;
     if (ioctl(self->fd, req, &info) == -1) {
-        PyErr_SetFromErrno(PyExc_IOError);
+        PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
     }
     return Py_BuildValue("iii", info.bytes, info.blocks, info.ptr);
@@ -805,7 +805,7 @@
     }
 
     if (ioctl(self->fd, MIXER_READ(channel), &volume) == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
 
     return Py_BuildValue("(ii)", volume & 0xff, (volume & 0xff00) >> 8);
 }
@@ -835,7 +835,7 @@
     volume = (rightVol << 8) | leftVol;
 
     if (ioctl(self->fd, MIXER_WRITE(channel), &volume) == -1)
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrno(PyExc_OSError);
 
     return Py_BuildValue("(ii)", volume & 0xff, (volume & 0xff00) >> 8);
 }