norm
This commit is contained in:
@@ -67,6 +67,8 @@ char *copy_unmeta(char *val, int *copied);
|
||||
void debug_token_list(t_node *lst, char *msg);
|
||||
void set_token(t_node *head);
|
||||
int goto_nxt_space(char *str);
|
||||
void update_quote(char *quote, char cmp);
|
||||
void update_quote(char *quote, char cmp);
|
||||
int quote_sticked(char *str);
|
||||
bool unstick_quote(int count, t_node *it);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -85,7 +85,7 @@ void expander_var(t_ast_n *nd, int j, int i)
|
||||
int l;
|
||||
|
||||
k = i;
|
||||
if (expand_exit(nd, j , i))
|
||||
if (expand_exit(nd, j, i))
|
||||
return ;
|
||||
new = ft_calloc(ft_strlen(nd->args[j]) + get_var_len(nd, j, &k), 1);
|
||||
if (!new)
|
||||
|
||||
@@ -39,8 +39,7 @@ static void add_prevhistory(t_msh *msh)
|
||||
|
||||
void handle_sigint(int sig)
|
||||
{
|
||||
(void)sig;
|
||||
int status;
|
||||
int status;
|
||||
pid_t pid;
|
||||
|
||||
pid = waitpid(-1, &status, 0);
|
||||
|
||||
@@ -68,9 +68,10 @@ bool check_unclosed_quote(char *c, t_node *node)
|
||||
while (cpy)
|
||||
{
|
||||
i = 0;
|
||||
while(cpy->val[i])
|
||||
while (cpy->val[i])
|
||||
{
|
||||
if ((cpy->val[i] == '"' || cpy->val[i] == '\'') && cpy->val[i] != c[0] && closed)
|
||||
if ((cpy->val[i] == '"' || cpy->val[i] == '\'')
|
||||
&& cpy->val[i] != c[0] && closed)
|
||||
in_other_quote = !in_other_quote;
|
||||
if (cpy->val[i] == c[0] && !in_other_quote)
|
||||
closed = !closed;
|
||||
|
||||
@@ -33,7 +33,7 @@ static t_node *tokenize_base(char *str)
|
||||
return (lst);
|
||||
}
|
||||
|
||||
void unstick_main(t_node *it)
|
||||
void unstick_main(t_node *it)
|
||||
{
|
||||
char *first_str;
|
||||
char *second_str;
|
||||
@@ -52,42 +52,6 @@ void unstick_main(t_node *it)
|
||||
ft_free(&second_str);
|
||||
}
|
||||
|
||||
bool unstick_quote(int count, t_node *it)
|
||||
{
|
||||
char *first_str;
|
||||
char *second_str;
|
||||
|
||||
if (count == 0)
|
||||
return (false);
|
||||
first_str = ft_substr(it->val, 0, count + 1);
|
||||
second_str = ft_substr(it->val, count + 1, ft_strlen(it->val));
|
||||
ft_free(&it->val);
|
||||
it->val = ft_strdup(first_str);
|
||||
create_node_after(it, second_str);
|
||||
ft_free(&first_str);
|
||||
ft_free(&second_str);
|
||||
return (true);
|
||||
}
|
||||
|
||||
int quote_sticked(char *str)
|
||||
{
|
||||
int i;
|
||||
char quote;
|
||||
|
||||
i = 1;
|
||||
quote = 0;
|
||||
update_quote("e, str[0]);
|
||||
while (str[i])
|
||||
{
|
||||
if (quote && str[i] == quote)
|
||||
if (str[i + 1] && is_meta(str[i + 1]))
|
||||
return(i);
|
||||
update_quote("e, str[i]);
|
||||
i++;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int unstick_nodes(t_node *head)
|
||||
{
|
||||
t_node *it;
|
||||
|
||||
@@ -39,12 +39,12 @@ int trim_nodes(t_node *head)
|
||||
return (1);
|
||||
}
|
||||
|
||||
static bool is_space(char c)
|
||||
static bool is_space(char c)
|
||||
{
|
||||
if ((c >= 9 && c <= 13) || c == 32)
|
||||
return (true);
|
||||
else
|
||||
return (false);
|
||||
return (false);
|
||||
}
|
||||
|
||||
int goto_nxt_space(char *str)
|
||||
|
||||
@@ -53,6 +53,42 @@ void set_token(t_node *head)
|
||||
}
|
||||
}
|
||||
|
||||
bool unstick_quote(int count, t_node *it)
|
||||
{
|
||||
char *first_str;
|
||||
char *second_str;
|
||||
|
||||
if (count == 0)
|
||||
return (false);
|
||||
first_str = ft_substr(it->val, 0, count + 1);
|
||||
second_str = ft_substr(it->val, count + 1, ft_strlen(it->val));
|
||||
ft_free(&it->val);
|
||||
it->val = ft_strdup(first_str);
|
||||
create_node_after(it, second_str);
|
||||
ft_free(&first_str);
|
||||
ft_free(&second_str);
|
||||
return (true);
|
||||
}
|
||||
|
||||
int quote_sticked(char *str)
|
||||
{
|
||||
int i;
|
||||
char quote;
|
||||
|
||||
i = 1;
|
||||
quote = 0;
|
||||
update_quote("e, str[0]);
|
||||
while (str[i])
|
||||
{
|
||||
if (quote && str[i] == quote)
|
||||
if (str[i + 1] && is_meta(str[i + 1]))
|
||||
return (i);
|
||||
update_quote("e, str[i]);
|
||||
i++;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
int find_quote_node(t_node *head, char q)
|
||||
{
|
||||
t_node *it;
|
||||
|
||||
@@ -68,7 +68,7 @@ int unic(int *meta)
|
||||
return (1);
|
||||
}
|
||||
|
||||
void update_quote(char *quote, char cmp)
|
||||
void update_quote(char *quote, char cmp)
|
||||
{
|
||||
if (*quote == 0 && (cmp == '"' || cmp == '\''))
|
||||
*quote = cmp;
|
||||
|
||||
@@ -17,8 +17,8 @@ static void handle_input(char *in, t_msh *msh)
|
||||
{
|
||||
if (ft_strlen(in) > 0 && !is_only_space(in))
|
||||
{
|
||||
if (ft_strlen(in) != ft_strlen(msh->prev_input) ||
|
||||
ft_strncmp(in, msh->prev_input, -1) != 0)
|
||||
if (ft_strlen(in) != ft_strlen(msh->prev_input)
|
||||
|| ft_strncmp(in, msh->prev_input, -1) != 0)
|
||||
{
|
||||
add_history(in);
|
||||
ft_fprintf(msh->hist, "%s\n", in);
|
||||
|
||||
Reference in New Issue
Block a user