]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | \r |
2 | /* Support for dynamic loading of extension modules */\r | |
3 | \r | |
4 | #include <atheos/image.h>\r | |
5 | #include <errno.h>\r | |
6 | \r | |
7 | #include "Python.h"\r | |
8 | #include "importdl.h"\r | |
9 | \r | |
10 | \r | |
11 | const struct filedescr _PyImport_DynLoadFiletab[] = {\r | |
12 | {".so", "rb", C_EXTENSION},\r | |
13 | {"module.so", "rb", C_EXTENSION},\r | |
14 | {0, 0}\r | |
15 | };\r | |
16 | \r | |
17 | dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,\r | |
18 | const char *pathname, FILE *fp)\r | |
19 | {\r | |
20 | void *p;\r | |
21 | int lib;\r | |
22 | char funcname[258];\r | |
23 | \r | |
24 | if (Py_VerboseFlag)\r | |
25 | printf("load_library %s\n", pathname);\r | |
26 | \r | |
27 | lib = load_library(pathname, 0);\r | |
28 | if (lib < 0) {\r | |
29 | char buf[512];\r | |
30 | if (Py_VerboseFlag)\r | |
31 | perror(pathname);\r | |
32 | PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s: %.200s",\r | |
33 | pathname, strerror(errno));\r | |
34 | PyErr_SetString(PyExc_ImportError, buf);\r | |
35 | return NULL;\r | |
36 | }\r | |
37 | PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);\r | |
38 | if (Py_VerboseFlag)\r | |
39 | printf("get_symbol_address %s\n", funcname);\r | |
40 | if (get_symbol_address(lib, funcname, -1, &p) < 0) {\r | |
41 | p = NULL;\r | |
42 | if (Py_VerboseFlag)\r | |
43 | perror(funcname);\r | |
44 | }\r | |
45 | \r | |
46 | return (dl_funcptr) p;\r | |
47 | }\r |