/* deletes contact from friendlist and puts in blocklist */ void block_friend(Tox *m, uint32_t fnum) { if (Friends.num_friends <= 0) return; realloc_blocklist(Blocked.max_idx + 1); memset(&Blocked.list[Blocked.max_idx], 0, sizeof(BlockedFriend)); int i; for (i = 0; i <= Blocked.max_idx; ++i) { if (Blocked.list[i].active) continue; Blocked.list[i].active = true; Blocked.list[i].num = i; Blocked.list[i].namelength = Friends.list[fnum].namelength; Blocked.list[i].last_on = Friends.list[fnum].last_online.last_on; memcpy(Blocked.list[i].pub_key, Friends.list[fnum].pub_key, TOX_PUBLIC_KEY_SIZE); memcpy(Blocked.list[i].name, Friends.list[fnum].name, Friends.list[fnum].namelength + 1); ++Blocked.num_blocked; if (i == Blocked.max_idx) ++Blocked.max_idx; delete_friend(m, fnum); save_blocklist(BLOCK_FILE); sort_blocklist_index(); sort_friendlist_index(); return; } }
/* deletes contact from friendlist and puts in blocklist */ void block_friend(Tox *m, int32_t fnum) { if (Blocked_Contacts.max_index >= MAX_FRIENDS_NUM || num_friends <= 0) return; int i; for (i = 0; i <= Blocked_Contacts.max_index; ++i) { if (Blocked_Contacts.list[i].active) continue; Blocked_Contacts.list[i].active = true; Blocked_Contacts.list[i].num = i; Blocked_Contacts.list[i].namelength = friends[fnum].namelength; Blocked_Contacts.list[i].last_on = friends[fnum].last_online.last_on; memcpy(Blocked_Contacts.list[i].pub_key, friends[fnum].pub_key, TOX_CLIENT_ID_SIZE); memcpy(Blocked_Contacts.list[i].name, friends[fnum].name, friends[fnum].namelength + 1); ++Blocked_Contacts.num_blocked; if (i == Blocked_Contacts.max_index) ++Blocked_Contacts.max_index; delete_friend(m, fnum); save_blocklist(BLOCK_FILE); sort_blocklist_index(); sort_friendlist_index(); return; } }
/* deletes contact from blocked list */ static void delete_blocked_friend(int32_t bnum) { memset(&Blocked_Contacts.list[bnum], 0, sizeof(BlockedFriend)); int i; for (i = Blocked_Contacts.max_index; i > 0; --i) { if (Blocked_Contacts.list[i - 1].active) break; } --Blocked_Contacts.num_blocked; Blocked_Contacts.max_index = i; save_blocklist(BLOCK_FILE); if (Blocked_Contacts.num_blocked && Blocked_Contacts.num_selected == Blocked_Contacts.num_blocked) --Blocked_Contacts.num_selected; }
/* deletes contact from blocked list */ static void delete_blocked_friend(uint32_t bnum) { memset(&Blocked.list[bnum], 0, sizeof(BlockedFriend)); int i; for (i = Blocked.max_idx; i > 0; --i) { if (Blocked.list[i - 1].active) { break; } } --Blocked.num_blocked; Blocked.max_idx = i; realloc_blocklist(i); save_blocklist(BLOCK_FILE); if (Blocked.num_blocked && Blocked.num_selected == Blocked.num_blocked) { --Blocked.num_selected; } }