diff options
| author | Lain Iwakura <lain@lainmail.xyz> | 2026-01-04 05:06:28 +0300 |
|---|---|---|
| committer | Lain Iwakura <lain@lainmail.xyz> | 2026-01-04 05:06:28 +0300 |
| commit | 76a4e41fed27484e99145fd3d748185a82647dbb (patch) | |
| tree | 9113c0f6d4058c6c55b83badd85a76cbf4ba45d8 | |
| parent | fix(darwin): darwin configs (diff) | |
| download | torus-76a4e41fed27484e99145fd3d748185a82647dbb.tar.gz torus-76a4e41fed27484e99145fd3d748185a82647dbb.zip | |
feat(client:exit): byee :33
| -rw-r--r-- | client.c | 21 |
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)); |