[ekg2-commit] ekg2: people.c (HEAD) [darkjames]

CVS commit cvs w toxygen.net
Czw, 22 Lis 2007, 19:23:59 CET


Module name:	ekg2
Changes by:	darkjames	2007-11-22 19:23:57

Modified files:
	people.c

Log message:
[irc] LIST_FREE_ITEM ()

Index: people.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/irc/people.c,v
diff -d -u -r1.41 -r1.42
--- people.c	2 Sep 2007 21:19:40 -0000	1.41
+++ people.c	22 Nov 2007 18:23:57 -0000	1.42
@@ -32,6 +32,23 @@
 
 enum { OTHER_NETWORK };
 
+static LIST_FREE_ITEM(list_irc_people_free, people_t *) {
+	xfree(data->nick);
+	xfree(data->realname);
+	xfree(data->host);
+	xfree(data->ident);
+	xfree(data);
+}
+
+static LIST_FREE_ITEM(list_irc_channel_free, channel_t *) {
+	xfree(data->name);
+	xfree(data->topic);
+	xfree(data->topicby);
+	xfree(data->mode_str);
+	list_destroy(chan->banlist, 1);
+	xfree(data);
+}
+
 /* add others
  */
 int irc_xstrcasecmp_default(char *str1, char *str2)
@@ -261,13 +278,7 @@
 	if (!(nick->channels)) {
 	/* delete entry in private->people 
 		debug("-%s lista ludzi, ", nick->nick); */
-					/* mh, zerowanie tego tak raczej niepotrzebne... ale jest */
-		xfree(nick->nick);	nick->nick = NULL;
-		xfree(nick->ident);	nick->ident = NULL;
-		xfree(nick->host);	nick->host = NULL;
-		xfree(nick->realname);	nick->realname = NULL;
-
-		list_remove(&(j->people), nick, 1);
+		LIST_REMOVE(&(j->people), nick, list_irc_people_free);
 		
 		list_remove(&(chan->onchan), nick, 0);
 		return 1;
@@ -559,25 +570,10 @@
 		 */
 	}
 
-	for (t1=j->people; t1; t1=t1->next) {
-		per = (people_t *) t1->data;
-		xfree(per->nick);
-		xfree(per->realname);
-		xfree(per->host);
-		xfree(per->ident);
-	}
-	list_destroy(j->people, 1);
+	LIST_DESTROY(j->people, list_irc_people_free);
 	j->people = NULL;
 
-	for (t1=j->channels; t1; t1=t1->next) {
-		chan = t1->data;
-		xfree(chan->name);
-		xfree(chan->topic);
-		xfree(chan->topicby);
-		xfree(chan->mode_str);
-		list_destroy(chan->banlist, 1);
-	}
-	list_destroy(j->channels, 1);
+	LIST_DESTROY(j->channels, list_irc_channel_free);
 	j->channels = NULL;
 
 	return 0;


Więcej informacji o liście dyskusyjnej ekg2-commit