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 sk_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 sk_nonamelookup(char *host)
+SockAddr mactcp_nonamelookup(char const *host)
{
SockAddr ret = smalloc(sizeof(struct SockAddr_tag));
return ret;
}
-void sk_getaddr(SockAddr addr, char *buf, int buflen)
+void mactcp_getaddr(SockAddr addr, char *buf, int buflen)
{
char mybuf[16];
OSErr err;
/* I think "local" here really means "loopback" */
-int sk_hostname_is_local(char *name)
+int mactcp_hostname_is_local(char *name)
{
return !strcmp(name, "localhost");
}
-int sk_address_is_local(SockAddr addr)
+int mactcp_address_is_local(SockAddr addr)
{
int i;
return FALSE;
}
-int sk_addrtype(SockAddr addr)
+int mactcp_addrtype(SockAddr addr)
{
if (addr->resolved)
return ADDRTYPE_NAME;
}
-void sk_addrcopy(SockAddr addr, char *buf)
+void mactcp_addrcopy(SockAddr addr, char *buf)
{
/* XXX only return first address */
memcpy(buf, &addr->hostinfo.addr[0], 4);
}
-void sk_addr_free(SockAddr addr)
+void mactcp_addr_free(SockAddr addr)
{
sfree(addr);
static void mactcp_flush(Socket s)
{
- fatalbox("sk_tcp_flush");
+ fatalbox("mactcp_flush");
}
-Socket sk_register(void *sock, Plug plug)
+Socket mactcp_register(void *sock, Plug plug)
{
- fatalbox("sk_register");
+ fatalbox("mactcp_register");
}
static TCPNotifyUPP mactcp_asr_upp;
-Socket sk_new(SockAddr addr, int port, int privport, int oobinline,
+Socket mactcp_new(SockAddr addr, int port, int privport, int oobinline,
int nodelay, Plug plug)
{
static struct socket_function_table fn_table = {
/* 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;
}
-Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only)
+Socket mactcp_newlistener(char *srcaddr, int port, Plug plug,
+ int local_host_only)
{
- fatalbox("sk_newlistener");
+ fatalbox("mactcp_newlistener");
}
static void mactcp_close(Socket sock)
}
/*
- * Special error values are returned from sk_namelookup and sk_new
- * if there's a problem. These functions extract an error message,
- * or return NULL if there's no problem.
+ * Special error values are returned from mactcp_namelookup and
+ * mactcp_new if there's a problem. These functions extract an error
+ * message, or return NULL if there's no problem.
*/
-char *sk_addr_error(SockAddr addr)
+char *mactcp_addr_error(SockAddr addr)
{
static char buf[64];