diff options
Diffstat (limited to 'Mac/Unsupported/mactcp/dnrglue.c')
-rw-r--r-- | Mac/Unsupported/mactcp/dnrglue.c | 301 |
1 files changed, 0 insertions, 301 deletions
diff --git a/Mac/Unsupported/mactcp/dnrglue.c b/Mac/Unsupported/mactcp/dnrglue.c deleted file mode 100644 index 5474b73..0000000 --- a/Mac/Unsupported/mactcp/dnrglue.c +++ /dev/null @@ -1,301 +0,0 @@ -/* DNR.c - DNR library for MPW - - (c) Copyright 1988 by Apple Computer. All rights reserved - - Modifications by Jim Matthews, Dartmouth College, 5/91 - Again modified for use with python by Jack Jansen, CWI, October 1994. - -*/ - -#include <Traps.h> -#include <OSUtils.h> -#include <Errors.h> -#include <Files.h> -#include <Resources.h> -#include <Memory.h> -#include <Traps.h> -#include <GestaltEqu.h> -#include <Folders.h> -#include <ToolUtils.h> -#include <MacTCPCommonTypes.h> -#include "AddressXlation.h" - -TrapType GetTrapType(unsigned long theTrap); -Boolean TrapAvailable(unsigned long trap); -void GetSystemFolder(short *vRefNumP, long *dirIDP); -void GetCPanelFolder(short *vRefNumP, long *dirIDP); -short SearchFolderForDNRP(long targetType, long targetCreator, short vRefNum, long dirID); -short OpenOurRF(void); - -#define OPENRESOLVER 1L -#define CLOSERESOLVER 2L -#define STRTOADDR 3L -#define ADDRTOSTR 4L -#define ENUMCACHE 5L -#define ADDRTONAME 6L -#define HINFO 7L -#define MXINFO 8L - -Handle codeHndl = nil; - -OSErrProcPtr dnr = nil; - -TrapType GetTrapType(theTrap) -unsigned long theTrap; -{ - if (BitAnd(theTrap, 0x0800) > 0) - return(ToolTrap); - else - return(OSTrap); - } - -Boolean TrapAvailable(trap) -unsigned long trap; -{ -TrapType trapType = ToolTrap; -unsigned long numToolBoxTraps; - - if (NGetTrapAddress(_InitGraf, ToolTrap) == NGetTrapAddress(0xAA6E, ToolTrap)) - numToolBoxTraps = 0x200; - else - numToolBoxTraps = 0x400; - - trapType = GetTrapType(trap); - if (trapType == ToolTrap) { - trap = BitAnd(trap, 0x07FF); - if (trap >= numToolBoxTraps) - trap = _Unimplemented; - } - return(NGetTrapAddress(trap, trapType) != NGetTrapAddress(_Unimplemented, ToolTrap)); - -} - -void GetSystemFolder(short *vRefNumP, long *dirIDP) -{ - SysEnvRec info; - long wdProcID; - - SysEnvirons(1, &info); - if (GetWDInfo(info.sysVRefNum, vRefNumP, dirIDP, &wdProcID) != noErr) { - *vRefNumP = 0; - *dirIDP = 0; - } - } - -void GetCPanelFolder(short *vRefNumP, long *dirIDP) -{ - Boolean hasFolderMgr = false; - long feature; - - if (Gestalt(gestaltFindFolderAttr, &feature) == noErr) hasFolderMgr = true; - if (!hasFolderMgr) { - GetSystemFolder(vRefNumP, dirIDP); - return; - } - else { - if (FindFolder(kOnSystemDisk, kControlPanelFolderType, kDontCreateFolder, vRefNumP, dirIDP) != noErr) { - *vRefNumP = 0; - *dirIDP = 0; - } - } - } - -/* SearchFolderForDNRP is called to search a folder for files that might - contain the 'dnrp' resource */ -short SearchFolderForDNRP(long targetType, long targetCreator, short vRefNum, long dirID) -{ - HParamBlockRec fi; - Str255 filename; - short refnum; - - fi.fileParam.ioCompletion = nil; - fi.fileParam.ioNamePtr = filename; - fi.fileParam.ioVRefNum = vRefNum; - fi.fileParam.ioDirID = dirID; - fi.fileParam.ioFDirIndex = 1; - - while (PBHGetFInfo(&fi, false) == noErr) { - /* scan system folder for driver resource files of specific type & creator */ - if (fi.fileParam.ioFlFndrInfo.fdType == targetType && - fi.fileParam.ioFlFndrInfo.fdCreator == targetCreator) { - /* found the MacTCP driver file? */ - refnum = HOpenResFile(vRefNum, dirID, filename, fsRdPerm); - if (GetIndResource('dnrp', 1) == NULL) - CloseResFile(refnum); - else - return refnum; - } - /* check next file in system folder */ - fi.fileParam.ioFDirIndex++; - fi.fileParam.ioDirID = dirID; /* PBHGetFInfo() clobbers ioDirID */ - } - return(-1); - } - -/* OpenOurRF is called to open the MacTCP driver resources */ - -short OpenOurRF() -{ - short refnum; - short vRefNum; - long dirID; - - /* first search Control Panels for MacTCP 1.1 */ - GetCPanelFolder(&vRefNum, &dirID); - refnum = SearchFolderForDNRP('cdev', 'ztcp', vRefNum, dirID); - if (refnum != -1) return(refnum); - - /* next search System Folder for MacTCP 1.0.x */ - GetSystemFolder(&vRefNum, &dirID); - refnum = SearchFolderForDNRP('cdev', 'mtcp', vRefNum, dirID); - if (refnum != -1) return(refnum); - - /* finally, search Control Panels for MacTCP 1.0.x */ - GetCPanelFolder(&vRefNum, &dirID); - refnum = SearchFolderForDNRP('cdev', 'mtcp', vRefNum, dirID); - if (refnum != -1) return(refnum); - - return -1; - } - - -OSErr OpenResolver(fileName) -char *fileName; -{ - short refnum; - OSErr rc; - - if (dnr != nil) - /* resolver already loaded in */ - return(noErr); - - /* open the MacTCP driver to get DNR resources. Search for it based on - creator & type rather than simply file name */ - refnum = OpenOurRF(); - - /* ignore failures since the resource may have been installed in the - System file if running on a Mac 512Ke */ - - /* load in the DNR resource package */ - codeHndl = GetIndResource('dnrp', 1); - if (codeHndl == nil) { - /* can't open DNR */ - return(ResError()); - } - - DetachResource(codeHndl); - if (refnum != -1) { - CloseWD(refnum); - CloseResFile(refnum); - } - - /* lock the DNR resource since it cannot be reloated while opened */ - HLock(codeHndl); - dnr = (OSErrProcPtr) *codeHndl; - - /* call open resolver */ - rc = (*dnr)(OPENRESOLVER, fileName); - if (rc != noErr) { - /* problem with open resolver, flush it */ - HUnlock(codeHndl); - DisposHandle(codeHndl); - dnr = nil; - } - return(rc); - } - - -OSErr CloseResolver() -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - /* call close resolver */ - (void) (*dnr)(CLOSERESOLVER); - - /* release the DNR resource package */ - HUnlock(codeHndl); - DisposHandle(codeHndl); - dnr = nil; - return(noErr); - } - -OSErr StrToAddr(hostName, rtnStruct, resultproc, userDataPtr) -char *hostName; -struct hostInfo *rtnStruct; -ResultProcPtr resultproc; -char *userDataPtr; -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - return((*dnr)(STRTOADDR, hostName, rtnStruct, resultproc, userDataPtr)); - } - -OSErr AddrToStr(addr, addrStr) -unsigned long addr; -char *addrStr; -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - (*dnr)(ADDRTOSTR, addr, addrStr); - return(noErr); - } - -OSErr EnumCache(resultproc, userDataPtr) -EnumResultProcPtr resultproc; -char *userDataPtr; -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - return((*dnr)(ENUMCACHE, resultproc, userDataPtr)); - } - - -OSErr AddrToName(addr, rtnStruct, resultproc, userDataPtr) -unsigned long addr; -struct hostInfo *rtnStruct; -ResultProcPtr resultproc; -char *userDataPtr; -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - return((*dnr)(ADDRTONAME, addr, rtnStruct, resultproc, userDataPtr)); - } - - -extern OSErr HInfo(hostName, returnRecPtr, resultProc, userDataPtr) -char *hostName; -struct returnRec *returnRecPtr; -ResultProc2Ptr resultProc; -char *userDataPtr; -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - return((*dnr)(HINFO, hostName, returnRecPtr, resultProc, userDataPtr)); - - } - -extern OSErr MXInfo(hostName, returnRecPtr, resultProc, userDataPtr) -char *hostName; -struct returnRec *returnRecPtr; -ResultProc2Ptr resultProc; -char *userDataPtr; -{ - if (dnr == nil) - /* resolver not loaded error */ - return(notOpenErr); - - return((*dnr)(MXINFO, hostName, returnRecPtr, resultProc, userDataPtr)); - - }
\ No newline at end of file |