diff --git a/src/lexer/lexer_read_word.c b/src/lexer/lexer_read_word.c index 1a42177..e6172d9 100644 --- a/src/lexer/lexer_read_word.c +++ b/src/lexer/lexer_read_word.c @@ -6,12 +6,22 @@ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/02/05 19:03:47 by qmennen #+# #+# */ -/* Updated: 2025/02/28 01:17:42 by whaffman ######## odam.nl */ +/* Updated: 2025/02/28 14:04:22 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "minishell.h" +static int is_word_char(char c) +{ + return (ft_isprint(c) + && c != '<' + && c != '>' + && c != '|' + && c != '\0' + && !ft_isspace(c)); +} + static int match_quotes(t_minishell *msh, t_lexer *lexer) { char c; @@ -23,8 +33,7 @@ static int match_quotes(t_minishell *msh, t_lexer *lexer) c = lexer->input[i]; d_qts = 0; s_qts = 0; - //TODO: Normalize this validation. Happens a lot - while (ft_isprint(c) && c != '<' && c != '>' && c != '|' && c != '\0' && !ft_isspace(c)) + while (is_word_char(c)) { if (lexer->input[i] == '\'') s_qts++; @@ -43,9 +52,9 @@ static int calculate_word_len(t_minishell *msh, t_lexer *lexer) len = 1; i = lexer->pos; - while (ft_isprint(lexer->input[i]) && lexer->input[i] != '<' && lexer->input[i]!= '>' && lexer->input[i] != '|' && lexer->input[i] != '\0' && !ft_isspace(lexer->input[i])) + while (is_word_char(lexer->input[i])) { - if(lexer->input[i] != '\'' && lexer->input[i] != '"') + if (lexer->input[i] != '\'' && lexer->input[i] != '"') len++; i++; } @@ -54,12 +63,10 @@ static int calculate_word_len(t_minishell *msh, t_lexer *lexer) char *lexer_readword(t_minishell *msh, t_lexer *lexer) { - //int start; int len; char *word; char c; - //start = lexer->pos; if (lexer->current_char == '"' || lexer->current_char == '\'') { return (lexer_parse_quotes(msh, lexer)); @@ -71,9 +78,9 @@ char *lexer_readword(t_minishell *msh, t_lexer *lexer) word = malloc_safe(msh, sizeof(char) * len); c = lexer->current_char; len = 0; - while (ft_isprint(c) && c != '<' && c != '>' && c != '|' && c != '\0' && !ft_isspace(c)) + while (is_word_char(c)) { - if(c != '\'' && c != '"') + if (c != '\'' && c != '"') word[len++] = lexer->current_char; lexer_readchar(lexer); c = lexer->current_char;