-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
68 lines (61 loc) · 1.84 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: achane-l <achane-l@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/02/04 14:23:19 by esafar #+# #+# */
/* Updated: 2022/05/24 16:01:12 by achane-l ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
#include "built-in/builtin.h"
#include "utils/utils.h"
#include "exec_files/exec_files.h"
t_signal g_signal;
static void init_data(t_data *data, char **env)
{
data->envp = env;
data->env = create_env(data->envp);
data->test = convert_lst_to_tab(data);
data->exit_code = 42;
g_signal.pid = 42;
g_signal.heredoc = false;
signal(SIGINT, &control_c);
signal(SIGQUIT, SIG_IGN);
signal(SIGSEGV, &sig_seg);
signal(SIGABRT, &sig_sbrt);
}
static void loop(t_data *data)
{
char *str;
while (1)
{
str = readline("minishell > ");
if (str == NULL)
{
free_tab_str(&data->test, -1);
free_env(data->env);
return ;
}
add_history(str);
if ((ft_strlen(str) != 0) && parse(data, str))
{
data->cmd = init_cmds(data, data->begin);
exec(data);
free_token_lst(data);
}
free(str);
}
}
int main(int ac, char **av, char **env)
{
t_data data;
(void)ac;
(void)av;
init_data(&data, env);
loop(&data);
rl_clear_history();
return (0);
}