From ef438e1477e436111970d9d6057c59c2fa014604 Mon Sep 17 00:00:00 2001 From: wenngle Date: Sun, 17 Jan 2021 15:41:35 -0500 Subject: [PATCH] disallow duplicate names --- main.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/main.c b/main.c index 9a25284..b709638 100644 --- a/main.c +++ b/main.c @@ -1223,6 +1223,7 @@ handle_input(int fd) players[pid].fd = -1; if (players[pid].stage != PLAYER_STAGE_NAME) { snprintf(buf, sizeof(buf), "Player [%s] disconnected.", players[pid].name); + players[pid].name[0] = '\0'; printf("Sending disconnection message\n"); broadcast(buf, -1); } @@ -1239,6 +1240,7 @@ handle_input(int fd) players[pid].fd = -1; if (players[pid].stage != PLAYER_STAGE_NAME) { snprintf(buf, sizeof(buf), "Player [%s] left the game.", players[pid].name); + players[pid].name[0] = '\0'; printf("Sending parting message\n"); broadcast(buf, -1); } @@ -1273,6 +1275,13 @@ handle_input(int fd) write(fd, buf, strlen(buf)); return 0; } + for (size_t i = 0; i < NUM_PLAYERS; i++) { + if (strcmp(players[i].name, buf) == 0) { + snprintf(buf, sizeof(buf), "Taken, pick another name\n> "); + write(fd, buf, strlen(buf)); + return 0; + } + } for (size_t i = 0; i < strlen(buf); i++) { if(!isprint(buf[i])) { snprintf(buf, sizeof(buf), "Invalid char, pick another name\n> ");