X-Git-Url: https://git.distorted.org.uk/~mdw/pyke/blobdiff_plain/1edc7284ff2dcfa5ebda27b5fc44f6053160ac2a..7e18a150da6ebba51ca22fbe65f12c023def4b13:/pyke.c diff --git a/pyke.c b/pyke.c index 29dd8c5..d874763 100644 --- a/pyke.c +++ b/pyke.c @@ -101,6 +101,25 @@ end: return (0); } +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); +} + /*----- Miscellaneous utilities -------------------------------------------*/ PyObject *abstract_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)