From 79d0b7f2a41006fe4143d6369d1861ff3d76c18b Mon Sep 17 00:00:00 2001 From: adjoly Date: Fri, 1 Dec 2023 23:05:16 +0100 Subject: [PATCH] segfault go jump off a bridge --- Makefile | 42 +++++++++++++++++++ a.out | Bin 0 -> 17176 bytes get_next_line.c | 95 ++++++++++++++++++++++++++++++++++++++++++ get_next_line.h | 28 +++++++++++++ get_next_line_utils.c | 61 +++++++++++++++++++++++++++ gnlTester | 1 + test.txt | 4 ++ 7 files changed, 231 insertions(+) create mode 100644 Makefile create mode 100755 a.out create mode 160000 gnlTester create mode 100644 test.txt diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..30aa0a2 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/01 17:10:39 by adjoly #+# #+# # +# Updated: 2023/12/01 17:20:36 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +NAME = get_next_line.a + +CC = cc + +SRCS = get_next_line.c \ + get_next_line_utils.c \ + +OBJS = $(SRCS:.c=.o) + +FLAGS = -Werror -Wall -Wextra + +HEADER = get_next_line.h \ + +$(NAME): $(OBJS) + ar -rcs $(NAME) $(OBJS) + +%.o: %.cc + $(CC) $(FLAGS) $(HEADER) $< -c -o $@ + +all: $(NAME) + +clean: + rm -f $(OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all + +.PHONY: clean all re fclean \ No newline at end of file diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..ac0d755a69f4b1d2633b3f258691d7e80290f42a GIT binary patch literal 17176 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 literal 0 HcmV?d00001 diff --git a/get_next_line.c b/get_next_line.c index e69de29..1cf47b1 100644 --- a/get_next_line.c +++ b/get_next_line.c @@ -0,0 +1,95 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/01 17:11:59 by adjoly #+# #+# */ +/* Updated: 2023/12/01 23:03:24 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "get_next_line.h" + +int check_line(char *buf) +{ + int i; + + i = 0; + while (buf[i] || buf[i] != '\n') + i++; + if (buf[i] == '\n') + return (1); + return (0); +} + +void read_line(int fd, char *buf) +{ + char *tmp; + size_t read_nb; + + while (!check_line(buf) && read_nb != 0) + { + tmp = malloc((BUFFER_SIZE + 1) * sizeof(char)); + if (!tmp) + { + buf = NULL; + return ; + } + read_nb = read(fd, tmp, BUFFER_SIZE); + buf = ft_strjoin(buf, tmp); + free(tmp); + } +} + +char *line_to_str(char *buf) +{ + char *res; + size_t i; + size_t size_buf; + + i = 0; + size_buf = ft_strlen_til_nl(buf); + res = malloc((size_buf + 1) * sizeof(char)); + while (i < size_buf) + { + res[i] = buf[i]; + if (buf[i] == '\n') + break ; + i++; + } + free (buf); + return (res); +} + +char *get_next_line(int fd) +{ + static char *buf; + char *res; + + if (BUFFER_SIZE <= 0 || read(fd, &res, 0) < 0 || fd < 0) + return (NULL); + read_line(fd, buf); + res = line_to_str(buf); + return (res); +} + +#include +void ft_putstr(char *str){if (str == NULL){return ;}int i = 0;while(str[i]){write(1, &str[i], 1);i++;}} +#include +int main(void) +{ + char *ln; + int fd; + + fd = open("test.txt", O_RDONLY); + while (1) + { + ln = get_next_line(fd); + if (ln == NULL) + break ; + ft_putstr(ln); + free(ln); + } +} diff --git a/get_next_line.h b/get_next_line.h index e69de29..bfd8eb9 100644 --- a/get_next_line.h +++ b/get_next_line.h @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/01 17:12:00 by adjoly #+# #+# */ +/* Updated: 2023/12/01 22:31:30 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef GET_NEXT_LINE_H +# define GET_NEXT_LINE_H + +# include +# include + +# ifndef BUFFER_SIZE +# define BUFFER_SIZE 5 +# endif + +char *get_next_line(int fd); +char *ft_strjoin(char *s1, char *s2); +size_t ft_strlen_til_nl(char *s); +size_t ft_strlen(char *s); + +#endif \ No newline at end of file diff --git a/get_next_line_utils.c b/get_next_line_utils.c index e69de29..9beb70e 100644 --- a/get_next_line_utils.c +++ b/get_next_line_utils.c @@ -0,0 +1,61 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/01 17:12:02 by adjoly #+# #+# */ +/* Updated: 2023/12/01 22:31:36 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "get_next_line.h" + +size_t ft_strlen(char *s) +{ + size_t i; + + i = 0; + while (s[i]) + i++; + return (i); +} + +size_t ft_strlen_til_nl(char *s) +{ + size_t i; + + i = 0; + while (s[i] && s[i] != '\n') + i++; + return (i); +} + +char *ft_strjoin(char *s1, char *s2) +{ + char *result; + size_t i; + size_t j; + + i = 0; + j = 0; + if (s1 == NULL && s2 == NULL) + return (NULL); + result = malloc((ft_strlen(s1) + ft_strlen(s2) + 1) * sizeof(char)); + if (result == NULL) + return (NULL); + while (s1[i]) + { + result[i] = s1[i]; + i++; + } + while (s2[j]) + { + result[i] = s2[j]; + i++; + j++; + } + result[i] = '\0'; + return (result); +} diff --git a/gnlTester b/gnlTester new file mode 160000 index 0000000..e12080d --- /dev/null +++ b/gnlTester @@ -0,0 +1 @@ +Subproject commit e12080dcecb5e8fd83c07085849241ac85bb0e05 diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..d05e29e --- /dev/null +++ b/test.txt @@ -0,0 +1,4 @@ +Si tu lit cette ligne GGWP +Main non tu peux voir celle ci aussi +What tu celle la lis aussi +LLL \ No newline at end of file