Changed: Some Big endian swaps (for PowerPC especially)

This commit is contained in:
kervala 2014-07-19 11:23:49 +02:00
parent 42eeb9ad59
commit 3fb0dfe0c2
3 changed files with 43 additions and 4 deletions

View file

@ -61,6 +61,10 @@ uint8 getType(const std::string &sFileNameDest)
return NOT_DEFINED; return NOT_DEFINED;
} }
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(dds);
#endif
if (fread(&h,sizeof(CS3TCCompressor::DDS_HEADER),1,f) != 1) if (fread(&h,sizeof(CS3TCCompressor::DDS_HEADER),1,f) != 1)
{ {
fclose(f); fclose(f);

View file

@ -69,11 +69,20 @@ int main(int argc, char* argv[])
if (fread (&size, sizeof(uint32), 1, file) != 1) if (fread (&size, sizeof(uint32), 1, file) != 1)
break; break;
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(size);
#endif
while (1) while (1)
{ {
uint32 start; uint32 start;
if (fread (&start, sizeof(uint32), 1, file) != 1) if (fread (&start, sizeof(uint32), 1, file) != 1)
break; break;
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(start);
#endif
string category; string category;
if (!readString (category, file)) if (!readString (category, file))
break; break;

View file

@ -94,7 +94,15 @@ struct BNPHeader
if (f == NULL) return false; if (f == NULL) return false;
uint32 nNbFile = (uint32)Files.size(); uint32 nNbFile = (uint32)Files.size();
if (fwrite (&nNbFile, sizeof(uint32), 1, f) != 1)
// value to be serialized
uint32 nNbFile2 = nNbFile;
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(nNbFile2);
#endif
if (fwrite (&nNbFile2, sizeof(uint32), 1, f) != 1)
{ {
fclose(f); fclose(f);
return false; return false;
@ -115,20 +123,38 @@ struct BNPHeader
return false; return false;
} }
if (fwrite (&Files[i].Size, sizeof(uint32), 1, f) != 1) uint32 nFileSize = Files[i].Size;
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(nFileSize);
#endif
if (fwrite (&nFileSize, sizeof(uint32), 1, f) != 1)
{ {
fclose(f); fclose(f);
return false; return false;
} }
if (fwrite (&Files[i].Pos, sizeof(uint32), 1, f) != 1) uint32 nFilePos = Files[i].Pos;
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(nFilePos);
#endif
if (fwrite (&nFilePos, sizeof(uint32), 1, f) != 1)
{ {
fclose(f); fclose(f);
return false; return false;
} }
} }
if (fwrite (&OffsetFromBeginning, sizeof(uint32), 1, f) != 1) uint32 nOffsetFromBeginning = OffsetFromBeginning;
#ifdef NL_BIG_ENDIAN
NLMISC_BSWAP32(nOffsetFromBeginning);
#endif
if (fwrite (&nOffsetFromBeginning, sizeof(uint32), 1, f) != 1)
{ {
fclose(f); fclose(f);
return false; return false;