aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ft_lstmap_bonus.c31
-rw-r--r--ft_putchar_fd.c3
-rw-r--r--ft_putendl_fd.c3
-rw-r--r--ft_putnbr_fd.c3
-rw-r--r--ft_putstr_fd.c3
-rw-r--r--ft_split.c2
-rw-r--r--ft_strjoin.c2
-rw-r--r--ft_strmapi.c2
-rw-r--r--ft_strtrim.c2
-rw-r--r--libft.h3
-rw-r--r--notes40
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);
}
diff --git a/ft_split.c b/ft_split.c
index 62ba476..d4ceabf 100644
--- a/ft_split.c
+++ b/ft_split.c
@@ -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++;
diff --git a/libft.h b/libft.h
index 3ac17b4..87b57c2 100644
--- a/libft.h
+++ b/libft.h
@@ -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
diff --git a/notes b/notes
deleted file mode 100644
index 2582c6b..0000000
--- a/notes
+++ /dev/null
@@ -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