diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-10-10 11:34:40 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-10-10 11:34:40 +0200 |
| commit | ce374b5d6bc2a383c42d28d3523e5489b5fb090e (patch) | |
| tree | 6f5e4ce735db65c16185cf6a05a2a0b4b03bb6e4 | |
| parent | 2df0d3e47a9deb4676b4fd82a1924da4181ef9d9 (diff) | |
| download | get_next_line-ce374b5d6bc2a383c42d28d3523e5489b5fb090e.tar.gz get_next_line-ce374b5d6bc2a383c42d28d3523e5489b5fb090e.tar.bz2 get_next_line-ce374b5d6bc2a383c42d28d3523e5489b5fb090e.zip | |
Added null character in some place and it works until it doesnt
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | get_next_line.c | 25 | ||||
| -rw-r--r-- | get_next_line.h | 4 | ||||
| -rw-r--r-- | main.c | 12 |
4 files changed, 17 insertions, 26 deletions
@@ -6,7 +6,7 @@ # By: cacharle <marvin@42.fr> +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2019/10/08 08:11:00 by cacharle #+# #+# # -# Updated: 2019/10/10 09:56:42 by cacharle ### ########.fr # +# Updated: 2019/10/10 11:20:17 by cacharle ### ########.fr # # # # **************************************************************************** # diff --git a/get_next_line.c b/get_next_line.c index 082cd6f..9112ac7 100644 --- a/get_next_line.c +++ b/get_next_line.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/08 10:37:41 by cacharle #+# #+# */ -/* Updated: 2019/10/10 10:18:51 by cacharle ### ########.fr */ +/* Updated: 2019/10/10 11:24:20 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,17 +23,16 @@ ** at each stack pop store local buf on the allocated line */ -#include <stdio.h> int get_next_line(int fd, char **line) { int ret; int split_at; char local_buf[BUFFER_SIZE + 1]; static int line_len = 0; - static char rest_buf[BUFFER_SIZE + 1] = ""; + static char rest_buf[BUFFER_SIZE + 1] = {0}; - local_buf[0] = '\0'; - if ((ret = read_after(fd, local_buf, rest_buf)) <= 0) + local_buf[BUFFER_SIZE] = '\0'; + if ((ret = read_after(fd, local_buf, rest_buf)) <= 0 && local_buf[0] == 0) return (ret); if ((split_at = find_newline(local_buf)) != -1) { @@ -53,25 +52,17 @@ int get_next_line(int fd, char **line) return (ret); } -int read_after(int fd, char *buf, char *rest_buf) +int read_after(int fd, char *local_buf, char *rest_buf) { int offset; int ret; offset = ft_strlen(rest_buf); - ft_strncpy(buf, rest_buf, offset); - /* printf(">%s<\n", buf); */ + ft_strncpy(local_buf, rest_buf, offset + 1); rest_buf[0] = '\0'; - if ((ret = read(fd, buf + offset, BUFFER_SIZE - offset)) == -1) + if ((ret = read(fd, local_buf + offset, BUFFER_SIZE - offset)) == -1) return (ERROR); if (ret == 0) - return (0); - if (ret < BUFFER_SIZE - offset) - { - /* buf[offset + ret - 1] = '\0'; */ - /* printf(">eof? %s<\n", buf); */ - } - else - buf[BUFFER_SIZE] = '\0'; + local_buf[offset + ret] = '\0'; return (ret); } diff --git a/get_next_line.h b/get_next_line.h index 6d55f61..fb74ea3 100644 --- a/get_next_line.h +++ b/get_next_line.h @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 13:52:59 by cacharle #+# #+# */ -/* Updated: 2019/10/10 10:19:54 by cacharle ### ########.fr */ +/* Updated: 2019/10/10 11:26:10 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ # define GET_NEXT_LINE_H # ifndef BUFFER_SIZE -# define BUFFER_SIZE (15) +# define BUFFER_SIZE 32 # endif # define LINE_READ 1 @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/10 09:27:41 by cacharle #+# #+# */ -/* Updated: 2019/10/10 09:56:06 by cacharle ### ########.fr */ +/* Updated: 2019/10/10 11:04:31 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,11 +16,11 @@ #include <fcntl.h> #include "get_next_line.h" -int main(int argc, char **argv) +int main(int argc, char **argv) { - int fd; - char *line; - int ret; + int fd; + char *line; + int ret; printf("BUFFER_SIZE = %d\n", BUFFER_SIZE); (void)argc; @@ -35,5 +35,5 @@ int main(int argc, char **argv) else if (ret == 0) printf("EOF\n"); close(fd); - return 0; + return (0); } |
