]> git.dkaiser.de - 42/minishell.git/commitdiff
Banish the cosmic horror
authorDominik Kaiser <dkaiser@1-C-11.42heilbronn.de>
Tue, 17 Sep 2024 17:49:29 +0000 (19:49 +0200)
committerDominik Kaiser <dkaiser@1-C-11.42heilbronn.de>
Tue, 17 Sep 2024 17:49:29 +0000 (19:49 +0200)
src/collect_redirs.c

index 8917c7813d6cbebc080e7ce2517f8addceb5cd1e..9ac1605ef413f7bf57d39ce75613e524d66bd7d5 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 19:26:55 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/09/17 19:48:48 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -14,6 +14,8 @@
 
 static t_token *collect_redir(t_token **tokens, t_redirection *result,
                                        t_token *cur);
+static void            collect_and_check_redir(t_token **tokens, t_redirection *result,
+                                       t_token **cur);
 static void            set_redir(t_redirection *redir, int type, char *specifier);
 static int             is_output_redir(int i);
 
@@ -31,11 +33,7 @@ t_redirection        *collect_redirs(t_token **tokens)
        while (cur != NULL && cur->next != NULL)
        {
                if (cur->type == REDIR_TOKEN && cur->next->type == STRING_TOKEN)
-               {
-                       cur = collect_redir(tokens, result, cur);
-                       *tokens = (t_token *)(((unsigned long)*tokens) & (~0
-                                               * (!cur->previous && !cur->next->next)));
-               }
+                       collect_and_check_redir(tokens, result, &cur);
                else if (cur->type == REDIR_TOKEN)
                        return (free(result), NULL);
                else
@@ -46,6 +44,19 @@ t_redirection        *collect_redirs(t_token **tokens)
        return (result);
 }
 
+static void    collect_and_check_redir(t_token **tokens, t_redirection *result,
+               t_token **cur)
+{
+       int     is_redir_only;
+
+       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;
+}
+
 static t_token *collect_redir(t_token **tokens, t_redirection *result,
                t_token *cur)
 {