From 8e367322b2d14ed0fdda60943f3c8f9fd56f2d6e Mon Sep 17 00:00:00 2001
From: Andre Maroneze <andre.maroneze@cea.fr>
Date: Wed, 5 May 2021 17:36:31 +0200
Subject: [PATCH] [Libc] add definitions for parsing LAVA-M's base64

---
 share/libc/fcntl.h    | 4 ++++
 share/libc/sys/stat.h | 8 ++++++++
 share/libc/unistd.h   | 2 ++
 3 files changed, 14 insertions(+)

diff --git a/share/libc/fcntl.h b/share/libc/fcntl.h
index a8ea0805a83..5a48a560008 100644
--- a/share/libc/fcntl.h
+++ b/share/libc/fcntl.h
@@ -93,6 +93,10 @@ __PUSH_FC_STDLIB
 #define POSIX_FADV_SEQUENTIAL 2
 #define POSIX_FADV_WILLNEED 3
 
+// Non-POSIX, but used in some code
+#define O_BINARY 0
+#define O_TEXT 0
+
 __BEGIN_DECLS
 
 struct flock
diff --git a/share/libc/sys/stat.h b/share/libc/sys/stat.h
index 84cb1832637..190c944be82 100644
--- a/share/libc/sys/stat.h
+++ b/share/libc/sys/stat.h
@@ -30,8 +30,11 @@ __BEGIN_DECLS
 #include "../__fc_string_axiomatic.h"
 
 extern int    chmod(const char *, mode_t);
+extern int    fchmodat(int fd, const char *path, mode_t mode, int flag);
 extern int    fchmod(int, mode_t);
 extern int    fstat(int, struct stat *);
+extern int    fstatat(int fd, const char *restrict path,
+                      struct stat *restrict buf, int flag);
 
 /*@ // missing: may assign to errno: EACCES, ELOOP, ENAMETOOLONG,
     //                               ENOENT, ENOMEM, ENOTDIR, EOVERFLOW,
@@ -96,6 +99,11 @@ extern int    stat(const char *pathname, struct stat *buf);
 */
 extern mode_t umask(mode_t cmask);
 
+#define S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
+#define S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
+#define S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
+#define S_TYPEISTMO(buf) (0)
+
 __END_DECLS
 __POP_FC_STDLIB
 #endif
diff --git a/share/libc/unistd.h b/share/libc/unistd.h
index 301ce7d5e4b..c0c279864ed 100644
--- a/share/libc/unistd.h
+++ b/share/libc/unistd.h
@@ -848,6 +848,8 @@ extern int          execvp(const char *path, char *const argv[]);
 extern void         _exit(int) __attribute__ ((__noreturn__));
 
 extern int          fchown(int, uid_t, gid_t);
+extern int          fchownat(int fd, const char *path, uid_t owner,
+                             gid_t group, int flag);
 extern int          fchdir(int);
 extern int          fdatasync(int);
 
-- 
GitLab