X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fplugins%2Fstardict%2FCompressedReader.cpp;fp=src%2Fplugins%2Fstardict%2FCompressedReader.cpp;h=dae4b2ed2fc81df8214c4c4f60c83e9ce121e543;hb=f86f31535d8c34e40a83e5a722b06a5a490af0da;hp=33a9744d5632b1b7e670490ace1f1900c682ead7;hpb=f6932a2fbe05f2aa7a91c938479424bb7d87dc18;p=mdictionary diff --git a/src/plugins/stardict/CompressedReader.cpp b/src/plugins/stardict/CompressedReader.cpp index 33a9744..dae4b2e 100644 --- a/src/plugins/stardict/CompressedReader.cpp +++ b/src/plugins/stardict/CompressedReader.cpp @@ -29,16 +29,19 @@ CompressedReader::CompressedReader(QObject *parent) : StarDictReader(parent) { } + CompressedReader::CompressedReader(QString filename, QObject *parent) : StarDictReader(parent) { open(filename); } + CompressedReader::~CompressedReader() { if(_file != NULL) gzclose(_file); } + bool CompressedReader::open(QString file) { _file = gzopen(file.toStdString().c_str(), "rb"); if(_file == NULL) @@ -46,6 +49,7 @@ bool CompressedReader::open(QString file) { return true; } + void CompressedReader::close() { gzclose(_file); _file = NULL; @@ -57,6 +61,19 @@ QChar CompressedReader::readChar() { QString cha; gzread(_file, c, 1); + if(((unsigned char)c[0])>240) + gzread(_file, c+1, 3); + else if(((unsigned char)c[0])>224) + gzread(_file, c+1, 2); + else if(((unsigned char)c[0])>192) + gzread(_file, c+1, 1); + else if(((unsigned char)c[0])>127){ + qDebug()<<"error - starDict - read wordList from UTF-8"; + c[0]=0; + } + + + /* gzread(_file, c, 1); if(((unsigned char)c[0])>127){ gzread(_file, c+1, 1); if(((unsigned char)c[1])>127 && ((unsigned char)c[1])<192){ @@ -65,23 +82,27 @@ QChar CompressedReader::readChar() { gzread(_file, c+3, 1); } } +*/ cha=QString::fromUtf8(c); return cha.at(0); } + qint32 CompressedReader::readInt32BigEndian() { qint32 value; gzread(_file, (void*)(&value), 4); return qFromBigEndian(value); } + qint64 CompressedReader::readInt64BigEndian() { qint64 value; gzread(_file, (void*)(&value), 8); return value; } + QString CompressedReader::readKeyword() { QString result; QChar c; @@ -94,6 +115,7 @@ QString CompressedReader::readKeyword() { return result; } + QByteArray CompressedReader::readString(qint64 offset, qint32 len) { char* buf; buf = new char[len];