]> PatchyGit - patchyircd.git/commitdiff
make libuv required dependency
authorEgor <egor@patchysicp.xyz>
Wed, 4 Jun 2025 23:22:20 +0000 (02:22 +0300)
committerEgor <egor@patchysicp.xyz>
Wed, 4 Jun 2025 23:22:20 +0000 (02:22 +0300)
Makefile
config.example.mk
src/job.cpp
src/main.cpp
src/netpoll.cpp

index 1d0d8d6..73bd84f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,10 +19,7 @@ SOURCES := $(ircd_SOURCES) $(filter-out $(ircd_SOURCES),$(setpass_SOURCES))
 
 -include config.mk
 
-ifdef USE_UV
-CXXFLAGS += -DHAS_UV
 WANTLIBS += libuv
-endif
 
 ifdef USE_TLS
 CXXFLAGS += -DHAS_TLS
index 0ecbd90..1828d37 100644 (file)
@@ -3,6 +3,5 @@ CXX=clang++
 WARNS=-Wall -Wextra -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
 #-Wmissing-variable-declarations
 CXXFLAGS=$(WARNS) -std=c++20 -D_GNU_SOURCE
-USE_UV=1
 USE_TLS=1
 USE_LUA=1
index ecca38f..d8f2df4 100644 (file)
@@ -6,6 +6,7 @@
 #include <unistd.h>
 #include <signal.h>
 #include <sys/wait.h>
+#include <uv.h>
 
 struct jobent {
        struct client_data *client;
@@ -20,18 +21,10 @@ static int joblen = 0, jobcap = 0;
 static pid_t current_child = -1;
 static int current_result = 0;
 
-#ifdef HAS_UV
-#include <uv.h>
 static uv_signal_t uvsigchld, uvsigint;
-#define HANDLE_ARG [[maybe_unused]] uv_signal_t *handle,
-#else
-#define HANDLE_ARG
-#endif
 
-static void job_child(HANDLE_ARG [[maybe_unused]] int signum)
+static void job_child([[maybe_unused]] uv_signal_t *handle, [[maybe_unused]] int signum)
 {
-       (void)signum;
-       int old_errno = errno;
        int wstatus;
        pid_t pid;
        while ((pid = waitpid(-1, &wstatus, WNOHANG)) > 0) {
@@ -40,12 +33,11 @@ static void job_child(HANDLE_ARG [[maybe_unused]] int signum)
                        current_result = WIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : -1;
                }
        }
-       errno = old_errno;
 }
-static void job_int(HANDLE_ARG [[maybe_unused]] int signum)
+static void job_int([[maybe_unused]] uv_signal_t *handle, [[maybe_unused]] int signum)
 {
-       extern volatile sig_atomic_t is_siginted;
-       is_siginted = 1;
+       extern bool is_siginted;
+       is_siginted = true;
 }
 void job_init(void)
 {
@@ -57,30 +49,15 @@ void job_init(void)
        if (sigaction(SIGPIPE, &sa, NULL) == -1)
                perror("sigaction");
 
-#ifndef HAS_UV
-       sa.sa_handler = job_child;
-       sa.sa_flags = SA_RESTART;
-       if (sigaction(SIGCHLD, &sa, NULL) == -1)
-               perror("sigaction");
-
-       sa.sa_handler = job_int;
-       /* Note that SA_RESTART doesn't affect select/poll/epoll_wait. */
-       sa.sa_flags = SA_RESETHAND | SA_RESTART;
-       if (sigaction(SIGINT, &sa, NULL) == -1)
-               perror("sigaction");
-#else
        uv_signal_init(uv_default_loop(), &uvsigchld);
        uv_signal_start(&uvsigchld, job_child, SIGCHLD);
        uv_signal_init(uv_default_loop(), &uvsigint);
        uv_signal_start_oneshot(&uvsigint, job_int, SIGINT);
-#endif
 }
 void job_fini(void)
 {
-#ifdef HAS_UV
        uv_close((uv_handle_t *)&uvsigchld, 0);
        uv_close((uv_handle_t *)&uvsigint, 0);
-#endif
 }
 static void job_process(void)
 {
@@ -109,23 +86,11 @@ static void job_process(void)
 }
 void job_process_begin(void)
 {
-#ifndef HAS_UV
-       sigset_t mask;
-       sigemptyset(&mask);
-       sigaddset(&mask, SIGCHLD);
-       sigprocmask(SIG_BLOCK, &mask, 0);
-#endif
        job_process();
 }
 void job_process_end(void)
 {
        job_process();
-#ifndef HAS_UV
-       sigset_t mask;
-       sigemptyset(&mask);
-       sigaddset(&mask, SIGCHLD);
-       sigprocmask(SIG_UNBLOCK, &mask, 0);
-#endif
 }
 
 void job_add(struct client_data *cl, jobproc_t job, contproc_t then, char *data, size_t len)
