-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
62 lines (57 loc) · 2.05 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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: yena <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/05/11 02:00:36 by chanheki #+# #+# */
/* Updated: 2023/05/14 15:11:55 by yena ### ########.fr */
/* */
/* ************************************************************************** */
#include "./include/minishell.h"
t_global g_var;
/*
* Description: hosting_loop
* : 실질적으로 prompt 되는 구간.
* : 이 쉘은 JIP-Shell 문자열을 프롬프트로 사용한다.
* : 명령어를 읽어들이고, parsing하고 excute하고 clear한다.
*/
static void hosting_loop(void)
{
char *str;
t_ASTnode *root_node;
while (1)
{
str = readline(PROMPT);
if (str == NULL)
check_signal_eof();
if (ft_strcmp(str, "") == 0)
{
free(str);
continue ;
}
add_history(str);
root_node = parse_command_line(str);
if (!root_node)
continue ;
execute(root_node);
clear_nodes(&root_node);
free(str);
}
}
/*
* Description: minishell main
* Param. #1: argc - 미니쉘 실행시 입력되는 커맨드의 수 (1개 초과시 에러)
* Param. #2: argv - 미니쉘 실행시 입력되는 커맨드 (1개 초과시 에러)
* Param. #3: env - 실행시 해당 쉘로부터 가져오는 env
* Return : 전역변수 g_var의 exit_status
*/
int main(int argc, char **argv, char **envp)
{
initialize_global_variable(argc, argv, envp);
initialize_setting();
validator();
hosting_loop();
return (g_var.exit_status);
}