PageRenderTime 223ms CodeModel.GetById 101ms app.highlight 4ms RepoModel.GetById 117ms app.codeStats 0ms

/Python/dynload_os2.c

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