42_minishell/src/main.c
mcolonna 38170c7211 [ADD] manage variables *
Also:
- dev:
  - add docu
  - add fixes in TODO
  - add FIXME
2024-06-06 16:00:38 +02:00

60 lines
1.9 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: jschaft <cecile.schaft@orange.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/23 14:33:45 by mcolonna #+# #+# */
/* Updated: 2024/06/05 17:45:43 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#include "include.h"
t_memclass g_mc;
// Execute a command from a string.
static int do_command(char *const envp[], t_list *variables, const char *str)
{
const t_memclass mc = mem_subclass(fatal_error, g_mc);
t_command command;
int r;
command = parse_command(mc, str, variables);
if (command.error || command.empty)
return (command.error);
r = execute_command(mc, command, envp);
mem_freeall(mc);
return (r);
}
static void start(char *const envp[], t_list *variables)
{
do_command(envp, variables, "clear");
do_command(envp, variables, "cat ./header");
do_command(envp, variables, "echo");
}
int main(const int argc, const char *argv[], char *const envp[])
{
t_list variables;
t_memclass mc;
const char *command_str;
int errorstatus;
(void)argc;
(void)argv;
g_mc = NULL;
g_mc = mem_newclass(fatal_error);
variables = list_createempty(g_mc);
start(envp, &variables);
errorstatus = 0;
while (true)
{
mc = mem_subclass(fatal_error, g_mc);
command_str = ask_command(mc);
do_command(envp, &variables, command_str);
}
return (errorstatus);
}