PageRenderTime 11ms CodeModel.GetById 1ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/Python/dynload_atheos.c

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