summaryrefslogtreecommitdiffhomepage
path: root/csv
diff options
context:
space:
mode:
Diffstat (limited to 'csv')
-rw-r--r--csv/csv.cpp56
-rw-r--r--csv/lang/de_DE.ts4
-rw-r--r--csv/lang/zh_CN.ts2
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>