Mercurial > pidgin
diff src/protocols/msn/user.c @ 5518:bf2a7a7b739d
[gaim-migrate @ 5918]
Reworked the group support. You should now be able to delete groups by
dragging a user into them and then back out.
I stress _should_. This will likely have bugs. I cleaned up the ones I
found, I think, but I'm not 100% confident here :) Please test! Preferably
on test accounts, but it won't kill things, just reorder stuff.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Sun, 25 May 2003 22:51:19 +0000 |
| parents | ad9887c91a59 |
| children | b7e113a59b51 |
line wrap: on
line diff
--- a/src/protocols/msn/user.c Sun May 25 19:47:13 2003 +0000 +++ b/src/protocols/msn/user.c Sun May 25 22:51:19 2003 +0000 @@ -29,27 +29,20 @@ user = msn_users_find_with_passport(session->users, passport); - if (user != NULL) { - if (name != NULL) - msn_user_set_name(user, name); + if (user == NULL) { + user = g_new0(MsnUser, 1); - msn_user_ref(user); + user->session = session; - return user; - } + msn_user_set_passport(user, passport); + msn_user_set_group_id(user, -1); - user = g_new0(MsnUser, 1); - - user->session = session; + msn_users_add(session->users, user); + } if (name != NULL) msn_user_set_name(user, name); - msn_user_set_passport(user, passport); - msn_user_set_group_id(user, -1); - - msn_users_add(session->users, user); - msn_user_ref(user); return user; @@ -254,10 +247,17 @@ void msn_users_destroy(MsnUsers *users) { + GList *l, *l_next = NULL; + g_return_if_fail(users != NULL); - while (users->users != NULL) - msn_user_destroy(users->users->data); + for (l = users->users; l != NULL; l = l_next) { + l_next = l->next; + + msn_user_destroy(l->data); + + users->users = g_list_remove(users->users, l->data); + } /* See if we've leaked anybody. */ while (users->users != NULL) { @@ -276,15 +276,27 @@ g_return_if_fail(user != NULL); users->users = g_list_append(users->users, user); + + users->count++; } void msn_users_remove(MsnUsers *users, MsnUser *user) { g_return_if_fail(users != NULL); - g_return_if_fail(user != NULL); + g_return_if_fail(user != NULL); users->users = g_list_remove(users->users, user); + + users->count--; +} + +size_t +msn_users_get_count(const MsnUsers *users) +{ + g_return_val_if_fail(users != NULL, 0); + + return users->count; } MsnUser *
