cbmk/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch
Leah Rowe e4d2c38903 uefitool: Only define ACCESSPERMS on *nix
I re-read the modified code, and it has defines in place
for building on Windows; I was defining ACCESSPERMS
universally, but it should only be defined for non-Windows
systems, which the context in this code means Linux/BSD.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-08-14 21:48:53 +01:00

56 lines
1.7 KiB
Diff

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