#3247: get rid of Py_FindMethod
Third step: unix-only modules. Really remove the function this time.
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c
index 43215b0..8f66144 100644
--- a/Modules/ossaudiodev.c
+++ b/Modules/ossaudiodev.c
@@ -803,9 +803,14 @@
 };
 
 static PyObject *
-oss_getattr(oss_audio_t *self, char *name)
+oss_getattro(oss_audio_t *self, PyObject *nameobj)
 {
+    char *name = "";
     PyObject * rval = NULL;
+
+    if (PyUnicode_Check(nameobj))
+	name = PyUnicode_AsString(nameobj);
+    
     if (strcmp(name, "closed") == 0) {
         rval = (self->fd == -1) ? Py_True : Py_False;
         Py_INCREF(rval);
@@ -829,17 +834,11 @@
         }
     }
     else {
-        rval = Py_FindMethod(oss_methods, (PyObject *)self, name);
+        rval = PyObject_GenericGetAttr((PyObject *)self, nameobj);
     }
     return rval;
 }
 
-static PyObject *
-oss_mixer_getattr(oss_mixer_t *self, char *name)
-{
-    return Py_FindMethod(oss_mixer_methods, (PyObject *)self, name);
-}
-
 static PyTypeObject OSSAudioType = {
     PyVarObject_HEAD_INIT(&PyType_Type, 0)
     "ossaudiodev.oss_audio_device", /*tp_name*/
@@ -848,10 +847,28 @@
     /* methods */
     (destructor)oss_dealloc,    /*tp_dealloc*/
     0,                          /*tp_print*/
-    (getattrfunc)oss_getattr,   /*tp_getattr*/
+    0,                          /*tp_getattr*/
     0,                          /*tp_setattr*/
     0,                          /*tp_compare*/
     0,                          /*tp_repr*/
+    0,                          /*tp_as_number*/
+    0,                          /*tp_as_sequence*/
+    0,                          /*tp_as_mapping*/
+    0,                          /*tp_hash*/
+    0,                          /*tp_call*/
+    0,                          /*tp_str*/
+    (getattrofunc)oss_getattro, /*tp_getattro*/
+    0,                          /*tp_setattro*/
+    0,                          /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT,         /*tp_flags*/
+    0,                          /*tp_doc*/
+    0,                          /*tp_traverse*/
+    0,                          /*tp_clear*/
+    0,                          /*tp_richcompare*/
+    0,                          /*tp_weaklistoffset*/
+    0,                          /*tp_iter*/
+    0,                          /*tp_iternext*/
+    oss_methods,                /*tp_methods*/
 };
 
 static PyTypeObject OSSMixerType = {
@@ -862,10 +879,28 @@
     /* methods */
     (destructor)oss_mixer_dealloc,  /*tp_dealloc*/
     0,                              /*tp_print*/
-    (getattrfunc)oss_mixer_getattr, /*tp_getattr*/
+    0,                              /*tp_getattr*/
     0,                              /*tp_setattr*/
     0,                              /*tp_compare*/
     0,                              /*tp_repr*/
+    0,                              /*tp_as_number*/
+    0,                              /*tp_as_sequence*/
+    0,                              /*tp_as_mapping*/
+    0,                              /*tp_hash*/
+    0,                              /*tp_call*/
+    0,                              /*tp_str*/
+    0,                              /*tp_getattro*/
+    0,                              /*tp_setattro*/
+    0,                              /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT,             /*tp_flags*/
+    0,                              /*tp_doc*/
+    0,                              /*tp_traverse*/
+    0,                              /*tp_clear*/
+    0,                              /*tp_richcompare*/
+    0,                              /*tp_weaklistoffset*/
+    0,                              /*tp_iter*/
+    0,                              /*tp_iternext*/
+    oss_mixer_methods,              /*tp_methods*/
 };