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]);