[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