aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-10-10 11:34:40 +0200
committerCharles <sircharlesaze@gmail.com>2019-10-10 11:34:40 +0200
commitce374b5d6bc2a383c42d28d3523e5489b5fb090e (patch)
tree6f5e4ce735db65c16185cf6a05a2a0b4b03bb6e4
parent2df0d3e47a9deb4676b4fd82a1924da4181ef9d9 (diff)
downloadget_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--Makefile2
-rw-r--r--get_next_line.c25
-rw-r--r--get_next_line.h4
-rw-r--r--main.c12
4 files changed, 17 insertions, 26 deletions
diff --git a/Makefile b/Makefile
index 6cd00ec..3542371 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/main.c b/main.c
index 160c66b..91bca98 100644
--- a/main.c
+++ b/main.c
@@ -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);
}