");
// support the non-standard extension for URL to external sites
// in this case, url begins with 'URL:'
QByteArray finalUrl;
QByteArray iconUrl;
if (url.startsWith("URL:")) {
finalUrl = url.mid(4);
iconUrl = finalUrl;
} else {
finalUrl = "gopher://" + server;
if (port != "70") {
finalUrl.append(":");
finalUrl.append(port);
}
finalUrl.append('/' + type + url);
iconUrl = url;
}
show.append("\t\t\t\t
");
addIcon(type, iconUrl, show);
show.append(name);
show.append("\n");
show.append("\t\t\t
");
}
}
QByteArray gopher::parsePort(QByteArray *received)
{
int i = 0;
QByteArray port;
bool found = false;
QChar c;
while (!found && i < received->size()) {
c = received->at(i);
if (c.isDigit())
i++;
else
found = true;
}
port = received->left(i);
received->remove(0, i);
return port;
}
void gopher::findLine(QByteArray *received, int *i, int *remove)
{
// it's not in the rfc but most servers don't follow the spec
// find lines ending only in \n and in \r\n
int aux, aux2;
aux = received->indexOf("\r\n");
aux2 = received->indexOf("\n");
if (aux == -1) {
*i = aux2;
*remove = 1;
} else {
if (aux2 < aux) {
*remove = 1;
*i = aux2;
} else {
*remove = 2;
*i = aux;
}
}
}
void gopher::handleSearch(const QString &host, const QString &path, int port)
{
QByteArray show;
QString sPort;
if (port != 70)
sPort = ':' + QString::number(port);
mimeType("text/html");
show.append("\n");
show.append("\n");
show.append("\t\n");
show.append("\t\t