fixes
This commit is contained in:
@@ -37,6 +37,6 @@ int get_new_len(t_ast_n *node, int j);
|
|||||||
int valid_expand(t_ast_n *node, int j, int k);
|
int valid_expand(t_ast_n *node, int j, int k);
|
||||||
char *create_new(t_ast_n *node, int j, int *len);
|
char *create_new(t_ast_n *node, int j, int *len);
|
||||||
void handle_copy(t_ast_n *node, int j, char **new);
|
void handle_copy(t_ast_n *node, int j, char **new);
|
||||||
void cat_exit(t_ast_n *node, char **new, int i, int *k);
|
void cat_exit(t_ast_n *node, char **new, int *i, int *k);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lderidde <lderidde@student.s19.be> +#+ +:+ +#+ */
|
/* By: lderidde <lderidde@student.s19.be> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/01/27 11:22:33 by lderidde #+# #+# */
|
/* Created: 2025/01/27 11:22:33 by lderidde #+# #+# */
|
||||||
/* Updated: 2025/02/11 12:30:00 by lderidde ### ########.fr */
|
/* Updated: 2025/02/12 11:14:14 by lderidde ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
int execute_command(t_ast_n *node)
|
int execute_command(t_ast_n *node)
|
||||||
{
|
{
|
||||||
|
if (!node->cmd)
|
||||||
|
return (0);
|
||||||
if (node->state == _CMD)
|
if (node->state == _CMD)
|
||||||
handle_redir(node);
|
handle_redir(node);
|
||||||
if (node->state == _CMD)
|
if (node->state == _CMD)
|
||||||
|
|||||||
@@ -84,7 +84,9 @@ int exec_scmd(t_ast_n *node)
|
|||||||
pid_t pid;
|
pid_t pid;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (is_builtin(node->cmd))
|
if (!node->cmd)
|
||||||
|
return (0);
|
||||||
|
else if (is_builtin(node->cmd))
|
||||||
return (exec_builtin(node));
|
return (exec_builtin(node));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lderidde <lderidde@student.s19.be> +#+ +:+ +#+ */
|
/* By: lderidde <lderidde@student.s19.be> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/02/07 12:58:25 by lderidde #+# #+# */
|
/* Created: 2025/02/07 12:58:25 by lderidde #+# #+# */
|
||||||
/* Updated: 2025/02/12 09:06:11 by lderidde ### ########.fr */
|
/* Updated: 2025/02/12 11:02:35 by lderidde ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -48,6 +48,7 @@ int get_new_len(t_ast_n *node, int j)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int len;
|
int len;
|
||||||
|
char *itoa;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
len = ft_strlen(node->args[j]);
|
len = ft_strlen(node->args[j]);
|
||||||
@@ -57,7 +58,9 @@ int get_new_len(t_ast_n *node, int j)
|
|||||||
&& node->args[j][i + 1] == '?')
|
&& node->args[j][i + 1] == '?')
|
||||||
&& !in_squote(node->args[j], &node->args[j][i]))
|
&& !in_squote(node->args[j], &node->args[j][i]))
|
||||||
{
|
{
|
||||||
len -= 1;
|
itoa = ft_itoa(node->msh->ex_code);
|
||||||
|
len += ft_strlen(itoa) - 2;
|
||||||
|
free(itoa);
|
||||||
}
|
}
|
||||||
else if (node->args[j][i] == '$' &&
|
else if (node->args[j][i] == '$' &&
|
||||||
!in_squote(node->args[j], &node->args[j][i]))
|
!in_squote(node->args[j], &node->args[j][i]))
|
||||||
@@ -87,7 +90,7 @@ void expander_var(t_ast_n *nd, int j)
|
|||||||
if (nd->args[j][k] != '$' || in_squote(nd->args[j], &nd->args[j][k]))
|
if (nd->args[j][k] != '$' || in_squote(nd->args[j], &nd->args[j][k]))
|
||||||
new[i] = nd->args[j][k++];
|
new[i] = nd->args[j][k++];
|
||||||
else if (expand_exit(nd, j, k))
|
else if (expand_exit(nd, j, k))
|
||||||
cat_exit(nd, &new, i, &k);
|
cat_exit(nd, &new, &i, &k);
|
||||||
else if (valid_expand(nd, j, k))
|
else if (valid_expand(nd, j, k))
|
||||||
{
|
{
|
||||||
ft_strlcat(new, extract_env(&nd->args[j][k], nd->msh->env), -1);
|
ft_strlcat(new, extract_env(&nd->args[j][k], nd->msh->env), -1);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lderidde <lderidde@student.s19.be> +#+ +:+ +#+ */
|
/* By: lderidde <lderidde@student.s19.be> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/02/12 09:17:28 by lderidde #+# #+# */
|
/* Created: 2025/02/12 09:17:28 by lderidde #+# #+# */
|
||||||
/* Updated: 2025/02/12 09:17:28 by lderidde ### ########.fr */
|
/* Updated: 2025/02/12 11:01:55 by lderidde ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -48,8 +48,13 @@ void handle_copy(t_ast_n *node, int j, char **new)
|
|||||||
node->args[j] = *new;
|
node->args[j] = *new;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cat_exit(t_ast_n *node, char **new, int i, int *k)
|
void cat_exit(t_ast_n *node, char **new, int *i, int *k)
|
||||||
{
|
{
|
||||||
(*new)[i] = node->msh->ex_code + '0';
|
char *itoa;
|
||||||
|
|
||||||
|
itoa = ft_itoa(node->msh->ex_code);
|
||||||
|
ft_strlcat(*new, itoa, -1);
|
||||||
|
*i = ft_strlen(*new) - 1;
|
||||||
*k += 2;
|
*k += 2;
|
||||||
|
free(itoa);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user