diff options
Diffstat (limited to 'Python/dynload_aix.c')
-rw-r--r-- | Python/dynload_aix.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/Python/dynload_aix.c b/Python/dynload_aix.c index 684f10a..149990d 100644 --- a/Python/dynload_aix.c +++ b/Python/dynload_aix.c @@ -4,6 +4,7 @@ #include "Python.h" #include "importdl.h" +#include <ctype.h> /* for isdigit() */ #include <errno.h> /* for global errno */ #include <string.h> /* for strerror() */ #include <stdlib.h> /* for malloc(), free() */ @@ -25,16 +26,20 @@ typedef struct Module { void *entry; } Module, *ModulePtr; -const char *_PyImport_DynLoadFiletab[] = {".so", NULL}; +const struct filedescr _PyImport_DynLoadFiletab[] = { + {".so", "rb", C_EXTENSION}, + {"module.so", "rb", C_EXTENSION}, + {0, 0} +}; static int aix_getoldmodules(void **modlistptr) { - ModulePtr modptr, prevmodptr; - struct ld_info *ldiptr; - char *ldibuf; - int errflag, bufsize = 1024; - unsigned int offset; + register ModulePtr modptr, prevmodptr; + register struct ld_info *ldiptr; + register char *ldibuf; + register int errflag, bufsize = 1024; + register unsigned int offset; char *progname = Py_GetProgramName(); /* @@ -104,9 +109,7 @@ aix_loaderror(const char *pathname) { char *message[1024], errbuf[1024]; - PyObject *pathname_ob = NULL; - PyObject *errbuf_ob = NULL; - int i,j; + register int i,j; struct errtab { int errNo; @@ -126,6 +129,7 @@ aix_loaderror(const char *pathname) {L_ERROR_ERRNO, NULL} }; +#define LOAD_ERRTAB_LEN (sizeof(load_errtab)/sizeof(load_errtab[0])) #define ERRBUF_APPEND(s) strncat(errbuf, s, sizeof(errbuf)-strlen(errbuf)-1) PyOS_snprintf(errbuf, sizeof(errbuf), "from module %.200s ", pathname); @@ -136,27 +140,22 @@ aix_loaderror(const char *pathname) } for(i = 0; message[i] && *message[i]; i++) { int nerr = atoi(message[i]); - for (j=0; j < Py_ARRAY_LENGTH(load_errtab); j++) { + for (j=0; j<LOAD_ERRTAB_LEN ; j++) { if (nerr == load_errtab[j].errNo && load_errtab[j].errstr) ERRBUF_APPEND(load_errtab[j].errstr); } - while (Py_ISDIGIT(*message[i])) message[i]++ ; + while (isdigit(Py_CHARMASK(*message[i]))) message[i]++ ; ERRBUF_APPEND(message[i]); ERRBUF_APPEND("\n"); } errbuf[strlen(errbuf)-1] = '\0'; /* trim off last newline */ - pathname_ob = PyUnicode_FromString(pathname); - errbuf_ob = PyUnicode_FromString(errbuf); - PyErr_SetImportError(errbuf_ob, NULL, pathname); - Py_DECREF(pathname_ob); - Py_DECREF(errbuf_ob); + PyErr_SetString(PyExc_ImportError, errbuf); return; } -dl_funcptr _PyImport_FindSharedFuncptr(const char *prefix, - const char *shortname, - const char *pathname, FILE *fp) +dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname, + const char *pathname, FILE *fp) { dl_funcptr p; |