60 lines
1.9 KiB
C
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);
|
|
}
|