cfg.host[strcspn(cfg.host, ":")] = '\0';
static void do_cmd(char *host, char *user, char *cmd){    const char *err;    char *realhost;    void *logctx;    if (host == NULL || host[0] == '\0')	bump("Empty host name");    /*     * If we haven't loaded session details already (e.g., from -load),     * try looking for a session called "host".     */    if (!loaded_session) {	/* Try to load settings for `host' into a temporary config */	Config cfg2;	cfg2.host[0] = '\0';	do_defaults(host, &cfg2);	if (cfg2.host[0] != '\0') {	    /* Settings present and include hostname */	    /* Re-load data into the real config. */	    do_defaults(host, &cfg);	} else {	    /* Session doesn't exist or mention a hostname. */	    /* Use `host' as a bare hostname. */	    strncpy(cfg.host, host, sizeof(cfg.host) - 1);	    cfg.host[sizeof(cfg.host) - 1] = '\0';	}    } else {	/* Patch in hostname `host' to session details. */	strncpy(cfg.host, host, sizeof(cfg.host) - 1);	cfg.host[sizeof(cfg.host) - 1] = '\0';    }    /*     * Force use of SSH. (If they got the protocol wrong we assume the     * port is useless too.)     */    if (cfg.protocol != PROT_SSH) {        cfg.protocol = PROT_SSH;        cfg.port = 22;    }    /*     * Enact command-line overrides.     */    cmdline_run_saved(&cfg);    /*     * Trim leading whitespace off the hostname if it's there.     */    {	int space = strspn(cfg.host, " \t");	memmove(cfg.host, cfg.host+space, 1+strlen(cfg.host)-space);    }    /* See if host is of the form user@host */    if (cfg.host[0] != '\0') {	char *atsign = strrchr(cfg.host, '@');	/* Make sure we're not overflowing the user field */	if (atsign) {	    if (atsign - cfg.host < sizeof cfg.username) {		strncpy(cfg.username, cfg.host, atsign - cfg.host);		cfg.username[atsign - cfg.host] = '\0';	    }	    memmove(cfg.host, atsign + 1, 1 + strlen(atsign + 1));	}    }    /*     * Trim a colon suffix off the hostname if it's there.     */    cfg.host[strcspn(cfg.host, ":")] = '\0';    /*     * Remove any remaining whitespace from the hostname.     */    {	int p1 = 0, p2 = 0;	while (cfg.host[p2] != '\0') {	    if (cfg.host[p2] != ' ' && cfg.host[p2] != '\t') {		cfg.host[p1] = cfg.host[p2];		p1++;	    }	    p2++;	}	cfg.host[p1] = '\0';    }    /* Set username */    if (user != NULL && user[0] != '\0') {	strncpy(cfg.username, user, sizeof(cfg.username) - 1);	cfg.username[sizeof(cfg.username) - 1] = '\0';    } else if (cfg.username[0] == '\0') {	user = get_username();	if (!user)	    bump("Empty user name");	else {	    if (verbose)		tell_user(stderr, "Guessing user name: %s", user);	    strncpy(cfg.username, user, sizeof(cfg.username) - 1);	    cfg.username[sizeof(cfg.username) - 1] = '\0';	    sfree(user);	}    }    /*     * Disable scary things which shouldn't be enabled for simple     * things like SCP and SFTP: agent forwarding, port forwarding,     * X forwarding.     */    cfg.x11_forward = 0;    cfg.agentfwd = 0;    cfg.portfwd[0] = cfg.portfwd[1] = '\0';    /*     * Set up main and possibly fallback command depending on     * options specified by user.     * Attempt to start the SFTP subsystem as a first choice,     * falling back to the provided scp command if that fails.     */    cfg.remote_cmd_ptr2 = NULL;    if (try_sftp) {	/* First choice is SFTP subsystem. */	main_cmd_is_sftp = 1;	strcpy(cfg.remote_cmd, "sftp");	cfg.ssh_subsys = TRUE;	if (try_scp) {	    /* Fallback is to use the provided scp command. */	    fallback_cmd_is_sftp = 0;	    cfg.remote_cmd_ptr2 = cmd;	    cfg.ssh_subsys2 = FALSE;	} else {	    /* Since we're not going to try SCP, we may as well try	     * harder to find an SFTP server, since in the current	     * implementation we have a spare slot. */	    fallback_cmd_is_sftp = 1;	    /* see psftp.c for full explanation of this kludge */	    cfg.remote_cmd_ptr2 = 		"test -x /usr/lib/sftp-server && exec /usr/lib/sftp-server\n"		"test -x /usr/local/lib/sftp-server && exec /usr/local/lib/sftp-server\n"		"exec sftp-server";	    cfg.ssh_subsys2 = FALSE;	}    } else {	/* Don't try SFTP at all; just try the scp command. */	main_cmd_is_sftp = 0;	cfg.remote_cmd_ptr = cmd;	cfg.ssh_subsys = FALSE;    }    cfg.nopty = TRUE;    back = &ssh_backend;    err = back->init(NULL, &backhandle, &cfg, cfg.host, cfg.port, &realhost, 		     0, cfg.tcp_keepalives);    if (err != NULL)	bump("ssh_init: %s", err);    logctx = log_init(NULL, &cfg);    back->provide_logctx(backhandle, logctx);    console_provide_logctx(logctx);    ssh_scp_init();    if (verbose && realhost != NULL)	tell_user(stderr, "Connected to %s\n", realhost);    sfree(realhost);}