mirror of
https://github.com/Ladebeze66/minishell.git
synced 2025-12-15 21:56:58 +01:00
90 lines
2.3 KiB
C
Executable File
90 lines
2.3 KiB
C
Executable File
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* tokenize_symbol.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2023/12/03 17:34:50 by fgras-ca #+# #+# */
|
|
/* Updated: 2023/12/07 16:19:24 by fgras-ca ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "../minishell.h"
|
|
|
|
void handle_spaces_and_tabs(char *input, t_Tokenizer *tk)
|
|
{
|
|
while (input[tk->input_pos] == ' ' || input[tk->input_pos] == '\t')
|
|
{
|
|
tk->input_pos++;
|
|
}
|
|
}
|
|
|
|
void add_special_symbol(char *input, t_Tokenizer *tk)
|
|
{
|
|
if (tk->token_length > 0)
|
|
{
|
|
add_token_to_list(tk);
|
|
}
|
|
tk->token[0] = input[tk->input_pos++];
|
|
tk->token_length = 1;
|
|
if ((tk->token[0] == '>' && input[tk->input_pos] == '>')
|
|
|| (tk->token[0] == '<' && input[tk->input_pos] == '<'))
|
|
{
|
|
tk->token[tk->token_length++] = input[tk->input_pos++];
|
|
}
|
|
tk->token[tk->token_length] = '\0';
|
|
add_token_to_list(tk);
|
|
}
|
|
|
|
void handle_empty_quotes(char *input, t_Tokenizer *tk)
|
|
{
|
|
char quote_type;
|
|
int start_pos;
|
|
int i;
|
|
|
|
quote_type = input[tk->input_pos];
|
|
start_pos = tk->input_pos;
|
|
tk->input_pos++;
|
|
while (input[tk->input_pos] != quote_type && input[tk->input_pos] != '\0')
|
|
{
|
|
tk->input_pos++;
|
|
}
|
|
if (input[tk->input_pos] == quote_type)
|
|
{
|
|
if (tk->input_pos - start_pos > 1)
|
|
{
|
|
i = start_pos + 1;
|
|
while (i < tk->input_pos)
|
|
{
|
|
tk->token[tk->token_length++] = input[i];
|
|
i++;
|
|
}
|
|
add_token_to_list(tk);
|
|
}
|
|
tk->input_pos++;
|
|
}
|
|
}
|
|
|
|
bool is_special_symbol(char c, char next_c)
|
|
{
|
|
if (c == '|' || c == '<' || c == '>')
|
|
{
|
|
return (true);
|
|
}
|
|
if ((c == '>' && next_c == '>') || (c == '<' && next_c == '<'))
|
|
{
|
|
return (true);
|
|
}
|
|
return (false);
|
|
}
|
|
|
|
bool is_simple_symbol(char c)
|
|
{
|
|
if (c == '|' || c == '<' || c == '>')
|
|
{
|
|
return (true);
|
|
}
|
|
return (false);
|
|
}
|