Ticket #4246: urlarg_3k.diff

File urlarg_3k.diff, 2.1 KB (added by loewis, 4 years ago)
  • _c_urlarg.c

    old new  
    1414} 
    1515#endif 
    1616 
     17#if PY_MAJOR_VERSION < 3 
     18#define Bytes_FromStringAndSize PyString_FromStringAndSize 
     19#define Bytes_AsString PyString_AsString 
     20#define _Bytes_Resize _PyString_Resize 
     21#else 
     22#define Bytes_FromStringAndSize PyBytes_FromStringAndSize 
     23#define Bytes_AsString PyBytes_AsString 
     24#define _Bytes_Resize _PyBytes_Resize 
     25#endif 
     26 
    1727#ifdef __GNUC__ 
    1828#       define TM_INLINE inline 
    1929#else 
     
    4757        return NULL; 
    4858    } 
    4959    if (length == 0) { 
    50         return PyString_FromStringAndSize("", 0); 
     60        return Bytes_FromStringAndSize("", 0); 
    5161    } 
    5262    /* Allocating an output buffer of length will be sufficient, 
    5363       as the output can only be smaller. We resize the output in the end. */ 
    54     str = PyString_FromStringAndSize(NULL, length); 
     64    str = Bytes_FromStringAndSize(NULL, length); 
    5565    if (str == NULL) { 
    5666        return NULL; 
    5767    } 
    58     output = output_start = (unsigned char*)PyString_AsString(str); 
     68    output = output_start = (unsigned char*)Bytes_AsString(str); 
    5969    end = s + length; 
    6070    s = s - 1; 
    6171    while ((++s) < end) { 
     
    102112        break; 
    103113    } 
    104114 
    105     _PyString_Resize(&str, output-output_start); 
     115    _Bytes_Resize(&str, output-output_start); 
    106116    return str; 
    107117} 
    108118 
     
    111121    {NULL, NULL} /* sentinel */ 
    112122}; 
    113123 
    114 DL_EXPORT(void) init_c_urlarg(void) 
     124static void 
     125init(PyObject *m) 
    115126{ 
    116     PyObject* m; 
    117127    PyObject* d; 
    118128    unsigned char i; 
    119129 
    120     m = Py_InitModule("_c_urlarg", _c_urlarg_methods); 
    121130    d = PyModule_GetDict(m); 
    122131 
    123132    /* add our base exception class */ 
     
    145154    } 
    146155} 
    147156 
     157#if PY_MAJOR_VERSION < 3 
     158DL_EXPORT(void) init_c_urlarg(void) 
     159{ 
     160    PyObject* m; 
     161    m = Py_InitModule("_c_urlarg", _c_urlarg_methods); 
     162    init(m); 
     163} 
     164#else 
     165static struct PyModuleDef _module = { 
     166        PyModuleDef_HEAD_INIT, 
     167        "_c_urlarg", 
     168        NULL, 
     169        -1, 
     170        _c_urlarg_methods, 
     171        NULL, 
     172        NULL, 
     173        NULL, 
     174        NULL 
     175}; 
     176 
     177PyMODINIT_FUNC 
     178PyInit__c_urlarg(void) 
     179{ 
     180    PyObject *m = PyModule_Create(&_module); 
     181    if (!m) 
     182        return NULL; 
     183    init(m); 
     184    return m; 
     185} 
     186#endif