From: <ave...@us...> - 2009-06-03 17:38:17
|
Revision: 6279 http://gemrb.svn.sourceforge.net/gemrb/?rev=6279&view=rev Author: avenger_teambg Date: 2009-06-03 17:37:32 +0000 (Wed, 03 Jun 2009) Log Message: ----------- endian friendly ielister Modified Paths: -------------- ielister/trunk/ielister.cpp Modified: ielister/trunk/ielister.cpp =================================================================== --- ielister/trunk/ielister.cpp 2009-06-03 16:53:06 UTC (rev 6278) +++ ielister/trunk/ielister.cpp 2009-06-03 17:37:32 UTC (rev 6279) @@ -7,6 +7,9 @@ //uncomment next line for linux, comment for windows #endif +//uncomment this line for big endian +//#define ENDIAN + #ifdef WIN32 #include "listplug.h" #else @@ -19,6 +22,11 @@ #define O_BINARY 0 #define stricmp strcasecmp +#ifndef min +#define min(a,b) ( (a)>(b)?(b):(a) ) +#define max(a,b) ( (a)>(b)?(a):(b) ) +#endif + int filelength(int fhandle) { struct stat buf; @@ -396,10 +404,15 @@ int OutStream::AddDword(const char *label) { unsigned int tmpdword; + if (read(fhandle, &tmpdword, 4)!=4) { return 0; } +#ifdef ENDIAN + tmpdword = ((tmpdword & 0xFF000000) >> 24) | ((tmpdword & 0x00FF0000) >> 8) | + ((tmpdword & 0x0000FF00) << 8) | ((tmpdword & 0x000000FF) << 24); +#endif DrawIndent(); #ifdef WIN32 if(outoffset+hexnumsize+OTHERSIZE+DWORDSIZE>=buffsize) @@ -418,10 +431,14 @@ int OutStream::AddWord(const char *label) { unsigned short tmpword; + if (read(fhandle, &tmpword, 2)!=2) { return 0; } +#ifdef ENDIAN + tmpword = ((tmpword & 0xFF00) >> 8) | ((tmpword & 0x00FF) << 8); +#endif DrawIndent(); #ifdef WIN32 if(outoffset+hexnumsize+OTHERSIZE+WORDSIZE>=buffsize) @@ -440,8 +457,13 @@ int OutStream::AddPoint(const char *label) { unsigned short tmpword1, tmpword2; + read(fhandle, &tmpword1, 2); read(fhandle, &tmpword2, 2); +#ifdef ENDIAN + tmpword1 = ((tmpword1 & 0xFF00) >> 8) | ((tmpword1 & 0x00FF) << 8); + tmpword2 = ((tmpword2 & 0xFF00) >> 8) | ((tmpword2 & 0x00FF) << 8); +#endif DrawIndent(); #ifdef WIN32 if(outoffset+hexnumsize+OTHERSIZE+POINTSIZE>=buffsize) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |