Replace PyString usage with PyBytes everywhere
authorPanu Matilainen <pmatilai@redhat.com>
Wed, 21 Oct 2009 10:15:44 +0000 (13:15 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Wed, 21 Oct 2009 10:15:44 +0000 (13:15 +0300)
- In Python 2.6 PyBytes is just an alias for PyString, Python 3.0
  removed PyString entirely
- Add compatibility defines for Python < 2.6
- Based on David Malcolm's Python 3.x efforts

python/header-py.c
python/rpmfd-py.c
python/rpmkeyring-py.c
python/rpmmodule.c
python/rpmsystem-py.h
python/rpmtd-py.c
python/rpmts-py.c

index 36543f4..1ea5acf 100644 (file)
@@ -172,7 +172,7 @@ static PyObject * hdrUnload(hdrObject * s, PyObject * args, PyObject *keywords)
        return NULL;
     }
 
-    rc = PyString_FromStringAndSize(buf, len);
+    rc = PyBytes_FromStringAndSize(buf, len);
     buf = _free(buf);
 
     return rc;
@@ -372,8 +372,8 @@ static PyObject *hdr_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
        h = headerNew();
     } else if (hdrObject_Check(obj)) {
        h = headerCopy(((hdrObject*) obj)->h);
-    } else if (PyString_Check(obj)) {
-       h = headerCopyLoad(PyString_AsString(obj));
+    } else if (PyBytes_Check(obj)) {
+       h = headerCopyLoad(PyBytes_AsString(obj));
     } else if (rpmfdFromPyObject(obj, &fdo)) {
        Py_BEGIN_ALLOW_THREADS;
        h = headerRead(rpmfdGetFd(fdo), HEADER_MAGIC_YES);
@@ -422,8 +422,8 @@ int tagNumFromPyObject (PyObject *item, rpmTag *tagp)
     if (PyInt_Check(item)) {
        /* XXX we should probably validate tag numbers too */
        tag = PyInt_AsLong(item);
-    } else if (PyString_Check(item)) {
-       tag = rpmTagGetValue(PyString_AsString(item));
+    } else if (PyBytes_Check(item)) {
+       tag = rpmTagGetValue(PyBytes_AsString(item));
     } else {
        PyErr_SetString(PyExc_TypeError, "expected a string or integer");
        return 0;
index 62ddeb0..8b0da0e 100644 (file)
@@ -56,10 +56,10 @@ static PyObject *rpmfd_new(PyTypeObject *subtype,
                                     &fo, &mode, &flags))
        return NULL;
 
-    if (PyString_Check(fo)) {
+    if (PyBytes_Check(fo)) {
        char *m = rstrscat(NULL, mode, ".", flags, NULL);
        Py_BEGIN_ALLOW_THREADS 
-       fd = Fopen(PyString_AsString(fo), m);
+       fd = Fopen(PyBytes_AsString(fo), m);
        Py_END_ALLOW_THREADS 
        free(m);
     } else if (PyInt_Check(fo)) {
@@ -220,7 +220,7 @@ static PyObject *rpmfd_read(rpmfdObject *s, PyObject *args, PyObject *kwds)
        PyErr_SetString(PyExc_IOError, Fstrerror(s->fd));
        goto exit;
     }
-    res = PyString_FromStringAndSize(buf, read);
+    res = PyBytes_FromStringAndSize(buf, read);
 
 exit:
     free(buf);
index 6bb27af..d5f131e 100644 (file)
@@ -26,7 +26,7 @@ static PyObject *rpmPubkey_new(PyTypeObject *subtype,
     if (!PyArg_ParseTupleAndKeywords(args, kwds, "S", kwlist, &key))
        return NULL;
 
-    if (pgpParsePkts(PyString_AsString(key), &pkt, &pktlen) <= 0) {
+    if (pgpParsePkts(PyBytes_AsString(key), &pkt, &pktlen) <= 0) {
        PyErr_SetString(PyExc_ValueError, "invalid pubkey");
        return NULL;
     }
index 2d903fc..fb9fa1d 100644 (file)
@@ -191,7 +191,7 @@ static void addRpmTags(PyObject *module)
 
        PyModule_AddIntConstant(module, tagname, tagval);
        pyval = PyInt_FromLong(tagval);
-       pyname = PyString_FromString(shortname);
+       pyname = PyBytes_FromString(shortname);
        PyDict_SetItem(dict, pyval, pyname);
        Py_DECREF(pyval);
        Py_DECREF(pyname);
index 35c0f4d..d4923ab 100644 (file)
@@ -25,5 +25,12 @@ typedef Py_ssize_t (*lenfunc)(PyObject *);
 #define Py_TYPE(o) ((o)->ob_type)
 #endif
 
+#if ((PY_MAJOR_VERSION << 8) | (PY_MINOR_VERSION << 0)) < 0x0206
+#define PyXBytes_Check PyString_Check
+#define PyXBytes_FromString PyString_FromString
+#define PyXBytes_FromStringAndSize PyString_FromStringAndSize
+#define PyXBytes_Size PyString_Size
+#define PyXBytes_AsString PyString_AsString
+#endif
 
 #endif /* H_SYSTEM_PYTHON */
index 1ee0846..e937d72 100644 (file)
@@ -17,13 +17,13 @@ static PyObject * rpmtd_ItemAsPyobj(rpmtd td, rpmTagClass class)
 
     switch (class) {
     case RPM_STRING_CLASS:
-       res = PyString_FromString(rpmtdGetString(td));
+       res = PyBytes_FromString(rpmtdGetString(td));
        break;
     case RPM_NUMERIC_CLASS:
        res = PyLong_FromLongLong(rpmtdGetNumber(td));
        break;
     case RPM_BINARY_CLASS:
-       res = PyString_FromStringAndSize(td->data, td->count);
+       res = PyBytes_FromStringAndSize(td->data, td->count);
        break;
     default:
        PyErr_SetString(PyExc_KeyError, "unknown data type");
@@ -66,7 +66,7 @@ static PyObject *rpmtd_str(rpmtdObject *s)
     PyObject *res = NULL;
     char *str = rpmtdFormat(&(s->td), RPMTD_FORMAT_STRING, NULL);
     if (str) {
-        res = PyString_FromString(str);
+        res = PyBytes_FromString(str);
        free(str);
     } else {
        res = PyObject_Repr((PyObject *)s);
index f5e0a8e..d16ce61 100644 (file)
@@ -159,7 +159,7 @@ static void die(PyObject *cb)
        PyErr_Print();
     }
     if ((r = PyObject_Repr(cb)) != NULL) { 
-       pyfn = PyString_AsString(r);
+       pyfn = PyBytes_AsString(r);
     }
     fprintf(stderr, _("error: python callback %s failed, aborting!\n"), 
                      pyfn ? pyfn : "???");
@@ -370,8 +370,8 @@ rpmts_HdrCheck(rpmtsObject * s, PyObject *obj)
     if (!PyArg_Parse(obj, "S:HdrCheck", &blob))
        return NULL;
 
-    uh = PyString_AsString(blob);
-    uc = PyString_Size(blob);
+    uh = PyBytes_AsString(blob);
+    uc = PyBytes_Size(blob);
 
     Py_BEGIN_ALLOW_THREADS;
     rpmrc = headerCheck(s->ts, uh, uc, &msg);
@@ -392,8 +392,8 @@ rpmts_PgpPrtPkts(rpmtsObject * s, PyObject * args, PyObject * kwds)
     if (!PyArg_ParseTupleAndKeywords(args, kwds, "S:PgpPrtPkts", kwlist, &blob))
        return NULL;
 
-    pkt = (unsigned char *)PyString_AsString(blob);
-    pktlen = PyString_Size(blob);
+    pkt = (unsigned char *)PyBytes_AsString(blob);
+    pktlen = PyBytes_Size(blob);
 
     rc = pgpPrtPkts(pkt, pktlen, NULL, 1);
 
@@ -413,8 +413,8 @@ rpmts_PgpImportPubkey(rpmtsObject * s, PyObject * args, PyObject * kwds)
            kwlist, &blob))
        return NULL;
 
-    pkt = (unsigned char *)PyString_AsString(blob);
-    pktlen = PyString_Size(blob);
+    pkt = (unsigned char *)PyBytes_AsString(blob);
+    pktlen = PyBytes_Size(blob);
 
     rc = rpmtsImportPubkey(s->ts, pkt, pktlen);
 
@@ -587,9 +587,9 @@ rpmts_Match(rpmtsObject * s, PyObject * args, PyObject * kwds)
        return NULL;
 
     if (Key) {
-       if (PyString_Check(Key)) {
-           key = PyString_AsString(Key);
-           len = PyString_Size(Key);
+       if (PyBytes_Check(Key)) {
+           key = PyBytes_AsString(Key);
+           len = PyBytes_Size(Key);
        } else if (PyInt_Check(Key)) {
            lkey = PyInt_AsLong(Key);
            key = (char *)&lkey;