int main(NPNetscapeFuncs* nsTable, NPPluginFuncs* pluginFuncs, NPP_ShutdownUPP* unloadUpp) { int err=noErr; int navMinorVers = nsTable->version & 0xFF; gRememberOldgNetscapeFuncsForSafariIssue = *nsTable; gWhere = LoadLibViaPath("NPSqueak.bundle"); if (gWhere == nil) return -1; GetMain = (void *) ioFindExternalFunctionIn("npmain",(int) gWhere); if (GetMain == NULL) GetMain = (void *) ioFindExternalFunctionIn("main",(int) gWhere); err = GetMain(nsTable, pluginFuncs, unloadUpp); // // Set up the plugin function table that Netscape will use to // call us. Netscape needs to know about our version and size // and have a UniversalProcPointer for every function we implement. // pluginFuncs->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; pluginFuncs->size = sizeof(NPPluginFuncs); pluginFuncs->newp = NewNPP_NewProc(Private_New); pluginFuncs->destroy = NewNPP_DestroyProc(Private_Destroy); pluginFuncs->setwindow = NewNPP_SetWindowProc(Private_SetWindow); pluginFuncs->newstream = NewNPP_NewStreamProc(Private_NewStream); pluginFuncs->destroystream = NewNPP_DestroyStreamProc(Private_DestroyStream); pluginFuncs->asfile = NewNPP_StreamAsFileProc(Private_StreamAsFile); pluginFuncs->writeready = NewNPP_WriteReadyProc(Private_WriteReady); pluginFuncs->write = NewNPP_WriteProc(Private_Write); pluginFuncs->print = NewNPP_PrintProc(Private_Print); pluginFuncs->event = NewNPP_HandleEventProc(Private_HandleEvent); if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) { pluginFuncs->urlnotify = NewNPP_URLNotifyProc(Private_URLNotify); } if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) { pluginFuncs->javaClass = (JRIGlobalRef) Private_GetJavaClass(); } *unloadUpp = NewNPP_ShutdownProc(Private_Shutdown); return err; }
NPError main(NPNetscapeFuncs* aNPNFuncs, NPPluginFuncs* aNPPFuncs, NPP_ShutdownUPP* aUnloadUpp) { NPError rv = NPERR_NO_ERROR; if (!aUnloadUpp) rv = NPERR_INVALID_FUNCTABLE_ERROR; if (rv == NPERR_NO_ERROR) rv = fillNetscapeFunctionTable(aNPNFuncs); if (rv == NPERR_NO_ERROR) { // defer static constructors until the global functions are initialized. __InitCode__(); rv = fillPluginFunctionTable(aNPPFuncs); } *aUnloadUpp = NewNPP_ShutdownProc(Private_Shutdown); gResFile = CurResFile(); rv = Private_Initialize(); return rv; }