* mtcpnet.c - MacTCP interface
*/
+#if !TARGET_API_MAC_CARBON
+
#include <MacTypes.h>
#include <Devices.h>
#include <Endian.h>
typedef STACK_UPP_TYPE(AddrToStrProcPtr) AddrToStrUPP;
enum { uppAddrToStrProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned long)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char *)))
+ | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
+ | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long)))
+ | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(char *)))
};
#define InvokeAddrToStrUPP(selector, addr, addrStr, userUPP) \
CALL_THREE_PARAMETER_UPP((userUPP), uppAddrToStrProcInfo, (selector),\
static ResultUPP mactcp_lookupdone_upp;
-SockAddr mactcp_namelookup(char *host, char **canonicalname)
+SockAddr mactcp_namelookup(char const *host, char **canonicalname)
{
SockAddr ret = smalloc(sizeof(struct SockAddr_tag));
OSErr err;
volatile int done = FALSE;
char *realhost;
+ int realhostlen;
/* Clear the structure. */
memset(ret, 0, sizeof(struct SockAddr_tag));
if (mactcp_lookupdone_upp == NULL)
mactcp_lookupdone_upp = NewResultUPP(&mactcp_lookupdone);
- err = StrToAddr(host, &ret->hostinfo, mactcp_lookupdone_upp,
+ /* Casting away const -- hope StrToAddr is sensible */
+ err = StrToAddr((char *)host, &ret->hostinfo, mactcp_lookupdone_upp,
(char *)&done);
/*
* PuTTY expects DNS lookups to be synchronous (see bug
continue;
ret->resolved = TRUE;
- if (ret->hostinfo.rtnCode == noErr)
+ if (ret->hostinfo.rtnCode == noErr) {
realhost = ret->hostinfo.cname;
- else
+ /* MacTCP puts trailing dots on canonical names. */
+ realhostlen = strlen(realhost);
+ if (realhost[realhostlen - 1] == '.')
+ realhost[realhostlen - 1] = '\0';
+ } else
realhost = "";
*canonicalname = smalloc(1+strlen(realhost));
strcpy(*canonicalname, realhost);
*donep = TRUE;
}
-SockAddr mactcp_nonamelookup(char *host)
+SockAddr mactcp_nonamelookup(char const *host)
{
SockAddr ret = smalloc(sizeof(struct SockAddr_tag));
return noErr;
}
-/* MacTCP doesn't have a services database. */
-int net_service_lookup(char *service)
-{
-
- return 0;
-}
-
+#endif
/*
* Local Variables: