diff --git a/get_next_line.c b/get_next_line.c index 1d731df..98b7638 100644 --- a/get_next_line.c +++ b/get_next_line.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/12/29 18:07:43 by hulamy #+# #+# */ +/* Updated: 2019/12/29 18:08:47 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "get_next_line.h" /* diff --git a/get_next_line_bonus.c b/get_next_line_bonus.c index 96f36ef..6a7c111 100644 --- a/get_next_line_bonus.c +++ b/get_next_line_bonus.c @@ -1,20 +1,21 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* get_next_line.c :+: :+: :+: */ +/* get_next_line_bonus.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2019/12/21 00:28:33 by hulamy #+# #+# */ -/* Updated: 2019/12/21 00:28:39 by hulamy ### ########.fr */ +/* Created: 2019/12/29 18:06:33 by hulamy #+# #+# */ +/* Updated: 2019/12/29 18:07:19 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ #include "get_next_line_bonus.h" /* -** //-g -fsanitize=address ** //:set noendofline binary +** //https://github.com/lgrellie/gnl_tester +** //https://github.com/Mazoise/42TESTERS-GNL ** //https://github.com/charMstr/GNL_lover ** //https://github.com/mrjvs/42cursus_gnl_tests ** //https://github.com/Sherchryst/gnlkiller @@ -27,36 +28,20 @@ ** int main(int ac, char **av) ** { ** int *fd; -** int i; -** int j; -** int ret; -** char *line; +** int i = 0; +** int j = 0; +** int ret = 1; +** char *line = NULL; ** -** // if (ac < 2) -** // return (0); -** -** // (void)i;(void)j; -** // line = NULL; -** // fd[0] = open(av[1], O_RDONLY); -** // ret = 1; -** // while (ret) -** // { -** // ret = get_next_line(fd[0], &line); -** // printf("[%i] %s\n", ret, line); -** // } -** -** line = NULL; -** i = 0; -** if (!(fd = (int *)malloc(sizeof(int) * ac))) -** return (0); +** fd = (int *)malloc(sizeof(int) * ac); ** while (++i <= ac - 1) ** fd[i - 1] = open(av[i], O_RDONLY); ** i = 0; -** j = 0; ** while (j < ac - 1) ** { -** if ((ret = get_next_line(fd[i], &line)) > 0) +** if (ret > 0) ** { +** ret = get_next_line(fd[i], &line); ** printf("[fd%i-%i] %s\n", fd[i], ret, line); ** free(line); ** j = 0; @@ -70,22 +55,24 @@ ** if (i >= ac - 1) ** i = 0; ** } -** free (fd); +** free(fd); ** //while (1); ** return (0); ** } */ -int free_lst(t_gnlist **lst, const int fd, int ret) +int free_lst(t_gnlist **lst, int ret) { t_gnlist *tmp; tmp = *lst; - while ((*lst)->next && (*lst)->next->lfd != fd) + while ((*lst)->next != tmp) (*lst) = (*lst)->next; - free(tmp->string); (*lst)->next = (*lst)->next->next; + free(tmp->str); free(tmp); + tmp = NULL; + *lst = tmp; return (ret); } @@ -101,7 +88,7 @@ int multi_fd(int fd, t_gnlist **lst) if (!(tmp = (t_gnlist*)malloc(sizeof(*tmp)))) return (0); tmp->lfd = fd; - if (!(tmp->string = ft_strdup(""))) + if (!(tmp->str = ft_strdup(""))) return (0); if (*lst) { @@ -124,22 +111,20 @@ int get_next_line(const int fd, char **line) ret = 1; if (!(multi_fd(fd, &lst)) || !line || BUFFER_SIZE < 1) - return (free_lst(&lst, fd, -1)); - while (!(str = ft_strchr(lst->string, '\n')) && ret != 0) + return (free_lst(&lst, -1)); + while (!(str = ft_strchr(lst->str, '\n')) && ret != 0) { if ((ret = read(fd, buf, BUFFER_SIZE)) < 0) - return (free_lst(&lst, fd, -1)); + return (free_lst(&lst, -1)); buf[ret] = '\0'; - if (!(lst->string = ft_strjoinfree(lst->string, buf))) - return (free_lst(&lst, fd, -1)); + if (!(lst->str = ft_strjoinfree(lst->str, buf))) + return (free_lst(&lst, -1)); } if (str != NULL) - { str[0] = '\0'; - if (!(*line = ft_strdup(lst->string))) - return (free_lst(&lst, fd, -1)); - ft_memmove(lst->string, str + 1, ft_strlen(str + 1) + 1); - return (1); - } - return (free_lst(&lst, fd, 0)); + if (!(*line = ft_strdup(lst->str))) + return (free_lst(&lst, -1)); + if (str != NULL) + return(ft_memmove(lst->str, str + 1, ft_strlen(str + 1) + 1) != NULL); + return (free_lst(&lst, 0)); } diff --git a/get_next_line_bonus.h b/get_next_line_bonus.h index f1ed2d9..3e8cb80 100644 --- a/get_next_line_bonus.h +++ b/get_next_line_bonus.h @@ -20,18 +20,18 @@ typedef struct s_gnlist { int lfd; - char *string; + char *str; struct s_gnlist *next; } t_gnlist; int get_next_line(const int fd, char **line); int multi_fd(int fd, t_gnlist **lst); -char *ft_strjoinfree(char const *s1, char const *s2); +int free_lst(t_gnlist **lst, int ret); size_t ft_strlen(const char *str); void *ft_memmove(void *dst, const void *src, size_t len); char *ft_strchr(const char *s, int c); char *ft_strdup(const char *src); -int free_lst(t_gnlist **lst, const int fd, int ret); +char *ft_strjoinfree(char const *s1, char const *s2); #endif diff --git a/get_next_line_utils.c b/get_next_line_utils.c index 4a3190a..13fcf69 100644 --- a/get_next_line_utils.c +++ b/get_next_line_utils.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/12/11 00:26:54 by hulamy #+# #+# */ -/* Updated: 2019/12/11 00:57:19 by hulamy ### ########.fr */ +/* Updated: 2019/12/29 18:07:58 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/get_next_line_utils_bonus.c b/get_next_line_utils_bonus.c index f25e66c..d291c70 100644 --- a/get_next_line_utils_bonus.c +++ b/get_next_line_utils_bonus.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/12/11 00:26:54 by hulamy #+# #+# */ -/* Updated: 2019/12/11 00:57:19 by hulamy ### ########.fr */ +/* Updated: 2019/12/29 18:04:55 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */