summaryrefslogtreecommitdiff
path: root/wii
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--wii/common.cpp23
-rw-r--r--wii/common.h2
2 files changed, 25 insertions, 0 deletions
diff --git a/wii/common.cpp b/wii/common.cpp
index 8f552b3..4ea59a0 100644
--- a/wii/common.cpp
+++ b/wii/common.cpp
@@ -131,4 +131,27 @@ void WriteFixedLengthASCII(QDataStream &out, const QString str, int length) {
out.writeRawData(paddedStr.constData(), paddedStr.length());
}
+QString ReadVariableLengthASCII(QDataStream &in) {
+ qint64 savedPos = in.device()->pos();
+ int stringLength = 0;
+ char check;
+
+ in >> (quint8&)check;
+ while (check != 0) {
+ stringLength += 1;
+ in >> (quint8&)check;
+ }
+
+ // now read the string
+ char *buffer = new char[stringLength];
+
+ in.device()->seek(savedPos);
+ in.readRawData(buffer, stringLength);
+
+ QString output = QString::fromAscii(buffer, stringLength);
+
+ delete[] buffer;
+
+ return output;
+}
diff --git a/wii/common.h b/wii/common.h
index b440841..792ae27 100644
--- a/wii/common.h
+++ b/wii/common.h
@@ -108,4 +108,6 @@ void WriteStringList(QDataStream &out, QStringList list);
QString ReadFixedLengthASCII(QDataStream &in, int length);
void WriteFixedLengthASCII(QDataStream &out, QString str, int length);
+QString ReadVariableLengthASCII(QDataStream &in);
+
#endif // WIICOMMON_H