diff options
Diffstat (limited to 'csv')
-rw-r--r-- | csv/csv.cpp | 56 | ||||
-rw-r--r-- | csv/lang/de_DE.ts | 4 | ||||
-rw-r--r-- | csv/lang/zh_CN.ts | 2 |
3 files changed, 27 insertions, 35 deletions
diff --git a/csv/csv.cpp b/csv/csv.cpp index 8a5f5784..6b4d0bcd 100644 --- a/csv/csv.cpp +++ b/csv/csv.cpp @@ -19,7 +19,7 @@ #include <utility> #include <algorithm> -const QTextCodec* const CSV::m_codec = QTextCodec::codecForName("System"); +const QTextCodec* const CSV::m_codec = QTextCodec::codecForName("UTF-8"); const QRegExp CSV::m_rx = QRegExp(QString("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)?\\n?")); const QRegExp CSV::m_rx2 = QRegExp(QString("(?:\"([^\"]*)\";?)|(?:([^;]*);?)?")); @@ -111,13 +111,12 @@ bool CSV::getGameData(int id, unsigned char* table, QString& gamename) CSV csv(&file); - int lineno = 0; unsigned tmp[8]; unsigned fuzz[3]; QStringList gameLine; - while (lineno++, csv.parseLine(gameLine)) + for (int lineno = 0; csv.parseLine(gameLine); lineno++) { //qDebug() << "Column 0: " << gameLine.at(0); // No. //qDebug() << "Column 1: " << gameLine.at(1); // Game Name @@ -132,48 +131,37 @@ bool CSV::getGameData(int id, unsigned char* table, QString& gamename) { if (gameLine.at(6).compare(id_str, Qt::CaseInsensitive) == 0) { - const QString proto(std::move(gameLine.at(3))); - const QString name(std::move(gameLine.at(1))); - - const QByteArray id_cstr = gameLine.at(7).toLatin1(); - - if (proto == QString("V160")) - { - /* nothing */ - } - else if (id_cstr.length() != 22 || - sscanf(id_cstr.constData(), - "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", - fuzz + 2, - fuzz + 0, - tmp + 3, - tmp + 2, - tmp + 1, - tmp + 0, - tmp + 7, - tmp + 6, - tmp + 5, - tmp + 4, - fuzz + 1) != 11) - { + const QString& proto = gameLine[3]; + QString& name = gameLine[1]; + + const QByteArray id_cstr = gameLine[7].toLatin1(); + + auto do_scanf = [&]() { + return sscanf(id_cstr.constData(), + "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", + fuzz + 2, + fuzz + 0, + tmp + 3, tmp + 2, tmp + 1, tmp + 0, + tmp + 7, tmp + 6, tmp + 5, tmp + 4, + fuzz + 1); + }; + + if (proto == QStringLiteral("V160") || id_cstr.length() != 22) + (void)0; + else if (id_cstr.length() != 22 || do_scanf() != 11) qDebug() << "scanf failed" << lineno; - } else { + using uchar = unsigned char; for (int i = 0; i < 8; i++) - { - using t = unsigned char; - table[i] = t(tmp[i]); - } + table[i] = uchar(tmp[i]); } gamename = std::move(name); return true; } } else - { qDebug() << "malformed csv line" << lineno; - } } if (id) diff --git a/csv/lang/de_DE.ts b/csv/lang/de_DE.ts new file mode 100644 index 00000000..1552582e --- /dev/null +++ b/csv/lang/de_DE.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="de_DE"> +</TS> diff --git a/csv/lang/zh_CN.ts b/csv/lang/zh_CN.ts index 6401616d..e5ca8aa9 100644 --- a/csv/lang/zh_CN.ts +++ b/csv/lang/zh_CN.ts @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.1"> +<TS version="2.1" language="zh_CN"> </TS> |