From 75437e2253fc70f4e3368c9d030415ce4ae52fa6 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> 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. Do not define it on the Windows builds; only do it for the others, such as Linux. Signed-off-by: Leah Rowe <info@minifree.org> --- common/filesystem.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/filesystem.cpp b/common/filesystem.cpp index b2b8d65..af5e537 100644 --- a/common/filesystem.cpp +++ b/common/filesystem.cpp @@ -75,6 +75,12 @@ UString getAbsPath(const UString & path) #else #include <unistd.h> #include <stdlib.h> + +/* musl libc does not define ACCESSPERMS */ +#ifndef ACCESSPERMS +#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* chmod permission: 0777 */ +#endif + bool isExistOnFs(const UString & path) { struct stat buf; @@ -103,4 +109,4 @@ UString getAbsPath(const UString & path) { return UString(abs); return path; } -#endif \ No newline at end of file +#endif -- 2.39.2