47 lines · 1.0 KB · C
RawDownload
 /* Support for dynamic loading of extension modules */ #include <atheos/image.h>#include <errno.h> #include "Python.h"#include "importdl.h"  const struct filedescr _PyImport_DynLoadFiletab[] = {	{".so", "rb", C_EXTENSION},	{"module.so", "rb", C_EXTENSION},	{0, 0}}; dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,				    const char *pathname, FILE *fp){	void *p;	int lib;	char funcname[258]; 	if (Py_VerboseFlag)		printf("load_library %s\n", pathname); 	lib = load_library(pathname, 0);	if (lib < 0) {		char buf[512];		if (Py_VerboseFlag)			perror(pathname);		PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s: %.200s",			      pathname, strerror(errno));		PyErr_SetString(PyExc_ImportError, buf);		return NULL;	}	PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);	if (Py_VerboseFlag)		printf("get_symbol_address %s\n", funcname);	if (get_symbol_address(lib, funcname, -1, &p) < 0) {		p = NULL;		if (Py_VerboseFlag)			perror(funcname);	} 	return (dl_funcptr) p;}