Ignore:
Timestamp:
Dec 22, 2009, 9:29:51 AM (13 years ago)
Author:
Sam Hocevar
Message:

Start porting the Python interpreter to Python 2.4/2.5.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/python/interpreter.c

    r4071 r4165  
    4242static char *getPythonError(void);
    4343
    44 
     44#if defined HAVE_PYTHON2
     45static PyObject *PyUnicode_FromString(char const *str)
     46{
     47    PyObject *tmp, *ret;
     48    tmp = PyString_FromString(str);
     49    if (!tmp)
     50        return NULL;
     51    ret = PyString_AsDecodedObject(tmp, "utf-8", "replace");
     52    Py_DECREF(tmp);
     53    return ret;
     54}
     55#endif
    4556
    4657int python_command_handle_key(struct screen_list *screen_list, unsigned int c)
     
    7788int python_init(struct screen_list *sl)
    7889{
    79     Py_Initialize();
    8090    initNeercsModule(sl);
    8191
     
    103113
    104114
    105     PyObject *pModule, *pName, *pFunc;
     115    PyObject *pModule, *pName;
    106116
    107117    /* Module from which to call the function */
     
    139149            err = 1;
    140150        }
    141         goto end;
    142151
     152        Py_DECREF(pModule);
    143153    }
    144154    else
     
    146156        widget_ibox_set_error(sl->interpreter_props.box, getPythonError());
    147157        err = 1;
    148         goto end;
    149158    }
    150159
    151160  end:
    152 
    153     Py_XDECREF(pFunc);
    154     Py_DECREF(pModule);
    155161
    156162    if (!err)
     
    164170    return 0;
    165171}
    166 
    167 
    168172
    169173static char *getPythonError(void)
     
    183187{
    184188    PyObject *str = PyObject_Repr(p);
    185     char *err = PyBytes_AS_STRING(PyUnicode_AsEncodedString(str, "utf-8",
    186                                                             "Error ~"));
    187 
    188     char *ret = strdup(err);
    189     return ret;
     189    char *tmp;
     190#if defined HAVE_PYTHON3
     191    tmp = PyBytes_AS_STRING(PyUnicode_AsEncodedString(str, "utf-8", "Error ~"));
     192#elif defined HAVE_PYTHON2
     193    tmp = PyString_AsString(str);
     194#endif
     195    return strdup(tmp);
    190196}
    191197
Note: See TracChangeset for help on using the changeset viewer.