Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix compilation on OpenBSD - quark - quark web server
git clone git://git.suckless.org/quark
Log
Files
Refs
LICENSE
---
commit 959c855734e3af12f35532d76deb1ab85474f8f4
parent a9164839e6f091ff66b6684c65d55ed7f5a09ebb
Author: Laslo Hunhold <[email protected]>
Date: Sun, 17 Jan 2021 13:22:53 +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 <[email protected]>
Diffstat:
M main.c | 2 +-
M queue.c | 24 +++++++++++++++++-------
M queue.h | 2 ++
3 files changed, 20 insertions(+), 8 deletions(-)
---
diff --git a/main.c b/main.c
@@ -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
@@ -80,11 +80,11 @@ queue_add_fd(int qfd, int fd, enum queue_event_type t, int …
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:
@@ -95,7 +95,7 @@ queue_add_fd(int qfd, int fd, enum queue_event_type t, int sh…
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:");
@@ -139,7 +139,7 @@ queue_mod_fd(int qfd, int fd, enum queue_event_type t, cons…
return 1;
}
#else
- kevent e;
+ struct kevent e;
int events;
events = EV_CLEAR;
@@ -153,7 +153,7 @@ queue_mod_fd(int qfd, int fd, enum queue_event_type t, cons…
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:");
@@ -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);
@@ -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;
}
@@ -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
@@ -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 */
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.