/[radius]/radius/lib/list.c
ViewVC logotype

Diff of /radius/lib/list.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by gray, Tue May 6 12:59:48 2003 UTC revision 1.7 by gray, Sat Jun 7 10:57:54 2003 UTC
# Line 276  list_locate(struct list *list, void *dat Line 276  list_locate(struct list *list, void *dat
276          return cur ? cur->data : NULL;          return cur ? cur->data : NULL;
277  }  }
278                    
279    int
280    list_insert_sorted(struct list *list, void *data, list_comp_t cmp)
281    {
282            struct list_entry *cur, *prev;
283            
284            if (!list)
285                    return -1;
286            if (!cmp)
287                    return -1;
288                    
289            for (cur = list->head, prev = NULL; cur; prev = cur, cur = cur->next)
290                    if (cmp(cur->data, data) > 0)
291                            break;
292    
293            if (!prev) {
294                    list_prepend(list, data);
295            } else if (!cur) {
296                    list_append(list, data);
297            } else {
298                    struct list_entry *ep = emalloc(sizeof(*ep));
299                    ep->data = data;
300                    ep->next = cur;
301                    prev->next = ep;
302            }
303            return 0;
304    }
305    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26