Support for nick changes with "n" command - irc - Unnamed repository; edit this file 'description' to name the repository.
(HTM) git clone git://vernunftzentrum.de/irc.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit 43b931057b97856c20c11c587c3e0f5ac55aad7c
(DIR) parent b9c8db79bf4902329e427dfae03e537f128df4c4
(HTM) Author: Christian Kellermann <ckeen@pestilenz.org>
Date: Wed, 28 Mar 2018 17:23:16 +0200
Support for nick changes with "n" command
Diffstat:
irc.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/irc.c b/irc.c
@@ -460,6 +460,19 @@ scmd(char *usr, char *cmd, char *par, char *data)
chl[c].new = 1;
tdrawbar();
}
+ } else if (!strcmp(cmd, "NICK")) {
+ if (!data || !pm)
+ return;
+ if (!strcmp(usr, nick)){
+ for (int c=0; c < nch; c++){
+ pushf(c, "-!- you are now known as %s", data);
+ }
+ strlcpy(nick, data, sizeof(nick));
+ } else {
+ pushf(chfind(pm), "%s - is now known as %s", usr, data);
+ }
+ tredraw();
+ return;
} else if (!strcmp(cmd, "PING")) {
sndf("PONG :%s", data ? data : "(null)");
} else if (!strcmp(cmd, "PART")) {
@@ -485,6 +498,12 @@ scmd(char *usr, char *cmd, char *par, char *data)
pushf(0, "-!- Cannot join channel %s (%s)", pm, cmd);
tredraw();
}
+ } else if( !strcmp(cmd, "432") || !strcmp(cmd, "433")
+ || !strcmp(cmd, "436")) { /* Nick change failed. */
+ if (!data)
+ return;
+ pushf(0, "-!- Cannot change to nick %s: %s", pm, data);
+ tredraw();
} else if (!strcmp(cmd, "QUIT")) { /* Commands we don't care about. */
return;
} else if (!strcmp(cmd, "NOTICE") || !strcmp(cmd, "375")
@@ -544,6 +563,13 @@ uparse(char *m)
*p++ = 0;
sndf("PRIVMSG %s :%s", m, p);
return;
+ case 'n': /* change nick */
+ p = p + 1 + (p[1]==' ');
+ p = strtok(p, " ");
+ if (p) {
+ sndf("NICK %s", p);
+ }
+ return;
case 'r': /* Send raw. */
if (p[1])
sndf("%s", &p[2]);