summaryrefslogtreecommitdiff
path: root/user/xsettingsd/endian.patch
diff options
context:
space:
mode:
Diffstat (limited to 'user/xsettingsd/endian.patch')
-rw-r--r--user/xsettingsd/endian.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/user/xsettingsd/endian.patch b/user/xsettingsd/endian.patch
new file mode 100644
index 000000000..c5ac01b85
--- /dev/null
+++ b/user/xsettingsd/endian.patch
@@ -0,0 +1,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));