This commit is contained in:
Loic Deridder
2025-02-12 11:40:38 +01:00
parent 99a74ea9ac
commit 3e35d58aa3
5 changed files with 23 additions and 11 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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
{ {

View File

@@ -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);

View File

@@ -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);
} }