Exemple #1
0
qint16 readQInt16asLittleEndian(QDataStream &stream)
{
	QDataStream::ByteOrder bo = stream.byteOrder();
	stream.setByteOrder(QDataStream::LittleEndian);
	quint16 res;
	stream >> res;
	stream.setByteOrder(bo);
	return res;
}
Exemple #2
0
bool KTNEFWriter::writeFile(QDataStream &stream)
{
    stream.setByteOrder(QDataStream::LittleEndian);

    // Start by writing the opening TNEF stuff
    stream << TNEF_SIGNATURE;

    // Store the PR_ATTACH_NUM value for the first attachment
    // ( must be stored even if *no* attachments are stored )
    stream << mData->mFirstAttachNum;

    // Now do some writing
    bool ok = true;
    int bytesWritten = 0;
    ok &= writeProperty(stream, bytesWritten, attTNEFVERSION);
    ok &= writeProperty(stream, bytesWritten, attOEMCODEPAGE);
    ok &= writeProperty(stream, bytesWritten, attMSGCLASS);
    ok &= writeProperty(stream, bytesWritten, attMSGPRIORITY);
    ok &= writeProperty(stream, bytesWritten, attSUBJECT);
    ok &= writeProperty(stream, bytesWritten, attDATESENT);
    ok &= writeProperty(stream, bytesWritten, attDATESTART);
    ok &= writeProperty(stream, bytesWritten, attDATEEND);
    // ok &= writeProperty( stream, bytesWritten, attAIDOWNER );
    ok &= writeProperty(stream, bytesWritten, attREQUESTRES);
    ok &= writeProperty(stream, bytesWritten, attFROM);
    ok &= writeProperty(stream, bytesWritten, attDATERECD);
    ok &= writeProperty(stream, bytesWritten, attMSGSTATUS);
    ok &= writeProperty(stream, bytesWritten, attBODY);
    return ok;
}
Exemple #3
0
bool Parser::loadFromStream( QDataStream &stream ) 
{
    stream.setByteOrder( QDataStream::LittleEndian );

    Header *header = new Header( stream );
    if ( ! header->isValid() ) {
        kWarning() << "Failed to parse header, perhaps not an EMF file";
        delete header;
        return false;
    }

    mOutput->init( header );

#if DEBUG_EMFPARSER
    kDebug(31000) << "========================================================== Starting EMF";
#endif

    int numRecords = header->recordCount();
    for ( int i = 1; i < numRecords; ++i ) {
        // kDebug(33100) << "Record" << i << "of" << numRecords;
        if ( ! readRecord( stream ) ) {
            break;
        }
    }

    mOutput->cleanup( header );

    delete header;

    return true;
}
bool PwDatabaseV3::readDatabase(const QByteArray& dbBytes) {
    QDataStream stream (dbBytes);
    stream.setByteOrder(QDataStream::LittleEndian);

    PwHeaderV3::ErrorCode headerErrCode = header.read(stream);
    if (headerErrCode != PwHeaderV3::SUCCESS) {
        LOG("%s: %d", PwHeaderV3::getErrorMessage(headerErrCode).toUtf8().constData(), headerErrCode);
        emit dbLoadError(PwHeaderV3::getErrorMessage(headerErrCode), headerErrCode);
        return false;
    }

    /* Calculate the encryption key */
    setPhaseProgressBounds(UNLOCK_PROGRESS_KEY_TRANSFORM);
    PwDatabase::ErrorCode dbErr = transformKey(header.getMasterSeed(), header.getTransformSeed(),
            header.getTransformRounds(), combinedKey, masterKey);
    if (dbErr != PwDatabase::SUCCESS) {
        LOG("Cannot decrypt database - transformKey: %d", dbErr);
        emit dbLoadError(tr("Cannot decrypt database", "A generic error message"), dbErr);
        return false;
    }


    /* Decrypt data */
    setPhaseProgressBounds(UNLOCK_PROGRESS_DECRYPTION);
    int dataSize = dbBytes.size() - header.HEADER_SIZE;
    // DB header not needed for decryption
    QByteArray dbBytesWithoutHeader = dbBytes.right(dataSize);
    QByteArray decryptedData(dataSize, 0);
    ErrorCode err = decryptData(dbBytesWithoutHeader, decryptedData);
    Util::safeClear(dbBytesWithoutHeader);
    if (err != SUCCESS) {
        if (err == DECRYPTED_PADDING_ERROR || err == DECRYPTED_CHECKSUM_MISMATCH) {
            LOG("Cannot decrypt database - decryptData: %d", err);
            emit invalidPasswordOrKey();
        } else {
            // err == CANNOT_DECRYPT_DB
            // err == CONTENT_HASHING_ERROR
            // err == something else
            LOG("Cannot decrypt database - decryptData: %d", err);
            emit dbLoadError(tr("Cannot decrypt database", "An error message"), err);
        }
        return false;
    }

    /* Reading and parsing data*/
    setPhaseProgressBounds(UNLOCK_PROGRESS_PARSE_DATA);
    QDataStream decryptedDataStream(decryptedData);
    decryptedDataStream.setByteOrder(QDataStream::LittleEndian);
    err = readContent(decryptedDataStream);
    Util::safeClear(decryptedData);
    if (err != SUCCESS) {
        emit dbLoadError(tr("Cannot parse database", "An error message. Parsing refers to the analysis/understanding of file content (do not confuse with reading it)."), err);
        return false;
    }

    return true;
}
void ClassicTileInfo::dump(QDataStream& stream) {
	stream.setByteOrder(QDataStream::LittleEndian);
	for(int tile = 0; tile < _tileCount; ++tile) {
		stream << tiles[tile].frames;
	}
	for(int tile = 0; tile < _tileCount; ++tile) {
		stream << tiles[tile].behavior;
	}
    for(int side = 0; side < 4; ++side) {
        for(int tile = 0; tile < _tileCount; ++tile) {
            stream << tiles[tile].style[side];
        }
    }
}
Exemple #6
0
void saveFeatures(QDataStream &outstream, const QString &extractorName,
                  const QStringList &extractorArgs, const int &extractorSize,
                  const QVector<LabelledData> &data)
{
    outstream.setVersion(QDataStream::Qt_4_6);
    outstream.setByteOrder(QDataStream::BigEndian);

    int size = sizeof(nnreal);
    outstream << size;
    outstream << extractorName;
    outstream << extractorArgs;
    outstream << extractorSize;
    outstream << data;
}
Exemple #7
0
void chmEditer::on_pushButton_clicked()
{
    //
    chmHeader hd;
    QString fileName = QFileDialog::getOpenFileName(this,
         tr("Открыть chm"), ".", tr("Chm Files (*.chm)"));
//    fileName = "D:\\ferz\\chm1\\TestPrj.chm";
    QFile f;
    f.setFileName(fileName);
    if (f.open(QIODevice::ReadOnly))
    {
        QDataStream stream;
        stream.setDevice(&f);
        stream.setByteOrder(QDataStream::LittleEndian);

        char *tmp1;
        tmp1 = new char[4];
        stream.readRawData(tmp1,4);
        hd.header = tmp1;
        delete tmp1;

        stream>> hd.version;
        stream>> hd.lenght;
        stream.skipRawData(4);
        stream>>hd.timestamp;
        stream>>hd.languageID;

        tmp1 = new char[10];
        stream.readRawData(tmp1,10);
        hd.GUID1 = tmp1;
        delete tmp1;
        tmp1 = new char[10];
        stream.readRawData(tmp1,10);
        hd.GUID2 = tmp1;
        delete tmp1;

        qDebug()<<hd.GUID1;
        ui->textEdit->append("<b>Заголовок</b>: "+hd.header);
        ui->textEdit->append("<b>Версия</b>: "+QString("%1").arg(hd.version));
        ui->textEdit->append("<b>полный размер заголовка</b> : "+QString("%1").arg(hd.lenght));
        ui->textEdit->append("<b>Язык</b> : "+QString("%1").arg(hd.languageID,0, 16));
    }
bool ClassicTileInfo::load(QDataStream& stream, int size) {
	if(tiles) {
		delete[] tiles;
	}
	_tileCount = size;
	stream.setByteOrder(QDataStream::LittleEndian);
	tiles = new Tile[_tileCount];

	/*for(unsigned int i = 0; i != _tileCount; ++i) {
		stream >> tiles[i].frames;
	}*/
	for(unsigned int i = 0; i != _tileCount; ++i) {
		stream >> tiles[i].behavior;
	}
	for(unsigned int side = 0; side < 4; ++side) {
		for(unsigned int tile = 0; tile != _tileCount; ++tile) {
			stream >> tiles[tile].style[side];
		}
	}
	return true;
}
Exemple #9
0
bool CPatchFile::loadFOX(QDataStream &stream, QVector<QRgb> &palette) {
	stream.setByteOrder(QDataStream::LittleEndian);

	// Read the file header
	char magic[4];
	stream.readRawData(magic, 4);

	if (magic[0] != 'F' || magic[1] != 'S' || magic[2] != 'H' || magic[3] != 'X') {
		m_error = BadMagicError;
		return false;
	}

	stream >> version;

	qint32 numShapes, generator, encryption, reserved1, reserved2;
	stream >> numShapes;
	stream >> generator;
	stream >> encryption;
	stream >> reserved1 >> reserved2;

	if (encryption > 0) {
		m_error = FileIsEncryptedError;
		return false;
	}

	// Go on to reading every shape now
	shapes.resize(numShapes);

	for (int shapeIdx = 0; shapeIdx < numShapes; shapeIdx++) {
		CShape &shape = shapes[shapeIdx];

		quint16 flags, numFrames, numSteps;

		stream >> flags;
		stream >> shape.replacedIndex;
		stream >> numFrames >> numSteps;

		shape.flags = (CShape::Flags)flags;

		// V3 and above has SHAPEEXT
		if (version >= 3) {
			quint16 shapeExtSize;
			stream >> shapeExtSize;

			// what else...?
			stream.skipRawData(shapeExtSize - 2);
		}

		// Frames come now
		shape.frames.resize(numFrames);

		for (int frameIdx = 0; frameIdx < numFrames; frameIdx++) {
			CFrame &frame = shape.frames[frameIdx];

			quint16 frameFormat, frameWidth, frameHeight;
			quint32 imageDataSize;

			stream >> frameFormat;
			stream >> frameWidth >> frameHeight;
			stream >> frame.posX >> frame.posY;
			stream >> frame.furrePosX >> frame.furrePosY;
			stream >> imageDataSize;

			frame.format = (CFrame::FormatType)frameFormat;

			// Deal with FRAMEEXT
			if (version >= 3) {
				quint16 frameExtSize;
				stream >> frameExtSize;

				// opacity and compressionType are always present.
				stream >> frame.opacity;
				quint8 compressionType;
				stream >> compressionType;
				frame.compression = (CFrame::CompressionType)compressionType;

				stream.skipRawData(frameExtSize - 4);
			} else {