diff options
Diffstat (limited to 'src/ft_lstmap.c')
| -rw-r--r-- | src/ft_lstmap.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/ft_lstmap.c b/src/ft_lstmap.c new file mode 100644 index 0000000..c001a2d --- /dev/null +++ b/src/ft_lstmap.c @@ -0,0 +1,26 @@ +#include "libft.h" +#include <stdlib.h> + +t_list * +ft_lstmap (t_list *lst, void *(*f) (void *), void (*del) (void *)) +{ + t_list *new_list; + t_list *node; + void *content; + + new_list = NULL; + while (lst) + { + content = f (lst->content); + node = ft_lstnew (content); + if (!node) + { + del (content); + ft_lstclear (&new_list, del); + return (NULL); + } + ft_lstadd_back (&new_list, node); + lst = lst->next; + } + return (new_list); +} |