index 1c8058d..4e736dc 100644 (file)
@@ -8,9 +8,7 @@
 #include <locale.h>
 
 static int is_running = 1;
-
-#include <signal.h>
-volatile sig_atomic_t is_siginted = 0;
+bool is_siginted = 0;
 
 // Client linked list
 struct client_data *clients = NULL, *dyingclients = NULL;
index 2d447e9..986c5d3 100644 (file)
@@ -3,73 +3,13 @@
 #include "netpoll.h"
 #include "util.h"
 
-#ifdef HAS_UV
 #include <uv.h>
-#endif
 
 namespace netpoll {
 #define NETPOLL_MAXFDS 1024
 static struct net_pollfd fds[NETPOLL_MAXFDS] = {};
 static int nfds = 0;
 
-#ifndef HAS_UV
-static struct pollfd pollfds[NETPOLL_MAXFDS] = {};
-static int lastptr = 0;
-void init(void)
-{
-}
-void fini(void)
-{
-}
-static void add_impl(int i)
-{
-       memmove(pollfds+i+1, pollfds+i, sizeof(pollfds[0])*(nfds-1-i));
-       pollfds[i].fd = fds[i].fd;
-       pollfds[i].events = 0;
-       pollfds[i].revents = 0;
-       if (lastptr >= i)
-               lastptr++;
-}
-static void del_impl(int i)
-{
-       memmove(pollfds+i, pollfds+i+1, sizeof(pollfds[0])*(nfds-(i+1)));
-       if (lastptr > i)
-               lastptr--;
-}
-static void reg_impl(int i, int ev)
-{
-       pollfds[i].events = 0;
-       if (ev & NETPOLL_IN)
-               pollfds[i].events = POLLIN;
-       if (ev & NETPOLL_OUT)
-               pollfds[i].events = POLLOUT;
-}
-int begin(void)
-{
-       sigset_t mask;
-       sigprocmask(0, 0, &mask);
-       sigdelset(&mask, SIGCHLD);
-       int rv = ppoll(pollfds, nfds, 0, &mask);
-       lastptr = 0;
-       return rv;
-}
-int get(struct net_pollfd *out)
-{
-       int ev = 0;
-       while (!ev) {
-               if (lastptr == nfds)
-                       return 0;
-               int pev = pollfds[lastptr].revents;
-               if (pev & POLLIN)
-                       ev |= NETPOLL_IN;
-               if (pev & POLLOUT)
-                       ev |= NETPOLL_OUT;
-               lastptr++;
-       }
-       *out = fds[lastptr-1];
-       return ev;
-}
-#else
 #define container_of(ptr, type, member) ((type *)((char *)(ptr) - offsetof(type, member)))
 struct polldata {
        uv_poll_t uv;
@@ -187,7 +127,6 @@ int get(struct net_pollfd *out)
        *out = fds[lastptr-1];
        return ev;
 }
-#endif
 
 static int search(SOCKET fd) {
        int l = 0, r = nfds;
@@ -229,9 +168,6 @@ void del_and_close(SOCKET fd)
        del_impl(i);
        memmove(fds+i, fds+i+1, sizeof(fds[0])*(nfds-(i+1)));
        nfds--;
-#ifndef HAS_UV
-       closesocket(fd);
-#endif
 }
 void reg(SOCKET fd, int ev)
 {