diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-10-14 12:54:57 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-10-15 07:58:38 +0200 |
| commit | f23592ea0c122a0da2723d4253c47ca227529f79 (patch) | |
| tree | 6aeb7318fd7a13b1aef209e408fc0f867c7647cf | |
| parent | bbdc932411501e239757985023942f93d1b21f46 (diff) | |
| download | libft-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.c | 18 | ||||
| -rw-r--r-- | ft_strdup.c | 2 | ||||
| -rw-r--r-- | ft_strnstr.c | 6 | ||||
| -rw-r--r-- | ft_strtrim.c | 2 | ||||
| -rw-r--r-- | ft_substr.c | 2 | ||||
| -rw-r--r-- | libft.h | 117 | ||||
| -rw-r--r-- | libft_bonus.h | 8 | ||||
| -rw-r--r-- | subject.en.pdf | bin | 1366391 -> 1657956 bytes |
8 files changed, 83 insertions, 72 deletions
@@ -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 */ /* */ /* ************************************************************************** */ @@ -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 Binary files differindex da9882a..67a054c 100644 --- a/subject.en.pdf +++ b/subject.en.pdf |
