* 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),\
return noErr;
}
-void mactcp_shutdown(void)
+void mactcp_cleanup(void)
{
Actual_Socket s, next;
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));
/* Add this to the list of all sockets */
ret->next = mactcp.socklist;
ret->prev = &mactcp.socklist;
- ret->next->prev = &ret->next;
+ if (ret->next != NULL)
+ ret->next->prev = &ret->next;
mactcp.socklist = ret;
return (Socket)ret;
return noErr;
}
-/* MacTCP doesn't have a services database. */
-int net_service_lookup(char *service)
-{
-
- return 0;
-}
-
+#endif
/*
* Local Variables: