Add basic eval builtin

This commit is contained in:
savalet
2025-04-16 21:44:33 +02:00
parent 472ad7fc72
commit 9eced517bb
4 changed files with 36 additions and 2 deletions

View File

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

32
src/builtins/eval.c Normal file
View File

@@ -0,0 +1,32 @@
/*
** EPITECH PROJECT, 2025
** __
** File description:
** _
*/
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#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;
}

View File

@@ -8,7 +8,7 @@
#ifndef COMMON_H
#define COMMON_H
enum {
RETURN_SUCCESS = 0,
RETURN_FAILURE = 1
RETURN_SUCCESS,
RETURN_FAILURE
};
#endif /* COMMON_H */

View File

@@ -32,6 +32,7 @@ const builtins_t BUILTINS[] = {
{ "setenv", &builtins_setenv },
{ "unsetenv", &builtins_unsetenv },
{ ":", &builtins_funny_double_dot },
{ "eval", &builtins_eval },
{ "exit", &builtins_exit }
};