summaryrefslogtreecommitdiff
path: root/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch
blob: 56ba0cb614275560924be89876aae069292b7435 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
From 35f5bbf5aa7dc32f0140147737af73fd3866f455 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.

Signed-off-by: Leah Rowe <info@minifree.org>
---
 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 <sys/stat.h>
 #include <fstream>
 
+/* 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