/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/15 18:22:09 by dkaiser #+# #+# */
-/* Updated: 2025/01/15 18:43:20 by dkaiser ### ########.fr */
+/* Updated: 2025/01/15 19:08:07 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
+#include <errno.h>
+#include <stdio.h>
+#include <sys/errno.h>
static char *concat_str(char *temp, char *line);
+static char *get_result(char *temp, char *result, char *line);
+static void *print_error_and_free(char *result);
char *read_heredoc(char *delimiter)
{
line_length = ft_strlen(line) + 1;
temp = malloc(total_length + line_length + 1);
if (!temp)
- {
- perror("malloc");
- return (free(result), NULL);
- }
- if (result)
- {
- ft_strcpy(temp, result);
- free(result);
- }
- else
- temp[0] = '\0';
- result = concat_str(temp, line);
+ return (print_error_and_free(result));
+ result = get_result(temp, result, line);
total_length += line_length;
}
return (result);
free(line);
return (temp);
}
+
+static char *get_result(char *temp, char *result, char *line)
+{
+ if (result)
+ {
+ ft_strcpy(temp, result);
+ free(result);
+ }
+ else
+ temp[0] = '\0';
+ return (concat_str(temp, line));
+}
+
+static void *print_error_and_free(char *result)
+{
+ errno = ENOMEM;
+ perror("heredoc");
+ free(result);
+ return (NULL);
+}