From 3422c480d39bba4350251e90eb98f0537c5d32b3 Mon Sep 17 00:00:00 2001 From: Loic Deridder Date: Tue, 18 Feb 2025 11:43:02 +0100 Subject: [PATCH] fix tokenize --- srcs/parsing/tokenizer/tokenizer_utils.c | 25 ++++++++++-------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/srcs/parsing/tokenizer/tokenizer_utils.c b/srcs/parsing/tokenizer/tokenizer_utils.c index b96655a..4ac13c1 100644 --- a/srcs/parsing/tokenizer/tokenizer_utils.c +++ b/srcs/parsing/tokenizer/tokenizer_utils.c @@ -11,6 +11,7 @@ /* ************************************************************************** */ #include "../../../includes/minishell.h" +#include int is_meta(char c) { @@ -46,29 +47,23 @@ static bool is_space(char c) return (false); } -static int skip_quote(char *str) -{ - int i; - - if (!str[1]) - return 0; - i = 1; - while(str[i] && str[i] != '\'' && str[i] != '"') - i++; - return (i); -} - int goto_nxt_space(char *str) { int i; + bool in_squote; + bool in_dquote; + in_squote = false; + in_dquote = false; i = 0; while (is_space(str[i])) i++; - while (str[i] && !is_space(str[i])) + while (str[i] && (!is_space(str[i]) || (in_dquote || in_squote))) { - if (str[i] == '\'' || str[i] == '"') - i += skip_quote(&(str[i])); + if (str[i] == '\'') + in_squote = !in_squote; + else if (str[i] == '\"') + in_dquote = !in_dquote; i++; } return (i);