view Python/dynload_os2.c @ 65221:faa4e22aaba7 2.7

Blocked revisions 85322,85326 via svnmerge ........ r85322 | r.david.murray | 2010-10-08 11:55:28 -0400 (Fri, 08 Oct 2010) | 8 lines #4661: add bytes parsing and generation to email (email version bump to 5.1.0) The work on this is not 100% complete, but everything is present to allow real-world testing of the code. The only remaining major todo item is to (hopefully!) enhance the handling of non-ASCII bytes in headers converted to unicode by RFC2047 encoding them rather than replacing them with '?'s. ........ r85326 | r.david.murray | 2010-10-08 17:37:39 -0400 (Fri, 08 Oct 2010) | 2 lines What's new entry for email 5.1. ........
author R. David Murray <rdmurray@bitdance.com>
date Tue, 12 Oct 2010 14:16:46 +0000
parents fd25030223b0
children
line wrap: on
line source


/* 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 *fqname, const char *shortname,
                                    const char *pathname, FILE *fp)
{
    dl_funcptr p;
    APIRET  rc;
    HMODULE hDLL;
    char failreason[256];
    char funcname[258];

    rc = DosLoadModule(failreason,
                       sizeof(failreason),
                       pathname,
                       &hDLL);

    if (rc != NO_ERROR) {
        char errBuf[256];
        PyOS_snprintf(errBuf, sizeof(errBuf),
                      "DLL load failed, rc = %d: %.200s",
                      rc, failreason);
        PyErr_SetString(PyExc_ImportError, errBuf);
        return NULL;
    }

    PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
    rc = DosQueryProcAddr(hDLL, 0L, funcname, &p);
    if (rc != NO_ERROR)
        p = NULL; /* Signify Failure to Acquire Entrypoint */
    return p;
}