HI I donot understand where to start . I need ideas and help.

void InsertList(c4735list *destinationList,c4735list *sourceList,node *startNode)
   //=====================not implementd yet

this fn inserts source list into destination list.the nodes are inserted after the startnode in destination list.source list should be an empty list after this operation. the current pointer should be set to the head of the list.

typedef struct _node
    struct _node *prev, *next;
    void *data;
} node;

typedef struct _c4735list
    node *head, *tail;
    node *current;
    void (*cleanupData ) (void *); // function that knows how to clean up data
} c4735list;

So, show your code doing this. You only show the structure of the list and node structures.

#define LIST_FOREACH(L, S, M, V) node *_node = NULL;\
   node *V = NULL;\
    for(V = _node = L->S; _node != NULL; V = _node = _node->M)

I am iterating through sec list