diff options
author | Haru <haru@dotalux.com> | 2013-09-28 18:15:23 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2013-09-29 01:45:34 +0200 |
commit | 5697031dce0f02a55044504077775b909a42982d (patch) | |
tree | aef805d4d5f4eb9bc4da0282e84322369c26ed3b /src/common/db.c | |
parent | fe624087b2495fb258afd9177c6299139a1f914d (diff) | |
download | hercules-5697031dce0f02a55044504077775b909a42982d.tar.gz hercules-5697031dce0f02a55044504077775b909a42982d.tar.bz2 hercules-5697031dce0f02a55044504077775b909a42982d.tar.xz hercules-5697031dce0f02a55044504077775b909a42982d.zip |
Provided argument-list equivalent for several variadic functions
This is necessary for the upcoming HPM hooking system
Diffstat (limited to 'src/common/db.c')
-rw-r--r-- | src/common/db.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/common/db.c b/src/common/db.c index bd2bea424..b3a58e0a4 100644 --- a/src/common/db.c +++ b/src/common/db.c @@ -2730,20 +2730,26 @@ void linkdb_insert( struct linkdb_node** head, void *key, void* data) node->data = data; } -void linkdb_foreach( struct linkdb_node** head, LinkDBFunc func, ... ) -{ +void linkdb_vforeach( struct linkdb_node** head, LinkDBFunc func, va_list ap) { struct linkdb_node *node; if( head == NULL ) return; node = *head; while ( node ) { - va_list args; - va_start(args, func); - func( node->key, node->data, args ); - va_end(args); + va_list argscopy; + va_copy(argscopy, ap); + func(node->key, node->data, argscopy); + va_end(argscopy); node = node->next; } } +void linkdb_foreach( struct linkdb_node** head, LinkDBFunc func, ...) { + va_list ap; + va_start(ap, func); + linkdb_vforeach(head, func, ap); + va_end(ap); +} + void* linkdb_search( struct linkdb_node** head, void *key) { int n = 0; |