p = arg;
int process_nonoption_arg(char *arg, Config *cfg){    char *p, *q = arg;    if (got_host) {        /*         * If we already have a host name, treat this argument as a         * port number. NB we have to treat this as a saved -P         * argument, so that it will be deferred until it's a good         * moment to run it.         */        int ret = cmdline_process_param("-P", arg, 1, cfg);        assert(ret == 2);    } else if (!strncmp(q, "telnet:", 7)) {        /*         * If the hostname starts with "telnet:",         * set the protocol to Telnet and process         * the string as a Telnet URL.         */        char c;        q += 7;        if (q[0] == '/' && q[1] == '/')            q += 2;        cfg->protocol = PROT_TELNET;        p = q;        while (*p && *p != ':' && *p != '/')            p++;        c = *p;        if (*p)            *p++ = '\0';        if (c == ':')            cfg->port = atoi(p);        else            cfg->port = -1;        strncpy(cfg->host, q, sizeof(cfg->host) - 1);        cfg->host[sizeof(cfg->host) - 1] = '\0';        got_host = 1;    } else {        /*         * Otherwise, treat this argument as a host name.         */        while (*p && !isspace((unsigned char)*p))            p++;        if (*p)            *p++ = '\0';        strncpy(cfg->host, q, sizeof(cfg->host) - 1);        cfg->host[sizeof(cfg->host) - 1] = '\0';        got_host = 1;    }    return 1;}