jcs
/wikipedia
/amendments
/38
dnr: Sync with upstream
jcs made amendment 38 over 2 years ago
--- dnr.c	Wed Aug 31 17:42:22 2022
+++ dnr.c	Wed Mar  8 10:07:56 2023
@@ -6,21 +6,14 @@
  * Modifications by Jim Matthews, Dartmouth College, 5/91			
  */
 
-/*
- * TODO: update to avoid having to include MacTraps2 for:
- *	CloseWD
- *	HOpenResFile
- *	FindFolder
- *	GetWDInfo
- */
-
 #include <OSUtils.h>
 #include <Files.h>
 #include <Folders.h>
 #include <GestaltEqu.h>
 #include <Traps.h>
 
-#include "dnr.h"
+#include "AddressXlation.h"
+#include "tcp.h"
 
 #define OPENRESOLVER	1
 #define CLOSERESOLVER	2
@@ -38,7 +31,6 @@ void GetCPanelFolder(short *vRefNumP, long *dirIDP);
 short SearchFolderForDNRP(long targetType, long targetCreator,
 	short vRefNum, long dirID);
 short OpenOurRF(void);
-pascal void StrToAddrMarkDone(struct hostInfo *hi, char *data);
 
 Handle dnr = nil;
 
@@ -122,7 +114,7 @@ SearchFolderForDNRP(long targetType, long targetCreato
 	short refnum;
 				
 	fi.fileParam.ioCompletion = nil;
-	fi.fileParam.ioNamePtr = filename;
+	fi.fileParam.ioNamePtr = (StringPtr)&filename;
 	fi.fileParam.ioVRefNum = vRefNum;
 	fi.fileParam.ioDirID = dirID;
 	fi.fileParam.ioFDirIndex = 1;
@@ -316,15 +308,8 @@ MXInfo(char *hostName, struct returnRec *returnRecPtr,
 }
 #endif
 
-pascal void
-StrToAddrMarkDone(struct hostInfo *hi, char *data)
-{
-	volatile int *done = (int *)data;
-	*done = 1;
-}
-
 OSErr
-ResolveName(char *name, unsigned long *ipAddress)
+DNSResolveName(char **name, unsigned long *ipAddress, void (*yielder)(void))
 {
 	OSErr osErr;
 	struct hostInfo aHostInfo;
@@ -334,13 +319,15 @@ ResolveName(char *name, unsigned long *ipAddress)
 	if (osErr)
 		return osErr;
 	
-	osErr = StrToAddr(name, &aHostInfo, (ResultProcPtr)StrToAddrMarkDone,
+	osErr = StrToAddr(*name, &aHostInfo, (ResultProcPtr)StrToAddrMarkDone,
 	  (char *)&done);
 	
 	if (osErr == cacheFault) {
 		/* StrToAddrMarkDone will set done when DNS resolution finishes */
-		while (!done)
-			;
+		while (!done) {
+			if (yielder != NULL)
+				yielder();
+		}
 	}
 	
 	if ((aHostInfo.rtnCode == noErr) || (aHostInfo.rtnCode == cacheFault)) {