s = sk_new(addr, port, 1, 0, nodelay, &fn_table_ptr);
s = new_connection(addr, *realhost, port, 1, 0, nodelay, &fn_table_ptr);
static char *rlogin_init(char *host, int port, char **realhost, int nodelay){    static struct plug_function_table fn_table = {	rlogin_closing,	rlogin_receive,	rlogin_sent    }, *fn_table_ptr = &fn_table;    SockAddr addr;    char *err;    /*     * Try to find host.     */    {	char buf[200];	sprintf(buf, "Looking up host \"%.170s\"", host);	logevent(buf);    }    addr = sk_namelookup(host, realhost);    if ((err = sk_addr_error(addr)))	return err;    if (port < 0)	port = 513;		       /* default rlogin port */    /*     * Open socket.     */    {	char buf[200], addrbuf[100];	sk_getaddr(addr, addrbuf, 100);	sprintf(buf, "Connecting to %.100s port %d", addrbuf, port);	logevent(buf);    }    s = sk_new(addr, port, 1, 0, nodelay, &fn_table_ptr);    if ((err = sk_socket_error(s)))	return err;    sk_addr_free(addr);    /*     * Send local username, remote username, terminal/speed     */    {	char z = 0;	char *p;	sk_write(s, &z, 1);	sk_write(s, cfg.localusername, strlen(cfg.localusername));	sk_write(s, &z, 1);	sk_write(s, cfg.username, strlen(cfg.username));	sk_write(s, &z, 1);	sk_write(s, cfg.termtype, strlen(cfg.termtype));	sk_write(s, "/", 1);	for (p = cfg.termspeed; isdigit(*p); p++);	sk_write(s, cfg.termspeed, p - cfg.termspeed);	rlogin_bufsize = sk_write(s, &z, 1);    }    return NULL;}