summary refs log tree commit diff
diff options
context:
space:
mode:
authorLain Iwakura <lain@lainmail.xyz>2026-01-04 05:06:28 +0300
committerLain Iwakura <lain@lainmail.xyz>2026-01-04 05:06:28 +0300
commit76a4e41fed27484e99145fd3d748185a82647dbb (patch)
tree9113c0f6d4058c6c55b83badd85a76cbf4ba45d8
parentfix(darwin): darwin configs (diff)
downloadtorus-76a4e41fed27484e99145fd3d748185a82647dbb.tar.gz
torus-76a4e41fed27484e99145fd3d748185a82647dbb.zip
feat(client:exit): byee :33
-rw-r--r--client.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/client.c b/client.c
index b08f820..e88a714 100644
--- a/client.c
+++ b/client.c
@@ -138,6 +138,11 @@ static struct Tile tile;
 static void serverTile(void) {
 	ssize_t size = recv(client, &tile, sizeof(tile), 0);
 	if (size < 0) err(EX_IOERR, "recv");
+	if (size == 0) {
+		endwin();
+		fprintf(stderr, "bye :33\n");
+		exit(EX_OK);
+	}
 	if ((size_t)size < sizeof(tile)) errx(EX_PROTOCOL, "truncated tile");
 	drawTile(&tile);
 }
@@ -189,6 +194,11 @@ static void serverMap(void) {
 	struct Map map;
 	ssize_t size = recv(client, &map, sizeof(map), 0);
 	if (size < 0) err(EX_IOERR, "recv");
+	if (size == 0) {
+		endwin();
+		fprintf(stderr, "bye :33\n");
+		exit(EX_OK);
+	}
 	if ((size_t)size < sizeof(map)) errx(EX_PROTOCOL, "truncated map");
 
 	if (0 == map.max.modifyCount) return;
@@ -229,6 +239,11 @@ static void readMessage(void) {
 	struct ServerMessage msg;
 	ssize_t size = recv(client, &msg, sizeof(msg), 0);
 	if (size < 0) err(EX_IOERR, "recv");
+	if (size == 0) {
+		endwin();
+		fprintf(stderr, "bye :33\n");
+		exit(EX_OK);
+	}
 	if ((size_t)size < sizeof(msg)) errx(EX_PROTOCOL, "truncated message");
 
 	switch (msg.type) {
@@ -402,7 +417,11 @@ static void inputNormal(bool keyCode, wchar_t ch) {
 		break; case CTRL('L'): clearok(curscr, true);
 
 		break; case Esc: modeNormal(); input.shift = 0;
-		break; case 'q': endwin(); exit(EX_OK);
+		break; case 'q': {
+			endwin();
+			fprintf(stderr, "bye :33\n");
+			exit(EX_OK);
+		}
 
 		break; case 'Q': clientTele(input.color % ARRAY_LEN(Ports));