minishell
ft_lstmap.c
Go to the documentation of this file.
1 /* ************************************************************************** */
2 /* */
3 /* ::: :::::::: */
4 /* ft_lstmap.c :+: :+: :+: */
5 /* +:+ +:+ +:+ */
6 /* By: kfujita <kfujita@student.42tokyo.jp> +#+ +:+ +#+ */
7 /* +#+#+#+#+#+ +#+ */
8 /* Created: 2022/04/20 00:46:36 by kfujita #+# #+# */
9 /* Updated: 2022/04/25 22:57:46 by kfujita ### ########.fr */
10 /* */
11 /* ************************************************************************** */
12 
13 #include <stddef.h>
14 #include "ft_lst.h"
15 
16 t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
17 {
18  t_list *p_new_lst_top;
19  t_list *p_new_lst;
20 
21  if (lst == NULL)
22  return (NULL);
23  p_new_lst_top = ft_lstnew(f(lst->content));
24  if (p_new_lst_top == NULL)
25  return (NULL);
26  p_new_lst = p_new_lst_top;
27  lst = lst->next;
28  while (lst != NULL)
29  {
30  p_new_lst->next = ft_lstnew(f(lst->content));
31  p_new_lst = p_new_lst->next;
32  lst = lst->next;
33  if (p_new_lst == NULL)
34  {
35  ft_lstclear(&p_new_lst_top, del);
36  return (NULL);
37  }
38  }
39  return (p_new_lst_top);
40 }
void ft_lstclear(t_list **lst, void(*del)(void *))
Definition: ft_lstclear.c:16
t_list * ft_lstnew(void *content)
Definition: ft_lstnew.c:16
t_list * ft_lstmap(t_list *lst, void *(*f)(void *), void(*del)(void *))
Definition: ft_lstmap.c:16
Definition: ft_lst.h:18
void * content
Definition: ft_lst.h:19
struct s_list * next
Definition: ft_lst.h:20