1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-07-03 16:37:45 +02:00

wrap tox_get_name in function that truncates name if it's too long

This commit is contained in:
Jfreegman 2014-07-08 14:31:59 -04:00
parent e74212cb9e
commit 442f68cd31
No known key found for this signature in database
GPG Key ID: 3627F3144076AE63
5 changed files with 29 additions and 40 deletions

View File

@ -156,9 +156,7 @@ static void chat_onMessage(ToxWindow *self, Tox *m, int32_t num, const char *msg
ChatContext *ctx = self->chatwin; ChatContext *ctx = self->chatwin;
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, num, (uint8_t *) nick); get_nick_truncate(m, nick, num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
char timefrmt[TIME_STR_SIZE]; char timefrmt[TIME_STR_SIZE];
get_time_str(timefrmt, sizeof(timefrmt)); get_time_str(timefrmt, sizeof(timefrmt));
@ -200,9 +198,7 @@ static void chat_onAction(ToxWindow *self, Tox *m, int32_t num, const char *acti
ChatContext *ctx = self->chatwin; ChatContext *ctx = self->chatwin;
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, num, (uint8_t *) nick); get_nick_truncate(m, nick, num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
char timefrmt[TIME_STR_SIZE]; char timefrmt[TIME_STR_SIZE];
get_time_str(timefrmt, sizeof(timefrmt)); get_time_str(timefrmt, sizeof(timefrmt));
@ -430,11 +426,10 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, co
if (self->num != friendnumber) if (self->num != friendnumber)
return; return;
char name[TOX_MAX_NAME_LENGTH];
char msg[MAX_STR_SIZE + TOX_MAX_NAME_LENGTH]; char msg[MAX_STR_SIZE + TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, friendnumber, (uint8_t *) name);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1); char name[TOX_MAX_NAME_LENGTH];
name[n_len] = '\0'; get_nick_truncate(m, name, friendnumber);
snprintf(msg, sizeof(msg), "%s has invited you to a group chat.", name); snprintf(msg, sizeof(msg), "%s has invited you to a group chat.", name);
line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0);
@ -895,9 +890,7 @@ static void chat_onInit(ToxWindow *self, Tox *m)
statusbar->statusmsg_len = s_len; statusbar->statusmsg_len = s_len;
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, self->num, (uint8_t *) nick); int n_len = get_nick_truncate(m, nick, self->num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
snprintf(statusbar->nick, sizeof(statusbar->nick), "%s", nick); snprintf(statusbar->nick, sizeof(statusbar->nick), "%s", nick);
statusbar->nick_len = n_len; statusbar->nick_len = n_len;
@ -966,9 +959,7 @@ ToxWindow new_chat(Tox *m, int32_t friendnum)
#endif /* _SUPPORT_AUDIO */ #endif /* _SUPPORT_AUDIO */
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, friendnum, (uint8_t *) nick); int n_len = get_nick_truncate(m, nick, friendnum);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
chat_set_window_name(&ret, nick, n_len); chat_set_window_name(&ret, nick, n_len);
ChatContext *chatwin = calloc(1, sizeof(ChatContext)); ChatContext *chatwin = calloc(1, sizeof(ChatContext));

View File

