summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chat.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/chat.c b/chat.c
index 003c19d..c0a8231 100644
--- a/chat.c
+++ b/chat.c
@@ -167,7 +167,6 @@ static void uiChat(const char *line) {
waddch(ui.chat, '\n');
uiAdd(ui.chat, line);
}
-
static void uiFmt(const char *format, ...) {
char *buf;
va_list ap;
@@ -194,6 +193,7 @@ static struct {
struct tls *tls;
bool verbose;
char *nick;
+ char *user;
char *chan;
} client;
@@ -247,6 +247,10 @@ static void handleJoin(char *prefix, char *params) {
char *nick = prift(&prefix);
char *user = prift(&prefix);
char *chan = shift(&params);
+ if (!strcmp(nick, client.nick) && strcmp(user, client.user)) {
+ free(client.user);
+ client.user = strdup(user);
+ }
uiFmt(
"\3%d%s\3 arrived in \3%d%s\3",
color(user), nick, color(chan), chan
@@ -500,8 +504,9 @@ int main(int argc, char *argv[]) {
getnstr(buf, sizeof(buf) - 1);
client.nick = strdup(buf);
}
- erase();
+ client.user = strdup(client.nick);
+ erase();
uiInit();
uiChat("Traveling...");
uiDraw();
@@ -538,7 +543,7 @@ int main(int argc, char *argv[]) {
if (webPass) webirc(webPass);
clientFmt("NICK %s\r\n", client.nick);
- clientFmt("USER %s x x :%s\r\n", client.nick, client.nick);
+ clientFmt("USER %s 0 * :%s\r\n", client.user, client.nick);
struct pollfd fds[2] = {
{ .fd = STDIN_FILENO, .events = POLLIN },