src/protocols/qq/group_free.c

changeset 14083
2b68bb18a66c
parent 13932
4d131bd2b40f
equal deleted inserted replaced
14082:338ab21fb964 14083:2b68bb18a66c
18 * You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */ 21 */
22 22
23 // START OF FILE 23 #include "debug.h"
24 /*****************************************************************************/
25 #include "debug.h" // gaim_debug
26 24
27 #include "buddy_status.h" // QQ_BUDDY_ONLINE_OFFLINE 25 #include "buddy_status.h"
26 #include "group.h"
28 #include "group_free.h" 27 #include "group_free.h"
29 #include "group_network.h" // group_packet 28 #include "group_network.h"
30 #include "group.h" // qq_group
31 29
32 /*****************************************************************************/ 30 /* gracefully free all members in a group */
33 // gracefully free all members in a group 31 static void _qq_group_free_member(qq_group *group)
34 static void _qq_group_free_member(qq_group * group)
35 { 32 {
36 gint i; 33 gint i;
37 GList *list; 34 GList *list;
38 qq_buddy *member; 35 qq_buddy *member;
39 36
43 member = (qq_buddy *) list->data; 40 member = (qq_buddy *) list->data;
44 i++; 41 i++;
45 group->members = g_list_remove(group->members, member); 42 group->members = g_list_remove(group->members, member);
46 g_free(member->nickname); 43 g_free(member->nickname);
47 g_free(member); 44 g_free(member);
48 } // while 45 }
49 46
50 group->members = NULL; 47 group->members = NULL;
48 }
51 49
52 } // _qq_group_free_member 50 /* gracefully free the memory for one qq_group */
53 51 static void _qq_group_free(qq_group *group)
54 /*****************************************************************************/
55 // gracefully free the memory for one qq_group
56 static void _qq_group_free(qq_group * group)
57 { 52 {
58 g_return_if_fail(group != NULL); 53 g_return_if_fail(group != NULL);
59 _qq_group_free_member(group); 54 _qq_group_free_member(group);
60 g_free(group->group_name_utf8); 55 g_free(group->group_name_utf8);
61 g_free(group->group_desc_utf8); 56 g_free(group->group_desc_utf8);
62 g_free(group); 57 g_free(group);
63 } // _qq_group_free 58 }
64 59
65 /*****************************************************************************/ 60 /* clean up group_packets and free all contents */
66 // clean up group_packets and free all contents 61 void qq_group_packets_free(qq_data *qd)
67 void qq_group_packets_free(qq_data * qd)
68 { 62 {
69 group_packet *p; 63 group_packet *p;
70 gint i; 64 gint i;
71 65
72 i = 0; 66 i = 0;
73 while (qd->group_packets != NULL) { 67 while (qd->group_packets != NULL) {
74 p = (group_packet *) (qd->group_packets->data); 68 p = (group_packet *) (qd->group_packets->data);
75 qd->group_packets = g_list_remove(qd->group_packets, p); 69 qd->group_packets = g_list_remove(qd->group_packets, p);
76 g_free(p); 70 g_free(p);
77 i++; 71 i++;
78 } // while 72 }
79 gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d group packets are freed!\n", i); 73 gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d group packets are freed!\n", i);
80 } // qq_group_packets_free 74 }
81 75
82 /*****************************************************************************/ 76 void qq_group_remove_by_internal_group_id(qq_data *qd, guint32 internal_group_id)
83 void qq_group_remove_by_internal_group_id(qq_data * qd, guint32 internal_group_id) { 77 {
84 qq_group *group; 78 qq_group *group;
85 GList *list; 79 GList *list;
86 g_return_if_fail(qd != NULL); 80 g_return_if_fail(qd != NULL);
87 81
88 list = qd->groups; 82 list = qd->groups;
90 group = (qq_group *) qd->groups->data; 84 group = (qq_group *) qd->groups->data;
91 if (internal_group_id == group->internal_group_id) { 85 if (internal_group_id == group->internal_group_id) {
92 qd->groups = g_list_remove(qd->groups, group); 86 qd->groups = g_list_remove(qd->groups, group);
93 _qq_group_free(group); 87 _qq_group_free(group);
94 break; 88 break;
95 } else 89 } else {
96 list = list->next; 90 list = list->next;
97 } // while 91 }
92 }
93 }
98 94
99 } // qq_group_free_all 95 void qq_group_free_all(qq_data *qd)
100
101 /*****************************************************************************/
102 void qq_group_free_all(qq_data * qd)
103 { 96 {
104 qq_group *group; 97 qq_group *group;
105 gint i; 98 gint i;
106 g_return_if_fail(qd != NULL); 99 g_return_if_fail(qd != NULL);
107 100
109 while (qd->groups != NULL) { 102 while (qd->groups != NULL) {
110 i++; 103 i++;
111 group = (qq_group *) qd->groups->data; 104 group = (qq_group *) qd->groups->data;
112 qd->groups = g_list_remove(qd->groups, group); 105 qd->groups = g_list_remove(qd->groups, group);
113 _qq_group_free(group); 106 _qq_group_free(group);
114 } // while 107 }
115 108
116 gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d groups are freed\n", i); 109 gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d groups are freed\n", i);
117 } // qq_group_free_all 110 }
118
119 /*****************************************************************************/
120 // END OF FILE

mercurial