sys7.1-doc-wip/OS/PPC/PPCLoader.c

134 lines
5.1 KiB
C

/*
Hacks to match MacOS (most recent first):
<Sys7.1> 8/3/92 Elliot make this change
9/2/94 SuperMario ROM source dump (header preserved below)
*/
/*
File: PPCLoader.c
Contains: Code executed at patch install time.
Copyright: © 1989-1993 by Apple Computer, Inc., all rights reserved.
Change History (most recent first):
<SM6> 3/9/93 PN Remove ReQueueInformPB,Insert, Push,InitQueue, TraverseQueue
which is no longer used
<25> 4/14/92 BBM <JSM>: Remove unfinished PPC code that is under the contitional
“TheFutute”, and remove the conditional “CubeE” since that is
reality. Remove conditionals, since all they do is confuse.
<24> 10/4/91 JSM Change PsychoticFarmerOrLater conditionals to TheFuture.
<23> 9/29/91 DTY Conditionalize <21> and <22> out of CubeE.
<22> 6/10/91 EMT Optimize code for size
<21> 6/4/91 EMT Roll in StoreAndForward Revisions
<20> 1/22/91 EMT VC: Move function initUserGroupFile to PPCInit.c.
<19> 10/30/90 EMT Modify the loader for the INITVERSION, to not kill the existing
PPCToolBox for now, pre -B2 toolboxes choke bad when an unknown
selector is given
<18> 10/24/90 EMT Add special case for init version to have the system version
commit suicide, before superceeding
<17> 10/11/90 EMT Add conditionals around debug code
<16> 9/14/90 VC Changed the typecast to "random" to an unsigned long.
(nextUserRef is now an unsigned long).
<14+> 9/4/90 EMT Roll in Eric's changes
<14> 8/10/90 S Made PPCToolBox name as resource.
<13> 7/10/90 dba get rid of warnings for C
<12> 6/28/90 S Improve dynamic allocation of ports and sessions.
<11> 6/12/90 JSM Make PPC a linked patch: can call Folder Mgr again, don't
SetTrapAddress or install Gestalt and Shutdown routines here.
<10> 6/4/90 VC Removed the call of initUserGroupFile. Only set the refNum to
0. This will cause the B*Tree file called at the PPCInit time.
<9> 6/1/90 VC Added the FindFolder call in opening the User & Group file.
<8> 4/25/90 S To Measure memory consumption.
<7> 4/18/90 JSM No need to unlock configuration resource before releasing it,
miscellaneous other code size reductions.
<6> 4/17/90 JSM Change initUserGroupFile interface to remove unused fields in
BTFileInfo, #include String.h for definition of memset function,
remove some local variables and #ifdef others in ppcLoader.
<5> 4/11/90 S To Fix Gestalt Function.
<4> 4/10/90 S Gestalt and PPC Global Check Box Support.
<3> 3/21/90 S To Get the Configuration from a resource.
<1.4> 10/30/89 csd Remove the call of "SysEnvirons".
<1.3> 10/12/89 CCH Fixed header
<•1.2> 10/12/89 CVC Added Access control to the PPC toolbox
<1.1> 9/25/89 ss No Change from previous version.
<1.0> 9/18/89 CVC Adding PPC toolbox for the first time.
*/
#ifndef __PPCCOMMON__
#include "PPCCommon.h"
#endif
#ifndef __GESTALTEQU__
#include <GestaltEqu.h>
#endif
#include <ShutDown.h>
#include <Resources.h> // for mapTrue
#include <String.h> // for memset definition
/*---------------------------------------------------------------------------------------------------
Prototypes of functions used only in this file.
---------------------------------------------------------------------------------------------------*/
STATIC void initAuth (PPCGlobalParamsPtr pGlobal);
/*----------------------------------------------------------------------------------------
ppcLoader Performs first stage of PPCToolbox initialization. We get our globals and
initialize them.
----------------------------------------------------------------------------------------*/
void ppcLoader (void)
{
Handle configHdl;
PPCGlobalParamsPtr globPtr; // <23>
PPCConfigInfo *configPtr;
#ifdef INITVERSION // Kill my brother, and take his place.
{
ProcPtr oldFunc;
PPCRemove();
ReplaceGestalt(gestaltPPCToolboxAttr,(ProcPtr)PPCGESTALTFUNCTION,&oldFunc);
}
#endif
if (globPtr = (PPCGlobalParamsPtr)setupGlobal(sizeof(PPCGlobalParams)))
{
memset(globPtr,0,sizeof(PPCGlobalParams)); // Clear our globals.
if (( configHdl = GetResource ( 'ppci', -16409)) == NULL)
return;
configPtr = (PPCConfigInfo *)(*configHdl);
configPtr->freeLocSessMin <<=1;
configPtr->freeLocSessMax <<=1;
BlockMove((Ptr)configPtr,(Ptr)&globPtr->configData,sizeof(PPCConfigInfo));
ReleaseResource(configHdl);
// This will be set in PPCInit by checking global flag
globPtr->inited = false; // <23>
globPtr->allowIncommingRequests = false; // <23>
Replenish(globPtr); // Get Ports and Session Tables.
initAuth(globPtr); // <23>
}
#ifdef DEBUG
else
Debugger(); // should not happen
#endif
}
/************************************************************************************
* initAuth
************************************************************************************/
STATIC void initAuth (PPCGlobalParamsPtr pGlobal)
{
long randnum;
GetDateTime((unsigned long *)&randnum);
if ((pGlobal->nextUserRef = (unsigned long)randnum) == 0)
++pGlobal->nextUserRef;
}