1 /* list.c -- list management szuff
3 * author: hackbard@hackdaworld.dyndns.org
9 int list_init(t_list *list,int outfd) {
11 dprintf(outfd,"[list] list initilaization ...\n");
20 int list_del_next(t_list *list,t_list_element *element) {
25 dprintf(list->outfd,"[list] empty element\n");
26 return L_INVALID_ELEMENT;
29 if(element->next!=NULL) {
30 dprintf(list->outfd,"[list] destroying element number %d\n"
31 tmp=element->next->next;
32 if(element->next->data!=NULL) free(element->next->data);
37 dprintf(list->outfd,"[list] no next element\n");
38 return L_NO_NEXT_ELEMENT;
44 int list_destroy(t_list *list) {
46 if(list->start==NULL) {
47 dprintf(list->outfd,"[list] empty list\n");
51 list->current=list->start;
53 while(list->current->next!=NULL)
54 list_del_next(list,list->current);
59 int list_del_nr(t_list *list,int nr) {
61 if(list->start==NULL) {
62 dprintf(list->outfd,"[list] empty list\n");
66 if(list->start->number==nr) {
70 list->current=&(list->start);
72 while(list->current->next!=NULL) {
73 if(list->current->next->number==nr) {
74 list_del_next(list,list->current);
77 list->current=list->current->next;
80 return L_NO_SUCH_ELEMENT;
83 int list_search_data(t_list *list,void *data,int data_len) {
89 while(help->next!=NULL) {
90 if(help->next->data_len==data_len) {
91 if(!(memcmp(help->next->data,data,data_len)) {
92 list->current=help->next;
96 list->current=list->current->next;
99 return L_NO_SUCH_ELEMENT;
102 int list_search_nr(t_list *list,int nr) {
104 list->current=&(list->start);
106 while(list->current->next!=NULL) {
107 if(list->current->next->number==nr) {
108 list->current=list->current->next;
111 list->current=list->current->next;
114 return L_NO_SUCH_ELEMENT;
117 int list_append_element(t_list *list,t_list_element *element) {
119 list->current=&(list->start);