about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rwxr-xr-xserver.c90
1 files changed, 42 insertions, 48 deletions
diff --git a/server.c b/server.c
index 8ad47ba..64e4e18 100755
--- a/server.c
+++ b/server.c
@@ -297,62 +297,56 @@ int main() {
         if (nevents < 0) err(EX_IOERR, "kevent");
         if (!nevents) continue;
 
-        if (!event.udata) {
-            int fd = accept(server, NULL, NULL);
-            if (fd < 0) err(EX_IOERR, "accept");
-            fcntl(fd, F_SETFL, O_NONBLOCK);
-
-            int on = 1;
-            error = setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on));
-            if (error) err(EX_IOERR, "setsockopt");
-
-            struct Client *client = clientAdd(fd);
-
-            struct kevent event = {
-                .ident = fd,
-                .filter = EVFILT_READ,
-                .flags = EV_ADD,
-                .fflags = 0,
-                .data = 0,
-                .udata = client,
-            };
-            nevents = kevent(kq, &event, 1, NULL, 0, NULL);
-            if (nevents < 0) err(EX_OSERR, "kevent");
-
-            struct ServerMessage msg = { .type = SERVER_TILE };
-            if (
-                !clientSend(client, &msg) ||
-                !clientMove(client, 0, 0) ||
-                !clientCursors(client)
-            ) {
+        if (event.udata) {
+            struct Client *client = event.udata;
+            if (event.flags & EV_EOF) {
                 clientRemove(client);
+                continue;
             }
 
-            continue;
-        }
+            struct ClientMessage msg;
+            ssize_t len = recv(client->fd, &msg, sizeof(msg), 0);
+            if (len != sizeof(msg)) {
+                clientRemove(client);
+                continue;
+            }
 
-        struct Client *client = event.udata;
-        if (event.flags & EV_EOF) {
-            clientRemove(client);
-            continue;
-        }
+            bool success = false;
+            if (msg.type == CLIENT_MOVE) {
+                success = clientMove(client, msg.data.m.dx, msg.data.m.dy);
+            } else if (msg.type == CLIENT_PUT) {
+                success = clientPut(client, msg.data.p.color, msg.data.p.cell);
+            }
+            if (!success) clientRemove(client);
 
-        struct ClientMessage msg;
-        ssize_t len = recv(client->fd, &msg, sizeof(msg), 0);
-        if (len != sizeof(msg)) {
-            clientRemove(client);
             continue;
         }
 
-        bool success = false;
-        switch (msg.type) {
-            case CLIENT_MOVE:
-                success = clientMove(client, msg.data.m.dx, msg.data.m.dy);
-                break;
-            case CLIENT_PUT:
-                success = clientPut(client, msg.data.p.color, msg.data.p.cell);
-                break;
-        }
+        int fd = accept(server, NULL, NULL);
+        if (fd < 0) err(EX_IOERR, "accept");
+        fcntl(fd, F_SETFL, O_NONBLOCK);
+
+        int on = 1;
+        error = setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on));
+        if (error) err(EX_IOERR, "setsockopt");
+
+        struct Client *client = clientAdd(fd);
+
+        struct kevent event = {
+            .ident = fd,
+            .filter = EVFILT_READ,
+            .flags = EV_ADD,
+            .fflags = 0,
+            .data = 0,
+            .udata = client,
+        };
+        nevents = kevent(kq, &event, 1, NULL, 0, NULL);
+        if (nevents < 0) err(EX_OSERR, "kevent");
+
+        struct ServerMessage msg = { .type = SERVER_TILE };
+        bool success = clientSend(client, &msg)
+            && clientMove(client, 0, 0)
+            && clientCursors(client);
         if (!success) clientRemove(client);
     }
 }
st brightness by smaller incrementsJune McEnroe 2021-02-07Fix cwm window cycling, move big by defaultJune McEnroe 2021-02-07Use class names for Foreground, Background, BorderColorJune McEnroe I'm not really sure what difference this makes, but it seems like the right thing to do to be generic? 2021-02-07Add simple battery status and clock to xsessionJune McEnroe I love how simple this is. 2021-02-07Set cursor theme and sizeJune McEnroe 2021-02-07Use scrot for up -s if no screencaptureJune McEnroe Still missing putting the URL in an X selection. 2021-02-07Enable mouse acceleration in XJune McEnroe 2021-02-07Set colours for Xt and cwmJune McEnroe And increase XTerm internalBorder. 2021-02-07Set urgency on bell in xtermJune McEnroe 2021-02-07Add bindings for brightness controlJune McEnroe Weirdly the Fn key doesn't change how the F row registers... I wonder if I can do something about that. 2021-02-07Set X key repeat rateJune McEnroe 2021-02-07Bump font size to 12June McEnroe 11 is what I use on macOS, but I feel like my eyes are working harder here. 2021-02-07Fully configure and rebind cwmJune McEnroe This is sort of a mix of trying to emulate macOS somewhat for my muscle memory and just rebinding some of the cwm defaults to use 4- rather than M-. 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe cwm still needs a lot more rebinding, and I need to actually look at its other options. xterm definitely still needs some configuration, but I at least managed to get it to use a decent looking font. Very happy that OpenBSD includes Luxi Mono, which is what my usual font, Go Mono, is based on anyway. Still missing is xmodmap and such. 2021-02-06Add xterm output to schemeJune McEnroe