+int convbin(PyObject *o, void *pp)
+{
+ struct bin *r = pp;
+
+ if (BIN_CHECK(o)) {
+ r->p = BIN_PTR(o);
+ r->sz = BIN_LEN(o);
+ return (1);
+ }
+#ifdef PY2
+ 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);
+ }
+#endif
+ return (PyObject_AsReadBuffer(o, &r->p, &r->sz) ? 0 : 1);
+}
+