-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.c
More file actions
61 lines (54 loc) · 1.79 KB
/
main.c
File metadata and controls
61 lines (54 loc) · 1.79 KB
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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: roramos <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/10 02:02:08 by nnuno-ca #+# #+# */
/* Updated: 2023/02/22 16:59:39 by roramos ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
long long g_exit_status = 0;
static char *get_input(void)
{
char *raw_input;
char *input;
raw_input = readline("minishell$ ");
input = trim_free(raw_input, " \t");
return (input);
}
static void clean_parsed(t_statement **statement_list, t_data *data)
{
p_lstclear(statement_list);
*statement_list = NULL;
data->head = NULL;
}
int main(int ac, char **av, char **envp)
{
t_data data;
t_statement *statement_list;
char *input;
if (av && ac > 1)
panic(NULL, CL_ARGUMENTS_ERR, EXIT_FAILURE);
setup_shell(envp, &data, &statement_list);
while (1)
{
input = get_input();
if (!valid_input(input, &data))
continue ;
add_history(input);
input = expander(input, &data);
if (!input[0])
{
free(input);
continue ;
}
statement_list = parser(input);
data.head = statement_list;
exec_type(statement_list, &data);
clean_parsed(&statement_list, &data);
}
return (EXIT_SUCCESS);
}