Home | History | Annotate | Download | only in avahi-common
      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 
     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 }
     63