summary refs log tree commit diff
path: root/chat.c
diff options
context:
space:
mode:
authorCurtis McEnroe2018-08-04 01:12:26 -0400
committerCurtis McEnroe2018-08-04 01:12:26 -0400
commitfe938fba535ee939c8a4d903736426c4cf6f1f3b (patch)
treec05cbbf9e6d31cd7a5f712bb070333cb309348f8 /chat.c
parent5522529e839e7e4a2c4b7379d277d464fcb07f2b (diff)
Track own nick
Diffstat (limited to 'chat.c')
-rw-r--r--chat.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/chat.c b/chat.c
index a428819..c3a4f4f 100644
--- a/chat.c
+++ b/chat.c
@@ -254,16 +254,21 @@ static char *shift(char **params) {
 	return strsep(params, " ");
 }
 
-static void handle001(char *prefix, char *params) {
-	(void)prefix; (void)params;
-	clientFmt("JOIN %s\r\n", client.chan);
-}
-
 static void handlePing(char *prefix, char *params) {
 	(void)prefix;
 	clientFmt("PONG %s\r\n", params);
 }
 
+static void handle001(char *prefix, char *params) {
+	(void)prefix;
+	char *nick = shift(&params);
+	if (strcmp(nick, client.nick)) {
+		free(client.nick);
+		client.nick = strdup(nick);
+	}
+	clientFmt("JOIN %s\r\n", client.chan);
+}
+
 static void handleJoin(char *prefix, char *params) {
 	char *nick = prift(&prefix);
 	char *user = prift(&prefix);
@@ -370,6 +375,10 @@ static void handleNick(char *prefix, char *params) {
 	char *prev = prift(&prefix);
 	char *user = prift(&prefix);
 	char *next = shift(&params);
+	if (!strcmp(user, client.user)) {
+		free(client.nick);
+		client.nick = strdup(next);
+	}
 	uiFmt(
 		"\3%d%s\3 is now known as \3%d%s\3",
 		color(user), prev, color(user), next