is_word_char normalized check
This commit is contained in:
parent
de2acbe1e0
commit
3404d05bc5
@ -6,12 +6,22 @@
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* 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,7 +52,7 @@ 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] != '"')
|
||||
len++;
|
||||
@ -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,7 +78,7 @@ 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 != '"')
|
||||
word[len++] = lexer->current_char;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user