]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | \r |
2 | /* Support for dynamic loading of extension modules */\r | |
3 | \r | |
4 | #define INCL_DOSERRORS\r | |
5 | #define INCL_DOSMODULEMGR\r | |
6 | #include <os2.h>\r | |
7 | \r | |
8 | #include "Python.h"\r | |
9 | #include "importdl.h"\r | |
10 | \r | |
11 | \r | |
12 | const struct filedescr _PyImport_DynLoadFiletab[] = {\r | |
13 | {".pyd", "rb", C_EXTENSION},\r | |
14 | {".dll", "rb", C_EXTENSION},\r | |
15 | {0, 0}\r | |
16 | };\r | |
17 | \r | |
18 | dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,\r | |
19 | const char *pathname, FILE *fp)\r | |
20 | {\r | |
21 | dl_funcptr p;\r | |
22 | APIRET rc;\r | |
23 | HMODULE hDLL;\r | |
24 | char failreason[256];\r | |
25 | char funcname[258];\r | |
26 | \r | |
27 | rc = DosLoadModule(failreason,\r | |
28 | sizeof(failreason),\r | |
29 | pathname,\r | |
30 | &hDLL);\r | |
31 | \r | |
32 | if (rc != NO_ERROR) {\r | |
33 | char errBuf[256];\r | |
34 | PyOS_snprintf(errBuf, sizeof(errBuf),\r | |
35 | "DLL load failed, rc = %d: %.200s",\r | |
36 | rc, failreason);\r | |
37 | PyErr_SetString(PyExc_ImportError, errBuf);\r | |
38 | return NULL;\r | |
39 | }\r | |
40 | \r | |
41 | PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);\r | |
42 | rc = DosQueryProcAddr(hDLL, 0L, funcname, &p);\r | |
43 | if (rc != NO_ERROR)\r | |
44 | p = NULL; /* Signify Failure to Acquire Entrypoint */\r | |
45 | return p;\r | |
46 | }\r |