summaryrefslogtreecommitdiff
path: root/user/xsettingsd/endian.patch
blob: c5ac01b85f199426c185dc739633259a636f66d8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
--- xsettingsd-1.0.2/setting_test.cc.old	2021-01-08 12:00:13.000000000 -0600
+++ xsettingsd-1.0.2/setting_test.cc	2022-06-05 22:19:35.511364966 -0500
@@ -53,14 +53,20 @@
   IntegerSetting setting(5);
   setting.UpdateSerial(NULL, 3);
   ASSERT_TRUE(setting.Write("name", &writer));
-  // TODO: Won't work on big-endian systems.
   const char expected[] = {
     0x0,                     // type
     0x0,                     // unused
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    0x0, 0x4,                // name-len
+    0x6e, 0x61, 0x6d, 0x65,  // "name" (multiple of 4, so no padding)
+    0x0, 0x0, 0x0, 0x3,      // serial
+    0x0, 0x0, 0x0, 0x5,      // value
+#else
     0x4, 0x0,                // name-len
     0x6e, 0x61, 0x6d, 0x65,  // "name" (multiple of 4, so no padding)
     0x3, 0x0, 0x0, 0x0,      // serial
     0x5, 0x0, 0x0, 0x0,      // value
+#endif
   };
   ASSERT_EQ(sizeof(expected), writer.bytes_written());
   EXPECT_PRED_FORMAT3(BytesAreEqual, expected, buffer, sizeof(expected));
@@ -74,15 +80,22 @@
   StringSetting setting("testing");
   setting.UpdateSerial(NULL, 5);
   ASSERT_TRUE(setting.Write("setting", &writer));
-  // TODO: Won't work on big-endian systems.
   const char expected[] = {
     0x1,                     // type
     0x0,                     // unused
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    0x0, 0x7,                // name-len
+    0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,  // "setting" (name)
+    0x0,                     // padding
+    0x0, 0x0, 0x0, 0x5,      // serial
+    0x0, 0x0, 0x0, 0x7,      // value-len
+#else
     0x7, 0x0,                // name-len
     0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,  // "setting" (name)
     0x0,                     // padding
     0x5, 0x0, 0x0, 0x0,      // serial
     0x7, 0x0, 0x0, 0x0,      // value-len
+#endif
     0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,  // "testing" (value)
     0x0,                     // padding
   };
@@ -98,10 +111,18 @@
   ColorSetting setting(32768, 65535, 0, 255);
   setting.UpdateSerial(NULL, 2);
   ASSERT_TRUE(setting.Write("name", &writer));
-  // TODO: Won't work on big-endian systems.
   const char expected[] = {
     0x2,                     // type
     0x0,                     // unused
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    0x0, 0x4,                // name-len
+    0x6e, 0x61, 0x6d, 0x65,  // "name" (multiple of 4, so no padding)
+    0x0, 0x0, 0x0, 0x2,      // serial
+    0x80, 0x0,               // red
+    0x0, 0x0,                // blue (yes, the order is strange)
+    0xff, 0xff,              // green
+    0x0, 0xff,               // alpha
+#else
     0x4, 0x0,                // name-len
     0x6e, 0x61, 0x6d, 0x65,  // "name" (multiple of 4, so no padding)
     0x2, 0x0, 0x0, 0x0,      // serial
@@ -109,6 +130,7 @@
     0x0, 0x0,                // blue (yes, the order is strange)
     0xff, 0xff,              // green
     0xff, 0x0,               // alpha
+#endif
   };
   ASSERT_EQ(sizeof(expected), writer.bytes_written());
   EXPECT_PRED_FORMAT3(BytesAreEqual, expected, buffer, sizeof(expected));