zzsh/src/main.c
2023-07-04 15:54:19 +02:00

58 lines
1.1 KiB
C

#include "./env/env.h"
#include "./input/input.h"
#include <stddef.h>
#include <stdio.h>
#include "alias/alias.h"
#include "cmd/cmd.h"
#include "./exec/exec.h"
#include "./parsing/parsing.h"
#include "./data/data.h"
void cmds_list_destroyer(lst*** cmds_list)
{
for (size_t i = 0; cmds_list[i] != NULL; i++)
lst_clear(cmds_list[i], &cmd_del);
free(cmds_list);
}
int main(int ac, char **av, char **env_str)
{
char *line;
data_t data;
lst*** cmds_list;
(void) av;
(void) ac;
data.env = env_init((const char **) env_str);
if (data.env == NULL)
return (1);
data.aliases = aliases_init();
if (data.aliases == NULL)
{
lst_clear(data.env, &env_del);
return 1;
}
line = get_user_input(&data);
while (line != NULL)
{
cmds_list = parsing(line, &data);
free(line);
if (cmds_list != NULL)
{
for (size_t i = 0; cmds_list[i] != NULL; i++)
{
if (cmds_list_exec(cmds_list[i], &data))
{
lst_clear(data.env, &env_del);
return 1;
}
}
cmds_list_destroyer(cmds_list);
}
line = get_user_input(&data);
}
lst_clear(data.env, &env_del);
return (0);
}