static NetlinkList *getResultList(int p_socket, int p_request) { if(netlink_send(p_socket, p_request) < 0) { return NULL; } NetlinkList *l_list = NULL; NetlinkList *l_end = NULL; int l_size; int l_done = 0; while(!l_done) { struct nlmsghdr *l_hdr = getNetlinkResponse(p_socket, &l_size, &l_done); if(!l_hdr) { // error freeResultList(l_list); return NULL; } NetlinkList *l_item = newListItem(l_hdr, l_size); if(!l_list) { l_list = l_item; } else { l_end->m_next = l_item; } l_end = l_item; } return l_list; }
map checkMapExistence(map m, list origin) { if (compareMap(m, origin->m)) { //deleteMap(m); //return origin->m; delete_game(m->g); free(m); return NULL; } if (origin->next == NULL) { newListItem(m, origin); return m; } return checkMapExistence(m, origin->next); }
void pushValue(GeneralList *tl, void *s) { ListItem *it; if (s == NULL) return; it = newListItem(s, NULL, tl->last); if (tl->first == NULL) { tl->first = it; tl->last = it; tl->nitem = 1; } else { tl->last->next = it; tl->last = it; tl->nitem++; } }