diff --git a/src/builtins.h b/src/builtins.h index 1e44fcb..004d8aa 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -25,4 +25,5 @@ int builtins_unsetenv(ef_t *ef, char **args); int builtins_cd(ef_t *ef, char **args); int builtins_builtins(ef_t *ef, char **args); int builtins_funny_double_dot(ef_t *ef, char **args); +int builtins_eval(ef_t *ef, char **args); #endif /* BUILTIND_H */ diff --git a/src/builtins/eval.c b/src/builtins/eval.c new file mode 100644 index 0000000..4c928fe --- /dev/null +++ b/src/builtins/eval.c @@ -0,0 +1,32 @@ +/* +** EPITECH PROJECT, 2025 +** __ +** File description: +** _ +*/ + +#include +#include +#include + +#include "builtins.h" +#include "common.h" +#include "debug.h" + +int builtins_eval(ef_t *ef, char **args) +{ + char *clean_buff; + size_t args_len = 0; + + if (args[1] == NULL) + return RETURN_SUCCESS; + clean_buff += strlen(args[0]); + U_DEBUG("Eval buff len [%s]\n", ef->buffer); + for (size_t i = 0; args[i] != NULL; i++) + args_len += strlen(args[i]); + clean_buff = malloc(sizeof(char) * args_len); + if (clean_buff == NULL) + return RETURN_FAILURE; + visitor(clean_buff, ef->env, ef->history); + return RETURN_SUCCESS; +} diff --git a/src/common.h b/src/common.h index b404f57..6511281 100644 --- a/src/common.h +++ b/src/common.h @@ -8,7 +8,7 @@ #ifndef COMMON_H #define COMMON_H enum { - RETURN_SUCCESS = 0, - RETURN_FAILURE = 1 + RETURN_SUCCESS, + RETURN_FAILURE }; #endif /* COMMON_H */ diff --git a/src/exec.c b/src/exec.c index 716b042..87fed78 100644 --- a/src/exec.c +++ b/src/exec.c @@ -32,6 +32,7 @@ const builtins_t BUILTINS[] = { { "setenv", &builtins_setenv }, { "unsetenv", &builtins_unsetenv }, { ":", &builtins_funny_double_dot }, + { "eval", &builtins_eval }, { "exit", &builtins_exit } };