]> git.dkaiser.de - 42/minishell.git/commitdiff
Fix error message printing
authorDominik Kaiser <dkaiser@1-C-11.42heilbronn.de>
Tue, 17 Sep 2024 17:25:13 +0000 (19:25 +0200)
committerDominik Kaiser <dkaiser@1-C-11.42heilbronn.de>
Tue, 17 Sep 2024 17:25:13 +0000 (19:25 +0200)
src/collect_redirs.c
src/new_node.c
src/parser.c

index 79ae95c39de6fb9a3e7f268e4a0068cd5e135231..60f197b387b3428b037866cda9194753ffcec7c2 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/08/02 13:49:31 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/09/17 17:24:35 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/09/17 19:24:55 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -21,6 +21,7 @@ t_redirection *collect_redirs(t_token **tokens)
 {
        t_redirection   *result;
        t_token                 *cur;
+       int                             is_redir_only;
 
        cur = *tokens;
        result = malloc(sizeof(t_redirection) * 2);
@@ -31,20 +32,21 @@ t_redirection       *collect_redirs(t_token **tokens)
        while (cur != NULL && cur->next != NULL)
        {
                if (cur->type == REDIR_TOKEN && cur->next->type == STRING_TOKEN)
+               {
+                       is_redir_only = 0;
+                       if (cur->previous == NULL && cur->next->next == NULL)
+                               is_redir_only = 1;
                        cur = collect_redir(tokens, result, cur);
+                       if (is_redir_only)
+                               *tokens = NULL;
+               }
                else if (cur->type == REDIR_TOKEN)
-               {
-                       printf("Parsing error.\n");
                        return (free(result), NULL);
-               }
                else
                        cur = cur->next;
        }
        if (cur && cur->type == REDIR_TOKEN)
-       {
-               printf("Parsing error.\n");
                return (free(result), NULL);
-       }
        return (result);
 }
 
index 5c770aaf189e6bb7ebd3234cb57431ecbf2b4d3d..c58d2915546f3e60e4275e368848b4d9c44829d8 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/06/27 11:21:03 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/09/13 16:18:29 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/09/17 18:46:35 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -27,6 +27,8 @@ t_node        *new_pipe_node(t_node *left, t_node *right)
 {
        t_node  *node;
 
+       if (left == NULL || right == NULL)
+               return (NULL);
        node = new_node(PIPE_NODE);
        if (node == NULL)
                return (NULL);
index 6993a1fcda1ae5143bd18056782e8316ad739594..06c1df7ee22f41932f64a0e058e81da6429eba24 100644 (file)
@@ -6,43 +6,29 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/06/29 15:53:29 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/09/17 15:06:55 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/09/17 19:03:48 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include "libft.h"
 #include "minishell.h"
 #include "token.h"
 
 static t_token *find_token_by_type(t_token *tokens, int type);
 t_token                        *split_at_first(t_token **tokens, int type);
 static t_node  *parse_statement(t_token *tokens);
-static void            free_node_wrapper(void *node);
 
 t_list *parse(t_token *tokens)
 {
-       t_list  *result;
-       t_list  *current;
-       t_token *current_tokens;
+       t_node  *result;
 
-       result = NULL;
-       current_tokens = split_at_first(&tokens, NEWLINE_TOKEN);
-       while (current_tokens != NULL)
-       {
-               if (result == NULL)
-               {
-                       current = ft_lstnew(parse_statement(current_tokens));
-                       result = current;
-               }
-               else
-               {
-                       current->next = ft_lstnew(parse_statement(current_tokens));
-                       current = current->next;
-               }
-               if (current == NULL)
-                       return (ft_lstclear(&result, free_node_wrapper), NULL);
-               current_tokens = split_at_first(&tokens, NEWLINE_TOKEN);
-       }
-       return (result);
+       if ((*tokens).type == PIPE_TOKEN)
+               result = NULL;
+       else
+               result = parse_statement(tokens);
+       if (result == NULL)
+               printf("Parsing error.\n");
+       return (ft_lstnew(result));
 }
 
 static t_node  *parse_statement(t_token *tokens)
@@ -53,7 +39,6 @@ static t_node *parse_statement(t_token *tokens)
        if (left_side_tokens == NULL)
        {
                free_tokens(tokens);
-               printf("Parsing error.\n");
                return (NULL);
        }
        else if (tokens != NULL)
@@ -97,8 +82,3 @@ static t_token        *find_token_by_type(t_token *tokens, int type)
        }
        return (NULL);
 }
-
-static void    free_node_wrapper(void *node)
-{
-       free_node((t_node *)node);
-}