summaryrefslogtreecommitdiffstats
path: root/Python/dynload_mac.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/dynload_mac.c')
-rw-r--r--Python/dynload_mac.c113
1 files changed, 0 insertions, 113 deletions
diff --git a/Python/dynload_mac.c b/Python/dynload_mac.c
deleted file mode 100644
index 6b50b16..0000000
--- a/Python/dynload_mac.c
+++ /dev/null
@@ -1,113 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "Python.h"
-#include "importdl.h"
-
-#include <Aliases.h>
-#include <CodeFragments.h>
-#ifdef USE_GUSI1
-#include "TFileSpec.h" /* for Path2FSSpec() */
-#endif
-#include <Files.h>
-#include <TextUtils.h>
-#include "macdefs.h"
-#include "macglue.h"
-
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
- {".slb", "rb", C_EXTENSION},
- {".carbon.slb", "rb", C_EXTENSION},
- {0, 0}
-};
-
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
- const char *pathname, FILE *fp)
-{
- dl_funcptr p;
- char funcname[258];
-
- /*
- ** Dynamic loading of CFM shared libraries on the Mac. The
- ** code has become more convoluted than it was, because we
- ** want to be able to put multiple modules in a single
- ** file. For this reason, we have to determine the fragment
- ** name, and we cannot use the library entry point but we have
- ** to locate the correct init routine "by hand".
- */
- FSSpec libspec;
- CFragConnectionID connID;
- Ptr mainAddr;
- Str255 errMessage;
- OSErr err;
-#ifndef USE_GUSI1
- Boolean isfolder, didsomething;
-#endif
- char buf[512];
- Str63 fragname;
- Ptr symAddr;
- CFragSymbolClass class;
-
- /* First resolve any aliases to find the real file */
-#ifdef USE_GUSI1
- err = Path2FSSpec(pathname, &libspec);
-#else
- c2pstrcpy((unsigned char *)buf, pathname);
- (void)FSMakeFSSpec(0, 0, (unsigned char *)buf, &libspec);
- err = ResolveAliasFile(&libspec, 1, &isfolder, &didsomething);
-#endif
- if ( err ) {
- PyOS_snprintf(buf, sizeof(buf),
- "%.200s: %.200s", pathname, PyMac_StrError(err));
- PyErr_SetString(PyExc_ImportError, buf);
- return NULL;
- }
- /* Next, determine the fragment name,
- by stripping '.slb' and 'module' */
- memcpy(fragname+1, libspec.name+1, libspec.name[0]);
- fragname[0] = libspec.name[0];
- if( strncmp((char *)(fragname+1+fragname[0]-4),
- ".slb", 4) == 0 )
- fragname[0] -= 4;
- if ( strncmp((char *)(fragname+1+fragname[0]-6),
- "module", 6) == 0 )
- fragname[0] -= 6;
- /* Load the fragment
- (or return the connID if it is already loaded */
- err = GetDiskFragment(&libspec, 0, 0, fragname,
- kLoadCFrag, &connID, &mainAddr,
- errMessage);
- if ( err == cfragImportTooOldErr || err == cfragImportTooNewErr ) {
- /*
- ** Special-case code: if PythonCore is too old or too new this means
- ** the dynamic module was meant for a different Python.
- */
- if (errMessage[0] == 10 && strncmp((char *)errMessage+1, "PythonCore", 10) == 0 ) {
- PyOS_snprintf(buf, sizeof(buf),
- "Dynamic module was built for %s version of MacPython",
- (err == cfragImportTooOldErr ? "a newer" : "an older"));
- PyErr_SetString(PyExc_ImportError, buf);
- return NULL;
- }
- }
- if ( err ) {
- PyOS_snprintf(buf, sizeof(buf), "%.*s: %.200s",
- errMessage[0], errMessage+1,
- PyMac_StrError(err));
- PyErr_SetString(PyExc_ImportError, buf);
- return NULL;
- }
- /* Locate the address of the correct init function */
- PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
- err = FindSymbol(connID, Pstring(funcname), &symAddr, &class);
- if ( err ) {
- PyOS_snprintf(buf, sizeof(buf), "%s: %.200s",
- funcname, PyMac_StrError(err));
- PyErr_SetString(PyExc_ImportError, buf);
- return NULL;
- }
- p = (dl_funcptr)symAddr;
-
- return p;
-}