diff options
Diffstat (limited to 'wii')
-rw-r--r-- | wii/common.cpp | 23 | ||||
-rw-r--r-- | wii/common.h | 2 |
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 |