symbian-qemu-0.9.1-12/python-2.6.1/Python/dynload_hpux.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 
       
     2 /* Support for dynamic loading of extension modules */
       
     3 
       
     4 #include "dl.h"
       
     5 #include <errno.h>
       
     6 
       
     7 #include "Python.h"
       
     8 #include "importdl.h"
       
     9 
       
    10 #if defined(__hp9000s300)
       
    11 #define FUNCNAME_PATTERN "_init%.200s"
       
    12 #else
       
    13 #define FUNCNAME_PATTERN "init%.200s"
       
    14 #endif
       
    15 
       
    16 const struct filedescr _PyImport_DynLoadFiletab[] = {
       
    17 	{SHLIB_EXT, "rb", C_EXTENSION},
       
    18 	{"module"SHLIB_EXT, "rb", C_EXTENSION},
       
    19 	{0, 0}
       
    20 };
       
    21 
       
    22 dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
       
    23 				    const char *pathname, FILE *fp)
       
    24 {
       
    25 	dl_funcptr p;
       
    26 	shl_t lib;
       
    27 	int flags;
       
    28 	char funcname[258];
       
    29 
       
    30 	flags = BIND_FIRST | BIND_DEFERRED;
       
    31 	if (Py_VerboseFlag) {
       
    32 		flags = BIND_FIRST | BIND_IMMEDIATE |
       
    33 			BIND_NONFATAL | BIND_VERBOSE;
       
    34 		printf("shl_load %s\n",pathname);
       
    35 	}
       
    36 	lib = shl_load(pathname, flags, 0);
       
    37 	/* XXX Chuck Blake once wrote that 0 should be BIND_NOSTART? */
       
    38 	if (lib == NULL) {
       
    39 		char buf[256];
       
    40 		if (Py_VerboseFlag)
       
    41 			perror(pathname);
       
    42 		PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s",
       
    43 			      pathname);
       
    44 		PyErr_SetString(PyExc_ImportError, buf);
       
    45 		return NULL;
       
    46 	}
       
    47 	PyOS_snprintf(funcname, sizeof(funcname), FUNCNAME_PATTERN, shortname);
       
    48 	if (Py_VerboseFlag)
       
    49 		printf("shl_findsym %s\n", funcname);
       
    50 	if (shl_findsym(&lib, funcname, TYPE_UNDEFINED, (void *) &p) == -1) {
       
    51 		shl_unload(lib);
       
    52 		p = NULL;
       
    53 	}
       
    54 	if (p == NULL && Py_VerboseFlag)
       
    55 		perror(funcname);
       
    56 
       
    57 	return p;
       
    58 }