is_word_char normalized check
This commit is contained in:
parent
de2acbe1e0
commit
3404d05bc5
@ -6,12 +6,22 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:03:47 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"
|
#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)
|
static int match_quotes(t_minishell *msh, t_lexer *lexer)
|
||||||
{
|
{
|
||||||
char c;
|
char c;
|
||||||
@ -23,8 +33,7 @@ static int match_quotes(t_minishell *msh, t_lexer *lexer)
|
|||||||
c = lexer->input[i];
|
c = lexer->input[i];
|
||||||
d_qts = 0;
|
d_qts = 0;
|
||||||
s_qts = 0;
|
s_qts = 0;
|
||||||
//TODO: Normalize this validation. Happens a lot
|
while (is_word_char(c))
|
||||||
while (ft_isprint(c) && c != '<' && c != '>' && c != '|' && c != '\0' && !ft_isspace(c))
|
|
||||||
{
|
{
|
||||||
if (lexer->input[i] == '\'')
|
if (lexer->input[i] == '\'')
|
||||||
s_qts++;
|
s_qts++;
|
||||||
@ -43,7 +52,7 @@ static int calculate_word_len(t_minishell *msh, t_lexer *lexer)
|
|||||||
|
|
||||||
len = 1;
|
len = 1;
|
||||||
i = lexer->pos;
|
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++;
|
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)
|
char *lexer_readword(t_minishell *msh, t_lexer *lexer)
|
||||||
{
|
{
|
||||||
//int start;
|
|
||||||
int len;
|
int len;
|
||||||
char *word;
|
char *word;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
//start = lexer->pos;
|
|
||||||
if (lexer->current_char == '"' || lexer->current_char == '\'')
|
if (lexer->current_char == '"' || lexer->current_char == '\'')
|
||||||
{
|
{
|
||||||
return (lexer_parse_quotes(msh, lexer));
|
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);
|
word = malloc_safe(msh, sizeof(char) * len);
|
||||||
c = lexer->current_char;
|
c = lexer->current_char;
|
||||||
len = 0;
|
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;
|
word[len++] = lexer->current_char;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user