projects
/
my-code
/
api.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
point to added list element in case after adding an element
[my-code/api.git]
/
list
/
list.c
diff --git
a/list/list.c
b/list/list.c
index
664dd00
..
64a104a
100644
(file)
--- a/
list/list.c
+++ b/
list/list.c
@@
-28,6
+28,8
@@
int list_shutdown(t_list *list) {
int list_next(t_list *list) {
int list_next(t_list *list) {
+ if(list->current->next==NULL) return L_NO_NEXT_ELEMENT;
+
list->current=list->current->next;
return L_SUCCESS;
list->current=list->current->next;
return L_SUCCESS;
@@
-81,12
+83,17
@@
int list_search_data(t_list *list,void *data,int first_bytes) {
list_reset(list);
list_reset(list);
- while(list->current!=NULL) {
- if(first_bytes<=list->current->data_len)
- if(!(memcmp(list->current->data,data,first_bytes))) return L_SUCCESS;
- list_next(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;
}
return L_NO_SUCH_ELEMENT;
}
@@
-116,6
+123,8
@@
int list_add_element(t_list *list,void *data,int data_len) {
memcpy(list->current->next->data,data,data_len);
list->current->next->data_len=data_len;
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;
dprintf(list->outfd,"[list] element added\n");
return L_SUCCESS;
@@
-138,6
+147,8
@@
int list_add_element(t_list *list,void *data,int data_len) {
list->start->next=NULL;
list->start->prev=NULL;
list->start->next=NULL;
list->start->prev=NULL;
+ list->current=list->start;
+
dprintf(list->outfd,"[list] added initial element\n");
return L_SUCCESS;
dprintf(list->outfd,"[list] added initial element\n");
return L_SUCCESS;
@@
-151,10
+162,8
@@
int list_count(t_list *list) {
list_reset(list);
list_reset(list);
- while(list->current!=NULL) {
- list_next(list);
- ++count;
- }
+ if(list->current!=NULL) count++;
+ if(count) while(list_next(list)!=L_NO_NEXT_ELEMENT) count++;
return count;
}
return count;
}