X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2Fpython.cpp;h=b7a4cf38251320313631fd6498abc9b176198b3f;hp=8e9fbd7e18b1b1bbd46f9ecbb3f38c48394b1664;hb=04f4636324ab06c5a3a4f618100048e159eaf6f9;hpb=a352eedba61b1a74b91db4005f7d9a24f8ac2848;ds=sidebyside diff --git a/lib/python/python.cpp b/lib/python/python.cpp index 8e9fbd7..b7a4cf3 100644 --- a/lib/python/python.cpp +++ b/lib/python/python.cpp @@ -3,6 +3,7 @@ #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200112L extern "C" void init_enigma(); +extern "C" void eBaseInit(void); extern void bsodFatal(); #define SKIP_PART2 @@ -124,6 +125,7 @@ ePython::ePython() PyEval_InitThreads(); init_enigma(); + eBaseInit(); } ePython::~ePython() @@ -131,6 +133,16 @@ ePython::~ePython() Py_Finalize(); } +int ePython::execFile(const char *file) +{ + FILE *fp = fopen(file, "r"); + if (!fp) + return -ENOENT; + int ret = PyRun_SimpleFile(fp, file); + fclose(fp); + return ret; +} + int ePython::execute(const std::string &pythonfile, const std::string &funcname) { ePyObject pName, pModule, pDict, pFunc, pArgs, pValue; @@ -188,7 +200,11 @@ int ePython::call(ePyObject pFunc, ePyObject pArgs) } else { PyErr_Print(); - eDebug("(PyObject_CallObject failed)"); + ePyObject FuncStr = PyObject_Str(pFunc); + ePyObject ArgStr = PyObject_Str(pArgs); + eDebug("(PyObject_CallObject(%s,%s) failed)", PyString_AS_STRING(FuncStr), PyString_AS_STRING(ArgStr)); + Py_DECREF(FuncStr); + Py_DECREF(ArgStr); bsodFatal(); } }