]> git.meshlink.io Git - catta/blob - avahi-common/rlist.c
Merge remote-tracking branch 'origin/master-tx'
[catta] / avahi-common / rlist.c
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 "malloc.h"
28
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
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
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 }