+ while(list->current!=NULL) list_del_element(list,list->current);
+
+ return L_SUCCESS;
+}
+
+int list_search_data(t_list *list,void *data,int first_bytes) {
+
+ list_reset(list);
+
+ if(list->start==NULL) {
+ dprintf(list->outfd,"[list] empty list\n");
+ return L_EMPTY_LIST;
+ }
+
+ do {
+ if(list->current!=NULL)
+ if(first_bytes<=list->current->data_len)
+ if(!(memcmp(list->current->data,data,first_bytes))) return L_SUCCESS;
+ } while(list_next(list)!=L_NO_NEXT_ELEMENT);
+
+ return L_NO_SUCH_ELEMENT;
+}
+
+int list_add_element(t_list *list,void *data,int data_len) {
+
+ list_reset(list);
+
+ while(list->current!=NULL) {
+ if(data_len==list->current->data_len) {
+ if(!memcmp(list->current->data,data,data_len)) {
+ dprintf(list->outfd,"[list] element already in list\n");
+ return L_ELEMENT_IN_LIST;
+ }
+ }
+ if(list->current->next==NULL) {
+ list->current->next=(t_list_element *)malloc(sizeof(t_list_element));
+ if(list->current->next==NULL) {
+ dprintf(list->outfd,"[list] unable to allocate element memory\n");
+ return L_E_MEM;
+ }
+ list->current->next->prev=list->current;
+ list->current->next->next=NULL;
+ if((list->current->next->data=malloc(data_len))==NULL) {
+ dprintf(list->outfd,"[list] unable to allocate data memory\n");
+ return L_E_MEM;
+ }
+ memcpy(list->current->next->data,data,data_len);
+ list->current->next->data_len=data_len;
+
+ list->current=list->current->next;
+
+ dprintf(list->outfd,"[list] element added\n");
+
+ return L_SUCCESS;