void *ioLoadModule(char *pluginName)
Parms:
pluginName character string, ascii
return:
void* some magic handle we will be passed later that defines this module
From: Interpreter
Why:
to load a module
Responsibility:
In order to use external plugins, versus internal plugins we must load them from some storage system. This interface works by giving you the name of the plugin "foobar" you in turn locate the "foobar" plugin somewhere according to what is acceptable on your platform and return a handle to it.
The plugin might be beside the VM, in a plugins folder by the VM, in a public library area, etc....
MacIntosh
os-9/OSXCarbon
This started life as a copy of the unix loader, but was changed to reduce the amount of loading attempts that go on because it was noticed that if you tried to load an internal plugin then why over 88 calls were made to load the plugin from 88 places or combinations of names before deciding it couldn't be loaded and to look for it internally.
The SqueakPluginsBuiltInOrLocalOnly info.plist setting when set to true makes the lookup logic only consider unix libraries or os-x bundles in the ./Plugins folder or the application (read VM) Resources folder, or as a foo.framework in the /System/Library/Frameworks/.
Otherwise we take the foo name and look for foo foolib foo.so foo.dylib foo.framework. PLus of course foo can be a unix executable, a library, a bundle, or a framework.
Cocoa:
Rewritten unix code. If you are here looking to figure out the search path, you should look at the code instead
iPhone
*Loading external plugins is not permitted according to the iPhone license*
Unix
we take the foo name and look for foo foolib foo.so foo.dylib foo.framework
Windows
Much simplier, look for foo.dll or foo32.dll in the image or VM path.
BUGS