mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-18 05:34:02 -04:00
shm: unbreak build without memfd_create
New FreeBSD versions have memfd_create but other BSDs don't.
pgo/pgo.c:260:22: error: implicit declaration of function 'memfd_create' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
int mem_fd = memfd_create("foot-pgo-ptmx", MFD_CLOEXEC);
^
pgo/pgo.c:260:52: error: use of undeclared identifier 'MFD_CLOEXEC'
int mem_fd = memfd_create("foot-pgo-ptmx", MFD_CLOEXEC);
^
shm.c:13:10: fatal error: 'linux/mman.h' file not found
#include <linux/mman.h>
^~~~~~~~~~~~~~
shm.c:277:15: error: implicit declaration of function 'memfd_create' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
pool_fd = memfd_create("foot-wayland-shm-buffer-pool", MFD_CLOEXEC | MFD_ALLOW_SEALING);
^
shm.c:277:60: error: use of undeclared identifier 'MFD_CLOEXEC'
pool_fd = memfd_create("foot-wayland-shm-buffer-pool", MFD_CLOEXEC | MFD_ALLOW_SEALING);
^
shm.c:277:74: error: use of undeclared identifier 'MFD_ALLOW_SEALING'
pool_fd = memfd_create("foot-wayland-shm-buffer-pool", MFD_CLOEXEC | MFD_ALLOW_SEALING);
^
shm.c:339:15: error: use of undeclared identifier 'F_SEAL_GROW'
F_SEAL_GROW | F_SEAL_SHRINK | /*F_SEAL_FUTURE_WRITE |*/ F_SEAL_SEAL) < 0)
^
shm.c:339:29: error: use of undeclared identifier 'F_SEAL_SHRINK'
F_SEAL_GROW | F_SEAL_SHRINK | /*F_SEAL_FUTURE_WRITE |*/ F_SEAL_SEAL) < 0)
^
shm.c:339:71: error: use of undeclared identifier 'F_SEAL_SEAL'
F_SEAL_GROW | F_SEAL_SHRINK | /*F_SEAL_FUTURE_WRITE |*/ F_SEAL_SEAL) < 0)
^
shm.c:338:24: error: use of undeclared identifier 'F_ADD_SEALS'
if (fcntl(pool_fd, F_ADD_SEALS,
^
This commit is contained in:
parent
93fd77e01b
commit
fcf3f124d6
3 changed files with 25 additions and 2 deletions
|
|
@ -257,7 +257,16 @@ main(int argc, const char *const *argv)
|
|||
|
||||
close(fd);
|
||||
|
||||
#if defined(MEMFD_CREATE)
|
||||
int mem_fd = memfd_create("foot-pgo-ptmx", MFD_CLOEXEC);
|
||||
#elif defined(__FreeBSD__)
|
||||
// memfd_create on FreeBSD 13 is SHM_ANON without sealing support
|
||||
int mem_fd = shm_open(SHM_ANON, O_RDWR | O_CLOEXEC, 0600);
|
||||
#else
|
||||
char name[] = "/tmp/foot-pgo-ptmx-XXXXXX";
|
||||
int mem_fd = mkostemp(name, O_CLOEXEC);
|
||||
unlink(name);
|
||||
#endif
|
||||
if (mem_fd < 0) {
|
||||
fprintf(stderr, "error: failed to create memory FD\n");
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue