mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-06 02:55:49 +03:00
LibCore: Allow LibCore to be compiled on macOS host
Compiling LibCore on macOS is needed if one wants to compile host tools (like IPCCompiler) on a non Linux host. These changes could be possibly reverted once "event loop" functionality and "base library" (Vector, String etc.) will be split in two separate libraries, updating all relevant projects.
This commit is contained in:
parent
aab412bd85
commit
1222b94ab8
Notes:
sideshowbarker
2024-07-19 17:42:08 +09:00
Author: https://github.com/Pagghiu Commit: https://github.com/SerenityOS/serenity/commit/1222b94ab83 Pull-request: https://github.com/SerenityOS/serenity/pull/841 Reviewed-by: https://github.com/awesomekling Reviewed-by: https://github.com/bugaevc
@ -136,7 +136,14 @@ CEventLoop::CEventLoop()
|
||||
|
||||
if (!s_main_event_loop) {
|
||||
s_main_event_loop = this;
|
||||
#if defined(SOCK_NONBLOCK)
|
||||
int rc = pipe2(s_wake_pipe_fds, O_CLOEXEC);
|
||||
#else
|
||||
int rc = pipe(s_wake_pipe_fds);
|
||||
fcntl(s_wake_pipe_fds[0], F_SETFD, FD_CLOEXEC);
|
||||
fcntl(s_wake_pipe_fds[1], F_SETFD, FD_CLOEXEC);
|
||||
|
||||
#endif
|
||||
ASSERT(rc == 0);
|
||||
s_event_loop_stack->append(this);
|
||||
|
||||
|
@ -5,6 +5,9 @@
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#ifndef SOCK_NONBLOCK
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
|
||||
CLocalServer::CLocalServer(CObject* parent)
|
||||
: CObject(parent)
|
||||
@ -71,7 +74,14 @@ bool CLocalServer::listen(const String& address)
|
||||
|
||||
int rc;
|
||||
|
||||
#ifdef SOCK_NONBLOCK
|
||||
m_fd = socket(AF_LOCAL, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0);
|
||||
#else
|
||||
m_fd = socket(AF_LOCAL, SOCK_STREAM, 0);
|
||||
int option = 1;
|
||||
ioctl(m_fd, FIONBIO, &option);
|
||||
fcntl(m_fd, F_SETFD, FD_CLOEXEC);
|
||||
#endif
|
||||
ASSERT(m_fd >= 0);
|
||||
|
||||
auto socket_address = CSocketAddress::local(address);
|
||||
|
@ -2,6 +2,10 @@
|
||||
#include <sys/socket.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef SOCK_NONBLOCK
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
|
||||
CLocalSocket::CLocalSocket(int fd, CObject* parent)
|
||||
: CSocket(CSocket::Type::Local, parent)
|
||||
{
|
||||
@ -15,7 +19,16 @@ CLocalSocket::CLocalSocket(int fd, CObject* parent)
|
||||
CLocalSocket::CLocalSocket(CObject* parent)
|
||||
: CSocket(CSocket::Type::Local, parent)
|
||||
{
|
||||
|
||||
#ifdef SOCK_NONBLOCK
|
||||
int fd = socket(AF_LOCAL, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0);
|
||||
#else
|
||||
int fd = socket(AF_LOCAL, SOCK_STREAM, 0);
|
||||
int option = 1;
|
||||
ioctl(fd, FIONBIO, &option);
|
||||
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||
#endif
|
||||
|
||||
if (fd < 0) {
|
||||
set_error(errno);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user