From 35f5bbf5aa7dc32f0140147737af73fd3866f455 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 28 Jul 2024 16:04:30 +0100 Subject: [PATCH 1/1] common/filesystem: define ACCESSPERMS if undefined normally defined in sys/stat.h on various libc implementations, but musl libc doesn't seem to have it, leading to this build issue: common/filesystem.cpp:86:38: error: 'ACCESSPERMS' was not declared in this scope 86 | return (mkdir(dir.toLocal8Bit(), ACCESSPERMS) == 0); ACCESSPERMS is typically defined as the result of bitwise OR: S_IRWXU | S_IRWXG | S_IRWXO This creates the chmod permission 0777, used on the mkdir() call. ACCESSPERMS is supported on GNU C Library, for compatibility with BSD libc implementations; the latter also implements ALLPERMS and DEFFILEMODE, which don't seem to be used by uefitool regardless. Signed-off-by: Leah Rowe --- common/filesystem.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/common/filesystem.cpp b/common/filesystem.cpp index b2b8d65..9672e07 100644 --- a/common/filesystem.cpp +++ b/common/filesystem.cpp @@ -15,6 +15,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include +/* musl libc does not define ACCESSPERMS, seen on glibc and many bsd libc. + * let's do alpine linux users a massive favour, so that the code compiles. + */ +#ifndef ACCESSPERMS +#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* chmod permission: 0777 */ +#endif + bool readFileIntoBuffer(const UString& inPath, UByteArray& buf) { if (!isExistOnFs(inPath)) @@ -103,4 +110,4 @@ UString getAbsPath(const UString & path) { return UString(abs); return path; } -#endif \ No newline at end of file +#endif -- 2.39.2