Alexandre Julliard : make_xftmpl: Always output data in little-endian format.

Alexandre Julliard julliard at winehq.org
Thu Apr 3 13:31:15 CDT 2014


Module: wine
Branch: master
Commit: b8ad360bbdb69593beace414199d5e37bf83f843
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b8ad360bbdb69593beace414199d5e37bf83f843

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Apr  3 11:31:59 2014 +0200

make_xftmpl: Always output data in little-endian format.

---

 tools/make_xftmpl.c |   25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/tools/make_xftmpl.c b/tools/make_xftmpl.c
index 75b47cc..88a2e84 100644
--- a/tools/make_xftmpl.c
+++ b/tools/make_xftmpl.c
@@ -188,12 +188,29 @@ static inline BOOL write_byte(struct parser *parser, BYTE value)
 
 static inline BOOL write_word(struct parser *parser, WORD value)
 {
-    return write_bytes(parser, &value, sizeof(value));
+    return write_byte( parser, value ) &&
+           write_byte( parser, value >> 8 );
 }
 
 static inline BOOL write_dword(struct parser *parser, DWORD value)
 {
-    return write_bytes(parser, &value, sizeof(value));
+    return write_word( parser, value ) &&
+           write_word( parser, value >> 16 );
+}
+
+static inline BOOL write_float(struct parser *parser, float value)
+{
+    DWORD val;
+    memcpy( &val, &value, sizeof(value) );
+    return write_dword( parser, val );
+}
+
+static inline BOOL write_guid(struct parser *parser, const GUID *guid)
+{
+    return write_dword( parser, guid->Data1 ) &&
+           write_word( parser, guid->Data2 ) &&
+           write_word( parser, guid->Data3 ) &&
+           write_bytes( parser, guid->Data4, sizeof(guid->Data4) );
 }
 
 static int compare_names(const void *a, const void *b)
@@ -240,7 +257,7 @@ static BOOL parse_guid(struct parser *parser)
     guid.Data4[7] = tab[9];
 
     return write_word(parser, TOKEN_GUID) &&
-           write_bytes(parser, &guid, sizeof(guid));
+           write_guid(parser, &guid);
 }
 
 static BOOL parse_name(struct parser *parser)
@@ -291,7 +308,7 @@ static BOOL parse_number(struct parser *parser)
         ret = sscanf(buffer, "%f", &value);
         if (!ret) fatal_error( parser, "invalid float token\n" );
         ret = write_word(parser, TOKEN_FLOAT) &&
-              write_bytes(parser, &value, sizeof(value));
+              write_float(parser, value);
     } else {
         int value;
         ret = sscanf(buffer, "%d", &value);




More information about the wine-cvs mailing list