@ -106,9 +106,7 @@ static void friendlist_onMessage(ToxWindow *self, Tox *m, int32_t num, const cha
friends[num].chatwin = add_window(m, new_chat(m, friends[num].num)); friends[num].chatwin = add_window(m, new_chat(m, friends[num].num));
} else { } else {
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, num, (uint8_t *) nick); get_nick_truncate(m, nick, num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
char timefrmt[TIME_STR_SIZE]; char timefrmt[TIME_STR_SIZE];
get_time_str(timefrmt, sizeof(timefrmt)); get_time_str(timefrmt, sizeof(timefrmt));
@ -183,15 +181,13 @@ void friendlist_onFriendAdded(ToxWindow *self, Tox *m, int32_t num, bool sort)
update_friend_last_online(i, tox_get_last_online(m, i)); update_friend_last_online(i, tox_get_last_online(m, i));
char tempname[TOX_MAX_NAME_LENGTH] = {0}; char tempname[TOX_MAX_NAME_LENGTH] = {0};
int len = tox_get_name(m, num, (uint8_t *) tempname); int len = get_nick_truncate(m, tempname, num);
if (len == -1 || tempname[0] == '\0') { if (len == -1 || tempname[0] == '\0') {
strcpy(friends[i].name, UNKNOWN_NAME); strcpy(friends[i].name, UNKNOWN_NAME);
friends[i].namelength = strlen(UNKNOWN_NAME); friends[i].namelength = strlen(UNKNOWN_NAME);
} else { /* Enforce toxic's maximum name length */ } else { /* Enforce toxic's maximum name length */
len = MIN(len, TOXIC_MAX_NAME_LENGTH - 1);
friends[i].namelength = len; friends[i].namelength = len;
tempname[len] = '\0';
snprintf(friends[i].name, sizeof(friends[i].name), "%s", tempname); snprintf(friends[i].name, sizeof(friends[i].name), "%s", tempname);
} }
@ -221,9 +217,7 @@ static void friendlist_onFileSendRequest(ToxWindow *self, Tox *m, int32_t num, u
tox_file_send_control(m, num, 1, filenum, TOX_FILECONTROL_KILL, 0, 0); tox_file_send_control(m, num, 1, filenum, TOX_FILECONTROL_KILL, 0, 0);
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, num, (uint8_t *) nick); get_nick_truncate(m, nick, num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
char msg[MAX_STR_SIZE]; char msg[MAX_STR_SIZE];
snprintf(msg, sizeof(msg), "* File transfer from %s failed: too many windows are open.", nick); snprintf(msg, sizeof(msg), "* File transfer from %s failed: too many windows are open.", nick);
@ -244,9 +238,7 @@ static void friendlist_onGroupInvite(ToxWindow *self, Tox *m, int32_t num, const
friends[num].chatwin = add_window(m, new_chat(m, friends[num].num)); friends[num].chatwin = add_window(m, new_chat(m, friends[num].num));
} else { } else {
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, num, (uint8_t *) nick); get_nick_truncate(m, nick, num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
char msg[MAX_STR_SIZE]; char msg[MAX_STR_SIZE];
snprintf(msg, sizeof(msg), "* Group chat invite from %s failed: too many windows are open.", nick); snprintf(msg, sizeof(msg), "* Group chat invite from %s failed: too many windows are open.", nick);
@ -570,10 +562,7 @@ static void friendlist_onAv(ToxWindow *self, ToxAv *av, int call_index)
friends[id].chatwin = add_window(m, new_chat(m, friends[id].num)); friends[id].chatwin = add_window(m, new_chat(m, friends[id].num));
} else { } else {
char nick[TOX_MAX_NAME_LENGTH]; char nick[TOX_MAX_NAME_LENGTH];
int n_len = tox_get_name(m, id, (uint8_t *) nick); get_nick_truncate(m, nick, friends[id].num);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
nick[n_len] = '\0';
char msg[MAX_STR_SIZE]; char msg[MAX_STR_SIZE];
snprintf(msg, sizeof(msg), "Audio action from: %s!", nick); snprintf(msg, sizeof(msg), "Audio action from: %s!", nick);

View File

@ -224,3 +224,13 @@ void str_to_lower(char *str)
for (i = 0; str[i]; ++i) for (i = 0; str[i]; ++i)
str[i] = tolower(str[i]); str[i] = tolower(str[i]);
} }
/* puts friendnum's nick in buf, truncating at TOXIC_MAX_NAME_LENGTH if necessary.
Returns nick len on success, -1 on failure */
int get_nick_truncate(Tox *m, char *buf, int friendnum)
{
int len = tox_get_name(m, friendnum, (uint8_t *) buf);
len = MIN(len, TOXIC_MAX_NAME_LENGTH - 1);
buf[len] = '\0';
return len;
}

View File

@ -85,4 +85,8 @@ void get_file_name(char *namebuf, const char *pathname);
/* converts str to all lowercase */ /* converts str to all lowercase */
void str_to_lower(char *str); void str_to_lower(char *str);
/* puts friendnum's nick in buf, truncating at TOXIC_MAX_NAME_LENGTH if necessary.
Returns nick len on success, -1 on failure */
int get_nick_truncate(Tox *m, char *buf, int friendnum);
#endif /* #define _misc_tools_h */ #endif /* #define _misc_tools_h */

View File

@ -270,16 +270,11 @@ static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int32_t friendnum
ChatContext *ctx = self->chatwin; ChatContext *ctx = self->chatwin;
char nick[TOX_MAX_NAME_LENGTH] = {0}; char nick[TOX_MAX_NAME_LENGTH] = {0}; /* stop removing this initiation */
int n_len = tox_get_name(m, friendnum, (uint8_t *) nick); get_nick_truncate(m, nick, friendnum);
n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
if (!nick[0]) { if (!nick[0])
snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME); snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME);
n_len = strlen(UNKNOWN_NAME);
}
nick[n_len] = '\0';
char timefrmt[TIME_STR_SIZE]; char timefrmt[TIME_STR_SIZE];
get_time_str(timefrmt, sizeof(timefrmt)); get_time_str(timefrmt, sizeof(timefrmt));