[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