1 /***
2 This file is part of avahi.
3
4 avahi is free software; you can redistribute it and/or modify it
5 under the terms of the GNU Lesser General Public License as
6 published by the Free Software Foundation; either version 2.1 of the
7 License, or (at your option) any later version.
8
9 avahi is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
12 Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with avahi; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
17 USA.
18 ***/
19
20 #ifdef HAVE_CONFIG_H
21 #include <config.h>
22 #endif
23
24 #include <stdlib.h>
25
26 #include "rlist.h"
27 #include "avahi-malloc.h"
28
avahi_rlist_prepend(AvahiRList * r,void * data)29 AvahiRList* avahi_rlist_prepend(AvahiRList *r, void *data) {
30 AvahiRList *n;
31
32 if (!(n = avahi_new(AvahiRList, 1)))
33 return NULL;
34
35 n->data = data;
36
37 AVAHI_LLIST_PREPEND(AvahiRList, rlist, r, n);
38 return r;
39 }
40
avahi_rlist_remove(AvahiRList * r,void * data)41 AvahiRList* avahi_rlist_remove(AvahiRList *r, void *data) {
42 AvahiRList *n;
43
44 for (n = r; n; n = n->rlist_next)
45
46 if (n->data == data) {
47 AVAHI_LLIST_REMOVE(AvahiRList, rlist, r, n);
48 avahi_free(n);
49 break;
50 }
51
52 return r;
53 }
54
avahi_rlist_remove_by_link(AvahiRList * r,AvahiRList * n)55 AvahiRList* avahi_rlist_remove_by_link(AvahiRList *r, AvahiRList *n) {
56 assert(n);
57
58 AVAHI_LLIST_REMOVE(AvahiRList, rlist, r, n);
59 avahi_free(n);
60
61 return r;
62 }
63