comparison mcabber/src/roster.c @ 164:faf534be8ff0

[/trunk] Changeset 176 by mikael * Add roster_free() * Empty roster when disconnecting from the server / going offline * Don't display buddies status when we're offline * Fix a bug when the roster is empty and we try to send a message (commands.c)
author mikael
date Mon, 02 May 2005 20:31:01 +0000
parents c3624b2a7059
children aa5b635520ef
comparison
equal deleted inserted replaced
163:a8f7dc0a56cb 164:faf534be8ff0
191 if (current_buddy) 191 if (current_buddy)
192 buddylist_build(); 192 buddylist_build();
193 // TODO What we should do, too, is to check if the deleted node is 193 // TODO What we should do, too, is to check if the deleted node is
194 // current_buddy, in which case we could move current_buddy to the 194 // current_buddy, in which case we could move current_buddy to the
195 // previous (or next) node. 195 // previous (or next) node.
196 }
197
198 // Free all roster data. Call buddylist_build() to free the buddylist.
199 void roster_free(void)
200 {
201 GSList *sl_grp = groups;
202
203 // Walk through groups
204 while (sl_grp) {
205 roster *roster_grp = (roster*)sl_grp->data;
206 GSList *sl_usr = roster_grp->list;
207 // Walk through this group users
208 while (sl_usr) {
209 roster *roster_usr = (roster*)sl_usr->data;
210 // Free name and jid
211 if (roster_usr->jid)
212 g_free((gchar*)roster_usr->jid);
213 if (roster_usr->name)
214 g_free((gchar*)roster_usr->name);
215 sl_usr = g_slist_next(sl_usr);
216 }
217 // Free group's users list
218 if (roster_grp->list)
219 g_slist_free(roster_grp->list);
220 // Free group's name and jid
221 if (roster_grp->jid)
222 g_free((gchar*)roster_grp->jid);
223 if (roster_grp->name)
224 g_free((gchar*)roster_grp->name);
225 sl_grp = g_slist_next(sl_grp);
226 }
227 // Free groups list
228 if (groups) {
229 g_slist_free(groups);
230 groups = NULL;
231 // Update (i.e. free) buddylist
232 if (buddylist)
233 buddylist_build();
234 }
196 } 235 }
197 236
198 void roster_setstatus(const char *jid, enum imstatus bstat) 237 void roster_setstatus(const char *jid, enum imstatus bstat)
199 { 238 {
200 GSList *sl_user; 239 GSList *sl_user;