diff options
Diffstat (limited to '')
-rw-r--r-- | wii/common.cpp | 23 |
1 files changed, 23 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; +} |