kioslave: ftp line parsing optimization

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-03-20 23:58:18 +02:00
parent e8237a61ac
commit 21e5f5c2ab

View file

@ -130,7 +130,8 @@ static inline mode_t ftpModeFromString(const char* const modestring)
// for reference: // for reference:
// https://files.stairways.com/other/ftp-list-specs-info.txt // https://files.stairways.com/other/ftp-list-specs-info.txt
qlonglong ftpTimeFromString(const QByteArray &ftpmonth, const QByteArray &ftpday, const QByteArray &ftphouroryear) qlonglong ftpTimeFromString(const QByteArray &ftpmonth, const QByteArray &ftpday, const QByteArray &ftphouroryear,
const int currentyear)
{ {
const QString ftptimestring = ftpmonth + QLatin1Char(' ') + ftpday + QLatin1Char(' ') + ftphouroryear; const QString ftptimestring = ftpmonth + QLatin1Char(' ') + ftpday + QLatin1Char(' ') + ftphouroryear;
QDateTime ftpdatetime; QDateTime ftpdatetime;
@ -138,8 +139,7 @@ qlonglong ftpTimeFromString(const QByteArray &ftpmonth, const QByteArray &ftpday
ftpdatetime = QDateTime::fromString(ftptimestring, "MMM d hh:mm"); ftpdatetime = QDateTime::fromString(ftptimestring, "MMM d hh:mm");
// year is the last occurance of that date, when is that? // year is the last occurance of that date, when is that?
const QDate ftpdate = ftpdatetime.date(); const QDate ftpdate = ftpdatetime.date();
const QDate currentdate = QDate::currentDate(); ftpdatetime.setDate(QDate(currentyear, ftpdate.month(), ftpdate.day()));
ftpdatetime.setDate(QDate(currentdate.year(), ftpdate.month(), ftpdate.day()));
} else { } else {
ftpdatetime = QDateTime::fromString(ftptimestring, "MMM d yyyy"); ftpdatetime = QDateTime::fromString(ftptimestring, "MMM d yyyy");
} }
@ -1139,6 +1139,7 @@ QList<KIO::UDSEntry> CurlProtocol::udsEntries()
// sample line: // sample line:
// drwxr-xr-x 1 nobody nobody 512 Mar 19 19:17 . // drwxr-xr-x 1 nobody nobody 512 Mar 19 19:17 .
static const QByteArray linkseparator = QByteArray("->"); static const QByteArray linkseparator = QByteArray("->");
const QDate currentdate = QDate::currentDate();
foreach(const QByteArray &line, m_writedata.split('\n')) { foreach(const QByteArray &line, m_writedata.split('\n')) {
if (line.isEmpty()) { if (line.isEmpty()) {
continue; continue;
@ -1200,7 +1201,7 @@ QList<KIO::UDSEntry> CurlProtocol::udsEntries()
KIO::UDSEntry kioudsentry; KIO::UDSEntry kioudsentry;
const mode_t stdmode = ftpModeFromString(ftpmode); const mode_t stdmode = ftpModeFromString(ftpmode);
const qlonglong ftpmodtime = ftpTimeFromString(ftpmonth, ftpday, ftphouroryear); const qlonglong ftpmodtime = ftpTimeFromString(ftpmonth, ftpday, ftphouroryear, currentdate.year());
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, remoteEncoding()->decode(ftpfilepath)); kioudsentry.insert(KIO::UDSEntry::UDS_NAME, remoteEncoding()->decode(ftpfilepath));
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, stdmode & S_IFMT); kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, stdmode & S_IFMT);
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, stdmode & 07777); kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, stdmode & 07777);