Esempio n. 1
0
// WriteTest
void
ResourceFile::WriteTest()
{
	uint32 size = GetResourcesSize();
	if (size != fFileSize) {
		throw Exception("Calculated resources size differs from actual size "
						"in file: %lu vs %Ld.", size, fFileSize);
	}
	char* buffer1 = new char[size];
	char* buffer2 = new char[size];
	try {
		WriteResources(buffer1, size);
		read_exactly(fFile, 0, buffer2, size,
					 "Write test: Error reading resources.");
		for (uint32 i = 0; i < size; i++) {
			if (buffer1[i] != buffer2[i]) {
				off_t filePosition = fFile.GetOffset() + i;
				throw Exception("Written resources differ from those in file. "
								"First difference at byte %lu (file position "
								"%Ld): %x vs %x.", i, filePosition,
								(int)buffer1[i] & 0xff,
								(int)buffer2[i] & 0xff);
			}
		}
	} catch (Exception exception) {
		delete[] buffer1;
		delete[] buffer2;
		throw exception;
	}
	delete[] buffer1;
	delete[] buffer2;
}
Esempio n. 2
0
void ResourceMain()
{
	SetError_Mode(ErrorMode_Full);

	Section = SECT_data;
	pass_count = 0;

	ResType = 0;

	DEBUG = 0;
	LIST = 0;
	INFO = 0;

	AsmAllocMem();
	SetResPtrs();

	ResetResource();

	CurrentResource = 1;

	Pass = 1;
	pass_count++;

	ResourceComp();
	FinalizeResource();

	printf("Pass 1 - Size %d\n", ResIP);

	//*** Pass 2 ***

	Section = SECT_data;
	ResType = 0;

	DEBUG = 0;
	LIST = 0;
	INFO = 0;

	AsmAllocMem();
	SetResPtrs();

	ResetResource();

	CurrentResource = 1;

	Pass = 2;
	pass_count++;

	ResourceComp();

	FinalizeResource();

	WriteResources();

	printf("Pass 2 - Size %d\n", ResIP);

	AsmDisposeMem();

	printf("Done...\n");
}