QHostInfo::localDomainName: use QBAV more

to reduce allocations

Change-Id: If75c3818333880ba34f2e58038b05869979ae14d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
bb10
Anton Kudryavtsev 2023-08-31 17:20:14 +03:00
parent bcae883274
commit cf066f7d03
1 changed files with 9 additions and 6 deletions

View File

@ -124,17 +124,20 @@ QString QHostInfo::localDomainName()
QString domainName;
while (!resolvconf.atEnd()) {
QByteArray line = resolvconf.readLine().trimmed();
if (line.startsWith("domain "))
return QUrl::fromAce(line.mid(sizeof "domain " - 1).trimmed());
const QByteArray lineArray = resolvconf.readLine();
QByteArrayView line = QByteArrayView(lineArray).trimmed();
constexpr QByteArrayView domainWithSpace = "domain ";
if (line.startsWith(domainWithSpace))
return QUrl::fromAce(line.mid(domainWithSpace.size()).trimmed().toByteArray());
// in case there's no "domain" line, fall back to the first "search" entry
if (domainName.isEmpty() && line.startsWith("search ")) {
QByteArray searchDomain = line.mid(sizeof "search " - 1).trimmed();
constexpr QByteArrayView searchWithSpace = "search ";
if (domainName.isEmpty() && line.startsWith(searchWithSpace)) {
QByteArrayView searchDomain = line.mid(searchWithSpace.size()).trimmed();
int pos = searchDomain.indexOf(' ');
if (pos != -1)
searchDomain.truncate(pos);
domainName = QUrl::fromAce(searchDomain);
domainName = QUrl::fromAce(searchDomain.toByteArray());
}
}