| diff -Naur wminet-3.0.0.orig/src/list.c wminet-3.0.0/src/list.c |
| --- wminet-3.0.0.orig/src/list.c 2001-11-24 12:03:32.000000000 +0100 |
| +++ wminet-3.0.0/src/list.c 2016-01-04 13:45:02.137642820 +0100 |
| @@ -38,7 +38,7 @@ |
| |
| /* Return a cons cell produced from (head . tail) */ |
| |
| -INLINE LinkedList* |
| +LinkedList* |
| list_cons(void* head, LinkedList* tail) |
| { |
| LinkedList* cell; |
| @@ -51,7 +51,7 @@ |
| |
| /* Return the length of a list, list_length(NULL) returns zero */ |
| |
| -INLINE int |
| +int |
| list_length(LinkedList* list) |
| { |
| int i = 0; |
| @@ -66,7 +66,7 @@ |
| /* Return the Nth element of LIST, where N count from zero. If N |
| larger than the list length, NULL is returned */ |
| |
| -INLINE void* |
| +void* |
| list_nth(int index, LinkedList* list) |
| { |
| while(index-- != 0) |
| @@ -81,7 +81,7 @@ |
| |
| /* Remove the element at the head by replacing it by its successor */ |
| |
| -INLINE void |
| +void |
| list_remove_head(LinkedList** list) |
| { |
| if (!*list) return; |
| @@ -101,7 +101,7 @@ |
| |
| /* Remove the element with `car' set to ELEMENT */ |
| /* |
| -INLINE void |
| +void |
| list_remove_elem(LinkedList** list, void* elem) |
| { |
| while (*list) |
| @@ -112,7 +112,7 @@ |
| } |
| }*/ |
| |
| -INLINE LinkedList * |
| +LinkedList * |
| list_remove_elem(LinkedList* list, void* elem) |
| { |
| LinkedList *tmp; |
| @@ -132,7 +132,7 @@ |
| |
| /* Return element that has ELEM as car */ |
| |
| -INLINE LinkedList* |
| +LinkedList* |
| list_find(LinkedList* list, void* elem) |
| { |
| while(list) |
| @@ -146,7 +146,7 @@ |
| |
| /* Free list (backwards recursive) */ |
| |
| -INLINE void |
| +void |
| list_free(LinkedList* list) |
| { |
| if(list) |
| @@ -158,7 +158,7 @@ |
| |
| /* Map FUNCTION over all elements in LIST */ |
| |
| -INLINE void |
| +void |
| list_mapcar(LinkedList* list, void(*function)(void*)) |
| { |
| while(list) |
| diff -Naur wminet-3.0.0.orig/src/list.c.orig wminet-3.0.0/src/list.c.orig |
| --- wminet-3.0.0.orig/src/list.c.orig 1970-01-01 01:00:00.000000000 +0100 |
| +++ wminet-3.0.0/src/list.c.orig 2001-11-24 12:03:32.000000000 +0100 |
| @@ -0,0 +1,169 @@ |
| +/* Generic single linked list to keep various information |
| + Copyright (C) 1993, 1994 Free Software Foundation, Inc. |
| + |
| + |
| +Author: Kresten Krab Thorup |
| + |
| +Many modifications by Alfredo K. Kojima |
| + |
| + |
| +This file is part of GNU CC. |
| + |
| +GNU CC is free software; you can redistribute it and/or modify |
| +it under the terms of the GNU General Public License as published by |
| +the Free Software Foundation; either version 2, or (at your option) |
| +any later version. |
| + |
| +GNU CC is distributed in the hope that it will be useful, |
| +but WITHOUT ANY WARRANTY; without even the implied warranty of |
| +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| +GNU General Public License for more details. |
| + |
| +You should have received a copy of the GNU General Public License |
| +along with GNU CC; see the file COPYING. If not, write to |
| +the Free Software Foundation, 59 Temple Place - Suite 330, |
| +Boston, MA 02111-1307, USA. */ |
| + |
| +/* As a special exception, if you link this library with files compiled with |
| + GCC to produce an executable, this does not cause the resulting executable |
| + to be covered by the GNU General Public License. This exception does not |
| + however invalidate any other reasons why the executable file might be |
| + covered by the GNU General Public License. */ |
| + |
| +#include "list.h" |
| +#ifdef HAVE_SYS_TYPES_H |
| +# include <sys/types.h> |
| +#endif |
| +#include <stdlib.h> |
| + |
| +/* Return a cons cell produced from (head . tail) */ |
| + |
| +INLINE LinkedList* |
| +list_cons(void* head, LinkedList* tail) |
| +{ |
| + LinkedList* cell; |
| + |
| + cell = (LinkedList*)malloc(sizeof(LinkedList)); |
| + cell->head = head; |
| + cell->tail = tail; |
| + return cell; |
| +} |
| + |
| +/* Return the length of a list, list_length(NULL) returns zero */ |
| + |
| +INLINE int |
| +list_length(LinkedList* list) |
| +{ |
| + int i = 0; |
| + while(list) |
| + { |
| + i += 1; |
| + list = list->tail; |
| + } |
| + return i; |
| +} |
| + |
| +/* Return the Nth element of LIST, where N count from zero. If N |
| + larger than the list length, NULL is returned */ |
| + |
| +INLINE void* |
| +list_nth(int index, LinkedList* list) |
| +{ |
| + while(index-- != 0) |
| + { |
| + if(list->tail) |
| + list = list->tail; |
| + else |
| + return 0; |
| + } |
| + return list->head; |
| +} |
| + |
| +/* Remove the element at the head by replacing it by its successor */ |
| + |
| +INLINE void |
| +list_remove_head(LinkedList** list) |
| +{ |
| + if (!*list) return; |
| + if ((*list)->tail) |
| + { |
| + LinkedList* tail = (*list)->tail; /* fetch next */ |
| + *(*list) = *tail; /* copy next to list head */ |
| + free(tail); /* free next */ |
| + } |
| + else /* only one element in list */ |
| + { |
| + free(*list); |
| + (*list) = 0; |
| + } |
| +} |
| + |
| + |
| +/* Remove the element with `car' set to ELEMENT */ |
| +/* |
| +INLINE void |
| +list_remove_elem(LinkedList** list, void* elem) |
| +{ |
| + while (*list) |
| + { |
| + if ((*list)->head == elem) |
| + list_remove_head(list); |
| + *list = (*list ? (*list)->tail : NULL); |
| + } |
| +}*/ |
| + |
| +INLINE LinkedList * |
| +list_remove_elem(LinkedList* list, void* elem) |
| +{ |
| + LinkedList *tmp; |
| + |
| + if (list) { |
| + if (list->head == elem) { |
| + tmp = list->tail; |
| + free(list); |
| + return tmp; |
| + } |
| + list->tail = list_remove_elem(list->tail, elem); |
| + return list; |
| + } |
| + return NULL; |
| +} |
| + |
| + |
| +/* Return element that has ELEM as car */ |
| + |
| +INLINE LinkedList* |
| +list_find(LinkedList* list, void* elem) |
| +{ |
| + while(list) |
| + { |
| + if (list->head == elem) |
| + return list; |
| + list = list->tail; |
| + } |
| + return NULL; |
| +} |
| + |
| +/* Free list (backwards recursive) */ |
| + |
| +INLINE void |
| +list_free(LinkedList* list) |
| +{ |
| + if(list) |
| + { |
| + list_free(list->tail); |
| + free(list); |
| + } |
| +} |
| + |
| +/* Map FUNCTION over all elements in LIST */ |
| + |
| +INLINE void |
| +list_mapcar(LinkedList* list, void(*function)(void*)) |
| +{ |
| + while(list) |
| + { |
| + (*function)(list->head); |
| + list = list->tail; |
| + } |
| +} |
| diff -Naur wminet-3.0.0.orig/src/list.h wminet-3.0.0/src/list.h |
| --- wminet-3.0.0.orig/src/list.h 2001-11-24 12:03:32.000000000 +0100 |
| +++ wminet-3.0.0/src/list.h 2016-01-04 13:45:02.137642820 +0100 |
| @@ -29,31 +29,25 @@ |
| #ifndef __LIST_H_ |
| #define __LIST_H_ |
| |
| -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) |
| -# define INLINE inline |
| -#else |
| -# define INLINE |
| -#endif |
| - |
| typedef struct LinkedList { |
| void *head; |
| struct LinkedList *tail; |
| } LinkedList; |
| |
| -INLINE LinkedList* list_cons(void* head, LinkedList* tail); |
| +LinkedList* list_cons(void* head, LinkedList* tail); |
| |
| -INLINE int list_length(LinkedList* list); |
| +int list_length(LinkedList* list); |
| |
| -INLINE void* list_nth(int index, LinkedList* list); |
| +void* list_nth(int index, LinkedList* list); |
| |
| -INLINE void list_remove_head(LinkedList** list); |
| +void list_remove_head(LinkedList** list); |
| |
| -INLINE LinkedList *list_remove_elem(LinkedList* list, void* elem); |
| +LinkedList *list_remove_elem(LinkedList* list, void* elem); |
| |
| -INLINE void list_mapcar(LinkedList* list, void(*function)(void*)); |
| +void list_mapcar(LinkedList* list, void(*function)(void*)); |
| |
| -INLINE LinkedList*list_find(LinkedList* list, void* elem); |
| +LinkedList*list_find(LinkedList* list, void* elem); |
| |
| -INLINE void list_free(LinkedList* list); |
| +void list_free(LinkedList* list); |
| |
| #endif |