aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-10-14 12:54:57 +0200
committerCharles <sircharlesaze@gmail.com>2019-10-15 07:58:38 +0200
commitf23592ea0c122a0da2723d4253c47ca227529f79 (patch)
tree6aeb7318fd7a13b1aef209e408fc0f867c7647cf
parentbbdc932411501e239757985023942f93d1b21f46 (diff)
downloadlibft-f23592ea0c122a0da2723d4253c47ca227529f79.tar.gz
libft-f23592ea0c122a0da2723d4253c47ca227529f79.tar.bz2
libft-f23592ea0c122a0da2723d4253c47ca227529f79.zip
Fixed ft_split to destroy previous alloc if ENOMEM
- Normed libf.h - Removed ugly conditions in ft_strnstr
-rw-r--r--ft_split.c18
-rw-r--r--ft_strdup.c2
-rw-r--r--ft_strnstr.c6
-rw-r--r--ft_strtrim.c2
-rw-r--r--ft_substr.c2
-rw-r--r--libft.h117
-rw-r--r--libft_bonus.h8
-rw-r--r--subject.en.pdfbin1366391 -> 1657956 bytes
8 files changed, 83 insertions, 72 deletions
diff --git a/ft_split.c b/ft_split.c
index e3b312c..74703fb 100644
--- a/ft_split.c
+++ b/ft_split.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:22:09 by cacharle #+# #+# */
-/* Updated: 2019/10/07 14:30:10 by cacharle ### ########.fr */
+/* Updated: 2019/10/14 12:51:34 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -48,6 +48,17 @@ static char *ft_strndup(const char *s1, size_t n)
return (clone);
}
+static void *destroy_strs(char **strs)
+{
+ int i;
+
+ i = 0;
+ while (strs[i] != NULL)
+ free(strs[i++]);
+ free(strs);
+ return (NULL);
+}
+
char **ft_split(char const *s, char c)
{
char **strs;
@@ -69,9 +80,10 @@ char **ft_split(char const *s, char c)
i = 0;
while (s[i] && s[i] != c)
i++;
- strs[j++] = ft_strndup(s, i);
+ if ((strs[j++] = ft_strndup(s, i)) == NULL)
+ return (destroy_strs(strs));
s += i;
}
- strs[j] = 0;
+ strs[j] = NULL;
return (strs);
}
diff --git a/ft_strdup.c b/ft_strdup.c
index 8a0ce90..ff02812 100644
--- a/ft_strdup.c
+++ b/ft_strdup.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:18:07 by cacharle #+# #+# */
-/* Updated: 2019/10/07 10:37:21 by cacharle ### ########.fr */
+/* Updated: 2019/10/14 14:47:49 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/ft_strnstr.c b/ft_strnstr.c
index ebe2fcf..0074c8e 100644
--- a/ft_strnstr.c
+++ b/ft_strnstr.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:25:13 by cacharle #+# #+# */
-/* Updated: 2019/10/12 13:51:56 by cacharle ### ########.fr */
+/* Updated: 2019/10/15 07:55:12 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -21,10 +21,6 @@ char *ft_strnstr(const char *haystack, const char *needle, size_t len)
size_t needle_len;
needle_len = ft_strlen(needle);
- if (needle_len == 0 && len == 0)
- return ((char*)haystack);
- if (len == 0)
- return (NULL);
if (needle_len == 0)
return ((char*)haystack);
i = -1;
diff --git a/ft_strtrim.c b/ft_strtrim.c
index 4ff2cfe..048b297 100644
--- a/ft_strtrim.c
+++ b/ft_strtrim.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:24:16 by cacharle #+# #+# */
-/* Updated: 2019/10/07 14:04:31 by cacharle ### ########.fr */
+/* Updated: 2019/10/14 13:22:33 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/ft_substr.c b/ft_substr.c
index 7f7d3c4..1d22059 100644
--- a/ft_substr.c
+++ b/ft_substr.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:16:26 by cacharle #+# #+# */
-/* Updated: 2019/10/07 12:52:43 by cacharle ### ########.fr */
+/* Updated: 2019/10/14 13:24:02 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/libft.h b/libft.h
index 31fcfe0..8820104 100644
--- a/libft.h
+++ b/libft.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 09:45:02 by cacharle #+# #+# */
-/* Updated: 2019/10/11 14:58:42 by cacharle ### ########.fr */
+/* Updated: 2019/10/15 07:55:54 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -20,59 +20,66 @@
typedef unsigned char t_byte;
-void *ft_memset(void *s, int c, size_t n);
-void ft_bzero(void *s, size_t n);
-void *ft_memcpy(void *dest, const void *src, size_t n);
-void *ft_memccpy(void *dest, const void *src, int c, size_t n);
-void *ft_memmove(void *dst, const void *src, size_t len);
-void *ft_memchr(const void *s, int c, size_t n);
-int ft_memcmp(const void *s1, const void *s2, size_t n);
-size_t ft_strlen(const char *s);
-char *ft_strdup(const char *s);
-char *ft_strcpy(char *dest, const char *src);
-char *ft_strncpy(char *dest, const char *src, size_t n);
-char *ft_strcat(char *dest, const char *src);
-char *ft_strncat(char *dest, const char *src, size_t n);
-size_t ft_strlcat(char *dst, const char *src, size_t size);
-size_t ft_strlcpy(char *dst, const char *src, size_t size);
-char *ft_strchr(const char *s, int c);
-char *ft_strrchr(const char *s, int c);
-char *ft_strstr(const char *haystack, const char *needle);
-char *ft_strnstr(const char *haystack, const char *needle, size_t len);
-int ft_strcmp(const char *s1, const char *s2);
-int ft_strncmp(const char *s1, const char *s2, size_t n);
-int ft_atoi(const char *nptr);
-int ft_isalpha(int c);
-int ft_isdigit(int c);
-int ft_isalnum(int c);
-int ft_isascii(int c);
-int ft_isprint(int c);
-int ft_toupper(int c);
-int ft_tolower(int c);
-void *ft_calloc(size_t count, size_t size);
-void *ft_memalloc(size_t size);
-void ft_memdel(void **ap);
-char *ft_strnew(size_t size);
-void ft_strdel(char **as);
-void ft_strclr(char *s);
-void ft_striter(char *s, void (*f)(char *));
-void ft_striteri(char *s, void (*f)(unsigned int, char *));
-char *ft_strmap(char const *s, char (*f)(char));
-char *ft_strmapi(char *s, char (*f)(unsigned int, char));
-int ft_strequ(char const *s1, char const *s2);
-int ft_strnequ(char const *s1, char const *s2, size_t n);
-char *ft_substr(char const *s, unsigned int start, size_t len);
-char *ft_strjoin(char const *s1, char const *s2);
-char *ft_strtrim(char const *s1, char const *set);
-char **ft_split(char const *s, char c);
-char *ft_itoa(int n);
-void ft_putendl(char *s);
-void ft_putchar(char c);
-void ft_putstr(char const *s);
-void ft_putnbr(int n);
-void ft_putchar_fd(char c, int fd);
-void ft_putstr_fd(char *s, int fd);
-void ft_putendl_fd(char *s, int fd);
-void ft_putnbr_fd(int n, int fd);
+typedef struct s_list
+{
+ void *content;
+ struct s_list *next;
+} t_list;
+
+void *ft_memset(void *s, int c, size_t n);
+void ft_bzero(void *s, size_t n);
+void *ft_memcpy(void *dest, const void *src, size_t n);
+void *ft_memccpy(void *dest, const void *src, int c, size_t n);
+void *ft_memmove(void *dst, const void *src, size_t len);
+void *ft_memchr(const void *s, int c, size_t n);
+int ft_memcmp(const void *s1, const void *s2, size_t n);
+size_t ft_strlen(const char *s);
+char *ft_strdup(const char *s);
+char *ft_strcpy(char *dest, const char *src);
+char *ft_strncpy(char *dest, const char *src, size_t n);
+char *ft_strcat(char *dest, const char *src);
+char *ft_strncat(char *dest, const char *src, size_t n);
+size_t ft_strlcat(char *dst, const char *src, size_t size);
+size_t ft_strlcpy(char *dst, const char *src, size_t size);
+char *ft_strchr(const char *s, int c);
+char *ft_strrchr(const char *s, int c);
+char *ft_strstr(const char *haystack, const char *needle);
+char *ft_strnstr(const char *haystack,
+ const char *needle, size_t len);
+int ft_strcmp(const char *s1, const char *s2);
+int ft_strncmp(const char *s1, const char *s2, size_t n);
+int ft_atoi(const char *nptr);
+int ft_isalpha(int c);
+int ft_isdigit(int c);
+int ft_isalnum(int c);
+int ft_isascii(int c);
+int ft_isprint(int c);
+int ft_toupper(int c);
+int ft_tolower(int c);
+void *ft_calloc(size_t count, size_t size);
+void *ft_memalloc(size_t size);
+void ft_memdel(void **ap);
+char *ft_strnew(size_t size);
+void ft_strdel(char **as);
+void ft_strclr(char *s);
+void ft_striter(char *s, void (*f)(char *));
+void ft_striteri(char *s, void (*f)(unsigned int, char *));
+char *ft_strmap(char const *s, char (*f)(char));
+char *ft_strmapi(char *s, char (*f)(unsigned int, char));
+int ft_strequ(char const *s1, char const *s2);
+int ft_strnequ(char const *s1, char const *s2, size_t n);
+char *ft_substr(char const *s, unsigned int start, size_t len);
+char *ft_strjoin(char const *s1, char const *s2);
+char *ft_strtrim(char const *s1, char const *set);
+char **ft_split(char const *s, char c);
+char *ft_itoa(int n);
+void ft_putendl(char *s);
+void ft_putchar(char c);
+void ft_putstr(char const *s);
+void ft_putnbr(int n);
+void ft_putchar_fd(char c, int fd);
+void ft_putstr_fd(char *s, int fd);
+void ft_putendl_fd(char *s, int fd);
+void ft_putnbr_fd(int n, int fd);
#endif
diff --git a/libft_bonus.h b/libft_bonus.h
index 41b1d33..95487a6 100644
--- a/libft_bonus.h
+++ b/libft_bonus.h
@@ -6,18 +6,14 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/09 08:58:54 by cacharle #+# #+# */
-/* Updated: 2019/10/09 09:11:45 by cacharle ### ########.fr */
+/* Updated: 2019/10/15 07:58:09 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef LIBFT_BONUS_H
# define LIBFT_BONUS_H
-typedef struct s_list
-{
- void *content;
- struct s_list *next;
-} t_list;
+# include "libft.h"
t_list *ft_lstnew(void const *content);
void ft_lstadd_front(t_list **alst, t_list *new);
diff --git a/subject.en.pdf b/subject.en.pdf
index da9882a..67a054c 100644
--- a/subject.en.pdf
+++ b/subject.en.pdf
Binary files differ