Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
yabtaour

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: yabtaour/Minishell-42
Path: blob/main/ft_main.c
Views: 1265
1
/* ************************************************************************** */
2
/* */
3
/* ::: :::::::: */
4
/* ft_main.c :+: :+: :+: */
5
/* +:+ +:+ +:+ */
6
/* By: ssabbaji <ssabbaji@student.42.fr> +#+ +:+ +#+ */
7
/* +#+#+#+#+#+ +#+ */
8
/* Created: 2022/07/28 10:37:19 by yabtaour #+# #+# */
9
/* Updated: 2022/10/07 13:05:05 by ssabbaji ### ########.fr */
10
/* */
11
/* ************************************************************************** */
12
13
#include "./minishell.h"
14
15
void ft_free_norme(t_data *data)
16
{
17
if (data->her_doc)
18
free_split(data->eof);
19
if (data->paths)
20
free_split(data->paths);
21
ft_free_lexer(data->lst_lexer);
22
ft_free_cmd(data->lst_cmd);
23
}
24
25
void ft_start(t_data *data)
26
{
27
ft_expanding(data);
28
ft_parsing(data);
29
pre_execution(data);
30
ft_free_norme(data);
31
}
32
33
int ft_sub_main(t_data *data)
34
{
35
while (42)
36
{
37
init_main(data);
38
data->cmd = readline("minishell-1.0> ");
39
if (!data->cmd)
40
break ;
41
else if (!*data->cmd)
42
free(data->cmd);
43
else if (data->cmd && data->cmd[0] != '\0')
44
{
45
ft_lexer(data);
46
g_vars.g_exit_stat = ft_syntax_analyzer(data);
47
if (g_vars.g_exit_stat)
48
{
49
ft_free_lexer(data->lst_lexer);
50
data->general.old_error = g_vars.g_exit_stat;
51
continue ;
52
}
53
ft_start(data);
54
}
55
data->general.old_error = g_vars.g_exit_stat;
56
}
57
rl_clear_history();
58
ft_free_env(data->lst_env);
59
return (0);
60
}
61
62