int handle_sysexit(PyObject *e) { PyObject *code; code = PyObject_GetAttrString(e, "code"); if (!code) return 0; return pyobject_to_int(code); }
int execute_python_entrypoint(int argc, char **argv, const char *basename, const char *module, const char *function, char *outr, char *errr) { PyObject *site, *pmain, *res; int ret = 0; initialize_interpreter(argc, argv, outr, errr, basename, module, function); site = PyImport_ImportModule("site"); if (site == NULL) ret = report_python_error("Failed to import site module", 1); else { Py_XINCREF(site); pmain = PyObject_GetAttrString(site, "main"); if (pmain == NULL || !PyCallable_Check(pmain)) ret = report_python_error("site module has no main function", 1); else { Py_XINCREF(pmain); res = PyObject_CallObject(pmain, NULL); if (res == NULL) ret = report_python_error("Python function terminated unexpectedly", 1); ret = pyobject_to_int(res); } } PyErr_Clear(); Py_Finalize(); //printf("11111 Returning: %d\r\n", ret); return ret; }