1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-27 06:54:20 +00:00

Improve parser for search engine versions.txt

The parse could fail when there is an extra empty line at the end of
file, this patch fixes it.
This commit is contained in:
Chocobo1 2018-11-03 00:30:21 +08:00
parent ee030cc4eb
commit c1c28ce195
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C

View File

@ -47,6 +47,7 @@
#include "base/net/downloadmanager.h"
#include "base/preferences.h"
#include "base/profile.h"
#include "base/utils/bytearray.h"
#include "base/utils/foreignapps.h"
#include "base/utils/fs.h"
#include "base/utils/misc.h"
@ -495,25 +496,24 @@ void SearchPluginManager::parseVersionInfo(const QByteArray &info)
{
QHash<QString, PluginVersion> updateInfo;
int numCorrectData = 0;
QList<QByteArray> lines = info.split('\n');
foreach (QByteArray line, lines) {
const QList<QByteArray> lines = Utils::ByteArray::splitToViews(info, "\n", QString::SkipEmptyParts);
for (QByteArray line : lines) {
line = line.trimmed();
if (line.isEmpty()) continue;
if (line.startsWith('#')) continue;
QList<QByteArray> list = line.split(' ');
const QList<QByteArray> list = Utils::ByteArray::splitToViews(line, ":", QString::SkipEmptyParts);
if (list.size() != 2) continue;
QString pluginName = QString(list.first());
if (!pluginName.endsWith(':')) continue;
const QString pluginName = list.first().trimmed();
const PluginVersion version = PluginVersion::tryParse(list.last().trimmed(), {});
pluginName.chop(1); // remove trailing ':'
PluginVersion version = PluginVersion::tryParse(list.last(), {});
if (version == PluginVersion()) continue;
if (!version.isValid()) continue;
++numCorrectData;
if (isUpdateNeeded(pluginName, version)) {
LogMsg(tr("Plugin %1 is outdated").arg(pluginName), Log::INFO);
LogMsg(tr("Plugin \"%1\" is outdated, updating to version %2").arg(pluginName, version), Log::INFO);
updateInfo[pluginName] = version;
}
}