+int convbin(PyObject *o, void *pp)
+{
+ struct bin *r = pp;
+
+ if (PyString_Check(o)) {
+ r->p = PyString_AS_STRING(o);
+ r->sz = PyString_GET_SIZE(o);
+ return (1);
+ }
+ if (PyUnicode_Check(o)) {
+ o = _PyUnicode_AsDefaultEncodedString(o, 0);
+ if (!o) return (0);
+ r->p = PyString_AS_STRING(o);
+ r->sz = PyString_GET_SIZE(o);
+ return (1);
+ }
+ return (PyObject_AsReadBuffer(o, &r->p, &r->sz) ? 0 : 1);
+}
+