[Scummvm-cvs-logs] SF.net SVN: scummvm: [23843] scummvm/trunk/engines/kyra/resource.cpp
Oystein Eftevaag
oystein at geheb.com
Sat Sep 9 17:02:44 CEST 2006
Actually it looks like I was completely wrong about this, nevermind me :)
Carry on!
Oystein Eftevaag wrote:
> Just a quick note:
>
> FilesystemNode *fsNode = new FilesystemNode(filename);
>
> That was a semi-dirty hack I added to be able to get the basename
> of a file, which is needed to be able to actually unload named
> PAK files later in the kyra code. With your fix it becomes
> somewhat redundant (and breaks Kyra2 :) ).
>
> The best solution would be some proper way of getting the basename of
> a file from the File class, really.
>
>
> agent-q at users.sourceforge.net wrote:
>
>> Revision: 23843
>> http://svn.sourceforge.net/scummvm/?rev=23843&view=rev
>> Author: agent-q
>> Date: 2006-09-09 05:21:49 -0700 (Sat, 09 Sep 2006)
>>
>> Log Message:
>> -----------
>> Fixed a bug in loadPakFile(), and changed PAKFile constructor so that it doesn't load the entire file.
>>
>> Modified Paths:
>> --------------
>> scummvm/trunk/engines/kyra/resource.cpp
>>
>> Modified: scummvm/trunk/engines/kyra/resource.cpp
>> ===================================================================
>> --- scummvm/trunk/engines/kyra/resource.cpp 2006-09-09 10:47:32 UTC (rev 23842)
>> +++ scummvm/trunk/engines/kyra/resource.cpp 2006-09-09 12:21:49 UTC (rev 23843)
>> @@ -94,8 +94,9 @@
>> return true;
>>
>> uint32 size = 0;
>> - FilesystemNode *fsNode = new FilesystemNode(filename);
>>
>> + FilesystemNode *fsNode = new FilesystemNode(ConfMan.get("path") + filename);
>> +
>> Common::File handle;
>> if (!fileHandle(filename.c_str(), &size, handle)) {
>> warning("couldn't load file: '%s'", filename.c_str());
>> @@ -265,38 +266,43 @@
>> }
>>
>> uint32 filesize = pakfile.size();
>> - buffer = new uint8[filesize];
>> - assert(buffer);
>>
>> - pakfile.read(buffer, filesize);
>> - pakfile.close();
>> -
>> // works with the file
>> uint32 pos = 0, startoffset = 0, endoffset = 0;
>> +
>> + uint32 startOffsetFromFile;
>> + pakfile.read(&startOffsetFromFile, sizeof(uint32));
>>
>> if (!_isAmiga) {
>> - startoffset = READ_LE_UINT32(buffer + pos);
>> + startoffset = READ_LE_UINT32(&startOffsetFromFile);
>> } else {
>> - startoffset = READ_BE_UINT32(buffer + pos);
>> + startoffset = READ_BE_UINT32(&startOffsetFromFile);
>> }
>> pos += 4;
>>
>> while (pos < filesize) {
>> PakChunk chunk;
>> -
>> - // saves the name
>> - if (!(*((const char*)buffer + pos)))
>> + uint8 buffer[256];
>> + uint32 nameLength;
>> +
>> + // Move to the position of the next file entry
>> + pakfile.seek(pos);
>> +
>> + // Read in the header
>> + pakfile.read(&buffer, 256);
>> +
>> + // Quit now if we encounter an empty string
>> + if (!(*((const char*)buffer)))
>> break;
>>
>> - chunk._name = (const char*)buffer + pos;
>> - pos += strlen(chunk._name.c_str()) + 1;
>> + chunk._name = (const char*)buffer;
>> + nameLength = strlen(chunk._name.c_str()) + 1;
>>
>> if (!_isAmiga) {
>> - endoffset = READ_LE_UINT32(buffer + pos);
>> + endoffset = READ_LE_UINT32(buffer + nameLength);
>> } else {
>> - endoffset = READ_BE_UINT32(buffer + pos);
>> + endoffset = READ_BE_UINT32(buffer + nameLength);
>> }
>> - pos += 4;
>>
>> if (endoffset == 0) {
>> endoffset = filesize;
>> @@ -311,9 +317,9 @@
>> break;
>>
>> startoffset = endoffset;
>> + pos += nameLength + 4;
>> }
>> _open = true;
>> - delete [] buffer;
>>
>> _filename = file;
>> _physfile = physfile;
>>
>>
>> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
>>
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>> _______________________________________________
>> Scummvm-cvs-logs mailing list
>> Scummvm-cvs-logs at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/scummvm-cvs-logs
>>
>>
>
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Scummvm-cvs-logs mailing list
> Scummvm-cvs-logs at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scummvm-cvs-logs
>
More information about the Scummvm-git-logs
mailing list