From 3b224458a5d539bbe00318d939c9a099f3f158e1 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 4 Feb 2020 05:34:27 +0100 Subject: better parsing --- src/parse/parse_file.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/parse/parse_file.c (limited to 'src/parse/parse_file.c') diff --git a/src/parse/parse_file.c b/src/parse/parse_file.c new file mode 100644 index 0000000..443a1b5 --- /dev/null +++ b/src/parse/parse_file.c @@ -0,0 +1,53 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_file.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/04 03:50:53 by cacharle #+# #+# */ +/* Updated: 2020/02/04 04:28:41 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "cub3d.h" + +static char **trim_file_lines(char **lines) +{ + int i; + char *tmp; + + if (lines == NULL) + return (NULL); + i = -1; + while (lines[++i] != NULL) + { + if ((tmp = ft_strtrim(lines[i], " ")) == NULL) + return (NULL); + lines[i] = tmp; + } + return (lines); +} + +char **get_file_lines(char *filename) +{ + int fd; + int ret; + char buf[CUB3D_BUFFER_SIZE + 1]; + char *file; + + if ((fd = open(filename, O_RDONLY)) < 0) + return (NULL); + if ((file = ft_strdup("")) == NULL) + return (NULL); + while ((ret = read(fd, buf, CUB3D_BUFFER_SIZE)) > 0) + { + buf[ret] = '\0'; + if ((file = ft_strjoin(file, buf)) == NULL) + return (NULL); + } + if (ret == -1) + return (NULL); + close(fd); + return (trim_file_lines(ft_split(file, '\n'))); +} -- cgit