Commit a762f4ca authored by Jack Jansen's avatar Jack Jansen

Got rid of an extra level of {} and funny formatting that was still

there because of the NeXT history.
parent 3b388ec8
...@@ -36,83 +36,81 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname, ...@@ -36,83 +36,81 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
{ {
dl_funcptr p = NULL; dl_funcptr p = NULL;
char funcname[258]; char funcname[258];
NSObjectFileImageReturnCode rc;
NSObjectFileImage image;
NSModule newModule;
NSSymbol theSym;
const char *errString;
char errBuf[512];
PyOS_snprintf(funcname, sizeof(funcname), "_init%.200s", shortname); PyOS_snprintf(funcname, sizeof(funcname), "_init%.200s", shortname);
{
NSObjectFileImageReturnCode rc;
NSObjectFileImage image;
NSModule newModule;
NSSymbol theSym;
const char *errString;
char errBuf[512];
#ifdef USE_DYLD_GLOBAL_NAMESPACE #ifdef USE_DYLD_GLOBAL_NAMESPACE
if (NSIsSymbolNameDefined(funcname)) { if (NSIsSymbolNameDefined(funcname)) {
theSym = NSLookupAndBindSymbol(funcname); theSym = NSLookupAndBindSymbol(funcname);
p = (dl_funcptr)NSAddressOfSymbol(theSym); p = (dl_funcptr)NSAddressOfSymbol(theSym);
return p; return p;
} }
#endif #endif
rc = NSCreateObjectFileImageFromFile(pathname, &image); rc = NSCreateObjectFileImageFromFile(pathname, &image);
switch(rc) { switch(rc) {
default: default:
case NSObjectFileImageFailure: case NSObjectFileImageFailure:
case NSObjectFileImageFormat: case NSObjectFileImageFormat:
/* for these a message is printed on stderr by dyld */ /* for these a message is printed on stderr by dyld */
errString = "Can't create object file image"; errString = "Can't create object file image";
break; break;
case NSObjectFileImageSuccess: case NSObjectFileImageSuccess:
errString = NULL; errString = NULL;
break; break;
case NSObjectFileImageInappropriateFile: case NSObjectFileImageInappropriateFile:
errString = "Inappropriate file type for dynamic loading"; errString = "Inappropriate file type for dynamic loading";
break; break;
case NSObjectFileImageArch: case NSObjectFileImageArch:
errString = "Wrong CPU type in object file"; errString = "Wrong CPU type in object file";
break; break;
case NSObjectFileImageAccess: case NSObjectFileImageAccess:
errString = "Can't read object file (no access)"; errString = "Can't read object file (no access)";
break; break;
}
if (errString == NULL) {
newModule = NSLinkModule(image, pathname, LINKOPTIONS);
if (newModule == NULL) {
int errNo;
char *fileName, *moreErrorStr;
NSLinkEditErrors c;
NSLinkEditError( &c, &errNo, &fileName, &moreErrorStr );
PyOS_snprintf(errBuf, 512, "Failure linking new module: %s: %s",
fileName, moreErrorStr);
errString = errBuf;
} }
if (errString == NULL) { }
newModule = NSLinkModule(image, pathname, LINKOPTIONS); if (errString != NULL) {
if (newModule == NULL) { PyErr_SetString(PyExc_ImportError, errString);
int errNo; return NULL;
char *fileName, *moreErrorStr; }
NSLinkEditErrors c;
NSLinkEditError( &c, &errNo, &fileName, &moreErrorStr );
PyOS_snprintf(errBuf, 512, "Failure linking new module: %s: %s",
fileName, moreErrorStr);
errString = errBuf;
}
}
if (errString != NULL) {
PyErr_SetString(PyExc_ImportError, errString);
return NULL;
}
#ifdef USE_DYLD_GLOBAL_NAMESPACE #ifdef USE_DYLD_GLOBAL_NAMESPACE
if (!NSIsSymbolNameDefined(funcname)) { if (!NSIsSymbolNameDefined(funcname)) {
/* UnlinkModule() isn't implemented in current versions, but calling it does no harm */ /* UnlinkModule() isn't implemented in current versions, but calling it does no harm */
NSUnLinkModule(newModule, FALSE); NSUnLinkModule(newModule, FALSE);
PyErr_Format(PyExc_ImportError, PyErr_Format(PyExc_ImportError,
"Loaded module does not contain symbol %.200s", "Loaded module does not contain symbol %.200s",
funcname); funcname);
return NULL; return NULL;
} }
theSym = NSLookupAndBindSymbol(funcname); theSym = NSLookupAndBindSymbol(funcname);
#else #else
theSym = NSLookupSymbolInModule(newModule, funcname); theSym = NSLookupSymbolInModule(newModule, funcname);
if ( theSym == NULL ) { if ( theSym == NULL ) {
NSUnLinkModule(newModule, FALSE); NSUnLinkModule(newModule, FALSE);
PyErr_Format(PyExc_ImportError, PyErr_Format(PyExc_ImportError,
"Loaded module does not contain symbol %.200s", "Loaded module does not contain symbol %.200s",
funcname); funcname);
return NULL; return NULL;
}
#endif
p = (dl_funcptr)NSAddressOfSymbol(theSym);
} }
#endif
p = (dl_funcptr)NSAddressOfSymbol(theSym);
}
return p; return p;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment