/* File: CommToolboxPriv.h Contains: Internal interface to the CommResource Mgr and the CommToolbox Utilities Written by: Byron Han, Jerry Godes Copyright: © 1988-1991 by Apple Computer, Inc., all rights reserved. Change History (most recent first): <33> 8/27/91 JSM Cleanup header, remove Pre70 stuff. <32> 8/20/91 BH move CRMReserveRF into public interfaces <31> 8/9/91 JNG Moved CRMReleaseRF into main interfaces <30> 6/25/91 JNG Move CRMIsDriverOpen into CommResources.h <29> 6/18/91 BH rename choose messages <28> 1/9/91 kaz Changing ModemStringType and PrinterStringType to STR# to include driver names. Changing ChooseIDStrID from -32512 to -32510. <27> 12/21/90 JL changed constStrxxParameter to ConstStrxxxParam to match change in Types.h <26> 12/13/90 JNG Use the System Icon LDEF <25> 11/4/90 dba miscellaneous cleanup, including using (void) instead of (), more care about const, including use of constStr255Parameter, getting rid of extraneous parameter names, getting rid of stuff on lines after #endif (not acceptable for ANSI standard), etc. <24> 11/1/90 fjs add defines for the color icons associated with the serial ports <23> 10/5/90 kaz Removing _CTBKeystrokeFilter references. <22> 10/2/90 kaz Adding CRMAppRec to keep track of the processes that init the Term, FT, or Conn Mgrs; renamed reserved to appList to CTBBlock; added bitfields for initialized mgrs; added prototypes for handling the app list; fixed spelling of some messages. <21> 9/10/90 gbm donŐt you just hate it when boneheads check in files that they obviously havenŐt compiled... I do :) <20> 9/10/90 JNG Have ResFileRec contain canonical form of file name; Add in new resources for choose <19> 8/23/90 kaz Added GetMemErr(), GetResErr() macros. <18> 8/15/90 kaz Added PlaceWindow() prototype <17> 8/6/90 kaz Renaming GoodDrawOutlineButton(); added DoGrayOutline(). <16> 5/24/90 kaz Combined GetIndfinf & GetIndflst; added Getflst() <15> 5/22/90 kaz Updated FontInfoRec to have a textMode; Merged FontInfoRec & TextState; renamed Parse_finf and Parse_flst; added routines to Get & Set TextState <14> 4/11/90 kaz Added CmdPeriod Prototype <13> 3/22/90 BBH moved getglobals macro here from CommResourceMgr.c <12> 3/20/90 kaz Merging in changes from 1.0 - struct for accessing QD globals - new routines in CommToolboxUtilityRoutines <11> 3/18/90 BBH keep IconPrivateBlock's unused field for Tools 1.0 compatibility. Sorry for the flip flops <10> 3/18/90 BBH remove change to IconPrivateBlock <9> 3/18/90 BBH returned hasSM (renamed unused) to IconPrivateBlock since the tools assume that the procID is the second word in the IconPrivateBlock data structure (this uncovered the bug in ReaLDEF!) <8> 3/16/90 BBH added CTB_VersionType <7> 3/16/90 BBH added Menus.h to include list to support GetMenuItem routine in CommToolboxUtilityRoutines.c <6> 3/16/90 BBH added FontInfoRec, parse_finf, parse_flst, GoodDrawOutlineButton, FindMenuItem <5> 3/15/90 BBH add proper include in case they were not included before (Memory and Resources and Dialogs) <4+> 3/15/90 BBH add OSUtils to include list, fix typos <4> 3/15/90 BBH add proper include in case they were not included before (Memory and Resources and Dialogs) <3> 3/14/90 BBH added min system heap resource (temporary until ptch's go in) <2> 3/14/90 BBH Merged in CommResourcePriv.h, CTBPrivate.h, and CTBCoreIntf.h <1> 3/14/90 BBH first checked in */ #ifndef __CommToolboxPriv__ #define __CommToolboxPriv__ #ifndef __RESOURCES__ #include #endif #ifndef __MEMORY__ #include #endif #ifndef __DIALOGS__ #include #endif #ifndef __MENUS__ #include #endif #ifndef __OSUTILS__ #include #endif #ifndef __FILES__ #include #endif #ifndef __PROCESSES__ #include #endif // the resource types and resource ID's to be used by the CommToolbox /* the following 7 resources are temporary to be merged into ptch code */ #define CTB_InstallType 'INIT' #define CTB_InstallID 29 #define CTB_DispatcherType 'proc' /* this used to be ctbd -32512 */ #define CTB_DispatcherID -32509 #define CTB_GestaltProcType 'proc' /* this used to be ctbg -32510 */ #define CTB_GestaltProcID -32508 #define CTB_PatchType 'ctbp' /* this used to be type ctb¶ */ #define CTB_Patch1 -32512 /* allocate low memory */ #define CTB_Patch2 -32511 /* register builtin ports */ #define CTB_Patch3 -32510 /* perform gestalt installation */ /* end temporary */ #define CTB_ConnectionMgrType 'cmtb' #define CTB_FileTransferMgrType 'cmtb' #define CTB_TerminalMgrType 'cmtb' #define CTB_CTBUtilitiesType 'cmtb' #define CTB_CommResourceMgrType 'cmtb' #define CTB_ConnectionMgrID -32512 #define CTB_FileTransferMgrID -32511 #define CTB_TerminalMgrID -32510 #define CTB_CTBUtilitiesID -32509 #define CTB_CommResourceMgrID -32508 #define CTB_VersionType 'ctb ' // used to be ctbv -32512 #define CTB_VersionID -32512 #define CTB_KeyclickType 'snd ' /* this used to be ctb$ -32511 */ #define CTB_KeyclickID -32512 #define CTB_ChooseType 'proc' /* this used to be choo -32512 */ #define CTB_ChooseID -32512 #define CTB_DITLPackType 'proc' /* this used to be ditl -32512 */ #define CTB_DITLPackID -32511 #define CTB_NuLookupType 'proc' /* this used to be nlup -32510 */ #define CTB_NuLookupID -32510 #define CTB_NuLookupParmsType 'flst' /* this used to be parm -32510 */ #define CTB_NuLookupParmsID -32510 #define CTB_ModemIconType 'ICN#' /* this used to be ctbi -32512 */ #define CTB_Modem4ColorIconType 'icl4' #define CTB_Modem8ColorIconType 'icl8' #define CTB_ModemIconID -32512 #define CTB_PrinterIconType 'ICN#' /* this used to be ctbi -32511 */ #define CTB_Printer4ColorIconType 'icl4' #define CTB_Printer8ColorIconType 'icl8' #define CTB_PrinterIconID -32511 #define CTB_ModemStringType 'STR#' /* this used to be ctbs -32512 */ #define CTB_ModemStringID -32512 #define CTB_PrinterStringType 'STR#' /* this used to be ctbs -32511 */ #define CTB_PrinterStringID -32511 #define CTB_CommFolderNameType 'STR ' /* this used to be ctbs -32510 */ #define CTB_CommFolderNameID -32510 #define CTB_MarkerType 'ctb ' /* lets CTB6 installer scripts know CTB7 is installed */ #define CTB_CTB6MarkerID 0 #define CTB_CTB7MarkerID 1 #define CTB_ChooseDLOGID -32512 #define CTB_ChoosehdlgID -32512 #define CTB_ChoosedctbID -32512 #define CTB_ChooseDITLID -32512 #define CTB_ChooseSTRsID -32510 #define CTB_ChooseLDEFID -32512 #define CTB_ChoosehmnuID -32512 #define CTB_ChoosefinfID -32512 #define CTB_ChooseflstID -32512 /* preferred over finf */ #define CTB_ChooseCNTLID -32512 #define CTB_ChooseMENUID -32512 #define CTB_ChooseConfirmDLOGID -32511 #define CTB_ChooseConfirmDITLID -32511 #define CTB_ChooseUnavailableDLOGID -32509 #define CTB_ChooseUnavailableDITLID -32509 #define CTB_NulookuphdlgID -32510 #define CTB_NulookupDLOGID -32510 #define CTB_NulookupdctbID -32510 #define CTB_NulookupDITLID -32510 #define CTB_NulookupSTRsID -32510 #define CTB_NulookupLDEFID -32510 #define CTB_PopupCDEFType 'CDEF' #define CTB_PopupCDEFID 63 /* added since CTB6 */ #define CTB_PopupTriangleType 'PICT' #define CTB_PopupTriangleID -8224 /* owned by cdef 63 */ #define CTB_PopupExpandType 'proc' /* this expands menuwidth */ #define CTB_PopupExpandID -8224 /* owned by cdef 63 */ // Communications Resource Manager ///////////////////////////////////////////////////////////////////////////////////////////// // partial declaration of resource map handle typedef struct ResourceMapRecord { long theHeader[4]; struct ResourceMapRecord **next; short refNum; } ResourceMapRecord, *ResourceMapPtr, **ResourceMapHandle, ***ResourceMapHandlePtr; // structures used by CRM for manipulating the resource map chain typedef struct CRMToolContext { /* NOTE if this structure changes, CRMToolPreflight/Postflight have to change as well */ short oldProcID; ResourceMapHandle oldHidden; // old resfile just below system file short toolProcID; Boolean wasBelow; // were we already below the system map? } CRMToolContext, *CRMToolContextPtr; // structures used to manage resource files typedef struct ResFileRec { FSSpec theName; /* Canonical File id */ short refNum; /* resource file reference number */ ResourceMapHandle /* the resource map */ resMap; THz pZone; /* zone the resource map resides in */ long useCount; /* number times opened/closed */ CRMToolContext special; /* special context for CTBSetupPreflight/Postflight */ long reserved; /* who knows what */ struct ResFileRec **next; /* next in the chain */ } ResFileRec, *ResFileRecPtr, **ResFileRecHdl; // data structure used to keep track of resources (useCount etc) typedef struct CRMResourceCount { struct CRMResourceCount *next; long theHandle; long useCount; short refnum; } CRMResourceCount, *CRMResourceCountPtr; // bit field for cmtbFlags below #define cmInUse 1 #define ftInUse 1 << (CTB_FileTransferMgrID - CTB_ConnectionMgrID) #define tmInUse 1 << (CTB_TerminalMgrID - CTB_ConnectionMgrID) // data struct to keep a list of processes that have inited a mgr typedef struct CRMAppRec { ProcessSerialNumber aProcess; short cmtbFlags; // tmInUse, etc. long reserved; struct CRMAppRec *next; } CRMAppRec, *CRMAppRecPtr; // commtoolbox dispatcher format typedef struct DispatchCode { short instruction; // bra.s @OK long table[19]; // table of manager pointers short CTBrefnum; // ignored short big; // ignored } DispatchCode, *DispatchCodePtr; // CommToolbox Globals pointed to by 0xBB4 #define CTBBlockVersion 1 typedef struct CTBBlock { short version; // should be CTBBlockVersion QHdrPtr CRMQueue; // queue of devices being managed long resList; // queue of resources being managed short private; // What is this? CRMAppRecPtr appList; // List o' processes that call us ResFileRec **resFiles; // queue of files being managed ResourceMapHandle toolResChain; // ????? long secret[16]; } CTBBlock, *CTBBlockPtr; #define CRMGetGlobals (* (CTBBlockPtr *) CommToolboxGlobals) #define GetMemErr() MemError() #define GetResErr() *((short *) ResErr) /* internal CommResourceMgr routines */ pascal short CRMOpenRFPerm(ConstStr63Param fName, short vRefNum, long dirID); pascal short CRMGetRFCount(short refNum); pascal OSErr CRMParseRefNum(short refNum, Str63 fName, short *vRefNum); pascal OSErr CRMCreateCommunications(short *vRefNum, long *dirID); pascal short CRMCountFiles(OSType fType, short vRefNum, long dirID); pascal OSErr CRMGetIndFile(Str63 fName, OSType fType, short vRefNum, long dirID, short index); pascal Boolean CRMCheckTool(ConstStr63Param fName, OSType fType, short vRefNum, long dirID); pascal void CRMDumpResChain(void); pascal void CRMToolPreflight(short procID, CRMToolContext *); pascal void CRMToolPostflight(const CRMToolContext *); /* CRM App List Handling Routines */ pascal short TrackManagers(short mgrID); CRMAppRecPtr FindApp(const ProcessSerialNumber *); CRMAppRecPtr AddApp(const ProcessSerialNumber *); void RemoveApp(CRMAppRecPtr); // CommToolbox Utilities // Choose /* Choose private data structures */ typedef struct ChooseRec { long reserved; long msg; // one of {ctbChooseNoChangeHandle, ctbChooseNoDialog, ctbChooseNoChangeTool} ProcPtr idleProc; ProcPtr filterProc; Str63 newTool; Ptr newConfig; ProcPtr eventProc; } ChooseRec, *ChooseRecPtr; /* ChooseRec messages */ #define ctbChooseNoChangeHandle 1 #define ctbChooseNoDialog 2 #define ctbChooseNoChangeTool 4 /* messages to the choo resource */ #define ChooseCM 0 #define ChooseTM 1 #define ChooseFT 2 // ICON LDEF data structures /* IconLDEF cell data */ typedef struct CellDataBlock { long icon[32]; long mask[32]; Str255 title; } CellDataBlock, *CellDataP, **CellDataH; typedef struct NewCellDataBlock { /* Structure of new icon ldef's Data */ Handle cHand; short cFont; Style cFace; Str255 cName; } NewCellDataBlock, *NewCellDataBlockP, **NewCellDataBlockH; /* CommToolboxLDEF private data */ typedef struct IconPrivateBlock { Boolean unused; // has to be here for CTB 1.0 compatibility short procID; /* res refnum for the tool */ NewCellDataBlockH tempData; /* Data for new IconLDEF */ } IconPrivateBlock, *IconPrivateP, **IconPrivateH; // generic structure for converting finf and flst resources typedef struct TextState { short theFont; Style theFace; short theSize; short theMode; } TextState, *TextStatePtr; // Accessing QD Globals typedef struct { char privates[76]; long randSeed; BitMap screenBits; Cursor arrow; Pattern dkGray; // we really care only for the patterns Pattern ltGray; Pattern gray; Pattern black; Pattern white; GrafPtr thePort; } GrafWorld, *GrafWorldPtr; // routines in CommToolboxUtilityRoutines pascal short FindMenuItem(MenuHandle, ConstStr255Param); pascal OSErr GetIndflst(Handle hInfo, Boolean oldStyle, short index, TextState *finfInfo); pascal void DoSolidOutline(DialogPtr pDialog, short theItem); pascal void DoGrayOutline(DialogPtr pDialog, short theItem); pascal void DoTheIcon(Ptr theIcon, const Rect *destRect, Boolean selected); pascal GrafWorldPtr GetQDGlobals(void); pascal void GetItemRect(DialogPtr, short, Rect *); pascal void SetUserItemProc(DialogPtr, short, ProcPtr); pascal void PCopyString(ConstStr255Param, Str255); pascal Boolean CmdPeriod(EventRecord *); pascal void GetTextState(TextState *txState); pascal void SetTextState(TextState *txState); pascal void Getflst(short procID, short resourceID, short finfIndex, TextState *finfInfo); pascal Point PlaceWindow(WindowPtr theParent,short childHeight,short childWidth); // CommToolbox Utilities Core /* Common Tool Messages */ #define CTBInitMsg 0 #define CTBDisposeMsg 1 #define CTBSuspendMsg 2 #define CTBResumeMsg 3 #define CTBMenuMsg 4 #define CTBEventMsg 5 #define CTBActivateMsg 6 #define CTBDeactivateMsg 7 /* except for connection manager since I BBH f*cked up */ #define CTBGetErrorStringMsg 8 #define CTBIdleMsg 50 #define CTBResetMsg 51 #define CTBAbortMsg 52 #define CTBValidateMsg 0 #define CTBDefaultMsg 1 // case these later #define CTBPreflightMsg 0 #define CTBSetupMsg 1 #define CTBItemMsg 2 #define CTBFilterMsg 3 #define CTBCleanupMsg 4 #define CTBGetMsg 0 #define CTBSetMsg 1 #define CTB2EnglishMsg 0 #define CTB2IntlMsg 1 // DITL package selectors #define AppendMsg 1 #define CountMsg 2 #define ShortenMsg 3 typedef struct CoreRecord { // looks pretty common to ConnRecord, TermRecord, FTRecord short procID; long flags; OSErr errCode; long refCon; long userData; ProcPtr defProc; Ptr config; Ptr oldConfig; long reserved0; long reserved1; long reserved2; } CoreRecord, *CorePtr, **CoreHandle; pascal short InitManager(short selector); /* core setup misceallaneous routines */ pascal void CTBGetToolName(short procID, Str255 name, short mgrSel); pascal short CTBGetProcID(ConstStr255Param name, short mgrSel); pascal Handle CTBGetVersion(CoreHandle, short mgrSel); /* core validate routines */ pascal Boolean CTBValidate(CoreHandle, short mgrSel); pascal void CTBDefault(Ptr *config, short procID, Boolean allocate, short mgrSel); /* core setup routines */ pascal Handle CTBSetupPreflight(short procID, long *magicCookie, short mgrSel); pascal Boolean CTBSetupFilter(short procID, Ptr theConfig, short count, DialogPtr, EventRecord *, short *theItem, long *magicCookie, short mgrSel); pascal void CTBSetupSetup(short procID, Ptr theConfig, short count, DialogPtr, long *magicCookie, short mgrSel); pascal void CTBSetupItem(short procID, Ptr theConfig, short count, DialogPtr, short *item, long *magicCookie, short mgrSel); pascal void CTBSetupCleanup(short procID, Ptr theConfig, short count, DialogPtr, long *magicCookie, short mgrSel); pascal void CTBSetupXCleanup(short procID, Ptr theConfig, short count, DialogPtr, Boolean OKed, long *magicCookie, short mgrSel); pascal void CTBSetupPostflight(short procID, short mgrSel); /* core scripting routines */ pascal Ptr CTBGetConfig(CoreHandle, short mgrSel); pascal short CTBSetConfig(CoreHandle, Ptr thePtr, short mgrSel); /* core localization routines */ pascal short CTBIntlToEnglish(CoreHandle, Ptr inputPtr, Ptr *outputPtr, short language, short mgrSel); pascal short CTBEnglishToIntl(CoreHandle, Ptr inputPtr, Ptr *outputPtr, short language, short mgrSel); /* core choose routines */ pascal short CTBChoose(CoreHandle *, Point where, ProcPtr idleProc, short mgrSel); pascal short CTBPChoose(CoreHandle *, Point where, ChooseRec *, short mgrSel); /* core utility routines - these reside in CommToolboxUtilityRoutines.c */ pascal Handle CRMGetAResource(ResType, short procID); // Note that SetupStruct has been renamed CM/FT/TMSetupStruct but the core routines // use SetupStruct so the next line could very well have been #def SetupStruct TMSetupStruct #define SetupStruct CMSetupStruct // selectors for the various code routines #define CMSel 0 #define TMSel 1 #define FTSel 2 // selectors for the tool res types #define BndType 0 #define DefType 1 #define ValType 2 #define SetType 3 #define ScrType 4 #define LocType 5 // common error code for no tools in response to InitXXX() #define CTBNoTools 8 #endif