summaryrefslogtreecommitdiffstats
path: root/Python/dynload_aix.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/dynload_aix.c')
-rw-r--r--Python/dynload_aix.c37
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;