[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-patches
Subject: cabinet-fci-endian
From: "Gerold J. Wucherpfennig" <gjwucherpfennig () gmx ! net>
Date: 2005-07-09 20:54:33
Message-ID: 200507092254.33605.gjwucherpfennig () gmx ! net
[Download RAW message or body]
OK, I set up my personal svk repository.
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.
Please apply.
["cabinet-fci-endian.diff" (text/x-diff)]
=== fci.c
==================================================================
--- fci.c (/cabinet/merge) (revision 55)
+++ fci.c (/cabinet/branches/endian) (revision 55)
@@ -49,6 +49,16 @@
#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,43 +452,9 @@
} /* 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,
PFNFCISTATUS pfnfcis, int* err, int handleCFDATA1new,
cab_ULONG* psizeFileCFDATA1new, cab_ULONG* payload)
@@ -634,8 +610,8 @@
}
/* 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 @@
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 @@
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 @@
}
/* 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 @@
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 @@
}
/* 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 @@
/* 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 @@
}
/* 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 @@
/* 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 @@
}
/* 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 @@
/* 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 */
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic