diff options
author | Guido van Rossum <guido@python.org> | 1999-12-20 21:18:49 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1999-12-20 21:18:49 +0000 |
commit | 625ce02d8bec312251a335136635871a8613a703 (patch) | |
tree | ecc1623543343388896dc0d656531ae526da0f74 /Python/dynload_os2.c | |
parent | f9d0cb0b8dc5c4ef58304395bf54b53cf3c60370 (diff) | |
download | cpython-625ce02d8bec312251a335136635871a8613a703.tar.gz |
The old platform-specific contents of importdl.c, broken down into one
file per platform (really: per style of Dl API; e.g. all platforms
using dlopen() are grouped together in dynload_shlib.c.).
This is part of a set of patches by Greg Stein.
Diffstat (limited to 'Python/dynload_os2.c')
-rw-r--r-- | Python/dynload_os2.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/Python/dynload_os2.c b/Python/dynload_os2.c new file mode 100644 index 0000000000..6090c3300b --- /dev/null +++ b/Python/dynload_os2.c @@ -0,0 +1,74 @@ +/*********************************************************** +Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, +The Netherlands. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Stichting Mathematisch +Centrum or CWI or Corporation for National Research Initiatives or +CNRI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +While CWI is the initial source for this software, a modified version +is made available by the Corporation for National Research Initiatives +(CNRI) at the Internet address ftp://ftp.python.org. + +STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH +CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* Support for dynamic loading of extension modules */ + +#define INCL_DOSERRORS +#define INCL_DOSMODULEMGR +#include <os2.h> + +#include "Python.h" +#include "importdl.h" + + +const struct filedescr _PyImport_DynLoadFiletab[] = { + {".pyd", "rb", C_EXTENSION}, + {".dll", "rb", C_EXTENSION}, + {0, 0} +}; + +dl_funcptr _PyImport_GetDynLoadFunc(const char *name, const char *funcname, + const char *pathname, FILE *fp) +{ + dl_funcptr p; + APIRET rc; + HMODULE hDLL; + char failreason[256]; + + rc = DosLoadModule(failreason, + sizeof(failreason), + pathname, + &hDLL); + + if (rc != NO_ERROR) { + char errBuf[256]; + sprintf(errBuf, + "DLL load failed, rc = %d: %s", + rc, failreason); + PyErr_SetString(PyExc_ImportError, errBuf); + return NULL; + } + + rc = DosQueryProcAddr(hDLL, 0L, funcname, &p); + if (rc != NO_ERROR) + p = NULL; /* Signify Failure to Acquire Entrypoint */ + return p; +} |