From 48256b2c814713763502152873bb7dbe00f0905d Mon Sep 17 00:00:00 2001 From: Quinten Mennen Date: Thu, 27 Feb 2025 19:04:02 +0100 Subject: [PATCH] extracting more --- inc/tokenizer.h | 3 ++- src/lexer/lexer_parse_quotes.c | 33 +++++++++++++++++++++++++++++++++ src/lexer/lexer_read_word.c | 24 ++---------------------- 3 files changed, 37 insertions(+), 23 deletions(-) create mode 100644 src/lexer/lexer_parse_quotes.c diff --git a/inc/tokenizer.h b/inc/tokenizer.h index 42ed9e1..bab22bf 100644 --- a/inc/tokenizer.h +++ b/inc/tokenizer.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 12:36:00 by whaffman #+# #+# */ -/* Updated: 2025/02/27 18:27:33 by qmennen ### ########.fr */ +/* Updated: 2025/02/27 19:03:09 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ void ft_lexer_free(t_minishell *msh, t_lexer *lexer); void lexer_readchar(t_lexer *lexer); char *lexer_readword(t_minishell *msh, t_lexer *lexer); t_list *ft_parse_input(t_minishell *msh); +char *lexer_parse_quotes(t_minishell *msh, t_lexer *lexer); /** * Token */ diff --git a/src/lexer/lexer_parse_quotes.c b/src/lexer/lexer_parse_quotes.c new file mode 100644 index 0000000..0edf290 --- /dev/null +++ b/src/lexer/lexer_parse_quotes.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_parse_quotes.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/27 19:02:37 by qmennen #+# #+# */ +/* Updated: 2025/02/27 19:02:54 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +char *lexer_parse_quotes(t_minishell *msh, t_lexer *lexer) +{ + int start; + int len; + char qc; + char *word; + + qc = lexer->current_char; + word = NULL; + lexer_readchar(lexer); + start = lexer->pos; + while (lexer->current_char != '\0' && lexer->current_char != qc) + lexer_readchar(lexer); + len = lexer->pos - start; + word = malloc_safe(msh, sizeof(char) * len + 1); + ft_strlcpy(word, lexer->input + start, len + 1); + lexer_readchar(lexer); + return (word); +} diff --git a/src/lexer/lexer_read_word.c b/src/lexer/lexer_read_word.c index 9a601b5..8c0b996 100644 --- a/src/lexer/lexer_read_word.c +++ b/src/lexer/lexer_read_word.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 19:03:47 by qmennen #+# #+# */ -/* Updated: 2025/02/27 18:47:33 by qmennen ### ########.fr */ +/* Updated: 2025/02/27 19:03:15 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,26 +28,6 @@ static int match_quotes(t_minishell *msh, t_lexer *lexer) return ((qts % 2) == 0); } -static char *parse_quotes(t_minishell *msh, t_lexer *lexer) -{ - int start; - int len; - char qc; - char *word; - - qc = lexer->current_char; - word = NULL; - lexer_readchar(lexer); - start = lexer->pos; - while (lexer->current_char != '\0' && lexer->current_char != qc) - lexer_readchar(lexer); - len = lexer->pos - start; - word = malloc_safe(msh, sizeof(char) * len + 1); - ft_strlcpy(word, lexer->input + start, len + 1); - lexer_readchar(lexer); - return (word); -} - char *lexer_readword(t_minishell *msh, t_lexer *lexer) { int start; @@ -59,7 +39,7 @@ char *lexer_readword(t_minishell *msh, t_lexer *lexer) if (!match_quotes(msh, lexer)) return (NULL); if (lexer->current_char == '"' || lexer->current_char == '\'') - return (parse_quotes(msh, lexer)); + return (lexer_parse_quotes(msh, lexer)); c = lexer->current_char; while (ft_isprint(c) && c != '<' &&c != '>' && c != '|' && c != '\0' && !ft_isspace(lexer->current_char))