From e6956b1abc1fa6881c4c3bb79da40e996e0ba010 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Mon, 23 Sep 2013 01:22:21 -0400 Subject: [PATCH] fixes --- src/chat.c | 4 ++-- src/friendlist.c | 7 +++---- src/groupchat.c | 2 +- src/prompt.c | 34 ++++++++++++++++++++++++++++++++++ src/windows.c | 24 +----------------------- 5 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/chat.c b/src/chat.c index e574548..c214860 100644 --- a/src/chat.c +++ b/src/chat.c @@ -78,7 +78,7 @@ static void chat_onNickChange(ToxWindow *self, int num, uint8_t *nick, uint16_t if (self->num != num) return; - snprintf(self->name, sizeof(self->name), "%s", nick); + memcpy(self->name, nick, len); } static void chat_onStatusChange(ToxWindow *self, Tox *m, int num, TOX_USERSTATUS status) @@ -97,7 +97,7 @@ static void chat_onStatusMessageChange(ToxWindow *self, int num, uint8_t *status StatusBar *statusbar = (StatusBar *) self->stb; statusbar->statusmsg_len = len; - snprintf(statusbar->statusmsg, len, "%s", status); + memcpy(statusbar->statusmsg, status, len); } static void print_chat_help(ChatContext *ctx) diff --git a/src/friendlist.c b/src/friendlist.c index 0142f4e..57bb158 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -56,7 +56,7 @@ void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint16_t le if (len >= TOX_MAX_NAME_LENGTH || num < 0 || num >= num_friends) return; - memcpy((char *) &friends[num].name, (char *) str, len); + memcpy(friends[num].name, str, len); friends[num].namelength = len; } @@ -73,8 +73,8 @@ void friendlist_onStatusMessageChange(ToxWindow *self, int num, uint8_t *str, ui if (len >= TOX_MAX_STATUSMESSAGE_LENGTH || num < 0 || num >= num_friends) return; + memcpy(friends[num].statusmsg, str, len); friends[num].statusmsg_len = len; - memcpy((char *) &friends[num].statusmsg, (char *) str, len); } int friendlist_onFriendAdded(Tox *m, int num) @@ -258,10 +258,9 @@ void disable_chatwin(int f_num) int get_friendnum(uint8_t *name) { int i; - int len = strlen(name); for (i = 0; i < num_friends; ++i) { - if (strncmp(friends[i].name, name, len) == 0) + if (strcmp(friends[i].name, name) == 0) return friends[i].num; } diff --git a/src/groupchat.c b/src/groupchat.c index 3851e82..68ebd6d 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -160,7 +160,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key) bool close_win = false; if (line[0] == '/') { - if (close_win = strncmp(line, "/close", strlen(line)) == 0) { + if (close_win = strncmp(line, "/close", strlen("/close")) == 0) { set_active_window(0); int groupnum = self->num; delwin(ctx->linewin); diff --git a/src/prompt.c b/src/prompt.c index f726750..9a55a29 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -216,6 +216,39 @@ static void prompt_onInit(ToxWindow *self, Tox *m) wclrtoeol(self->window); } +static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int friendnum , uint8_t status) +{ + if (friendnum < 0) + return; + + uint8_t nick[TOX_MAX_NAME_LENGTH] = {'\0'}; + + if (tox_getname(m, friendnum, nick) == -1) + return; + + nick[TOXIC_MAX_NAME_LENGTH] = '\0'; + + if (!nick[0]) + snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME); + + if (status == 1) { + wattron(self->window, COLOR_PAIR(GREEN)); + wattron(self->window, A_BOLD); + wprintw(self->window, "\n%s ", nick); + wattroff(self->window, A_BOLD); + wprintw(self->window, "has come online\n"); + wattroff(self->window, COLOR_PAIR(GREEN)); + } else { + wattron(self->window, COLOR_PAIR(RED)); + wattron(self->window, A_BOLD); + wprintw(self->window, "\n%s ", nick); + wattroff(self->window, A_BOLD); + wprintw(self->window, "has gone offline\n"); + wattroff(self->window, COLOR_PAIR(RED)); + } + +} + static void prompt_onFriendRequest(ToxWindow *self, uint8_t *key, uint8_t *data, uint16_t length) { wprintw(self->window, "\nFriend request from:\n"); @@ -301,6 +334,7 @@ ToxWindow new_prompt(void) ret.onKey = &prompt_onKey; ret.onDraw = &prompt_onDraw; ret.onInit = &prompt_onInit; + ret.onConnectionChange = &prompt_onConnectionChange; ret.onFriendRequest = &prompt_onFriendRequest; ret.onGroupInvite = &prompt_onGroupInvite; diff --git a/src/windows.c b/src/windows.c index a61d2d6..cea50d9 100644 --- a/src/windows.c +++ b/src/windows.c @@ -29,28 +29,6 @@ void on_request(uint8_t *public_key, uint8_t *data, uint16_t length, void *userd void on_connectionchange(Tox *m, int friendnumber, uint8_t status, void *userdata) { - uint8_t nick[TOX_MAX_NAME_LENGTH] = {'\0'}; - tox_getname(m, friendnumber, nick); - - if (!nick[0]) - snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME); - - if (status == 1) { - wattron(prompt->window, COLOR_PAIR(GREEN)); - wattron(prompt->window, A_BOLD); - wprintw(prompt->window, "\n%s ", nick); - wattroff(prompt->window, A_BOLD); - wprintw(prompt->window, "has come online\n"); - wattroff(prompt->window, COLOR_PAIR(GREEN)); - } else { - wattron(prompt->window, COLOR_PAIR(RED)); - wattron(prompt->window, A_BOLD); - wprintw(prompt->window, "\n%s ", nick); - wattroff(prompt->window, A_BOLD); - wprintw(prompt->window, "has gone offline\n"); - wattroff(prompt->window, COLOR_PAIR(RED)); - } - int i; for (i = 0; i < MAX_WINDOWS_NUM; ++i) { @@ -96,7 +74,7 @@ void on_nickchange(Tox *m, int friendnumber, uint8_t *string, uint16_t length, v char n_buf[strlen(string)+4]; /* must have room for chars relative to MAX_FRIENDS_NUM */ snprintf(n_buf, sizeof(n_buf), "%s%d", string, friendnumber); strcpy(string, n_buf); - length = strlen(string) + 1; + length = strlen(n_buf) + 1; } int i;