Add conversion function for handling python unicode -> string issues
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 23 Oct 2009 18:07:10 +0000 (21:07 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 23 Oct 2009 18:07:10 +0000 (21:07 +0300)
- In Python 3 everything is unicode, forcing each and every caller to
  convert manually is a bit much.

python/header-py.c
python/header-py.h

index 1ea5acf..dc26d8e 100644 (file)
@@ -415,6 +415,21 @@ static PyObject * hdr_iternext(hdrObject *s)
     return res;
 }
 
+int utf8FromPyObject(PyObject *item, PyObject **str)
+{
+    PyObject *res = NULL;
+    if (PyBytes_Check(item)) {
+       Py_XINCREF(item);
+       res = item;
+    } else if (PyUnicode_Check(item)) {
+       res = PyUnicode_AsUTF8String(item);
+    }
+    if (res == NULL) return 0;
+
+    *str = res;
+    return 1;
+}
+
 int tagNumFromPyObject (PyObject *item, rpmTag *tagp)
 {
     rpmTag tag = RPMTAG_NOT_FOUND;
index 497ce3a..28378ac 100644 (file)
@@ -17,7 +17,7 @@ extern PyObject * pyrpmError;
 PyObject * hdr_Wrap(PyTypeObject *subtype, Header h);
 
 int hdrFromPyObject(PyObject *item, Header *h);
-
+int utf8FromPyObject(PyObject *item, PyObject **str);
 int tagNumFromPyObject (PyObject *item, rpmTag *tagp);
 
 PyObject * labelCompare (PyObject * self, PyObject * args);