예제 #1
0
파일: IsoFS.cpp 프로젝트: Traparebel/pcsx2
void IsoDirectory::Init(const IsoFileDescriptor& directoryEntry)
{
	// parse directory sector
	IsoFile dataStream (internalReader, directoryEntry);

	files.clear();

	uint remainingSize = directoryEntry.size;

	u8 b[257];

	while(remainingSize>=4) // hm hack :P
	{
		b[0] = dataStream.read<u8>();

		if(b[0]==0)
		{
			break; // or continue?
		}

		remainingSize -= b[0];

		dataStream.read(b+1, b[0]-1);

		files.push_back(IsoFileDescriptor(b, b[0]));
	}

	b[0] = 0;
}
예제 #2
0
파일: Elfheader.cpp 프로젝트: tsiru/pcsx2
// All of ElfObjects functions.
ElfObject::ElfObject(const wxString& srcfile, IsoFile isofile)
	: data( wxULongLong(isofile.getLength()).GetLo(), L"ELF headers" )
	, proghead( NULL )
	, secthead( NULL )
	, filename( srcfile )
	, header( *(ELF_HEADER*)data.GetPtr() )
{
	isCdvd = true;
	checkElfSize(data.GetSizeInBytes());
	readIso(isofile);
	initElfHeaders();
}
예제 #3
0
void ElfObject::readIso(IsoFile file)
{
	int rsize = file.read(data.GetPtr(), data.GetSizeInBytes());
	if (rsize < data.GetSizeInBytes()) throw Exception::EndOfStream(filename);
}
예제 #4
0
IsoFile::IsoFile(const IsoFile &iso)
    : RecordStream(), _extrDir("/tmp/seiscomp3"), _readingData(false) {
    setSource(iso.name());
    _recstream = RecordStream::Create("sdsarchive");
}