From: Dominik Kaiser Date: Wed, 15 Jan 2025 18:08:20 +0000 (+0100) Subject: Refactor heredoc X-Git-Url: https://git.dkaiser.de/?a=commitdiff_plain;h=1032eefe7247cc5c240feedd2f49d8d69a326d79;p=42%2Fminishell.git Refactor heredoc --- diff --git a/src/read_heredoc.c b/src/read_heredoc.c index 4b45b14..53633e8 100644 --- a/src/read_heredoc.c +++ b/src/read_heredoc.c @@ -6,13 +6,18 @@ /* By: dkaiser +#include +#include 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) { @@ -35,18 +40,8 @@ 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); @@ -59,3 +54,23 @@ static char *concat_str(char *temp, char *line) 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); +}