summaryrefslogtreecommitdiffstats
path: root/Mac/Unsupported/mactcp/dnrglue.c
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Unsupported/mactcp/dnrglue.c')
-rw-r--r--Mac/Unsupported/mactcp/dnrglue.c301
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