Exemple #1
0
IFFRESULT IFFParser::IFFDescendChunk(IFFCHUNK* lpck)
{
	lpck->flags = 0;	// Read

	ULONG	len = IFFReadChunkBytes(lpck, IFFCHUNKSIZE);

	if (len == 0)
		return IFF_EOF;
	else if (len != IFFCHUNKSIZE)
		return IFFERR_READWRITE;

	lpck->ckID = BigEndian32(lpck->ckID);
	lpck->ckSize = BigEndian32(lpck->ckSize);

	lpck->dataOffset = SetFilePos(0, IO::STREAM_SEEK_CUR);
	lpck->grpID = 0;

	if (lpck->ckID == ID_FORM)
	{
		if (IFFReadChunkBytes(&lpck->grpID, sizeof(ID)) != sizeof(ID))
			return IFFERR_READWRITE;
		lpck->grpID = BigEndian32(lpck->grpID);
		return IFF_EOC;
	}

	return IFF_OK;
}
uint8_t
StringExtractorGDBRemote::GetError ()
{
    if (GetResponseType() == eError)
    {
        SetFilePos(1);
        return GetHexU8(255);
    }
    return 0;
}
Exemple #3
0
IFFRESULT IFFParser::IFFAscendChunk(IFFCHUNK* lpck)
{
	ULONGLONG pos;
	pos = SetFilePos(0, IO::STREAM_SEEK_CUR);	// Current position

	if (lpck->flags == 0)
	{
		int32 offset = lpck->ckSize-(pos-lpck->dataOffset);

		if (lpck->ckSize & 1) offset++;	// Word-aligned chunks

		/*if (*/SetFilePos(offset, IO::STREAM_SEEK_CUR);// == 0xffffffff)
		/*
			return IFFERR_READWRITE;
		else
			return IFF_OK;
			*/
	}
	else
	{
		uint32 cksize = pos - lpck->dataOffset;

		if (lpck->ckSize == 0)	// Unknown size data at time of chunk creation
		{
			lpck->ckSize = cksize;
			cksize = BigEndian32(cksize);

			SetFilePos(lpck->dataOffset-4, IO::STREAM_SEEK_SET);
			IFFWriteChunkBytes(&cksize, 4);	// Write the chunk length

			SetFilePos(pos, IO::STREAM_SEEK_SET);
		}

		if (cksize & 1)
		{
			uint8 padbyte = 0;
			IFFWriteChunkBytes(&padbyte, 1);
		}
	}

	return IFF_OK;
}
Exemple #4
0
LONG IFFParser::IFFCreateChunk(IFFCHUNK* lpck)
{
	lpck->flags = 1;	// Created

	IFFCHUNK ck;
	ck.ckID = BigEndian32(lpck->ckID);
	ck.ckSize = BigEndian32(lpck->ckSize);

	m_stream->Write(&ck, IFFCHUNKSIZE);
	lpck->dataOffset = SetFilePos(0, IO::STREAM_SEEK_CUR);

	if (lpck->ckID == ID_FORM)
	{
		ULONG grpID = BigEndian32(lpck->grpID);
		m_stream->Write(&grpID, 4);
	}

	return IFF_OK;
}