Alfred Agrell (@Alcaro) commented about dlls/ntdll/unix/system.c:
+#if defined(__linux__) || defined(__gnu_linux__) + int fd, rc; + size_t bytes, pos = 0; + ssize_t ssz; + char filename[128]; + char *cname; + struct stat sb = {0}; + + cname = (char *) malloc(name->Length); + ntdll_wcstoumbs(name->Buffer, name->Length, cname, name->Length, FALSE); + + snprintf(filename, sizeof(filename), + "/sys/firmware/efi/efivars/%s-%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", cname, + vendor->Data1, vendor->Data2, vendor->Data3, vendor->Data4[0], vendor->Data4[1], + vendor->Data4[2], vendor->Data4[3], vendor->Data4[4], vendor->Data4[5], + vendor->Data4[6], vendor->Data4[7]); This throws a warning on 32bit builds.
../dlls/ntdll/unix/system.c:3698:47: error: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'long unsigned int' [-Werror=format=]
3698 | "/sys/firmware/efi/efivars/%s-%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", cname,
| ~~~^
| |
| unsigned int
| %08lX
3699 | vendor->Data1, vendor->Data2, vendor->Data3, vendor->Data4[0], vendor->Data4[1],
| ~~~~~~~~~~~~~
| |
| long unsigned int
They're both uint32, so I'd prefer if compiler could just shut up. But we can't really affect that on our end. Let's just explicitly cast to (unsigned). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6423#note_81255