|  | 
 | /* Support for dynamic loading of extension modules */ | 
 |  | 
 | #define  INCL_DOSERRORS | 
 | #define  INCL_DOSMODULEMGR | 
 | #include <os2.h> | 
 |  | 
 | #include "Python.h" | 
 | #include "importdl.h" | 
 |  | 
 |  | 
 | const struct filedescr _PyImport_DynLoadFiletab[] = { | 
 | 	{".pyd", "rb", C_EXTENSION}, | 
 | 	{".dll", "rb", C_EXTENSION}, | 
 | 	{0, 0} | 
 | }; | 
 |  | 
 | dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname, | 
 | 				    const char *pathname, FILE *fp) | 
 | { | 
 | 	dl_funcptr p; | 
 | 	APIRET  rc; | 
 | 	HMODULE hDLL; | 
 | 	char failreason[256]; | 
 | 	char funcname[258]; | 
 |  | 
 | 	rc = DosLoadModule(failreason, | 
 | 			   sizeof(failreason), | 
 | 			   pathname, | 
 | 			   &hDLL); | 
 |  | 
 | 	if (rc != NO_ERROR) { | 
 | 		char errBuf[256]; | 
 | 		PyOS_snprintf(errBuf, sizeof(errBuf), | 
 | 			      "DLL load failed, rc = %d: %.200s", | 
 | 			      rc, failreason); | 
 | 		PyErr_SetString(PyExc_ImportError, errBuf); | 
 | 		return NULL; | 
 | 	} | 
 |  | 
 | 	PyOS_snprintf(funcname, sizeof(funcname), "PyInit_%.200s", shortname); | 
 | 	rc = DosQueryProcAddr(hDLL, 0L, funcname, &p); | 
 | 	if (rc != NO_ERROR) | 
 | 		p = NULL; /* Signify Failure to Acquire Entrypoint */ | 
 | 	return p; | 
 | } |