[hackers] [quark] Fix compilation on OpenBSD || Laslo Hunhold

From: <git_AT_suckless.org>
Date: Sun, 17 Jan 2021 13:24:48 +0100 (CET)

commit 959c855734e3af12f35532d76deb1ab85474f8f4
Author: Laslo Hunhold <dev_AT_frign.de>
AuthorDate: Sun Jan 17 13:22:53 2021 +0100
Commit: Laslo Hunhold <dev_AT_frign.de>
CommitDate: Sun Jan 17 13:22:53 2021 +0100

    Fix compilation on OpenBSD
    
    The OpenBSD-code was written "blindly" only with the manuals. The
    errors that occured are now fixed. It shows how well-written the
    OpenBSD manuals are that you can write such a nontrivial state-machine
    and it just works (once the syntax-errors are fixed).
    
    Signed-off-by: Laslo Hunhold <dev_AT_frign.de>

diff --git a/main.c b/main.c
index 2e8f3e7..86b2d0c 100644
--- a/main.c
+++ b/main.c
_AT_@ -243,7 +243,7 @@ thread_method(void *data)
 
                 /* handle events */
                 for (i = 0; i < (size_t)nready; i++) {
- if (event[i].events & (EPOLLERR | EPOLLHUP)) {
+ if (queue_event_is_dropped(&event[i])) {
                                 fd = queue_event_get_fd(&event[i]);
 
                                 if (fd != d->insock) {
diff --git a/queue.c b/queue.c
index b8267c8..fce38e2 100644
--- a/queue.c
+++ b/queue.c
_AT_@ -80,11 +80,11 @@ queue_add_fd(int qfd, int fd, enum queue_event_type t, int shared,
                         return 1;
                 }
         #else
- kevent e;
+ struct kevent e;
                 int events;
 
                 /* prepare event flag */
- event = (shared) ? 0 : EV_CLEAR;
+ events = (shared) ? 0 : EV_CLEAR;
 
                 switch (t) {
                 case QUEUE_EVENT_IN:
_AT_@ -95,7 +95,7 @@ queue_add_fd(int qfd, int fd, enum queue_event_type t, int shared,
                         break;
                 }
 
- EV_SET(&e, fd, events, EV_ADD, 0, 0, 0);
+ EV_SET(&e, fd, events, EV_ADD, 0, 0, (void *)data);
 
                 if (kevent(qfd, &e, 1, NULL, 0, NULL) < 0) {
                         warn("kevent:");
_AT_@ -139,7 +139,7 @@ queue_mod_fd(int qfd, int fd, enum queue_event_type t, const void *data)
                         return 1;
                 }
         #else
- kevent e;
+ struct kevent e;
                 int events;
 
                 events = EV_CLEAR;
_AT_@ -153,7 +153,7 @@ queue_mod_fd(int qfd, int fd, enum queue_event_type t, const void *data)
                         break;
                 }
 
- EV_SET(&e, fd, events, EV_ADD, 0, 0, 0);
+ EV_SET(&e, fd, events, EV_ADD, 0, 0, (void *)data);
 
                 if (kevent(qfd, &e, 1, NULL, 0, NULL) < 0) {
                         warn("kevent:");
_AT_@ -175,7 +175,7 @@ queue_rem_fd(int qfd, int fd)
                         return 1;
                 }
         #else
- kevent e;
+ struct kevent e;
 
                 EV_SET(&e, fd, 0, EV_DELETE, 0, 0, 0);
 
_AT_@ -199,7 +199,7 @@ queue_wait(int qfd, queue_event *e, size_t elen)
                         return -1;
                 }
         #else
- if ((nready = kevent(qfd, NULL, 0, e, elen, NULL) < 0) {
+ if ((nready = kevent(qfd, NULL, 0, e, elen, NULL)) < 0) {
                         warn("kevent:");
                         return 1;
                 }
_AT_@ -227,3 +227,13 @@ queue_event_get_ptr(const queue_event *e)
                 return e->udata;
         #endif
 }
+
+int
+queue_event_is_dropped(const queue_event *e)
+{
+ #ifdef __linux__
+ return (e->events & (EPOLLERR | EPOLLHUP)) ? 1 : 0;
+ #else
+ return (e->flags & EV_EOF) ? 1 : 0;
+ #endif
+}
diff --git a/queue.h b/queue.h
index 06ab167..a59ab6f 100644
--- a/queue.h
+++ b/queue.h
_AT_@ -29,4 +29,6 @@ ssize_t queue_wait(int, queue_event *, size_t);
 int queue_event_get_fd(const queue_event *);
 void *queue_event_get_ptr(const queue_event *);
 
+int queue_event_is_dropped(const queue_event *e);
+
 #endif /* QUEUE_H */
Received on Sun Jan 17 2021 - 13:24:48 CET

This archive was generated by hypermail 2.3.0 : Sun Jan 17 2021 - 13:36:37 CET