patate douce
This commit is contained in:
80
srcs/get_len_bonus.c
Normal file
80
srcs/get_len_bonus.c
Normal file
@ -0,0 +1,80 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* get_len_bonus.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: tomoron <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/04/24 14:51:00 by tomoron #+# #+# */
|
||||
/* Updated: 2024/04/24 14:59:47 by tomoron ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
#include "minishell.h"
|
||||
|
||||
int get_normal_cmd_len(char *cmd)
|
||||
{
|
||||
int len;
|
||||
int in_quote;
|
||||
int in_dquote;
|
||||
|
||||
len = 0;
|
||||
in_quote = 0;
|
||||
in_dquote = 0;
|
||||
while (cmd[len] && (in_quote || in_dquote || (cmd[len] != '|'
|
||||
&& cmd[len] != '&' && cmd[len] != '(' && cmd[len] != ')'
|
||||
&& cmd[len] != '<' && cmd[len] != '>')))
|
||||
{
|
||||
if (cmd[len] == '\'' && !in_dquote)
|
||||
in_quote = !in_quote;
|
||||
if (cmd[len] == '"' && !in_quote)
|
||||
in_dquote = !in_dquote;
|
||||
len++;
|
||||
}
|
||||
return (len);
|
||||
}
|
||||
|
||||
int get_next_arg_len(char *cmd)
|
||||
{
|
||||
int len;
|
||||
int in_quote;
|
||||
int in_dquote;
|
||||
|
||||
len = 0;
|
||||
in_quote = 0;
|
||||
in_dquote = 0;
|
||||
while (cmd[len] && ((!ft_isspace(cmd[len]) && cmd[len] != '&'
|
||||
&& cmd[len] != '|' && cmd[len] != '<' && cmd[len] != '>')
|
||||
|| in_quote || in_dquote))
|
||||
{
|
||||
if (cmd[len] == '\'' && !in_dquote)
|
||||
in_quote = !in_quote;
|
||||
if (cmd[len] == '"' && !in_quote)
|
||||
in_dquote = !in_dquote;
|
||||
len++;
|
||||
}
|
||||
return (len);
|
||||
}
|
||||
|
||||
int get_parenthesis_cmd_len(char *cmd)
|
||||
{
|
||||
int len;
|
||||
int parenthesis;
|
||||
int in_quote;
|
||||
int in_dquote;
|
||||
|
||||
len = 0;
|
||||
parenthesis = 1;
|
||||
in_quote = 0;
|
||||
in_dquote = 0;
|
||||
while (cmd[len] && parenthesis)
|
||||
{
|
||||
if (cmd[len] == '\'' && !in_dquote)
|
||||
in_quote = !in_quote;
|
||||
if (cmd[len] == '"' && !in_quote)
|
||||
in_dquote = !in_dquote;
|
||||
if ((cmd[len] == '(' || cmd[len] == ')') && !in_quote && !in_dquote)
|
||||
parenthesis += 1 * (-(cmd[len] == ')'));
|
||||
len++;
|
||||
}
|
||||
return (len - 1);
|
||||
}
|
Reference in New Issue
Block a user