// 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; }
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"); }