diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-10-21 20:25:32 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-10-21 20:25:32 +0200 |
| commit | 0cf7761bf2985f683b1b73dfe5bdb731672e2b7f (patch) | |
| tree | 3aff24216409fa5ac313b2ff686f3e23ba9493ff | |
| parent | 70a7a3a54d4e300c7ec75d18d14d6d6b174c9ee4 (diff) | |
| download | libft-0cf7761bf2985f683b1b73dfe5bdb731672e2b7f.tar.gz libft-0cf7761bf2985f683b1b73dfe5bdb731672e2b7f.tar.bz2 libft-0cf7761bf2985f683b1b73dfe5bdb731672e2b7f.zip | |
Added protection on part2 and changed lstmap according to the subject
| -rw-r--r-- | ft_lstmap_bonus.c | 31 | ||||
| -rw-r--r-- | ft_putchar_fd.c | 3 | ||||
| -rw-r--r-- | ft_putendl_fd.c | 3 | ||||
| -rw-r--r-- | ft_putnbr_fd.c | 3 | ||||
| -rw-r--r-- | ft_putstr_fd.c | 3 | ||||
| -rw-r--r-- | ft_split.c | 2 | ||||
| -rw-r--r-- | ft_strjoin.c | 2 | ||||
| -rw-r--r-- | ft_strmapi.c | 2 | ||||
| -rw-r--r-- | ft_strtrim.c | 2 | ||||
| -rw-r--r-- | libft.h | 3 | ||||
| -rw-r--r-- | notes | 40 |
11 files changed, 47 insertions, 47 deletions
diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c index 1dfce78..9ca7cad 100644 --- a/ft_lstmap_bonus.c +++ b/ft_lstmap_bonus.c @@ -13,15 +13,34 @@ #include <stdlib.h> #include "libft.h" -t_list *ft_lstmap(t_list *lst, void *(*f)(void *)) +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) { t_list *mapped; + t_list *tmp; - if (lst == NULL || f == NULL) + if (lst == NULL || f == NULL || del == NULL) return (NULL); - if ((mapped = ft_lstnew(lst->content)) == NULL) - return (NULL); - mapped->content = (*f)(mapped->content); - mapped->next = ft_lstmap(lst->next, f); + mapped = NULL; + while (lst) + { + if ((tmp = ft_lstnew((*f)(lst->content))) == NULL) + { + ft_lstclear(&tmp, del); + return (NULL); + } + tmp->next = lst->next; + ft_lstadd_back(&mapped, tmp); + lst = lst->next; + } return (mapped); } + +/* +** Rest in peace, my beautiful recursion. +** +** if ((tmp = ft_lstnew(lst->content)) == NULL) +** return (NULL); +** tmp->content = (*f)(tmp->content); +** tmp->next = ft_lstmap(lst->next, f); +** return (tmp); +*/ diff --git a/ft_putchar_fd.c b/ft_putchar_fd.c index 89c7ed9..a06b8b1 100644 --- a/ft_putchar_fd.c +++ b/ft_putchar_fd.c @@ -11,8 +11,11 @@ /* ************************************************************************** */ #include <unistd.h> +#include <limits.h> void ft_putchar_fd(char c, int fd) { + if (fd < 0 || fd > OPEN_MAX) + return ; write(fd, &c, 1); } diff --git a/ft_putendl_fd.c b/ft_putendl_fd.c index d9f6d7d..8b77884 100644 --- a/ft_putendl_fd.c +++ b/ft_putendl_fd.c @@ -10,10 +10,13 @@ /* */ /* ************************************************************************** */ +#include <limits.h> #include "libft.h" void ft_putendl_fd(char *s, int fd) { + if (s == NULL || fd < 0 || fd > OPEN_MAX) + return ; ft_putstr_fd(s, fd); ft_putchar_fd('\n', fd); } diff --git a/ft_putnbr_fd.c b/ft_putnbr_fd.c index db91e06..562d289 100644 --- a/ft_putnbr_fd.c +++ b/ft_putnbr_fd.c @@ -11,12 +11,15 @@ /* ************************************************************************** */ #include <unistd.h> +#include <limits.h> #include "libft.h" void ft_putnbr_fd(int n, int fd) { unsigned int p_n; + if (fd < 0 || fd > OPEN_MAX) + return ; p_n = n; if (n < 0) { diff --git a/ft_putstr_fd.c b/ft_putstr_fd.c index 22028b7..1f2bbda 100644 --- a/ft_putstr_fd.c +++ b/ft_putstr_fd.c @@ -11,9 +11,12 @@ /* ************************************************************************** */ #include <unistd.h> +#include <limits.h> void ft_putstr_fd(char *s, int fd) { + if (s == NULL || fd < 0 || fd > OPEN_MAX) + return ; while (*s) write(fd, s++, 1); } @@ -68,6 +68,8 @@ char **ft_split(char const *s, char c) size_t i; size_t j; + if (s == NULL) + return (NULL); tab_counter = count_segment(s, c); if ((strs = (char**)malloc(sizeof(char*) * (tab_counter + 1))) == NULL) return (NULL); diff --git a/ft_strjoin.c b/ft_strjoin.c index a282c53..0078d65 100644 --- a/ft_strjoin.c +++ b/ft_strjoin.c @@ -17,6 +17,8 @@ char *ft_strjoin(char const *s1, char const *s2) { char *joined; + if (s1 == NULL || s2 == NULL) + return (NULL); if ((joined = (char*)malloc(sizeof(char) * (ft_strlen(s1) + ft_strlen(s2) + 1))) == NULL) return (NULL); diff --git a/ft_strmapi.c b/ft_strmapi.c index 2ded74e..7784980 100644 --- a/ft_strmapi.c +++ b/ft_strmapi.c @@ -19,6 +19,8 @@ char *ft_strmapi(char *s, char (*f)(unsigned int, char)) size_t len; char *mapped; + if (s == NULL || f == NULL) + return (NULL); len = ft_strlen(s); if ((mapped = (char*)malloc(sizeof(char) * (len + 1))) == NULL) return (NULL); diff --git a/ft_strtrim.c b/ft_strtrim.c index 048b297..8cde14e 100644 --- a/ft_strtrim.c +++ b/ft_strtrim.c @@ -19,6 +19,8 @@ char *ft_strtrim(char const *s1, char const *set) size_t len; char *trimed; + if (s1 == NULL || set == NULL) + return (NULL); start = 0; while (s1[start] && ft_strchr(set, s1[start]) != NULL) start++; @@ -94,6 +94,7 @@ void ft_lstadd_back(t_list **alst, t_list *new); void ft_lstdelone(t_list *lst, void (*del)(void *)); void ft_lstclear(t_list **lst, void (*del)(void *)); void ft_lstiter(t_list *lst, void (*f)(void *)); -t_list *ft_lstmap(t_list *lst, void *(*f)(void *)); +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), + void (*del)(void *)); #endif @@ -1,40 +0,0 @@ -- memset - ^> bzero - si s == NULL: - si n > sizeof(s): - -- memcpy - si dest == NULL: - si src == NULL: - si dest && src == NULL: - si n > sizeof(dest): - si n > sizeof(src): - -- memccpy - si dest == NULL: - si src == NULL: - si dest && src == NULL: - si n > sizeof(dest): - si n > sizeof(src): - !! si c est dernier dans dest essaye i + 1: ?? - -- memmove - si dst == NULL: - si src == NULL: - si dst && src == NULL: - si dst == src - si n > sizeof(dest): - si n > sizeof(src): - -- memchr -- memcmp -- strchr -- strrchr -- strncmp -- strlcpy -- strlcat -- strnstr -- atoi - -- calloc -- strdup |
