11 int main(int argc, char **argv)
13 SilcBool success = FALSE;
15 struct foo *f, *f1, *f2, *f3, *f4;
17 if (argc > 1 && !strcmp(argv[1], "-d")) {
19 silc_log_debug_hexdump(TRUE);
20 silc_log_set_debug_string("*list*,*errno*");
23 silc_list_init_prev(list, struct foo, next, prev);
24 f1 = silc_calloc(1, sizeof(*f1));
28 f2 = silc_calloc(1, sizeof(*f2));
32 f3 = silc_calloc(1, sizeof(*f3));
36 f4 = silc_calloc(1, sizeof(*f4));
41 SILC_LOG_DEBUG(("Add one entry"));
42 silc_list_add(list, f1);
43 silc_list_start(list);
44 while ((f = silc_list_get(list)) != SILC_LIST_END) {
45 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
48 SILC_LOG_DEBUG(("Delete the entry"));
49 silc_list_del(list, f1);
50 silc_list_start(list);
51 while ((f = silc_list_get(list)) != SILC_LIST_END)
53 SILC_LOG_DEBUG(("head=%p", list.head));
54 SILC_LOG_DEBUG(("Re-add the entry"));
55 silc_list_add(list, f1);
56 silc_list_start(list);
57 while ((f = silc_list_get(list)) != SILC_LIST_END) {
58 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
61 SILC_LOG_DEBUG(("Delete the entry"));
62 silc_list_del(list, f1);
63 silc_list_start(list);
64 while ((f = silc_list_get(list)) != SILC_LIST_END)
67 SILC_LOG_DEBUG(("insert f4=%p at head"));
68 silc_list_insert(list, NULL, f4);
69 silc_list_start(list);
70 while ((f = silc_list_get(list)) != SILC_LIST_END) {
71 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
75 SILC_LOG_DEBUG(("Deleting f4=%p", f4));
76 silc_list_del(list, f4);
78 SILC_LOG_DEBUG(("Add f1, f2, f3"));
79 silc_list_add(list, f1);
80 silc_list_add(list, f2);
81 silc_list_add(list, f3);
83 SILC_LOG_DEBUG(("f1=%p", f1));
84 SILC_LOG_DEBUG(("f2=%p", f2));
85 SILC_LOG_DEBUG(("f3=%p", f3));
87 silc_list_start(list);
88 while ((f = silc_list_get(list)) != SILC_LIST_END) {
89 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
93 SILC_LOG_DEBUG(("insert f4=%p between f1=%p and f2=%p", f4, f1, f2));
94 silc_list_insert(list, f1, f4);
95 silc_list_start(list);
96 while ((f = silc_list_get(list)) != SILC_LIST_END) {
97 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
101 SILC_LOG_DEBUG(("Deleting f4=%p", f4));
102 silc_list_del(list, f4);
104 SILC_LOG_DEBUG(("insert f4=%p between f3=%p and tail", f4, f3));
105 silc_list_insert(list, f3, f4);
106 silc_list_start(list);
107 while ((f = silc_list_get(list)) != SILC_LIST_END) {
108 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
112 SILC_LOG_DEBUG(("Deleting f4=%p", f4));
113 silc_list_del(list, f4);
115 SILC_LOG_DEBUG(("insert f4=%p at head"));
116 silc_list_insert(list, NULL, f4);
117 silc_list_start(list);
118 while ((f = silc_list_get(list)) != SILC_LIST_END) {
119 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
123 silc_list_start(list);
124 silc_list_del(list, f1);
125 while ((f = silc_list_get(list)) != SILC_LIST_END) {
126 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
129 silc_list_del(list, f3);
130 while ((f = silc_list_get(list)) != SILC_LIST_END) {
131 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
134 silc_list_del(list, f2);
135 while ((f = silc_list_get(list)) != SILC_LIST_END) {
136 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
140 silc_list_add(list, f1);
141 silc_list_add(list, f2);
142 silc_list_add(list, f3);
144 silc_list_start(list);
145 while ((f = silc_list_get(list)) != SILC_LIST_END) {
146 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
150 silc_list_del(list, f2);
152 silc_list_start(list);
153 while ((f = silc_list_get(list)) != SILC_LIST_END) {
154 SILC_LOG_DEBUG(("entry %d, %p, next=%p, prev=%p", f->i, f, f->next,
161 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
162 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");