/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 14:13:51 by dkaiser #+# #+# */
-/* Updated: 2024/03/22 16:51:40 by dkaiser ### ########.fr */
+/* Updated: 2024/03/25 11:57:40 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
len = buf_len;
else
len = ft_strlen(old_str) + buf_len;
- result = malloc(sizeof(char) * len);
+ result = malloc(sizeof(char) * (len + 1));
if (!result)
return (NULL);
result[len] = '\0';
if (buf[pos + len] == '\n')
{
len++;
- break;
+ break ;
}
if (!buf[pos + len])
break ;
len++;
}
+ if (pos + len == BUFFER_SIZE && buf[BUFFER_SIZE - 1] == '\n')
+ {
+ old_res = result;
+ result = str_add_buffer(old_res, buf, pos, BUFFER_SIZE - pos);
+ *ptr_result = result;
+ free(old_res);
+ while (pos < BUFFER_SIZE)
+ buf[pos++] = '\0';
+ return ;
+ }
old_res = result;
result = str_add_buffer(old_res, buf, pos, len);
*ptr_result = result;
if (pos + len == BUFFER_SIZE)
{
readlen = read(fd, buf, BUFFER_SIZE);
+ if (readlen < 0)
+ {
+ i = 0;
+ while (i < BUFFER_SIZE)
+ buf[i++] = '\0';
+ free(result);
+ *ptr_result = NULL;
+ return ;
+ }
if (readlen > 0)
get_next_line_rec(fd, buf, &result, 0);
}
if (i == BUFFER_SIZE)
{
readlen = read(fd, buf, BUFFER_SIZE);
+ if (readlen < 0)
+ {
+ i = 0;
+ while (i < BUFFER_SIZE)
+ buf[i++] = '\0';
+ return (NULL);
+ }
if (readlen > 0)
return (get_next_line(fd));
return (NULL);
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 14:14:59 by dkaiser #+# #+# */
-/* Updated: 2024/03/22 12:05:00 by dkaiser ### ########.fr */
+/* Updated: 2024/03/25 11:53:28 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
return (len);
}
-char * str_realloc(char *str, size_t size)
+char *str_realloc(char *str, size_t size)
{
- char *result;
- size_t i;
+ char *result;
+ size_t i;
result = malloc(size);
if (!result)
{
free(str);
- return NULL;
+ return (NULL);
}
i = 0;
while (str[i])
}
while (i < size)
result[i++] = '\0';
- return result;
+ return (result);
}