The fci_get_little_endian... and fci_set_little_endian... functions
don't really set and unset little endianes, they do the same thing: merely swapping bytes from one endianes to the other.
This commit is contained in:
parent
30e248ff90
commit
0cd9009d48
|
@ -49,6 +49,16 @@ There is still some work to be done:
|
|||
|
||||
#include "wine/debug.h"
|
||||
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define fci_endian_ulong(x) RtlUlongByteSwap(x)
|
||||
#define fci_endian_uword(x) RtlUshortByteSwap(x)
|
||||
#else
|
||||
#define fci_endian_ulong(x) (x)
|
||||
#define fci_endian_uword(x) (x)
|
||||
#endif
|
||||
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(cabinet);
|
||||
|
||||
typedef struct {
|
||||
|
@ -442,41 +452,7 @@ static cab_ULONG fci_get_checksum(void *pv, UINT cb, CHECKSUM seed)
|
|||
} /* end of fci_get_checksum */
|
||||
|
||||
|
||||
static inline cab_ULONG fci_set_little_endian_ulong( cab_ULONG i )
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
return RtlUlongByteSwap( i );
|
||||
#else
|
||||
return i;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline cab_ULONG fci_get_little_endian_ulong( cab_ULONG i )
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
return RtlUlongByteSwap( i );
|
||||
#else
|
||||
return i;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline cab_UWORD fci_set_little_endian_uword( cab_UWORD i )
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
return RtlUshortByteSwap( i );
|
||||
#else
|
||||
return i;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline cab_UWORD fci_get_little_endian_uword( cab_UWORD i )
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
return RtlUshortByteSwap( i );
|
||||
#else
|
||||
return i;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static BOOL fci_flushfolder_copy_cfdata(HFCI hfci, char* buffer, UINT cbReserveCFData,
|
||||
|
@ -634,8 +610,8 @@ static BOOL fci_flushfolder_copy_cfdata(HFCI hfci, char* buffer, UINT cbReserveC
|
|||
}
|
||||
|
||||
/* set little endian */
|
||||
pcfdata->cbData=fci_set_little_endian_uword(pcfdata->cbData);
|
||||
pcfdata->cbUncomp=fci_set_little_endian_uword(pcfdata->cbUncomp);
|
||||
pcfdata->cbData=fci_endian_uword(pcfdata->cbData);
|
||||
pcfdata->cbUncomp=fci_endian_uword(pcfdata->cbUncomp);
|
||||
|
||||
/* get checksum and write to cfdata.csum */
|
||||
pcfdata->csum = fci_get_checksum( &(pcfdata->cbData),
|
||||
|
@ -644,7 +620,7 @@ static BOOL fci_flushfolder_copy_cfdata(HFCI hfci, char* buffer, UINT cbReserveC
|
|||
pcfdata->cbData, 0 ) );
|
||||
|
||||
/* set little endian */
|
||||
pcfdata->csum=fci_set_little_endian_ulong(pcfdata->csum);
|
||||
pcfdata->csum=fci_endian_ulong(pcfdata->csum);
|
||||
|
||||
/* write cfdata with checksum to p_fci_internal->handleCFDATA2 */
|
||||
if( PFCI_WRITE(hfci, p_fci_internal->handleCFDATA2, /* file handle */
|
||||
|
@ -659,9 +635,9 @@ static BOOL fci_flushfolder_copy_cfdata(HFCI hfci, char* buffer, UINT cbReserveC
|
|||
p_fci_internal->sizeFileCFDATA2 += sizeof(CFDATA)+cbReserveCFData;
|
||||
|
||||
/* reset little endian */
|
||||
pcfdata->cbData=fci_get_little_endian_uword(pcfdata->cbData);
|
||||
pcfdata->cbUncomp=fci_get_little_endian_uword(pcfdata->cbUncomp);
|
||||
pcfdata->csum=fci_get_little_endian_ulong(pcfdata->csum);
|
||||
pcfdata->cbData=fci_endian_uword(pcfdata->cbData);
|
||||
pcfdata->cbUncomp=fci_endian_uword(pcfdata->cbUncomp);
|
||||
pcfdata->csum=fci_endian_ulong(pcfdata->csum);
|
||||
|
||||
/* write compressed data into p_fci_internal->handleCFDATA2 */
|
||||
if( PFCI_WRITE(hfci, p_fci_internal->handleCFDATA2, /* file handle */
|
||||
|
@ -1013,12 +989,12 @@ static BOOL fci_flushfolder_copy_cffile(HFCI hfci, int* err, int handleCFFILE1ne
|
|||
}
|
||||
|
||||
/* set little endian */
|
||||
cffile.cbFile=fci_set_little_endian_ulong(cffile.cbFile);
|
||||
cffile.uoffFolderStart=fci_set_little_endian_ulong(cffile.uoffFolderStart);
|
||||
cffile.iFolder=fci_set_little_endian_uword(cffile.iFolder);
|
||||
cffile.date=fci_set_little_endian_uword(cffile.date);
|
||||
cffile.time=fci_set_little_endian_uword(cffile.time);
|
||||
cffile.attribs=fci_set_little_endian_uword(cffile.attribs);
|
||||
cffile.cbFile=fci_endian_ulong(cffile.cbFile);
|
||||
cffile.uoffFolderStart=fci_endian_ulong(cffile.uoffFolderStart);
|
||||
cffile.iFolder=fci_endian_uword(cffile.iFolder);
|
||||
cffile.date=fci_endian_uword(cffile.date);
|
||||
cffile.time=fci_endian_uword(cffile.time);
|
||||
cffile.attribs=fci_endian_uword(cffile.attribs);
|
||||
|
||||
/* write cffile to p_fci_internal->handleCFFILE2 */
|
||||
if( PFCI_WRITE(hfci, p_fci_internal->handleCFFILE2, /* file handle */
|
||||
|
@ -1033,12 +1009,12 @@ static BOOL fci_flushfolder_copy_cffile(HFCI hfci, int* err, int handleCFFILE1ne
|
|||
p_fci_internal->sizeFileCFFILE2 += sizeof(cffile);
|
||||
|
||||
/* reset little endian */
|
||||
cffile.cbFile=fci_get_little_endian_ulong(cffile.cbFile);
|
||||
cffile.uoffFolderStart=fci_get_little_endian_ulong(cffile.uoffFolderStart);
|
||||
cffile.iFolder=fci_get_little_endian_uword(cffile.iFolder);
|
||||
cffile.date=fci_get_little_endian_uword(cffile.date);
|
||||
cffile.time=fci_get_little_endian_uword(cffile.time);
|
||||
cffile.attribs=fci_get_little_endian_uword(cffile.attribs);
|
||||
cffile.cbFile=fci_endian_ulong(cffile.cbFile);
|
||||
cffile.uoffFolderStart=fci_endian_ulong(cffile.uoffFolderStart);
|
||||
cffile.iFolder=fci_endian_uword(cffile.iFolder);
|
||||
cffile.date=fci_endian_uword(cffile.date);
|
||||
cffile.time=fci_endian_uword(cffile.time);
|
||||
cffile.attribs=fci_endian_uword(cffile.attribs);
|
||||
|
||||
/* write file name to p_fci_internal->handleCFFILE2 */
|
||||
if( PFCI_WRITE(hfci, p_fci_internal->handleCFFILE2, /* file handle */
|
||||
|
@ -1644,16 +1620,16 @@ static BOOL fci_flush_cabinet(
|
|||
}
|
||||
|
||||
/* set little endian */
|
||||
cfheader.reserved1=fci_set_little_endian_ulong(cfheader.reserved1);
|
||||
cfheader.cbCabinet=fci_set_little_endian_ulong(cfheader.cbCabinet);
|
||||
cfheader.reserved2=fci_set_little_endian_ulong(cfheader.reserved2);
|
||||
cfheader.coffFiles=fci_set_little_endian_ulong(cfheader.coffFiles);
|
||||
cfheader.reserved3=fci_set_little_endian_ulong(cfheader.reserved3);
|
||||
cfheader.cFolders=fci_set_little_endian_uword(cfheader.cFolders);
|
||||
cfheader.cFiles=fci_set_little_endian_uword(cfheader.cFiles);
|
||||
cfheader.flags=fci_set_little_endian_uword(cfheader.flags);
|
||||
cfheader.setID=fci_set_little_endian_uword(cfheader.setID);
|
||||
cfheader.iCabinet=fci_set_little_endian_uword(cfheader.iCabinet);
|
||||
cfheader.reserved1=fci_endian_ulong(cfheader.reserved1);
|
||||
cfheader.cbCabinet=fci_endian_ulong(cfheader.cbCabinet);
|
||||
cfheader.reserved2=fci_endian_ulong(cfheader.reserved2);
|
||||
cfheader.coffFiles=fci_endian_ulong(cfheader.coffFiles);
|
||||
cfheader.reserved3=fci_endian_ulong(cfheader.reserved3);
|
||||
cfheader.cFolders=fci_endian_uword(cfheader.cFolders);
|
||||
cfheader.cFiles=fci_endian_uword(cfheader.cFiles);
|
||||
cfheader.flags=fci_endian_uword(cfheader.flags);
|
||||
cfheader.setID=fci_endian_uword(cfheader.setID);
|
||||
cfheader.iCabinet=fci_endian_uword(cfheader.iCabinet);
|
||||
|
||||
/* write CFHEADER into cabinet file */
|
||||
if( PFCI_WRITE(hfci, handleCABINET, /* file handle */
|
||||
|
@ -1666,16 +1642,16 @@ static BOOL fci_flush_cabinet(
|
|||
/* TODO error handling of err */
|
||||
|
||||
/* reset little endian */
|
||||
cfheader.reserved1=fci_get_little_endian_ulong(cfheader.reserved1);
|
||||
cfheader.cbCabinet=fci_get_little_endian_ulong(cfheader.cbCabinet);
|
||||
cfheader.reserved2=fci_get_little_endian_ulong(cfheader.reserved2);
|
||||
cfheader.coffFiles=fci_get_little_endian_ulong(cfheader.coffFiles);
|
||||
cfheader.reserved3=fci_get_little_endian_ulong(cfheader.reserved3);
|
||||
cfheader.cFolders=fci_get_little_endian_uword(cfheader.cFolders);
|
||||
cfheader.cFiles=fci_get_little_endian_uword(cfheader.cFiles);
|
||||
cfheader.flags=fci_get_little_endian_uword(cfheader.flags);
|
||||
cfheader.setID=fci_get_little_endian_uword(cfheader.setID);
|
||||
cfheader.iCabinet=fci_get_little_endian_uword(cfheader.iCabinet);
|
||||
cfheader.reserved1=fci_endian_ulong(cfheader.reserved1);
|
||||
cfheader.cbCabinet=fci_endian_ulong(cfheader.cbCabinet);
|
||||
cfheader.reserved2=fci_endian_ulong(cfheader.reserved2);
|
||||
cfheader.coffFiles=fci_endian_ulong(cfheader.coffFiles);
|
||||
cfheader.reserved3=fci_endian_ulong(cfheader.reserved3);
|
||||
cfheader.cFolders=fci_endian_uword(cfheader.cFolders);
|
||||
cfheader.cFiles=fci_endian_uword(cfheader.cFiles);
|
||||
cfheader.flags=fci_endian_uword(cfheader.flags);
|
||||
cfheader.setID=fci_endian_uword(cfheader.setID);
|
||||
cfheader.iCabinet=fci_endian_uword(cfheader.iCabinet);
|
||||
|
||||
if( cfheader.flags & cfheadRESERVE_PRESENT ) {
|
||||
/* NOTE: No checks for maximum value overflows as designed by MS!!! */
|
||||
|
@ -1689,7 +1665,7 @@ static BOOL fci_flush_cabinet(
|
|||
}
|
||||
|
||||
/* set little endian */
|
||||
cfreserved.cbCFHeader=fci_set_little_endian_uword(cfreserved.cbCFHeader);
|
||||
cfreserved.cbCFHeader=fci_endian_uword(cfreserved.cbCFHeader);
|
||||
|
||||
/* write reserved info into cabinet file */
|
||||
if( PFCI_WRITE(hfci, handleCABINET, /* file handle */
|
||||
|
@ -1702,7 +1678,7 @@ static BOOL fci_flush_cabinet(
|
|||
/* TODO error handling of err */
|
||||
|
||||
/* reset little endian */
|
||||
cfreserved.cbCFHeader=fci_get_little_endian_uword(cfreserved.cbCFHeader);
|
||||
cfreserved.cbCFHeader=fci_endian_uword(cfreserved.cbCFHeader);
|
||||
}
|
||||
|
||||
/* add optional reserved area */
|
||||
|
@ -1830,9 +1806,9 @@ static BOOL fci_flush_cabinet(
|
|||
}
|
||||
|
||||
/* set little endian */
|
||||
cffolder.coffCabStart=fci_set_little_endian_ulong(cffolder.coffCabStart);
|
||||
cffolder.cCFData=fci_set_little_endian_uword(cffolder.cCFData);
|
||||
cffolder.typeCompress=fci_set_little_endian_uword(cffolder.typeCompress);
|
||||
cffolder.coffCabStart=fci_endian_ulong(cffolder.coffCabStart);
|
||||
cffolder.cCFData=fci_endian_uword(cffolder.cCFData);
|
||||
cffolder.typeCompress=fci_endian_uword(cffolder.typeCompress);
|
||||
|
||||
/* write cffolder to cabinet file */
|
||||
if( PFCI_WRITE(hfci, handleCABINET, /* file handle */
|
||||
|
@ -1845,9 +1821,9 @@ static BOOL fci_flush_cabinet(
|
|||
/* TODO error handling of err */
|
||||
|
||||
/* reset little endian */
|
||||
cffolder.coffCabStart=fci_get_little_endian_ulong(cffolder.coffCabStart);
|
||||
cffolder.cCFData=fci_get_little_endian_uword(cffolder.cCFData);
|
||||
cffolder.typeCompress=fci_get_little_endian_uword(cffolder.typeCompress);
|
||||
cffolder.coffCabStart=fci_endian_ulong(cffolder.coffCabStart);
|
||||
cffolder.cCFData=fci_endian_uword(cffolder.cCFData);
|
||||
cffolder.typeCompress=fci_endian_uword(cffolder.typeCompress);
|
||||
|
||||
/* add optional reserved area */
|
||||
|
||||
|
|
Loading…
Reference in New Issue