[ekg2-commit] r3892 - trunk/ekg: trunk/ekg/dynstuff.c trunk/ekg/dynstuff.h trunk/ekg/protocol.c

SVN commit svn w toxygen.net
Pon, 10 Mar 2008, 22:02:45 CET


Author: peres
Date: 2008-03-10 22:02:44 +0100 (Mon, 10 Mar 2008)
New Revision: 3892

Modified:
   trunk/ekg/dynstuff.c
   trunk/ekg/dynstuff.h
   trunk/ekg/protocol.c
Log:

I called it: lists3 list_t porting toolkit. That is, few things for using new
functions with old lists.



Modified: trunk/ekg/dynstuff.c
===================================================================
--- trunk/ekg/dynstuff.c	2008-03-10 20:20:49 UTC (rev 3891)
+++ trunk/ekg/dynstuff.c	2008-03-10 21:02:44 UTC (rev 3892)
@@ -287,7 +287,7 @@
 	return 0;
 }
 
-list_t list_remove3(list_t *list, list_t elem, void (*func)(void *data)) {
+list_t list_remove3(list_t *list, list_t elem, void (*func)(list_t data)) {
 	list_t tmp, last = NULL;
 	void *ret = NULL;
 
@@ -507,6 +507,22 @@
 	return list_destroy2(list, free_data ? xfree : NULL);
 }
 
+
+/* list_t compatibility toolkit ( ; */
+
+	/* helper handler for using list_remove3() w/ list_t
+	 * like list_remove(..., 1) */
+LIST_FREE_ITEM(list_t_free_item, list_t) {
+	xfree(data->data);
+}
+
+list_t list_t_new(void *data) {
+	list_t out = xmalloc(sizeof(struct list));
+	out->data = data;
+
+	return out;
+}
+
 /*
  * string_realloc()
  *

Modified: trunk/ekg/dynstuff.h
===================================================================
--- trunk/ekg/dynstuff.h	2008-03-10 20:20:49 UTC (rev 3891)
+++ trunk/ekg/dynstuff.h	2008-03-10 21:02:44 UTC (rev 3892)
@@ -107,7 +107,7 @@
 
 int list_remove(list_t *list, void *data, int free_data);
 int list_remove2(list_t *list, void *data, void (*func)(void *));
-list_t list_remove3(list_t *list, list_t elem, void (*func)(void *));
+list_t list_remove3(list_t *list, list_t elem, void (*func)(list_t));
 list_t list_unlink3(list_t *list, list_t elem);
 
 int list_destroy(list_t list, int free_data);
@@ -116,6 +116,9 @@
 
 void list_cleanup(list_t *list);
 int list_remove_safe(list_t *list, void *data, int free_data);
+
+LIST_FREE_ITEM(list_t_free_item, list_t);
+list_t list_t_new(void *data);
 #endif
 
 /*

Modified: trunk/ekg/protocol.c
===================================================================
--- trunk/ekg/protocol.c	2008-03-10 20:20:49 UTC (rev 3891)
+++ trunk/ekg/protocol.c	2008-03-10 21:02:44 UTC (rev 3892)
@@ -794,10 +794,10 @@
                 if (do_find) {
                         if (i == auto_find_limit) {
                                 debug("// autofind reached %d limit, removing the oldest uin: %d\n", auto_find_limit, *((char *)autofinds->data));
-                                list_remove(&autofinds, autofinds->data, 1);
+                                list_remove3(&autofinds, autofinds->data, list_t_free_item);
                         }
 
-                        list_add(&autofinds, (void *) xstrdup(uid));
+                        list_add3(&autofinds, list_t_new(xstrdup(uid)));
 
                         command_exec_format(target, session_class, 0, ("/find %s"), uid);
                 }



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