]> git.dkaiser.de - 42/minishell.git/commitdiff
Refactor heredoc
authorDominik Kaiser <dkaiser@3-H-6.42heilbronn.de>
Wed, 15 Jan 2025 18:08:20 +0000 (19:08 +0100)
committerDominik Kaiser <dkaiser@3-H-6.42heilbronn.de>
Wed, 15 Jan 2025 18:08:20 +0000 (19:08 +0100)
src/read_heredoc.c

index 4b45b1474e64bed913440a184cc249c895f5b896..53633e8c934c107084989ca070b2917d3894b57e 100644 (file)
@@ -6,13 +6,18 @@
 /*   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)
 {
@@ -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);
+}