From 133f4bf052e4352b16682ddb594e51df1432d2d9 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 22 Jan 2017 00:38:27 +0100 Subject: [PATCH 001/206] read script init --- 42sh/Makefile | 5 ++ 42sh/includes/builtin.h | 2 +- 42sh/includes/exec.h | 2 +- 42sh/includes/ft_curs.h | 2 +- 42sh/includes/ft_input.h | 2 +- 42sh/includes/ft_readline.h | 2 +- 42sh/includes/job_control.h | 2 +- 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 5 +- 42sh/includes/parser.h | 2 +- 42sh/includes/readscript.h | 43 ++++++++++++++++++ 42sh/includes/types.h | 2 +- 42sh/obj/ast_free.o | Bin 0 -> 3604 bytes 42sh/obj/builtin_bg.o | Bin 0 -> 5360 bytes 42sh/obj/builtin_cd.o | Bin 0 -> 4996 bytes 42sh/obj/builtin_echo.o | Bin 0 -> 2684 bytes 42sh/obj/builtin_env.o | Bin 0 -> 2356 bytes 42sh/obj/builtin_exit.o | Bin 0 -> 4564 bytes 42sh/obj/builtin_fg.o | Bin 0 -> 5300 bytes 42sh/obj/builtin_jobs.o | Bin 0 -> 4944 bytes 42sh/obj/builtin_setenv.o | Bin 0 -> 3304 bytes 42sh/obj/builtin_unsetenv.o | Bin 0 -> 2816 bytes 42sh/obj/command_getoutput.o | Bin 0 -> 6492 bytes 42sh/obj/curs_ask.o | Bin 0 -> 3016 bytes 42sh/obj/curs_clear.o | Bin 0 -> 3024 bytes 42sh/obj/curs_goto.o | Bin 0 -> 2972 bytes 42sh/obj/curs_move.o | Bin 0 -> 3200 bytes 42sh/obj/curs_setup.o | Bin 0 -> 4944 bytes 42sh/obj/curs_single.o | Bin 0 -> 2756 bytes 42sh/obj/curs_term_setup.o | Bin 0 -> 4300 bytes 42sh/obj/curs_write.o | Bin 0 -> 4612 bytes 42sh/obj/data_exit.o | Bin 0 -> 5940 bytes 42sh/obj/data_init.o | Bin 0 -> 6664 bytes 42sh/obj/data_singleton.o | Bin 0 -> 6136 bytes 42sh/obj/do_job_notification.o | Bin 0 -> 4968 bytes 42sh/obj/exec_ampersand.o | Bin 0 -> 3148 bytes 42sh/obj/exec_and_if.o | Bin 0 -> 7448 bytes 42sh/obj/exec_command.o | Bin 0 -> 5864 bytes 42sh/obj/exec_dgreat.o | Bin 0 -> 3892 bytes 42sh/obj/exec_great.o | Bin 0 -> 3880 bytes 42sh/obj/exec_less.o | Bin 0 -> 3868 bytes 42sh/obj/exec_or_if.o | Bin 0 -> 7448 bytes 42sh/obj/exec_pipe.o | Bin 0 -> 7196 bytes 42sh/obj/exec_semi.o | Bin 0 -> 2932 bytes 42sh/obj/ft_exec.o | Bin 0 -> 4712 bytes 42sh/obj/ft_findexec.o | Bin 0 -> 4748 bytes 42sh/obj/ft_parse.o | Bin 0 -> 5284 bytes 42sh/obj/ft_post_tokenize.o | Bin 0 -> 3416 bytes 42sh/obj/ft_putast.o | Bin 0 -> 3904 bytes 42sh/obj/ft_putast2.o | Bin 0 -> 4384 bytes 42sh/obj/ft_read_script.o | Bin 0 -> 3168 bytes 42sh/obj/ft_readline.o | Bin 0 -> 7652 bytes 42sh/obj/ft_tokenize.o | Bin 0 -> 4940 bytes 42sh/obj/get_lexer_state.o | Bin 0 -> 3104 bytes 42sh/obj/is_builtin.o | Bin 0 -> 4516 bytes 42sh/obj/job_addprocess.o | Bin 0 -> 5068 bytes 42sh/obj/job_cmp_id.o | Bin 0 -> 3784 bytes 42sh/obj/job_format.o | Bin 0 -> 4040 bytes 42sh/obj/job_format_head.o | Bin 0 -> 4196 bytes 42sh/obj/job_free.o | Bin 0 -> 3944 bytes 42sh/obj/job_getprocess.o | Bin 0 -> 4808 bytes 42sh/obj/job_getrank.o | Bin 0 -> 4412 bytes 42sh/obj/job_is_completed.o | Bin 0 -> 5304 bytes 42sh/obj/job_is_stopped.o | Bin 0 -> 4820 bytes 42sh/obj/job_kill_all.o | Bin 0 -> 4204 bytes 42sh/obj/job_notify_change.o | Bin 0 -> 4480 bytes 42sh/obj/job_notify_new.o | Bin 0 -> 4596 bytes 42sh/obj/job_remove.o | Bin 0 -> 4532 bytes 42sh/obj/job_update_id.o | Bin 0 -> 3980 bytes 42sh/obj/job_update_status.o | Bin 0 -> 2748 bytes 42sh/obj/job_wait.o | Bin 0 -> 3728 bytes 42sh/obj/launch_process.o | Bin 0 -> 6352 bytes 42sh/obj/lexer_backslash.o | Bin 0 -> 3564 bytes 42sh/obj/lexer_default.o | Bin 0 -> 4020 bytes 42sh/obj/lexer_delim.o | Bin 0 -> 3624 bytes 42sh/obj/lexer_dquote.o | Bin 0 -> 3744 bytes 42sh/obj/lexer_great.o | Bin 0 -> 3892 bytes 42sh/obj/lexer_greatand.o | Bin 0 -> 3808 bytes 42sh/obj/lexer_less.o | Bin 0 -> 3888 bytes 42sh/obj/lexer_lessand.o | Bin 0 -> 3800 bytes 42sh/obj/lexer_number.o | Bin 0 -> 4304 bytes 42sh/obj/lexer_quote.o | Bin 0 -> 3632 bytes 42sh/obj/lexer_sep.o | Bin 0 -> 4032 bytes 42sh/obj/lexer_special.o | Bin 0 -> 3944 bytes 42sh/obj/lexer_var.o | Bin 0 -> 3972 bytes 42sh/obj/lexer_word.o | Bin 0 -> 3936 bytes 42sh/obj/main.o | Bin 0 -> 5064 bytes 42sh/obj/mark_job_as_running.o | Bin 0 -> 4452 bytes 42sh/obj/parse_dgreat.o | Bin 0 -> 4640 bytes 42sh/obj/parse_dless.o | Bin 0 -> 4564 bytes 42sh/obj/parse_great.o | Bin 0 -> 4640 bytes 42sh/obj/parse_greatand.o | Bin 0 -> 4532 bytes 42sh/obj/parse_less.o | Bin 0 -> 4628 bytes 42sh/obj/parse_lessand.o | Bin 0 -> 4532 bytes 42sh/obj/parse_separator.o | Bin 0 -> 4324 bytes 42sh/obj/parse_subshell.o | Bin 0 -> 4668 bytes 42sh/obj/parse_word.o | Bin 0 -> 4320 bytes 42sh/obj/process_cmp_pid.o | Bin 0 -> 3160 bytes 42sh/obj/process_format.o | Bin 0 -> 5336 bytes 42sh/obj/process_free.o | Bin 0 -> 3536 bytes 42sh/obj/process_mark_status.o | Bin 0 -> 4296 bytes 42sh/obj/process_redirect.o | Bin 0 -> 3348 bytes 42sh/obj/process_reset.o | Bin 0 -> 5896 bytes 42sh/obj/process_setexec.o | Bin 0 -> 4136 bytes 42sh/obj/process_setgroup.o | Bin 0 -> 4988 bytes 42sh/obj/put_job_in_background.o | Bin 0 -> 4068 bytes 42sh/obj/put_job_in_foreground.o | Bin 0 -> 5480 bytes 42sh/obj/reduce_bquotes.o | Bin 0 -> 4424 bytes 42sh/obj/reduce_parens.o | Bin 0 -> 4008 bytes 42sh/obj/rl_bitset.o | Bin 0 -> 5780 bytes 42sh/obj/rl_clear_function.o | Bin 0 -> 4004 bytes 42sh/obj/rl_clipboard_function.o | Bin 0 -> 5132 bytes 42sh/obj/rl_clipboard_utility.o | Bin 0 -> 6544 bytes 42sh/obj/rl_comp_function.o | Bin 0 -> 6516 bytes 42sh/obj/rl_default_function.o | Bin 0 -> 4108 bytes 42sh/obj/rl_display.o | Bin 0 -> 5492 bytes 42sh/obj/rl_dynamic_buffer.o | Bin 0 -> 7260 bytes 42sh/obj/rl_long_move_function.o | Bin 0 -> 5336 bytes 42sh/obj/rl_merge_line.o | Bin 0 -> 3944 bytes 42sh/obj/rl_page_move_function.o | Bin 0 -> 5584 bytes 42sh/obj/rl_prompt.o | Bin 0 -> 4224 bytes 42sh/obj/rl_quoting_function.o | Bin 0 -> 4476 bytes 42sh/obj/rl_remove_function.o | Bin 0 -> 4312 bytes 42sh/obj/rl_setup.o | Bin 0 -> 4820 bytes 42sh/obj/rl_short_move_function.o | Bin 0 -> 5304 bytes 42sh/obj/rl_stack_line.o | Bin 0 -> 4116 bytes 42sh/obj/rl_state_function.o | Bin 0 -> 3988 bytes 42sh/obj/rl_word_move_function.o | Bin 0 -> 5444 bytes 42sh/obj/rl_word_utility.o | Bin 0 -> 4496 bytes 42sh/obj/rs_setup.o | Bin 0 -> 3128 bytes 42sh/obj/set_exitstatus.o | Bin 0 -> 2884 bytes 42sh/obj/shell_exit.o | Bin 0 -> 2628 bytes 42sh/obj/shell_get_avdata.o | Bin 0 -> 6236 bytes 42sh/obj/shell_get_opts.o | Bin 0 -> 3648 bytes 42sh/obj/shell_init.o | Bin 0 -> 3940 bytes 42sh/obj/sigchld_handler.o | Bin 0 -> 5956 bytes 42sh/obj/sigint_handler.o | Bin 0 -> 2616 bytes 42sh/obj/sigtstp_handler.o | Bin 0 -> 4152 bytes 42sh/obj/sigttin_handler.o | Bin 0 -> 2560 bytes 42sh/obj/sigttou_handler.o | Bin 0 -> 2560 bytes 42sh/obj/token_append.o | Bin 0 -> 2924 bytes 42sh/obj/token_cmp_type.o | Bin 0 -> 2684 bytes 42sh/obj/token_expand_var.o | Bin 0 -> 3056 bytes 42sh/obj/token_free.o | Bin 0 -> 3036 bytes 42sh/obj/token_init.o | Bin 0 -> 2768 bytes 42sh/obj/token_print.o | Bin 0 -> 3560 bytes 42sh/src/builtin/builtin_cd.c | 2 +- 42sh/src/builtin/builtin_echo.c | 2 +- 42sh/src/exec/exec_pipe.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/job-control/builtin_bg.c | 2 +- 42sh/src/lexer/.ft_post_tokenize.c.swp | Bin 0 -> 12288 bytes 42sh/src/lexer/.ft_tokenize.c.swp | Bin 0 -> 12288 bytes 42sh/src/lexer/.reduce_bquotes.c.swp | Bin 0 -> 12288 bytes 42sh/src/lexer/command_getoutput.c | 2 +- 42sh/src/lexer/ft_post_tokenize.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_lexer_state.c | 2 +- 42sh/src/lexer/lexer_backslash.c | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_dquote.c | 2 +- 42sh/src/lexer/reduce_bquotes.c | 3 +- 42sh/src/lexer/reduce_parens.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/lexer/token_cmp_type.c | 2 +- 42sh/src/lexer/token_init.c | 2 +- 42sh/src/lexer/token_print.c | 2 +- 42sh/src/line-editing/curs_ask.c | 2 +- 42sh/src/line-editing/curs_clear.c | 2 +- 42sh/src/line-editing/curs_goto.c | 2 +- 42sh/src/line-editing/curs_move.c | 2 +- 42sh/src/line-editing/curs_setup.c | 2 +- 42sh/src/line-editing/curs_single.c | 2 +- 42sh/src/line-editing/curs_term_setup.c | 2 +- 42sh/src/line-editing/curs_write.c | 2 +- 42sh/src/line-editing/ft_readline.c | 2 +- 42sh/src/line-editing/rl_bitset.c | 2 +- 42sh/src/line-editing/rl_clear_function.c | 2 +- 42sh/src/line-editing/rl_clipboard_function.c | 2 +- 42sh/src/line-editing/rl_clipboard_utility.c | 2 +- 42sh/src/line-editing/rl_comp_function.c | 2 +- 42sh/src/line-editing/rl_default_function.c | 2 +- 42sh/src/line-editing/rl_display.c | 2 +- 42sh/src/line-editing/rl_dynamic_buffer.c | 2 +- 42sh/src/line-editing/rl_long_move_function.c | 2 +- 42sh/src/line-editing/rl_merge_line.c | 2 +- 42sh/src/line-editing/rl_page_move_function.c | 2 +- 42sh/src/line-editing/rl_prompt.c | 2 +- 42sh/src/line-editing/rl_quoting_function.c | 2 +- 42sh/src/line-editing/rl_remove_function.c | 2 +- 42sh/src/line-editing/rl_setup.c | 2 +- .../src/line-editing/rl_short_move_function.c | 2 +- 42sh/src/line-editing/rl_stack_line.c | 2 +- 42sh/src/line-editing/rl_state_function.c | 2 +- 42sh/src/line-editing/rl_word_move_function.c | 2 +- 42sh/src/line-editing/rl_word_utility.c | 2 +- 42sh/src/main/.main.c.swp | Bin 0 -> 12288 bytes 42sh/src/main/data_exit.c | 2 +- 42sh/src/main/data_init.c | 2 +- 42sh/src/main/data_singleton.c | 2 +- 42sh/src/main/main.c | 17 +++---- 42sh/src/main/shell_exit.c | 2 +- 42sh/src/main/shell_get_avdata.c | 2 +- 42sh/src/main/shell_get_opts.c | 2 +- 42sh/src/main/shell_init.c | 2 +- 42sh/src/parser/.ft_parse.c.swp | Bin 0 -> 12288 bytes 42sh/src/parser/.parse_word.c.swp | Bin 0 -> 12288 bytes 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/parse_dgreat.c | 2 +- 42sh/src/parser/parse_dless.c | 2 +- 42sh/src/parser/parse_great.c | 2 +- 42sh/src/parser/parse_greatand.c | 2 +- 42sh/src/parser/parse_less.c | 2 +- 42sh/src/parser/parse_lessand.c | 2 +- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_subshell.c | 2 +- 42sh/src/parser/parse_word.c | 2 +- 42sh/src/read-script/ft_read_script.c | 25 ++++++++++ 42sh/src/read-script/rs_setup.c | 23 ++++++++++ 220 files changed, 183 insertions(+), 84 deletions(-) create mode 100644 42sh/includes/readscript.h create mode 100644 42sh/obj/ast_free.o create mode 100644 42sh/obj/builtin_bg.o create mode 100644 42sh/obj/builtin_cd.o create mode 100644 42sh/obj/builtin_echo.o create mode 100644 42sh/obj/builtin_env.o create mode 100644 42sh/obj/builtin_exit.o create mode 100644 42sh/obj/builtin_fg.o create mode 100644 42sh/obj/builtin_jobs.o create mode 100644 42sh/obj/builtin_setenv.o create mode 100644 42sh/obj/builtin_unsetenv.o create mode 100644 42sh/obj/command_getoutput.o create mode 100644 42sh/obj/curs_ask.o create mode 100644 42sh/obj/curs_clear.o create mode 100644 42sh/obj/curs_goto.o create mode 100644 42sh/obj/curs_move.o create mode 100644 42sh/obj/curs_setup.o create mode 100644 42sh/obj/curs_single.o create mode 100644 42sh/obj/curs_term_setup.o create mode 100644 42sh/obj/curs_write.o create mode 100644 42sh/obj/data_exit.o create mode 100644 42sh/obj/data_init.o create mode 100644 42sh/obj/data_singleton.o create mode 100644 42sh/obj/do_job_notification.o create mode 100644 42sh/obj/exec_ampersand.o create mode 100644 42sh/obj/exec_and_if.o create mode 100644 42sh/obj/exec_command.o create mode 100644 42sh/obj/exec_dgreat.o create mode 100644 42sh/obj/exec_great.o create mode 100644 42sh/obj/exec_less.o create mode 100644 42sh/obj/exec_or_if.o create mode 100644 42sh/obj/exec_pipe.o create mode 100644 42sh/obj/exec_semi.o create mode 100644 42sh/obj/ft_exec.o create mode 100644 42sh/obj/ft_findexec.o create mode 100644 42sh/obj/ft_parse.o create mode 100644 42sh/obj/ft_post_tokenize.o create mode 100644 42sh/obj/ft_putast.o create mode 100644 42sh/obj/ft_putast2.o create mode 100644 42sh/obj/ft_read_script.o create mode 100644 42sh/obj/ft_readline.o create mode 100644 42sh/obj/ft_tokenize.o create mode 100644 42sh/obj/get_lexer_state.o create mode 100644 42sh/obj/is_builtin.o create mode 100644 42sh/obj/job_addprocess.o create mode 100644 42sh/obj/job_cmp_id.o create mode 100644 42sh/obj/job_format.o create mode 100644 42sh/obj/job_format_head.o create mode 100644 42sh/obj/job_free.o create mode 100644 42sh/obj/job_getprocess.o create mode 100644 42sh/obj/job_getrank.o create mode 100644 42sh/obj/job_is_completed.o create mode 100644 42sh/obj/job_is_stopped.o create mode 100644 42sh/obj/job_kill_all.o create mode 100644 42sh/obj/job_notify_change.o create mode 100644 42sh/obj/job_notify_new.o create mode 100644 42sh/obj/job_remove.o create mode 100644 42sh/obj/job_update_id.o create mode 100644 42sh/obj/job_update_status.o create mode 100644 42sh/obj/job_wait.o create mode 100644 42sh/obj/launch_process.o create mode 100644 42sh/obj/lexer_backslash.o create mode 100644 42sh/obj/lexer_default.o create mode 100644 42sh/obj/lexer_delim.o create mode 100644 42sh/obj/lexer_dquote.o create mode 100644 42sh/obj/lexer_great.o create mode 100644 42sh/obj/lexer_greatand.o create mode 100644 42sh/obj/lexer_less.o create mode 100644 42sh/obj/lexer_lessand.o create mode 100644 42sh/obj/lexer_number.o create mode 100644 42sh/obj/lexer_quote.o create mode 100644 42sh/obj/lexer_sep.o create mode 100644 42sh/obj/lexer_special.o create mode 100644 42sh/obj/lexer_var.o create mode 100644 42sh/obj/lexer_word.o create mode 100644 42sh/obj/main.o create mode 100644 42sh/obj/mark_job_as_running.o create mode 100644 42sh/obj/parse_dgreat.o create mode 100644 42sh/obj/parse_dless.o create mode 100644 42sh/obj/parse_great.o create mode 100644 42sh/obj/parse_greatand.o create mode 100644 42sh/obj/parse_less.o create mode 100644 42sh/obj/parse_lessand.o create mode 100644 42sh/obj/parse_separator.o create mode 100644 42sh/obj/parse_subshell.o create mode 100644 42sh/obj/parse_word.o create mode 100644 42sh/obj/process_cmp_pid.o create mode 100644 42sh/obj/process_format.o create mode 100644 42sh/obj/process_free.o create mode 100644 42sh/obj/process_mark_status.o create mode 100644 42sh/obj/process_redirect.o create mode 100644 42sh/obj/process_reset.o create mode 100644 42sh/obj/process_setexec.o create mode 100644 42sh/obj/process_setgroup.o create mode 100644 42sh/obj/put_job_in_background.o create mode 100644 42sh/obj/put_job_in_foreground.o create mode 100644 42sh/obj/reduce_bquotes.o create mode 100644 42sh/obj/reduce_parens.o create mode 100644 42sh/obj/rl_bitset.o create mode 100644 42sh/obj/rl_clear_function.o create mode 100644 42sh/obj/rl_clipboard_function.o create mode 100644 42sh/obj/rl_clipboard_utility.o create mode 100644 42sh/obj/rl_comp_function.o create mode 100644 42sh/obj/rl_default_function.o create mode 100644 42sh/obj/rl_display.o create mode 100644 42sh/obj/rl_dynamic_buffer.o create mode 100644 42sh/obj/rl_long_move_function.o create mode 100644 42sh/obj/rl_merge_line.o create mode 100644 42sh/obj/rl_page_move_function.o create mode 100644 42sh/obj/rl_prompt.o create mode 100644 42sh/obj/rl_quoting_function.o create mode 100644 42sh/obj/rl_remove_function.o create mode 100644 42sh/obj/rl_setup.o create mode 100644 42sh/obj/rl_short_move_function.o create mode 100644 42sh/obj/rl_stack_line.o create mode 100644 42sh/obj/rl_state_function.o create mode 100644 42sh/obj/rl_word_move_function.o create mode 100644 42sh/obj/rl_word_utility.o create mode 100644 42sh/obj/rs_setup.o create mode 100644 42sh/obj/set_exitstatus.o create mode 100644 42sh/obj/shell_exit.o create mode 100644 42sh/obj/shell_get_avdata.o create mode 100644 42sh/obj/shell_get_opts.o create mode 100644 42sh/obj/shell_init.o create mode 100644 42sh/obj/sigchld_handler.o create mode 100644 42sh/obj/sigint_handler.o create mode 100644 42sh/obj/sigtstp_handler.o create mode 100644 42sh/obj/sigttin_handler.o create mode 100644 42sh/obj/sigttou_handler.o create mode 100644 42sh/obj/token_append.o create mode 100644 42sh/obj/token_cmp_type.o create mode 100644 42sh/obj/token_expand_var.o create mode 100644 42sh/obj/token_free.o create mode 100644 42sh/obj/token_init.o create mode 100644 42sh/obj/token_print.o create mode 100644 42sh/src/lexer/.ft_post_tokenize.c.swp create mode 100644 42sh/src/lexer/.ft_tokenize.c.swp create mode 100644 42sh/src/lexer/.reduce_bquotes.c.swp create mode 100644 42sh/src/main/.main.c.swp create mode 100644 42sh/src/parser/.ft_parse.c.swp create mode 100644 42sh/src/parser/.parse_word.c.swp create mode 100644 42sh/src/read-script/ft_read_script.c create mode 100644 42sh/src/read-script/rs_setup.c diff --git a/42sh/Makefile b/42sh/Makefile index 8dcf5189..2e558060 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -72,6 +72,11 @@ $(D_OBJ)/%.o: $(D_SRC)/job-control/%.c includes/job_control.h @$(CC) $(O_INC) $(W_FLAGS) -c $< -o $@ $(D_FLAGS) @echo "Compiling "$<"..." +$(D_OBJ)/%.o: $(D_SRC)/read-script/%.c includes/readscript.h + @$(MKDIR) $(D_OBJ) + @$(CC) $(O_INC) $(W_FLAGS) -c $< -o $@ $(D_FLAGS) + @echo "Compiling "$<"..." + libft/libft.a: libft/src/*/*.c @echo "libft/libft.a" @$(MAKE) -C libft 2>/dev/null diff --git a/42sh/includes/builtin.h b/42sh/includes/builtin.h index 42f2543a..4ffb9a44 100644 --- a/42sh/includes/builtin.h +++ b/42sh/includes/builtin.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:21:56 by jhalford #+# #+# */ -/* Updated: 2017/01/09 16:57:22 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 20:54:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index ea6efda7..e9f22dc9 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/12 13:18:27 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 21:03:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/ft_curs.h b/42sh/includes/ft_curs.h index 02f3f314..1f17a2c7 100644 --- a/42sh/includes/ft_curs.h +++ b/42sh/includes/ft_curs.h @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 16:34:51 by sbenning #+# #+# */ -/* Updated: 2016/12/09 17:08:52 by sbenning ### ########.fr */ +/* Updated: 2017/01/19 21:53:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/ft_input.h b/42sh/includes/ft_input.h index 5e8c59a3..3e2188b4 100644 --- a/42sh/includes/ft_input.h +++ b/42sh/includes/ft_input.h @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 02:05:22 by sbenning #+# #+# */ -/* Updated: 2017/01/10 11:45:38 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 21:49:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/ft_readline.h b/42sh/includes/ft_readline.h index f8aeb60e..acc96bba 100644 --- a/42sh/includes/ft_readline.h +++ b/42sh/includes/ft_readline.h @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:02:25 by sbenning #+# #+# */ -/* Updated: 2017/01/11 17:31:09 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 23:42:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index bea10d93..6cd51a51 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/01/09 16:56:18 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 21:51:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 03276719..ec98c235 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/12 14:57:41 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 00:37:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 02b05202..47191403 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:17:16 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 00:37:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ # include "libft.h" +# include "readscript.h" # include "types.h" # include "lexer.h" # include "parser.h" @@ -46,6 +47,7 @@ struct s_comp # define SHELL_MSG_NOJOBC "no job-control" + struct s_data { char **env; @@ -56,6 +58,7 @@ struct s_data t_comp comp; t_exec exec; t_jobc jobc; + t_script script; }; extern t_stof g_builtins[]; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 3c8a7fed..9b7025b9 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:06:17 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 18:26:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/readscript.h b/42sh/includes/readscript.h new file mode 100644 index 00000000..2334db34 --- /dev/null +++ b/42sh/includes/readscript.h @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* read_script.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/21 22:50:22 by ariard #+# #+# */ +/* Updated: 2017/01/22 00:37:21 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef READSCRIPT_H +# define READSCRIPT_H + +/* + * input : destination buffer + * b_size : allocated size of the destination buffer + * used : acutal used size in the destination buffer + * q_size : number of elements in the queue + * queue : list of queued lines, FIFO +*/ + +struct s_script +{ + char *buffer; + int b_size; + int used; + int q_size; + t_list *queue; +}; + +typedef struct s_script t_script; + +/* + * Read_script setup/cleanup +*/ + +int rs_setup(t_script *script); + +int ft_read_script(); + +#endif diff --git a/42sh/includes/types.h b/42sh/includes/types.h index af8071d0..e5168947 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/01/10 12:45:35 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 21:52:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/obj/ast_free.o b/42sh/obj/ast_free.o new file mode 100644 index 0000000000000000000000000000000000000000..ddd70b608307b8c0bc270d0ed31ead1bcba89bfd GIT binary patch literal 3604 zcmb7HZERCj7(Tb{z3p0PI|dB-ER2tlKs!EN#2|}cN<~BXQWSGj+PkedZs)x%8wAN@ zpb(6LlSurb!~}krp#IPVf2bs4NHkF+iHV6OCZf(n0wNla$b6oA&)vH6>6^Xh{W$M= z&U@~8&pF*!|D3-b6hiR}G~fWZQ$>>igYE%eq4O4W9)n2-IR@m}bdzIrf^@xPbeCM+ zwb!k9eBF@kX?;>59;fXYDTI%{fasy{NZ0em=5m{Emn_Gn>&qW&S@V$BEj*mLTokB5 zb7e*Az}RvpFZl>ij%B?=#*RFWcGK zVd!RdE7QASy?@I5?w4ux-Z4KHuef=Ov%%H*rQ}DNF7ZCOOFSpP&TOt4Z*3LcPj`t| z+TMB7^>#_TtMUT|!!pq!QMDiLdU5C+$m;w$<$3VdD@F_fNv#SmSKNwqmh`gORWS3q zzG`{ph$9j&A)SrD;}*S#`jaVF;Ti3EtA*Wl2k83n`{1O+TPE?+5>J{UB1F5VQx2Zr zg6SYuulI_?`%4bmC)a!O7WwhJ#2FiLKQxmc2R?;(uInNsV~~ef4Xz}vmpp92l>xWW z*QfXYobLTSk>3C8mGu7d#q@zPWj|zp`njb9jqRNZfb@YC{psHBkcjO;Dz15;JJe6? z-yZZlz0FE&&%`0i7uypZvO=-FqX(^1p>!{J{}~qoev$4yop|cg79PaJs#O~vNo+GL zyHGR}&B>-@Q=&1~f!kwla}$i@!uiR0vxRNtQbxCtOJ(g6w%0I{Igwg#V^}I{6|z=7 zwc09fF>)n4wQ#=OF1#?2&z7yo4nwffOWfG3g^F{Wuse!oTcT{*g*Ma3 zCkkdsn8myyN;;q%%^uWP_~>wiGt6l?#EEvMEHm2CEF)jA(Bn#5N>eaC*HN?$(N(na z2yjH%6}k4TC0g^s<~u}IYLyw$I@KSIYZIci$|%%wfGXhy+C z>MQ!h>r8_CDMBnu9Q8RApk+?$HhoebtXj{ZY}kY@C8j8T-=S`vE+xj799HKR$10-@ z_ztxnrB(Y1TA^w^XuH7v$=U&kU0~m);7bs}Q0O%X?JYFNz=67&cOk|F7KA^9JVVza zUxNs9uJ33q_BDir_6^jJY1RingHS`-If%3LjEVdJ5f97>{|Z@;Wd@Q&m=5g-trV@< z&|aj~1WRbspq}UG(KWml;(;0Ae<9a1Vix25&>XAL*ANKTz}m#V*~}(5fKWA{wZRjm zcWh(~L?|%D33R5JN|34WIv~?HY3LBl;6yZ<5@HZe+1i#g6_4f3ByIQJ`tr@gZ*$X} zoq$Y&NtI)1SC1V4{ht`t9huhxiC3K>G)NUcBO-!$B=))5zyJ#-0Ol`_5ST9=`*?9O zA6`$qbS|GLPWou)qHBl0Jw4_4`e%+mS=&E;`~q{*J4@6rKKOCwg{Gc;k-ke`PdIk& z^1S$nZSSAI9^UoD(Wj5+5{GwwkMS44K71s8=0@-m@T1@?xCDLy%u+uAJ_SAt{sqk4 z!Jo5tVIHW2eQiOV&TasRwP|4TN%ZoqKkDXT`YgP zdce}fk4P7bLnhHBT|7`SiYJ3nJS;f%Bo;qiJP&dp>z6K;w2b1ppo<4cVzKP#VhzfH zw=0eyHl7=a5rfp{YD5`EUco3k)(E9LuEa+KLkHzFe196R5@}#Sju)aO8h_sR;7Iu_ zi$4(K6T8tW%C+c7v3z>8)xiqb|v)OIy{I88wnoqguN<8l6)zsz0MD+UGtEOT-j= zz?f}r3nc8h_qtL`NjX!>$x=cvPJ3BO{(lxDkR%?s3e(XmZK1c~eJxpeqr+99^PLua K2b~vNi2nfJ*a>I= literal 0 HcmV?d00001 diff --git a/42sh/obj/builtin_bg.o b/42sh/obj/builtin_bg.o new file mode 100644 index 0000000000000000000000000000000000000000..48edac7bd3d076a1acc61b823eecd9c86d441c01 GIT binary patch literal 5360 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 Vb}+&=Pq!~O>`dXSCD)R%{{qP#xX}Or literal 0 HcmV?d00001 diff --git a/42sh/obj/builtin_echo.o b/42sh/obj/builtin_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..ebf062b8112a6d6b3c998874f45f592776a9475c GIT binary patch literal 2684 zcmb7GO>7%Q6n(qWDH5@rsuB^D{6Jl{QIM)8DZQZ8db5r)O8Qo2V2#KI=xEtuuz zqK2TNN7K%}I(6|}C+dCKx-NAsf`{%9WPn$z8)8Hh?+7h+m;81>JiT0Y%@xW&%rC&3 zm6!*`v+PQphD7m9$?p@1SE9{C`6JkmJ@R#Rd(mt>jK@Q(18`sB`KY1}MFi`&tQ&%2 zlwW`sEaU!oy5rPL&DNKR-b48+a`rQl&`5=MJUy*xU$N{3O`AEp zyEFhp^5W*Ca|iLrHQ4LFQ`n5GpIOx^F7B>BAo?DRNxVtF8;0;4OPBDZ0IIS}sNnq7 zEL$K(^IesL-;jeYBOb}IJ^0Z%5N}}$15k+k5SC#y32F}YNz}*#E@0^vI^$GA33mrP zqCKy+?yKv+6xG(+j@oK&tF8G5>gN2my8cxX+uQ193EN|k*`VcDKX`%OWZ~Q_egO{% zS>428>)&EHYSA8tR_VvgMn87m%3&qKTBUnGf8K7lZ&8B6Gum#IerWBe>)#Y#`}%kT zrsxLdW@awEl3Ov|hE=z7WBFpfm^*3I@Yxs{E25D!!B ze2f|Uo0AmpQ6D^m9+H=RCFf_)xOU+i0TYyd`?Ke5?9S z$AW}|ZJyv8s1!m=T%{J{H%NVi75C>*XQxzR78FcQh;RF!o-eoBYeZXcL7n$QpnEL2 zqGNH(+y5tq(x);=U?_C@87QbZe&p%=`#g)+-c1>~8*fgcJ&T2MCBC#sbem8pTXIp7 z()B1NJva-o#psU6Js^~j1nk)B7lEy2S+=hyxrI?Q%`q&W{Y^;iwj2*ImCjy|z0@Ck z#;;&Z3`VhL?5}h`){N%B!n%$&gbpm8ZNcME=Y+&Fj3;`N6TJ5(k15l9P)QE*0c^z2 zaIQ3Y@+R+5rl)yA`JTttK5fQQIFVQ(gczZ>o%Do1@d&X&`>|(zTPa9=Lh2`^Mny!F najEH^X9P3q0XT}K%M|Ty8?=h2IZaPoJ1ul2MGyYAdBp8s%2ZUd literal 0 HcmV?d00001 diff --git a/42sh/obj/builtin_env.o b/42sh/obj/builtin_env.o new file mode 100644 index 0000000000000000000000000000000000000000..245bf634155d934fd2903a4bed833d84a21ad66d GIT binary patch literal 2356 zcma)7&1(};5TCcnrfCzC*!H0KL6G{1Cb1MOezy2Qges-ADuOJV?Y4=eo3Po|D1L&7 zIVknuMLdZ3hX~%hc=oQ~Me!(#)|t2S;%04a2IkG1*_q$|=DoLX-~agXy9Yo-00-14 zYF)=6i;A)t^*aUEkSQueS*98kE?y+nLF`6;|^{kB#ifkabB{$&HO&b+v~V$zpm-b+l_zm9@Ak6$Tr%{ zPFWRi!L%gBFh7N-VAsbp>-DN_IOYP;`={S040Mz^ZC{t4k5?;QlN%i7_m1&~81G7# zc#>b;w8D5_LwI+(#Pe>{SM9f-S9^~6z3LJVKRO8+=GSCA)o&cnNk~HbYtHukFJJjuYa%LG=yiDjX4*0*Do-P&imjEXOH=hVUqFKg#uECGiB}2K1K3PF@HlYr3{t#MvjyzxzH7K<8y#2v& zSM!-->(jwE#n$cb#n$4tVr%B})wkpHC1fWiE}qLS*>0m!bF!nkLavbAV^#6R;pgbQP!}XrJM!%nFbc;O}ApYv-wH4cFnfDMt)?tQ3kG{OsF^> z)J?ApR@rpHbmx}}#9!X_lTT&ZEKX$0)FxW4~`XZ^ri6e>K$+H6|lDO|W zXdF5_fJa~mBB|qv1TK}H28zUXNdqr%N&J0|%k@gaeqN+AfyGi+dHejRfVfz~G?5lf zG7;@*ll}!FeHTac>bIn~?0e<=Z4aUj&h@DN08OlgL-ab$g#L^SUCla00gBV(MPjBD zo0H=E{uMhr@?i(jmR!*0{FIJb3WaM|P=fgD-eXnbLjId+vi|TMAK=9Qq%V9()V2#q72)3qt7-#ZKIu0@2KfOtL4wj9K)W zt*F^wgtW4v@?bobd8nP-z`rXvk2x9?a1`QaY6Fgf-hnCtM;lk$KjVD1C5>KM9VwBt o(6zq!kfvchz#$BxiRIbuV!NF!8u|PfTS7}qNP2=|1m1@3A1EmYYXATM literal 0 HcmV?d00001 diff --git a/42sh/obj/builtin_exit.o b/42sh/obj/builtin_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..f7afd20921368a0c0f0cd23cf71372fd838d663b GIT binary patch literal 4564 zcmb7IeQX>@6`$R^-TU<2`75|`8V)%L4%Bx}>QGbCG%j(u6bD%)PAq7(ocH#88=ZHL z-96W7Y!u=^!5rJfBvKm_hWPn$-b?()Scd@~nu^0HHH2^kv1bD@X3CEb`^VbkxfcLV1 z*esrDm2Dc*9N!`(7+OU{@x7R@uV8&edTkh=Q?w=xEOay8-C+Xv@>o>%kD(XDM zH^U3^;;r$DwOZBCtl|`f_h0e7D&iX#0d0TF__QU{)S7zcY%80PfKwYe1sl@MnTjFIw0~7 zlkxv-V}*s^7v}$bps+CadSRiyQdk&!GyCy; z{*F~Nmj2XkC_khC3g`AxeH6}hE`nWF{)Oihpa9&xx-k6Hh1U!7&mFk`SzxXd=4YY+ z>!dNHF3v>xn-_+!{*m_2%fnaEv&Ffq+Pim>mEGN>yCq$Y4G$1c~f=?`-NvXQ>N`QT{Fwo;w1BQVl+Urxk1;s1$s5mb*Ag^ zSPO^G0|id|1tDS4FloH^k$l5({`FF;v?JB7gi;x`JJl++A+6*bjBV0^cqnyy;(dvC zCJ(jWiCro*z(T1*?PQWsOJRk{!sAdo&ZdC|RoxEf{fPw1Dw1a85Z%dHYzvqV%vii# z3Z)VWfkXndQP}?DfZfUt2tPo8|sSiQeg=L8* zCA>JL1!@b_XlgQ0Q&2N0J5bY5yHXE8-AiLLP_wDWpnjCpR;YuiCj+$&>H(IfP>+J5 z5h*hSx7H)*I#~KJ*euzjlKM&FQrjckjgR;;i7|AA4-XZ^+D5p+yEo$#1qO~ie3{=uU=&{nH_R|U z39$gMQM{-v{=0&X-4+m?rTwSQCeB`rzIfq@pZw#>GaU!7eEjlPey(?Pf9`L~-Fo)? ztoIr7=DNHiGd9uQ{mtL){Ok8;_r7uc;mXbG&+hVGil3i7_Vk(8mVrZ=dmTh`w-rR$ zdKYL6Q~{j?eHKI${50q?=+~fYAev+<5E6OPfTK~;kcrY6`vEmtFf!31(ro~Z)|gC` zRa>})zk^Ja9l}I;PbNxNfki1zCQ5waby}FH76m-j4S7)^2`|cYGEoT%)8oR6N>{*B znUEJ%kMN?BArqyhfTubq6HTA+qLLvKRgy4KzLJUZSeU5B$aDdnF#WHziL6UmjPlzh zpAk$$3vx+%@Lnd(WTZ?o5~U4+V%`c`xlY-%x+=yau2kmJ^7~uFb(oF7S7v{JrzE|B zonAsC1%KD4-&m-)Ku1X|v_b?`ln7Wagk*ZiCK#zWx18m9-XQ+=JvXkS^czr9KCZPJ<6aPz~(%qwDL ftjVh3*%s5vo>ug1lMAI9{!!tT8;9i9u956NW9GM? literal 0 HcmV?d00001 diff --git a/42sh/obj/builtin_fg.o b/42sh/obj/builtin_fg.o new file mode 100644 index 0000000000000000000000000000000000000000..7bdf8bfb74aaf107e213a9c2a83af23cba518b03 GIT binary patch literal 5300 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 d2TJ&T$rgDdXTT8mOX>TVQ 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 Vodtq1%D#Ap|N7at{8xZD{|n!)Xb=DZ literal 0 HcmV?d00001 diff --git a/42sh/obj/curs_ask.o b/42sh/obj/curs_ask.o new file mode 100644 index 0000000000000000000000000000000000000000..7ed187e9beddc956abb47cc026e5fd964b739c78 GIT binary patch literal 3016 zcmcguO>7%Q6rQm?YbSPWCn<;k0v}RJMf}qciHN2&5n1G>DN55ewzXcj zr4%V@QbedCg#%I#AfZ+Qap-{q5>llc3ZlJK9O23VK}7jE7%9RL;l0_JCf+902gH-! zyq|gV?Ki*nw}1Wmx1SK|CD4HSKr0NI7$`^&=msYD5DjZVR)v)@U=q{_c7kY{ojY$k zz7wBTr%!Lk((6JJAc%*b{iEHn5G-I`il$|AnOZ@s+7?e~+URQ|lds5bavw)zt||As zq~nneT8URI8$9jCyC!(aG5t8XX4w@_&t$CJS;TMVC-GE)(JG!<%9nA78}BE0q8o0!9=uQ>67RDX@$5G%yUzEB zz{@+Zd7bj~bgHEn!!yOfYS0&iF(rvVRB z!*KotkP9z2qvb8wU1xx%HNOV|pOc>vcvl6U2noQ-E}oL-uV|JyqI~Q;409flfm`LR|%$!fwzB(4B&{Qg`NC@z11}e@rjli{4i2SpJRL zAdxk-vAA(KvUCa(hqlrywZ@l7dHELh{)}bm#SIc!34wQ8-P{6MkAojsd%MBAv3Ch) zGpE+uBWoubi|Z+RXIZVUe+;!()cUfzc}3k!FMb_;{i{4mBJ%VS)DyBNpUMA=&j`K) zvGMV#6S1>7t7?`@vB5+tk%~QQ6yfoT52heU4D=@s9VAuDNa6{I=dz}4mI_IuW>q!4 zI+rj=@=O(mCw0rzt!#3_D$nK&yP6#6ug(x&Ry48F@r^R~&5}(rwS1l!GrC2JCNau{ zcGCUfZsrX~l_$cT6n|(u2}pL);dXEM#o*!KfzYw;qp%s?0pbyvtBU1my#1CIVwovVe*fGgkrit8@z4|3}dSQ~# z^HCZN`2(wff*hU%{l0;p+1e802^k4T-|@WMp@=VF-6-fVe-8Gp`vqz|q#s&J8{rOU zDRKp+?#o1+tKr-xKA|>TXfEDv%2@lW%zuNm9cN)>jCqDwKnbLn|2XSWrkQ_?`IG|d zy2<>?*d-PMe;-u!jIquk=1(w>;=M4$+TQ?Yh*9MTBZ2w<7SYoNlOsO>U0@x*1r~mv z;wMFnD}XWn*MPYxbHctLY*N@~gndfbn6O~@xTC^$fQzd42BD?AF7lC;OvZv dmbW#tnl%fiO*H;Ki8sj!#ABsdIX#OQ{{SCxud@IE literal 0 HcmV?d00001 diff --git a/42sh/obj/curs_clear.o b/42sh/obj/curs_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..ba1fc3c41919f2619a670f93b305582052861744 GIT binary patch literal 3024 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/data_exit.o b/42sh/obj/data_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..578a235a5f7b06e4985d2e44500011d1c88f4d8d GIT binary patch literal 5940 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 QSeR1}e>9gHjzf3<2P8CnRsaA1 literal 0 HcmV?d00001 diff --git a/42sh/obj/data_init.o b/42sh/obj/data_init.o new file mode 100644 index 0000000000000000000000000000000000000000..ab89dbcb482fedd149ca538aaa9447e277dfda57 GIT binary patch literal 6664 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 b4*t|A)W($B!Jj52+pUy^iAKdL1U&x*gsc(= literal 0 HcmV?d00001 diff --git a/42sh/obj/data_singleton.o b/42sh/obj/data_singleton.o new file mode 100644 index 0000000000000000000000000000000000000000..2464ca288c80ed17d76f54909801668477bfc9c2 GIT binary patch literal 6136 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 TF8)4lnKB4iDt@t40v6)GuF)5E literal 0 HcmV?d00001 diff --git a/42sh/obj/exec_ampersand.o b/42sh/obj/exec_ampersand.o new file mode 100644 index 0000000000000000000000000000000000000000..49f10fe0901dabefc2011ac5f2cd99ae08a6b871 GIT binary patch literal 3148 zcma)8U1%It6uvXNGnsUg-EFqEkxE@jtO=Oiw6+>;)dmyUgceHePaZ1c>}Il=x|v;P zCN(WBw5&*$P^pMMXh9Ic>QfPg`UeFg8hmJd5*48e1;I$G_z(;=erM+1Bs*8yJ%!3=KF6t|(~IV9?#*IWpdXE>bM$ESEwDCL>Oe6Qt{&IpGEU zK;Pd#w0}t#y^nZ@@aVI-7-JgQqU;n2LApL{=EsY=>p8wj*ZU6j?t5CenZUWsEq&^u zOLSz>At~@m<$`Yx<5j6R%P2*YtEb!I8Tq_p9wq$x`~=={jjAv9TB~!PJ zF-q^2`ToSezLTf){EGPnc;);Ne}TjKZJ+}HY7Yc^Z*bq5%=f!S4!k5n>su&~VV<5oZog>R!@9n^Zz+_qQI419 z#yQ|o%IC5F_?n0C%u#*B!RiJBbiMvQnB;i7I9}_T0FSE-u%n_+QtZEyW&4QX`F_Lk zZty`vz$3bFhy2>%OHx2A2&Cj&!50xvSDn_xSRc8;d%??z=1a^!x!kp4|3I#GEmxgQ z=4vPBF0kJyJ~y?iHCMeV<*IWm@e*Cgi;l^&YvL^!Ey-zU;CqL{eLfp zuY~i<&0BC<1x{{idyve@xmy1XA9~BBTy;A6?3cZCQq#M4AKa5ZYC5h}w$nYC?o4;O zqfo;2($&)qC9`d7W=kh?okG@}FoQ-n#wr+K*u$9u%N}si&l-+pIK$b!PWgyg@Z9XS zt?nqJ5lg|$vOQ+F9`p3P=a?pQxwJfUj1|hZXWE|bTF2o*qkFVF3Vu+*Ger|N;v~#i?nM^B>q@zN9=*7fz*@O z01<`B+%%BFdbhJk{E1kMwn&1JMO_aOjKOo5k|Oa~i~z8Inh`sYBBcjAtkHibe?WzU zQ=<82rindBH3uy{Y;5sqTRczVt&yDFQ8GP3Y{8d42?R0 z<``IRYd8&&mRqzMac zMMU+bC@ML}`oAhPV1{C57(vAM4uRB>D2#M`ACo4MQnIN*JBuj#%01wrc>-Ek5POgH z#*;70Pc;Y2$k;4mWOfFvB+bX0(Mt3Uuq3VkRY;rSV}rdf9Q;5n9%IsORB& zi+jw?>il`EzYlPE0N1|?GNW{Wf-v;4bo|Ieq4i^pa0e7gNQ%1VGgZqd5w)mvs-DuU zYWFEk>Y$R^smOzhs#aBP=uX~*dQFklLG^7}#q7=l6wqDgAd$@DuS4R4U9>TfMb{xN z_i%d$*Xi7o{}D)xQ?p!d=5iC45WfFSE;}I;7$E3gbe5@XZAd5Ia{r?to#BS`3>3>Q imQ1f~v*1d_UpDSalj*o_@m%As)$41|^byZD0q;MJ*Tr)H literal 0 HcmV?d00001 diff --git a/42sh/obj/exec_and_if.o b/42sh/obj/exec_and_if.o new file mode 100644 index 0000000000000000000000000000000000000000..e682d8ee503da73c7ef4a146dbfeff907b209629 GIT binary patch literal 7448 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 S;O*`=Y&kamb+%LJ?|%WG|DVnP literal 0 HcmV?d00001 diff --git a/42sh/obj/exec_dgreat.o b/42sh/obj/exec_dgreat.o new file mode 100644 index 0000000000000000000000000000000000000000..9a362fe9b62f8b80c801214af499fd0fab5c0a9d GIT binary patch literal 3892 zcma)9Yit|E7M`^;YdcOHC+Q2y!w?{?XzcU_5rkV>2y)Yc5D-96v~uiCVsO{FyXz95 zy{#04YJyNJC_>^bL4N^42>yU>g#^02=t{sJD#S0IA`&TYL3#Fm-|TGbm_j@9ne&)4 z-<+K}^YFXB9R4FFgb@{}KrNt2i7Ep^ISq7##=j_!#e;@D?1K{Oz!ano8c{6Ex2OC- z4)hy_Zoc8T9!fJ>ARdQZkrKkBtwro23yWoy?9tk|<@v5MS=N;|t-tQ7uvvsSH}RuT zmMV}y)^(&&3-Kz|qB1w*eWG!~J}y6QemNmtVRY2BxAFVu#~0!~qA^Ytuk4If*`*n8 zN{{}#jx(;;Wees{FW(8{a|_P6?fn_A*0kobb^gafJ0afILQ#d-9AAhRPUFe(3X_u+ z+j0t98Q!11cbkrHP={rnG`;|@I(oZW;O6*V)_CV>ybY&_r{bF|6r1r5HQ|k&BA$QO z--JB_lY+B;m29i`WCBO@twX^bM7oVCCl1;<#AUb z1~gtq8~+PDo+;are|pWE@azd|%*E;k9V~19d2qAFyIkYVYCNrqq!1IKOnz+tmK}xI z{JoEAyr>RlS$oj?-oJ>C^OB}ZGMH!vzXbGvK9ApPC*XGrV#tMB**8fa(wB{569`q13W&|H0JR_ik(v-Lf3_M90) zFOi>qBb~1w)V`l-ul&qfc0Ra^o{W}bD4&&YrZotgu%{N}1*=D<5x$0yF zvi;fq%(7wyr$*mEKa}j6RoRuxh36J?_LLn|R%zU|3x2jJaw8sk<_d1P;FfaNy4Bn5 zqVMI_tnwxV-LWpV{5ns6?@DVZh3sd7f!Wg0~!M;$vY--XP`kbg`g_-E*1Pj&_zi#c2SaR zm&z_$0`6(=oBPj$;^Ds3)JbsAlm`$!hX zF5~jnXzG&WrODp5jos^*?@~mxX=68z@ip^Qd7g--{*g=~1I-RWhu9*p078g(w-HSx zlf)Au(GK5@-BbpU&#k|~1 zSeQ(LrR9pmLhv0lWr=VNq@Sqes9g`~OKSblL~J+2rBoNhd%)82{KSReoFUmue@3FT zWs#ni#A;}-gXD4*&3_;=BDpBZ7~}G6<)QG;Ved__s@~^vH1iw!UWLjuOgdrjU%x(2 zAtWT9DuEt6ot{3>yMZ~O78*PoxXkNIQ*+;=D2@0h^NGWu6SRPiC{d7sH((U!X^T2< zvDn(q$Pyr)(adR%)xT?ZGTpZAmHL<8Za;msbLK5i-?4vq+1%T=cFvyu(0A`GEoSy@ z|KWw|nfngCb@p?g{jl=zAFcm-^`i^E{`dB^zwRIT=l&NjmH&GWSf7G^1SK#DXMl2` z4WJRw1n3^ngP>GF+e6ZMNYiFWtl59aj~?CDNYk}5nGsriA59Fd=U*$ zA=1R<)h2Ecnz(1QDXG1fi;H1KVeZrG5J-D*;b~$P=pYymP0T6n#gS-YZfUF!pwh$x zLWjy^rHT2gP26HMeGJlA+-@|@f%J&nY&3EAX)oqKP24it^ml0!LrQSD(W9~G1BpQM zN|;T?-PZ|YDs80OV(~rjVmxPnb{`?w(WBvkCf29Y_eHK~5C1lBoQQY|wPF04YDdjA zVZcUs_lZh*bj;6{onoa{!XqwM^W0F&l~)g3G~eRg<>l1XTg_qFIVfX;vd!Ei&xIBnmeQBY z&C6uO9F)CJ%64-v8i!@~po|Qg)3Vo$cgYU(DYOrpwTQ_S+zD8K_f^0V+GTubA(p;d z!4XE^I<4ox5lY|1;P5l4lV70uS(<|>yUq_2KB9w_E~~&BRJB%(da9{?uu0eBXf!aZ s@y&r3gkQisI^z}FuR6l2PTHu|gyYX8o&vVuwU1XSUL@9-uX+>g|Fifk9smFU literal 0 HcmV?d00001 diff --git a/42sh/obj/exec_great.o b/42sh/obj/exec_great.o new file mode 100644 index 0000000000000000000000000000000000000000..1a00d64d7b7e6a991f93df34abdf980bfabcd4af GIT binary patch literal 3880 zcmb7HTWniJ8lH3PIkw}(apK;flp4~~R@>MKy==5iX$uW-~kX93Hrcl5fAXfUQ}4L)e0ndfIjR~5v^3Ispu|c?aG0X_l?w$x+kw9N%P`TYtS} z=bd4*2yuouDU`)NNFb|PZ`4A(YOUm(oAFL4oUqRXCpWiT5wAEr>{z=w|GDvnc+V+} zYsIVBBQ#&etYJkm0Eve2%GH(o6HAvVVs z;)Tn2b-d!lMAb6w;yAU%v_~de!&>yxQ=?{suS4_m;w2rtmgjBc31MM6uM2 z_h}Pe`5N)OJrh@)Z+HeXYSj;3BOVT&57``FQsr+r-xpfd#4od^{VmnTF;CB&v>&V3 zWz*cg^|GrFJqjc^fcuEyXA;v

ifidTy+q-_(R87HO!=NvUWMs(?0jrLJsB;>@O^rZ77l!neeiEvcmT88x8HMj zcDLoYm71OH%k|`XvMWnf+#20|Jy3FMZ_V|t60TFqTT@n0nWK(X^l~MUA9B$#Uvw%( zr<~v6)E>49XN`L?TMo63C|q%9Lo}};uX&t7p0o*S+-}omB-P7%JjI| zMF&~v8=+Tg_Gos}b}OT{Rn8KwYK?fpsf>0Gxv;@O{Fh-c9R#yMh*q(h4CVHK`SrAtFCFC2 zpxyHjnzVLpiY%fZni}`@Cs0TALleiSb({~h>NX6ab<$PH3ahB`6qr#*6?+ENqaeL2 zz6UI;cP5?$|BR-2dY4E%4e2%z5y1C8yv~_-j@;3M-XHtPUJ;$P2vQ2H_UP!$NU!BCTi<3rik@HJOz_nCbKbpToTu*gDawAw=F7-Wp{F~UD>+NIR%+ZW<^xcZe&Dce*!+zK&(Q&;u`l)Jz86vcAD=idIzaOXhQc>Q!xvx# zw`tVBZL!(P&d3rV-q6fxj@7gOU^3mh`|bLff9<_~jlJZ)R~|VsxN`O%_jjDW{_wv) zSzO9KyZ7rq)|Nbb{DY;hpZvP_?1h%!zH{Q1FaNT4-FHWZ9zF8r2KnJ9!1@C84T#%$ z11Jx=9mMa+G0<;7zXQDrdK+{M^iR-P5CddlQ{=+)EkR+f(8TmnCZ;$|%tahw7A6)= z%)SLQ1erw>Q&5?BL}=ofQ6@%86LWDPI0|#0rsE*x#f_(lS)hVo^3cSbQeI3XnwVP( zix@QVf>5C{S!rVaDieCDy^kkWAPbyF_IfVGv^6&@nU$Di7l!0)A}84LDma#0Y18T3ALtu zmuf?;aSV_azImcr86NTS6}wcOEaT%XKj}K5manYoTR+$0?s4<}qvPV?Q(YQfLp+-R z_aDOC7&9sGg^Z)19y};f{7ox5cwQm<-x-NZw{oOilgXC&1G2>!lpXyt)-PL)yX4K# zVuMn8a+R@B>PEj@@seya4xw>SX8NT*XdI9$jCiMPH(o~jpfRZ%n6D7L#(~~l4JN+P z0!J|2_k$yj?oCS1gCmyipM#^DL7n^-#cxy`%(wqRarlUKR;u)ZH>jekN$00qWBZ0C yeMyrp%!ZE*d^&hVtfM_zwY-`w%-V#7+Fx+|r^GjaCHUUs;}oAF=7{Ha7C!)&IV)=b literal 0 HcmV?d00001 diff --git a/42sh/obj/exec_less.o b/42sh/obj/exec_less.o new file mode 100644 index 0000000000000000000000000000000000000000..ee9bfe9c7ca890c4624aafd3139c499be04dfd62 GIT binary patch literal 3868 zcma)9TWniJ8lGc&j_o*coVYaMTGK$AO2kg-g@^`97qaVyA`qp3SkRGUpCm5sarT_! zHb4uNvRc)Ow4&mozOd>(P$47`4(SQfG6+Wo#ca~j8# zZAbp+zsx`1{4?{<%<(^dIPptd2qP*`fnuN;i7E#|IUjVA#@{Fh5<$bm?1K{Oz!aoz z8c{6Ew`cu84)oi`?!0YL52ZOR5Rb$5r-d+Si;4YYVX>@=J<*u5Jl|C&%evu?Ew}zY zY!)HTc1{W}OD7BMjCi|BWffw3d?8-A zjAzFy&CJwn%PH+*c)yzOP95K<4(o@r#uwn#Cw8h0ZjbMX#=A`8ZS2s(B5Rv(OMEk> zay#BTZFqN`Bc6ZX%o*qVrN+zZC>}gVJRCX&*&d&v^CO(^!Oq2rYN>6$<@zqn)3+MV zo~l!^tZg^6_88Q7Ic_CtByi!pYH*U7Y5Vc74)9@jrh1O8M>r`g=X;mpjmw%eE`k{Kpf&0P;23QN%~4` zZ91#GquBgcac&{E_Pb(p-^t=UX)}M#eP2TZJ(PJ)94Ah5Y+-(Ep*eP3>+_A{&F5km zxHvzCUZObnTBg`Ms(nAxUd8zh?0j@TJy|%0@>%;@aqf-WJ+E)!!OLyicKc1a-L~sh z>rQSYKb#-V4VG)TErv#hq2$+JnP0m`cy761&)Pv{)ojnpmqlTRhkk{UTP?Yj!Yyun zr(O2F!ul({X+dY@C#sGwN}ex#Yr=PJTX>pReS4QE*B#$>e9Noej}}yx&n+&w$US9* zUaLD(xrXCaryRSIBV5g%^o3iUn)ZcLuh@Xb07~*sOFRu|P)s4HioGi(zZ7&)QiENT z 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 O-qX$S_DZCj0Q(>6a3Y}q literal 0 HcmV?d00001 diff --git a/42sh/obj/ft_parse.o b/42sh/obj/ft_parse.o new file mode 100644 index 0000000000000000000000000000000000000000..c327931a035277b880227eeb812b2a38ca59bdf7 GIT binary patch literal 5284 zcmb7Ie{56N6~52*d$!}mF$sh~3N;NSVS?-vV_UUisedm1Vp8MT%e;wcO=D*+j$S;KE75Jd~P|xc4L{U*@p_;^>P&QXO4Of(pi@_;a zBdVWe<&%5z3P4!aw$7ey6WG<3GYAy&F_uL&4iCT~+TCJViC8}7BJyqM*w!(D+ZE4c zWr`vg@+H8hLY{Dj2EJr(q2IFeIcW#qj*f>nj{8JBj`}Uddy|u!T$G1nbotWRxHOdW z{eTNzQi{P6;HXpb#d>>l$=!0klj3vv-cmGo%a_XZW!a@Xz5`q=ls~B`9<6Zj2-Z(+ z^_21DVwwJ={c*k>W$U%N%Hb>dPRX|`7MCHG$LI2??GT^N7aJT*C#_6u7sLD5e0x-U zJu0BKPmRyv%l7V+8(bdW4;9~h#dqv3`DA>9v3NP(+hu%b?vgLRcW}!2-d23it5yHw zUGm`)OUm;2o>u3>ov-Cy{D}=N+uwM07v`C_3Yn);nS^C+-Z0@R#3{uWRmLOWntmA|z=aLM<)yWt}Q-mHJJkcbmh1HHWUZo5Kfgn!|qh@i98SjSYU*P$B zbNF}W@OfvD;m#}O&}~tDn2TXfLAob^#wOX=ePs%VVtc?WV$PW8*yZ8Qv+f*cpi8lH zWaz9m+&OY>%h=eMYAJT!F^5LlAN?g9CQAE+>S$$oTmGn&_#7(Hsk-^eHBUOUF#6mE zCFM$%*wnEaw?xM^S1DsSTRx)e=g1Cb!RY4A+qXn_Cv$cxn~AoyENNL1ZH}jrx)--C z0ccsVtYzs!VdvtlgRz{Q%(eFAEvdD{MQb+E&?CQ_W9BW)!!BA(9LN%2%Rmq4Qw1xLgOVmZ;55H?>HtnN|@P{I() zAz)}Jp-t2757+A6aKvZ`Pt$6!k)9R88{Sm=xym)6wIL5OhgZ`!AyfF~iA}Yukt_5% zDBdueg)nM0Z#WckfWJz1C1^v(zn5{SrPep?VsPmm#8_8vpkpE6~L= zouj=96e5~|(fn6|nu+Q>jS)Yyp+qx1jrF2ZuS3flu=(cd^PrxG>iu%yEeL-g$dQ7} zU=FUvM}H8X8!+j!j1M5{^&0SeT@#Q zxD!AociU*>8Uk&2iEZ;qgJOQ6!vvPc8^ezOHq)jF17AuZdi0%5pZ!`@vJJY4$}>)T z3n~kPBeqF`;_}kQf=ea~F?sQOHTM7b@U_98yy=p~c|(!Mi&wl)zBZgW@K=P~Ec}(` z^AJfuzFBayMgA+PIVZcHJo(79(b?aRQyTs4>($Dz6P(1n*HD zB#J!xklaUQ;<2U|Px?&y2*H~{le{d_;+#XMJf5l}L!%dusp=^65lqZe%1fpkz(W%z zrXO}>Mw*X`!qh?&bB*dK?+qZYnlgQ$ym+g*5hyRCvLmyGGV!L-#LK5l=ap9-Op1%y zhF(lSDhMV$ns}_0iJ6rqCR@cNvjHG?LUA#d(Tf|XOuU9P@lGnP|8-RT>NumvL{Zn4 zG?R*ZezkoM3vEwCi&XjpJRcnA9@P4OIA_t zz8c3s)l!*wx{$zMN$FH?U%qu5wifK1i&|65+g6E57JIMVDxWiU$wNs9=fTu6Kx+At zfr|BTJfY+Ls9r7rKEdC9$HRRW;EBZx=rcqR{hZ>BYPzrDpL(F6`;9Ig|GY-O9(cn= z6-HpX?lYdz16_Kp@qk_fk6G*V&#cou#$i2Z{8aax)*Fn#Zhbad8rSLJ(|YA;-H#5& zZ;bar6R1VU(|TQ(-q5A%T_F47&vcJ>&oOUBkFFIwL97^m(lDzz7nS@GB&M_Y>k7XB zS%te{E4&pFQ&{{uB=T7J6eJ%O--JYd2_JzBLhgaYN`wa>G4*f{B=#+ALIxn)Ad$zy z%}UlQi8g89k3kTZ!TV3S4tA)<0!ZSyNQ$98;Q}eUD@^lmo$%GSl6Fz zrR_Y2rI^1(rTAnSURZ`zT(CN2B}8d|W|&fZv<&Yo!@_xcTZ#T$GKPnADrfn+)@EceLbbZ4JPW~}(GLFa+*yy2}l$Ho7-@NKO+ Z%cn6r;@n$(_`~0AkYU9pFoPjP`7fcM_)q`< literal 0 HcmV?d00001 diff --git a/42sh/obj/ft_post_tokenize.o b/42sh/obj/ft_post_tokenize.o new file mode 100644 index 0000000000000000000000000000000000000000..c755dcc999a0f595a9ac951aa11329bffa217759 GIT binary patch literal 3416 zcmb7HU2GIp6uvXNv%BrKy9)&Zslp_*fC=3#f7&1_jnr&OO$Y*#2$}58PP>EKnRR9s z3hgRMfv~An8zs^3U}AjGH(p2}hG^6T6HO$+7o!+7kQ9HwXp9Dk^*b|n%62GFPjc_M z=iGC?Irp6Vv-|bU-~NpF zIa~l!lpQ_0cifTv(MNnhcofU-CdS-PgxO)=hPa}rwqxnW09OX_e4GNGKgr|dA`|_= zw0}X%R|XV-x*A2<@_hI9XQr)|QF1_+JjSL1cu>!PR1^=dWU8)55brj}<8bVIO4dx8 z6)%_1TiSkF|IGM&yc)-tE1qujo8%J2JIcTQH^6sG1pYWjJRD*dG8mu8&%eLkpBnkX z@3269RdW#Qbd-v5KsO4C(zoS~DPyZRp3If8IAfH853v7u$N@a9sPtQ?uICWE5Bxi9 zGsj!S@wmt!7X2~t>GP`_E@E)K$9a4=xKj}TM5pc%ALYfp3*%m5DEP%_XJAiIv1Z1$ zffEezdZP7G<0Y$~df<3xwsti;`m3C+Re#UcDwEkU@UhC|Bze|)u8jV}l1ExG9<5%P zN*+Zt?0nDdDbO`KCfB~A5e6(f?m5rFaii~;9e?6wj9r(Hse0M*4J*LT(yP)p)-#!{ zeR|59#z&z;M3={UZf8e7m-l`)tQ-5Q!w0oewSDaxTOQ7vrRs3LRH?RitSby_rdl<$ z12VSJV9qGW{gyc>=U=Lrj%II^SGLFp3t6XkwS@7q%|>5n2$XqrlFiKY;FuCHpU;1uWagV zc?vZTNlfIb-WF`M^)p1NjfE0V#^czVkt8F7=prx=0$aC52qofi!egwV8MeJGBy?e? zHzuj7f1-J(HRhh(CbpW?pk9x;z5irSpKD(s?4lzmB!wYjA#tL7$dz9~52<*;m3~Ga z7AFedk~EJ@nS_UuN#V#5ut*JE^euGcCN7B`16wT4Zx{zZPpSpta@KGHqc2EWC@zmR ze2LLjk`{@}Q>-z15##sJ!b_t+fPIJ-+9RC>i^d{^9ijU``i4eWY4*A9EG^h?bh?N< z+4}{tx_QlY%7(i{@H82K>U~KL`qB~oKQ{FHg4zNC1JQ95@Y5=U>nDtBhwzAKj^d*# zkPTf<7u5x=orjOd-~8i3tMjVjdLR#ZjE66bu>!LX*5dScWBqqD8+O*%Th&)L}o{P{xR3cJQ&A5tkN-9b)cck=_imJk`s1&54>Ts+3B`Jyo z_=|=Ii0?VVm_dHpghShzFq9HfP0`pJu%eGVg!cALH+xh5o@L#M)G_htX0OPM{Q?`2 zy@p;8ZY7%0yDu*ggy{>4mGpeSlhF;eR4L%q&Qxs6mooagu19BT?1Oej;qQC!iow+e zXk0PrB305e!x$CiHwc6$imEB)oTVA|w8&o+rcj1+PEj#T Vr=VM|TqxrYh|}-Q)jur2{tsob83F(R literal 0 HcmV?d00001 diff --git a/42sh/obj/ft_putast.o b/42sh/obj/ft_putast.o new file mode 100644 index 0000000000000000000000000000000000000000..333c48d2372602bf2f99f70dd1c354aafe618188 GIT binary patch literal 3904 zcmbtWU2Kz87(UDq29ZtZBhAIUHv z{xHGBU0}HILKE4AqE{NcFlwTb5MsOl^}<9kK{69bG%k^-0iWmeoNsFZneim=dEUSC zocDa^r~T^BtJjN#FkAv1qzLk#x<_%Mr^*34--Rojlm zI|sULkjjW{Z+@b=?GY#IimFR~BzVsj@WGWwsrhX}^Zl*{<%SAz z!K*a~Z^_peiOLcS>(hLCTkgyk>F@82+sQ~D%e!g4ld8T(RnEmb)|cZ;b?%cJTv%V7 zx(|yLU%=#%B9{e?Y3^ICf0yq&q{1ESO`3o#4{EF2N z^6+TOwVxwYjWbJ+7mVPDO)G zls{*(sufewfD_%Lquf$_s4loX+KUJIzJ@v&q53tU)hk3M z9j)z)B$BmVS-XEA8_8rtQBk`qgK@QybRv?D)$UBE_Qj*wOl|#|OpkE#M6@T87RgjB zo=8d%SsTOY5E)0~^MHVa-c+(XD7!>5D`JssBsWBA0~{i?bUc_`vC-@Duk)?ql?!^^i-pVI?2KY-1n7AQ-7v(gEO`zv$6V_@4m?fQ{pKR!9f$TYtq06S9^p9yb&O_> z`y{~fc+LUdp=Y-513mGJo30QU{(!chYpkV3KPxrsUxyTBJYo|ni*TcYTVz#w2C~f@LYjvR{O33JmvzKD5trXB$Mz;%7vWN zVgQ%z@#ZiF3N5A5t8KTmez>sGvkIF0#K4fsnLd`T!m&5d{!0$WQ>sXY#@{eQxPcbl zV4ol#8)K}OI!^-LXQ{JV{`K-g_>he6+CTnO#l+kb-+aE{)aA+5bJr&4zqj5xUw7!J zZ}Q#L{6Oj8`&X}fpMCO;r^lng6C)pD%z4Q7kl!Fhn4|`>60!lZ6B30CLPjAxG62Cd zR1HDn=F`RVPy<2ZX3)j`Q7#@bx_Itzh1htU=sFEiTs#qU@vtZtx0)_)BY!2)xaD;5 zK&UL9NxIHJR2GjFT|8-OMjltXc&^nzUJAN+L)5^3+rMJ$jouH85b83LA+PEEG!C>0 zV>n<0N{cDUlvfSwt!jD{2Y(%DE{N*o0Z*UHXp&w{G zf6?B782`RGPcWWpr1VG9c&qC literal 0 HcmV?d00001 diff --git a/42sh/obj/ft_putast2.o b/42sh/obj/ft_putast2.o new file mode 100644 index 0000000000000000000000000000000000000000..36b26fade81dd142d21aaa53b801f0dc2aa332b4 GIT binary patch literal 4384 zcma)AZEPGz8J^v{+1vBk_YucV=vOXH(j=(9bJ75oYdbNG(Z!7$D_^x!!E(Mk#~19o zM5*8bC^Tp558= z-qyt#dG?*>o%em_otbxL_x#)cymKoggccBZpaxNYDe*|6qI?83L;NA-OxWpoQ`xu} zoPss3{4A?pn5!!QVOd9q#*VIFw>6+UE%Gszv6v9|P!$yCDBNOMxmvwiES*#eKcCCf ztNQOVT~9}YPPg)?gb(XdN@xjBNYV^-32c3(AGUnrhs)^F&n=a>Udq3Zk zTyRf0q1Mr(T9q$5F;Oj?=K3|q=kh(L2=0`xSeh);#m^Vz;-l2meE*^1>%oSqu2ti! zW=kgvwGZ+=<;$UL#NqcmSLK_@=Ijvt@wt2|Jh3)kwo;icSf%U?!~4K|=T&@tDxirq z<8%1R6Q}GA_Q&^<;@hhDzHx_qc6^m=&d>K3AKxo?$XEYDW!3o_h7;KHY60K6Lp~g0 zo6;ZOw|Ll5-1*M8IoR{`?QgC;gL&4i+0vO}DQ{T^_j_!`6~&iS$``@MBQu8lQz85K z3RBi(6}#&=`0s;jif^CdyQ26M6qx>$+oo)s-(tyT^v`#PI{$}MFlN;8{_Kau$91vq z!bpp4$ly1kPC?17xB@u_$!!=#^%f4ns#3t)wPyQRX6b5X;d(r?boORu8FlIG4aggr zg}wV?i=FV#obT^IG%qotYvg;IH(6$R=tkzLo^!wrvwtE8kJ;;h%8Zv^Y>{UNY`<$V zdzrjHeUM$GT&|e*ATM(nJY@4O*|Nwiyty~Ca8tyde%xiE>++oAY11t9Bx6r=$rXyn z7Ei69WFus5k7twwZO-@iH)-vDXN0&N8`}$Wtq4HbCz|Zv{_e_1dSj&bq4bP|E82}s zYuLQeY%{WAV>WDl)NI4NQF9E&7F9eKnr(ovY3`#joy_u_Gavt2E0!bh@I>4ou&FW& zuf{+9t0O}r2gK-s(IN53p^=fn$M*Lo#lQo-q7OB>BR5^H74kd902IAqfCBQ+(ag|c zG059CdGO%zk>u$@wN@;bl0B*JR5!iwis1?%_t>)9C)$*xAu3k&;*Uex#n z!Kx*+ZP9iah{lb(qX}&ta!5}>xlY^H5{ULj9*%5p-P?*=O$uEp4z%Otx~B3Z|m5OIB5`1g<>rNwsI|ItM|^ew^gpMZ9;ZzrQ^ zc^yy&Lw(Tv6-~V}@^=VR-((xw!)zwWzo4}#@8_V#Bh0f3n8sYRF8O*TZR&2Rl z9PGS?-#xV0#+|U27c%9TH2G5H_q~ncDcElJ(0L}*M&D;-Sq9hy|?SGhf4QeeptTNeeNrf_r6!YH{N>s zhwt2K`O=ARe(q8(dEtvchTm(bTx%{;5QA($xPpX)* z%8DsQ6|+u_$ke5ZIj$TzX{wke%JKj0UkH2S?gzY3)KMfyQ*n1xd-AZ*=HgnsHDrEG z4RQ}GZ@y2S+qd1LEC!?TXY@zfoct5wQP}EY5SE(u-)I}28plA@-0K!i-_AZ6nU`_nveVfI;&HhScAJOg)=8NjmZ4#38dI_zI&)Y`3}l{= ziHmYO6v009jT`f}S_a0Y`GnU{wq2APVb-85Fa+2@f3jQfjx9}pS0$&qQc~EJ>i}=p= ObQVhaX%FOgi1;5gn{kT( literal 0 HcmV?d00001 diff --git a/42sh/obj/ft_read_script.o b/42sh/obj/ft_read_script.o new file mode 100644 index 0000000000000000000000000000000000000000..c2bfbee1e6e1f6011655be4c530631848b2b2c3d GIT binary patch literal 3168 zcmb7FZ-`V?6hH6HytlK?Iy>u{X{$D{W(Drdrdus3>5`jcDafWK{oye)`*wF^d^5iH z##S*f79vs0D8UbXi9Qr$(1(Hu{9s8%5lKb)C6GumDwOhrsJQ)p@7=fVjDI_D?)mf1 z{k?PUJ@?-4F8+O`MMR4U25=l)GcaVppn2d6bl!lLnc;_noCAt%U<$dNPLO5!_P8JF zp}lc%%f_pAq^(g3@%Y>0NfDjCxa^^b$g+m*Vtv%|d^d1e*6ODRh8~YTON5hTQJ|ky zexVhN0c>PPc$I1?a5du%DV!+&S5ghAiD7=hvjsuS=pGW_xl$-GEF>A!d?uHXAtMNWasPno?;T=|Z$`rtkMLK2F zf0eQmAU4;VS9pJ_Nhejkmv4|C*Cox^WEjZg=Yr#HVO@QYOZXYQ0X&^pFS()M=>a#< zH|6)9&QJW6{!q>^DsR+)l;1meF2C=^bAfB(g0vsN-{s4}%afo#c+#OWeBa>Z{KWC} z^Pdm!@MPAl+q^!r!*;!L)yec{d$YZn`$`p@_@4e=7}>t1*$3_y&n@L#yD;42mE3a8 z&yDyNO)E6BCCP2_fRQV><$^n$+u&BW+9lu1^)2v8^+Rl~S)jrXu9N6eZ z5=%XrOk#tLc3ImgV$OjGXW(t?)MBY*lG8;JGZDMClSV(!rucU$6v$huqaPA5Ks^(`YadiPv0zJMBk3xlZ{-&6d8 z;ZtyIUJK#p#%3kHf=r{n*lhml1gs8Pckovxv@EST0GC#CK6FAD3(b3>{suMvT>Lyl zOTyp>box^Rd3*|v4<-AY6#Bw9H|w79W${yEY0 z@u|gUOPNEv-$dNIV6H4z{}lLNFqdy0cnSCzY=~g_(2696)5V>c0|v1T=we?e7dwS6 zHURH55Eq;-?tyZ#ap+<%DR}M&UEEHE#SNp2`>0&(4!YPX3hQP|+=Auf5+PdAnots> zfucp%b`6O(p4QTBEs2AO;!oy-PhKR>aF z{{U-E_Z{x6Ql&nOSGQ6wj`+DLGgtTA$jX(M^*NWR+4e}9xM^%C(4E{?Hm+!K~6KJqsbPlv0kxU X-0`+wuL-VXzks5g(TeR?9g+V42(!eW literal 0 HcmV?d00001 diff --git a/42sh/obj/ft_readline.o b/42sh/obj/ft_readline.o new file mode 100644 index 0000000000000000000000000000000000000000..794f546ea91f98e9556d839a81e9655c73ddf601 GIT binary patch literal 7652 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 ZyoHrEPuW{454#OA=4^3R=df8N`ZsfI<23*P literal 0 HcmV?d00001 diff --git a/42sh/obj/get_lexer_state.o b/42sh/obj/get_lexer_state.o new file mode 100644 index 0000000000000000000000000000000000000000..badce7ae0440381844669163a0ccae99c90dbb4b GIT binary patch literal 3104 zcmb7GUuaup6hHTVxwmQacZeO>WzaGzmB9 zR%HdH-EdT4qQcypf}kL}7X=xJuz?DSihJk3iYkJ;XLQw@1{4mt*r;nIp6ut z`F`Iy-=F*4Z~p${pEdx20SaUXa#cbRL`Hf5d7V19p-$OwT%j>Yrj3|D?4wR3MX9Tc zb)#+Alkqc?8@AaRp(Kz9kEVUsW#om%3)F9tq7>BWg;}Lm*Yqw$iJgw7M@=`FIBUG; zd!A=A06?^~F+T&ZRLSezcD%=0q5*DFajn!6VdCYcr#1B))!&+*iC5tmyTvP(XY?U< zytn!6-*LP_r_s2M>&Lfm%lx!lc~-4$&aXxX!a}UwVi?UW@#b@RJwCl-*t}H#qoxBiKpjR&E@TQw{3WZUE)=n^LuHRczEe_NPB)u{7{(ndOA4phO+H%zA}$>)|G|w`C_@CD5=;+DBe?! z7v!Boh({@ZYu?{Y_f4HsW;EPgV}PQxeh_{i#ey6K}j8*f^DJxw1S#m17=_ej%6tJla`eZ97P`fT|;+Z^km zu?I;YZ!d5~$iEuDn^?Z(f97VCJ{-YRYHB=qPSt9~N;xf$7^5y4p8VGxYgWiC|yncDVcaN|a4~FOvnAhcc z+;tT9jr9Wa9>B$PgfMikFxr+>=sIo`LIFrwHKzoLWk%RK0zf&;;YqPbeqCK z4x#uFSvb-5B`W7{)QL4DGSLK;Vlv$!BEvR*9AZ7!-k~}PpZZskiL7JEwvWAs^nYUL zn@M~hfgw>_02#G}<+_0Ih{zY{zda~^pjGn0H!h^mR*>m$h?bmkqht16wP!1x$}-*#y#_# zK-BBMB#wB@-!wPIiZF_if^f&{K`GE2$U?E4FD(@Cm26&K0R85M=E!fmGI){cv^qp+ zH%=`Y%qK{JjvJCJkG(H3c~)}YkX-VZm7I3jgNq(d`O-2lojZ2G7R5sWNmvluv3gohEUy1`L(4C7-OcqwT%)2mIm@*dwGTT?qNc^fLo-uX QiZ%TEEfwcMu`M3JzfyU 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 QS>DAZ6FPWimbMW80f?m@YybcN literal 0 HcmV?d00001 diff --git a/42sh/obj/job_cmp_id.o b/42sh/obj/job_cmp_id.o new file mode 100644 index 0000000000000000000000000000000000000000..7318df93f6c8a7b048060ca9d02bfcc2ceaea760 GIT binary patch literal 3784 zcmb7GYm5_B6uvXFpjOc970 zh(;jt1Mv}KVuFc@MB^XhgT!D={9y<&68S|WhChPF7|{5@N5t=&xl?v4%6gM?&pqFq z`^}kq&$)L#|NZ;F5<)03fesRfG&FQM2-?+<3k3hAoi)M-`#A?KvcV}R8G>k*vjOQ^L-$BqB$%0apT)%`HH2ITiMEZ$Hy1(eIz+1%IDOE>YUQf*OYJ1 zNv+9!*_Ljt<7MM>i?!j3_fNhT$1T1PvpdFrEUe4&jTY@7#P;|izGxY*%vWqQsuinN z9A$X__}-Ufe0RyP=3Ftpkgs0a9BgoVd|ybu>m^@lf_y=IjiTMo_e&e!GZWK{P zz0+j=E|9DK<^=grbOB|1e1kH7qwhVHk{^Cawe7E6AH{e2RzQxula7h%CTjSHY}%{w?$!{hxvt~>lEE`VYOS|T(NzxuxNodA}%=! zr{>cXzQx`PdZ#QJ!|a^0<#Wx8E|S5DOiWq001t}3?>eQXk4*Nhp=xnhRO_|jT+oqr z$Ze4zAE{C6+c#5(r^*!gpmijXq>$l6PxI%K-<3*>ce6kZLjES*N0qJ$)_M7lSOr z7n|nYOyFyf-C=baLEfgsEizYEj>*~RN^R9~1SsoSa!N+oOchg~3od#kvjrxs#?!&m zX`B~tpwr?SZbYH)Lbr{BX^AJHHmNfVx{^hmrS=MAH%7;4<<#D|@fJou(7IObHH>2z z#kkDZsl8d_CX5_fy=w1Np?`^o`ykp({S4FrNPIvi@oSLSE&88O??d!i@gq>0q4CT0 zZgeMMC$3JMhMJn_GR{IT2b}0(MCV|wpf#B>%*LopYYJizNqr5*WHx5%8!=>fu}9-1 zO&A(g$9!}HNmDWJz~B@lnNq-Ou8Pb~n1)HB;At9W)_f!~Gcc!`C79npl3AEJ^C=9| zSlr|!n0@98k=X@vsYo%Ben>K*bpFI=3HbJi6nA`>xS_={e^%y!-U8+0@o|Pl1amp<*E> zL*_!3Kpun?AwFa`6~7er2EMG<0&NiSv{Ay$a=VjU9V{_?IvW0DYJ;>n4OhY)i}da>LWmV5y_k`Nn5hzC84+SpNQebZh;=R@mN6l6O8WoGs)W#k z?0|RBv(Kpab%r$&?x-rh zg{PwYk?usV@Es7P?UKfYYge1RxC%|rEl8{2EbO~|JmPI{a{*AW!XL+~QyTK4xgNH6 z?8T3l26p&UkRRbrg!3>)8MVf7jDtHJIIfO>I&`mkJ_h)>;9j<9&>_5OVPGcC4e*97 zmQl2hjt{krzDk>%*Sc0|YF<^b2x2iD5RYDvdXCgHrG^Tg{~|RPEyFHq{2!73G=%;J D0Mr&* literal 0 HcmV?d00001 diff --git a/42sh/obj/job_format.o b/42sh/obj/job_format.o new file mode 100644 index 0000000000000000000000000000000000000000..10b11d931bfed3c6065b03169d0d54dfe5caa2e3 GIT binary patch literal 4040 zcmb7GZHOF28m{iy?&;b2+>hj9a!JOl#t81r-X?chHE7~RnZzi;b2UPwcebZ@xA$ge z#_pcDiV?$lcgA>J^bkaUTn-dH4nblBK@J232_kpk4^e{TkD^>8;eNy~xV`78uHNj7 z(c}u=dOzx|r{3y*->UlOcVGQCDTI~~=s-Q7mVvGaLc0R=4UIq2o=ZgoM>z*A)`2NV zc^c7dJ9Ov6NRIToZ{2tI1wEE*B@mCxZUTT#TaS2*EN-@4b0^!=b`bi~WZOIM-Er4# z@vw+-j&oCJXH|TWCVL4R>oH!v=}1#IUSEf|5P#+7I$MWFj8~nU^xXs8e`kC#-unvU za`C*zRFhM>@lL7LZ&SQ(MZjbDe(LvKG(NxDn0A97;%(^qUdMY?pcmLh@#dXQ0t=meOcj+s##kv6AwivA-m)ISmkfLUoU&9_?+e(_8Hpk z#)Dp?X4`vqcFa)uR#e8Lz~h;+5BaD5dDnj38GFjd-;E~NcISCeRCwDJ-fId^sRG-d ziDmM*-s)aMB6jb0BCZD&%sI8+i64oN-=#p{bd(4Teidj2{@mAd;3FIc?FB7wT!PfG z;pGlLA&*xMe^yyIGg3Kx@SDov_PN93XDUY^9%-NZg3};CIZ(jZ>Gy6u#bqiB2TzOq z<7+7X@!;tr?Ndj_&q!xDaL$*XEG{lq7Tz7X|D7Eys^XqK_uNrD;QE2rY!t^zBc+kz zCZ~>*V0dfez=@-|Ez<0{C&B*$Dk+ow7aE^yjK!$r0u80Q1XL->dqy@?O6= z>pEdj-ZC1@hzpKlR)jWG5y;-F39k`~)-;5cSF=O@wyKYOvSStFn@2HF4MX3XY=`cnfj8Z7 zYegbAcu$3M%^H_>{W-502*>th4532?7{_i(gJVkz^m?p2!g1iSgz3yweYra8kVrwx zb!$TQ5mIEpN&H*UY=wbn$z8}DwuIKFU7Z^+61jr8CfBF+$3G`CB?vBQIz*SAs>ea6J!biCj8O2qCPjNaS`6P#HtUr>=r}Q#y^2 zUSzsRFZtpe$}IUB^vy1TVl1a=Tqu7f7UCIIAW%Ae6YJy_6hu@L7V}nQ#C2q7yCNq0 z_~u@!p4gz>!^+n3nwHR?o^MI{D0*nE7XYZ`w_^^p`Z1}U#aNI2^u$Zl`mRL}ZU5h? z^>a)Z&!RJrq2n9ET%DW;o6y%vxdOQ!DC2J=WhK{R|lTmHLonorFeY zeSah;ig$dG#~Ch`9QN?d1dfb|4KbA9S9FvBuR zu$b4Q`v`jSisYwYtCIcJXW(_1lY$0&0$P3s8%h zLr}L+?Snd&c_vo-p>7vhMshPKmDF;p;g%mpHz=|j!CcxcEj0^nX$8h_CFKlmE0xj= z`PW3{H#-=iJYva_{IW$hQ_9xJ>itYEnK9rcX~lMz&84Y(E)L4Y|Hp@~-+s^_!O(a$ zXua-9Z2I#;;q8+H^?^Qg2G@j7d27uNZV8Y7d%Uo@XQuGPE7r#&k3Eq- z`R3rxe?0Qb@7wy-g=h9mtv&g`doLb)`TcMI{GWfV`Ly@hN8UKS@$9`P9{;+KIdFn! zz06vCh!r4ajlvXB|4^78FY9b4ZCRUpAV%E{bLQ!6aloz8{4-zH`y_lA2B2$+p=8*DYSB`E6c%fRCRUX4Vn))$OjRb95lzfaWnw|o#35y38Pmkd zR`5TSRY_zFvja2YrVc%VbhJ3pw1@8!+I&GPWRliVwaU-o`S#ZYT3n0|O|c_a_`Uw? zY*ZHb2JqFzm+;iI?{iu744c7fUH3h%YNy`jEm&>`epzW{Z}Zr%IxWFNT`n+`?dTy} z_a>*pcy1t;Jq_@Nz@mIAsP{!_hL=M$4>BrgN$!Cx9|*7;NMyc|Blmg`Lcr$aC2v!q zLv(FJ!Au+-z>QiWuNnQl)~K<<+->N)jb8IUBMZ^mZKTZG4ZUrw{@mDLZZi_wynu!1^E9NltG7 literal 0 HcmV?d00001 diff --git a/42sh/obj/job_format_head.o b/42sh/obj/job_format_head.o new file mode 100644 index 0000000000000000000000000000000000000000..ca14729801054db5068a61719e40ea4a04dc9ad5 GIT binary patch literal 4196 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/job_getrank.o b/42sh/obj/job_getrank.o new file mode 100644 index 0000000000000000000000000000000000000000..ac357508f56c201b86f2d88139d4ec1d41669ecf GIT binary patch literal 4412 zcmb7IZEPGz8J^v{-P`-{-T9-IQzz-QPD2Crotvc8DsFH}99_~>B&ALRD%zgcXM4^0 z?zr7c(l(K*+66mC$fd3LK_r?`sX?SrP!LE65d%snZ3Pk)2*pDA0U{|yMEqz?D`B2z zch<45X&Xj*=lz&>o_%NLedk8^yLbQj--r-ONT36SK~)W1286Z-v`FIzw0PVfnByF@ zKnJEErD#MmO}BX1^<`gwaNxj$SM@-emjdzl+2d&;RNBJg39_J>=5TSSK59B{%`=(i zj)%5CurnAI0nS@o6xu%B=PP;-HqZmSQpNI2jd(Au@)qJABbd3&S9t_@g`uHZ@gUc~ zI=%q!RXP27@$B+Qg;N^w4)Xxfz9XYBqP~6_`zMd@n(@^N<G~gu?68I`>*gro$_tEM#*ZaK0E6G_s*NKOs^B^1JOUV2P)_Xj8 zH83eP#Aj6|uuj*kmk-(HVbk2RW95tq;~W(F4vj*$Z0P_zBXg1+R4Y5P2{^^SAuuTRr)iql@PU7U=o1xI~uMIslrV8Mu_6 zB~iQxaq&Dyg(vlgDc*5*dOkmS^rD!)|3Yet@lPIIP*caxP7ho-HgMsTl6s1__2v7} zVH!Y)bp_&;*(nLT^<-=8^HtT}e2oaxQ>WP38VStZ;x-Mu|fvRgN2@7N@qnw1-` z40T(TvRkW^D4U~27kAQ^vX;mVIsnKOYIdPEoZDNgj2A7}$!*>2jENPVg6_gDyTY*_ zD>B(RDqNGj6;t0#My%=1J4AU&L;u$Q{vp_Eex+N?N9?O{4SfNG$r&=ry3$OP9d;@mI@;Aux zcgT`!^R{fPSSp#`ep&Te4U00db&hA1A&z@1w}sNI+?s6FLdmq=nQT^Cke_N6#ulYN z7E0b7|5W^AiBIFA3TZ->hFz`rJ=(fT)l!01T~Wv)H$%G%Wo2v-q2#tW9~4oF@%T1~ zv33mm*eJeMg?4@j71;!*U9D7lk@HO~@Z_=s5(r>DvU$4hNF*z84>LaSnL<*ra}6R@vnnDqOMCk3(i^U zO=_1&d=pXxi@@-T|M2Inu_6mY_XF z?FPnhC!~|q+7W|jip@bzfQHqQJuS%OF;_)|85jwbr_a@2_4Qu!8{83_!86f@)b1tj11>}CsUiX*Sb4MOJ zGxg5f$HvyZ^3%2*Kl;aDdis>{=jUI1^*>v}W9f9_;F-F5Yx)mXTjwiZKL5gxFK+zT z&yU>sUe6QL@o(%IS*O2#uRA!@+WE}Cf8WWh3t>arL7PB*pwEJs5OvTrhzI(85cmEK z(BDDtf|?L;2DAmV6ZClylNm#T+1(C~#xtjhxgbp^q0+>%ktUuxO-uu6ViM8Bw3Q~7 zElsRsTz+iK4VrlJ(!}hdi5bU-2^!0uCf)-Qi*-m7OH+EWglS@iNiS{?O$lDEPI-GIY_S$ z%f|?EjX8@MUYqwB5mq(kD4X)w1422RR?>-x!9_9LwV=7TiL$gL=VSYm>944tY4WSd zKWtUJNd)D+WD|OY-vB8MuNOQ)tWur7;JLa}%SkO~Z|VKyYK!w|g9{8f(|`Dv?4c1i znCpm@?;N~{@KyXmoASAo9b<+06CtAlm*p^I?{xz^D$m3A-Aj%O0ju*~C?*v;_-_s< zn290@tysCuwAA#ARPyhe` literal 0 HcmV?d00001 diff --git a/42sh/obj/job_is_completed.o b/42sh/obj/job_is_completed.o new file mode 100644 index 0000000000000000000000000000000000000000..39262e610bffc2eb565821750a922c756aebadf8 GIT binary patch literal 5304 zcmb7I4Qv$06`sBG-tGPPeEtEP@ONMgCc!@QS1bwyQiu*pRZ4L{wAFInyR+Av@2W=Y2*oc@KJa<7-#GmsVt9KhNN*@n{ zQ&8fvpRU{4y|x5Uy1s40j&1+NUM}?hzLPMQ6Naa1cZdi8NEc8o5EuY8p zBia5z!0YL1-(-k*GTFXLzYbETMc3DFU$^yvs@ID$u4S_07$-ORnMCRF<%@>nRm=At z7kt9=T4(}rtGDD!_w|*t!(6|~@p*iImNa+DXBKircB$n%%f-htDC7J|*v03uAF}C| z@s-ns{;YK~U#I5w_saU1SF7q<@(ra8C&b$LJU+QC;`V&$QYoL+3+W+-chh{kWPGb+ zII-Kt=kgW%2AvJAjc-u$&69ka?vT%kuaq`w`JSlZE8HQUy{~l3`JR+~7v-uSy+b}6 zVu!LezN5||6~dcuxv{#hUZrM#jp7jIY3r539vF!=KPNt} zi<1i@?m=Skt)yrXf~jd2^bTl-xdk%u;Sdy=Vkb7;w%(f>{Y&cb2i>D1*H4JcbWe>r zDLZwf_j*cg1#fC}!^PAXr6)D|PHOa=bYsJ1G(gtIQNNZtJaSDmJp4RKj;wy);evIH zju)IxuW^e~N0uLjIz7X2=)JIh?Eco&=&!58_g+YiZS6=Mx^$2Zhd&Xc8-CyLoizkU zRzC?fiR#BNoSx0bv0AD(HhcyOdk^O!7%1C?X(#-yB(HJoXvc_)ws3b~eW_7#i*uugp8_B_9 zU#C$l*yUoLb=|adzQFmcoy~L^;`Y>~a?!|IR-)ZZm{y`tv=i0-a+q~YP>Ic(AN)#U zI9s;NVj^L)ylVdtb#y?y~h19fP4e7T~;x4PhAYs77rJq|46ynB~Z1m9p84a7vfS zHDEf1J1fJTmLX$u<~fkf=XGbEMx|WF`stXmrR@Qc-J3OX zaC0?QNaQkR0Y$Nb?XlB##S%)R(jIG8{jqppdaO}t!u#&)g0V?i8}`RmM!pzX5Z%~( zACi?{6+UU&h#Xb7Y!X!G34d%&B!cu4Xb^M=PK9zQgwUE5e=HIqpAeyX_-2aZJ6pxQVEO$!ielj=m!Jl|0whos`> zdX2|fM8zU1JYRK{Q+gM^>aT)lP#)Y32c- z7zk~!4Dhh!Wk1N&qW@@eo6Frw8i+wP>FQ zV}SAKpa&ZOTcc&bCiaa3CZdd}hp-W_C;FTRn*i5}daljaU<(D6*etj;EJo2H>hFQt zL%XJ^2cR`2{uouz>G4Chgp|NWcm=niILWr@+G(gA>ip2_(9Xhia0$-=IZL>Zi}nW~ zXL;}OwM9c0ft*FVm)jQjJ_(;k@geNmOzj3#cX(mQ57R8Xv0=E0Pz0!rXb}nHKuMxb z?gA&l!NOfwjL=*l4i--O+Gd0nc&HmI6YBKPVqe?5>duCj_}V%|fb@Y56e{;2pahno z9=s35RA4R9NLHn(7ltO?D@0%?s?F>c$goBhZ0Xn6r4W(uL|$?v<~>D-U!=A_!UO1> zD(Eg6@l5PXT-z5v$m9Qy5Bu|Hy@h0W7@&f?k{|b=I`^BjqXLrv#_vlZxKfZaYW&NAq ze&e}c9a#Qp;H~@ZsmCwBytHm0zWtSl|J8l)(MUWx{L1kcetYBO-+JT!d~9ImyWwL8 zrZr~g8;N5Fc$K;rvIfHUGy~y#$(Qk2$O*_<$UBfL5Z+B1utVJV<&YHQ8;}Cz5ab!i z3y@zz-hwd0po=&T;e7D$(9*OEg*5TKrirgQXO4#ng(l`1>BYlL6BC3qF>}$xgd;mL zDbd8#CB67c(ZqL5nwSb`;@OZLIenV=LP{^5Lz;NNrRfYHO+480vw``BCZ-|j#dAdy zkD8=s7Nm)3QF?tOO-yCd#0*U@zW$P)$%`iDGihSRpov*Tnl1s-#DptHWYVCCSwzxv zYiZ&smL_HbnwT1-i7P-851OR^UuPhQ_nYr5ddP=q9FJQ{8|86TJZg;*Dhf7kb=diM+qu@AmJaRZ);@@cFdrNS{FO3igwXS1-@gd& zO*#B(@!V>;#v!eE&jp(##D2-|v_jxM?4LZo%lg+SRL4r*$MIJ3@aB}$@|@?WE{iu& zZ~_-w{fqE;$5^h6SE$!3CA(UfpnD%%Z?E)kbATqqFR$odh*ulk9~^M2f1?s_g~WUJ zD)9pU>IJ72?{Ev=!VU?1iM8xs=%0UI{j%%*iNrfAN8NgrcnG=xvemz%vCxrdy^GVA z9FwgU|D4(c*6G{L>b-8YXxlrs%^h({;$@_A2zb1TdE7sF<}G-oal72W>4pPrdwxE6 zRpJdvynPZ+iXtw=c+@73;;rIV1H{(#rZIq}DxH~@>)rJU{&8OdlX&O|onHjnE92=Y zaNa$_?gGs%oPs1nacKc5nbf|Hk$G>sAS`;pFz$M%OyEs^6$p*tT5{nY&i6mx}$4$c=cw$Q2rHp;653 zYSi|Z9N)`rTe)l#na6 z>R6^(_1v*)shA;TmER^z1yI&rP}j#WQ{64jMTkTU+OQrS1>bMDqfH+%>)Yi@VJrj> zW*~6cZFs(2Z`7QU2a}0fk(Q;#gj@53W4pl+-ys8B$!@JJnbwyiJC!b6Cbb{R zE@ddzmb^9osrZeF?cKNI9=2&hm8$LC_;ziaCu%E1TXIW0jwS_HGJ;2;vx@BJo)Rye|^71{w`IW|7dBR1~78t_S)ifTcNcJiZ0Z&IRbY z5w3P=fd}2a0TX4!dzj-)#)?RYHDo9|Ll)F0WqURoMhaz*i!LRlJW1B39-llI$Q0Yv zikY9jsJ;Kmx77Vx9`W`O7}KkLfU(tQqKv_piQ!B*QddZpQ4%qsn?oE!4|1q z)^YGRsOnL(!ul3kf1|WO&6?ILXfY+I3)O5|#EgHS{XPha&*|)?z4YpV7wSEI0Y)l`w z@OO}cEnLM-`vat4dsnO3g!NZQ!KU5BW7EG)z#pJ`3wm>zc>!!7w#u3TUyd6agBg5< zL6*`Q0wy5kD6QowEQZ9%V*S_*i%a5Uv7DM+YGos706Sx?illXFcE#+;#@4IZKA{s{ z??a`jFw+%%BihF8sJORgrjw{j*9aAMR0;hHXm)d$USx|XIMUB=&BG%R5x-w7p&UN- z-#_>8V+_C`s=)hcfHHS1<<_zI+RgkwHXP4yW)Hzo=%6BWa1AeSx;4 z5UBX;88HJzniCv)N;pAa{JwtzkdDuV6>9R+sbVIeim5@W7?M;m&?Nl-iU9-nn|Br?WRYJnV$3U1R4Dh~C6vju zl1>=rQtJ1W#yV)Ba(9NhQV9rYrOlsoE`q#y8I9rVEWd#DkjF`vwxgl`fxbf*fjaJ zgwP(2lCNDT5cIQ_Se6~UAw$Dp{?J4|3L(ITPpMFiT!ERw(w0)RSnL^XscvR8qpbDl zcWR6EJ2Z2%w&`b@zF9M&=zs!06;0!5ErF)CS+gLqdCeV~@jW~T#x(0WEeVA|%VAqn znyQ7pMTBE2Ot^LdIF@xAGZfToH-%i!N!}~@a>>DHr?;abUky2hMpW3GBZ|%zS>i`5&cXxjM*6aUE3t=P#I!F@Ive1&2Z-(9y~u;Y=Z2jt^pUj~6mEGbS=#m#Z1>$Uc*6GnlA9B1#H zleg}Vr$x;3S8fXJO&y=IWG`uBJLdD7u7tYzj&yhnagLkoY#kmkU$s^X>c_eN&iG=! zA8U@w(iQNH=A zD?{v#FXq#)LtL7#+G_cAr%|0}c<HHo%t@-w-X;IO9 z+7#ISTs)?Z>&^EXlCgWgE1K`1PQXRI-`u;z$8*7y5VrcjG5C#;L4e%XUg!}{Lykb! zH$H;WvElU&?=e1FS^7(5;UA?Ri1YNSSR27qS=zT!IYZ%axw7#2Wl=c28}mQOqPza5 zl{1HyD`&Emr9@A3cN{7m zuLq&mY?Q`F$419WBd(8c!jADV7^Ay)j$Xe_gn?T=)~xMtn~f-F`W!o-^?cu{`u?aZ z%11*ml&gVP4W`RSg66Th8-?ZFJHt7#-j#+cB1fuFsTnT_B?8>{!bpTl@lo|gB(!!y z?_^!Db0WU$YJen^AZ)+cm@Ty%p*P#8PnSHbYVcnZ&eaiOYu1|qrE)AKR{QU3jd8#CIuXmCxGKohlI1>nDKKH)hG(QT03G;j(n8dxa_zCb(F23>DEKI zsPK(GT^d#~hu|H~mF!!+>a(cHgHE>`6Wm^zb)&?l$ zCPZq$NaSssYw&OH6^Zj z@Sq#9us{ymzKL}epny~jWmrxkC$6JHyG1G4$A9{@YKsBmj#)Su1;a>~56QcS(Z?GI ztkxqSH2Qz8thukz8c32Mc>VB0THDRxqDcOdi++#pA&7ZJ>QShTW`Fuy(A<|fNWv#zWof;Sgnxv! zmDUDQWUN7q&jL$swzgpSBMcLt%)SJb&Lqig-2nJ?+MBIO4F7{+s$wxH6Oy*-=RKDJY!^CYNK!uRa&lC;4o_>vv@1kAi8e? z$bKO87}RI1P3iAI%QN4?g`94bKa5DWAESKx9;$bpU`R1<1R?_ES$+t6%od~M| zw`Txlw`8A(vhbUz+%{RkP=3OxQ5~`=O#O%5$De(G$tW`ndQ`b|tR>XF7N6hM_57Fe z;m>DK3w`X5!nKY?f)@;tzglQil)x4Qe+yj8vh0UM4|tni>G{ficb+}{#((dh z+w|hogL|KP?PziF$;=ohoa+RqM@KL(wm_qV@Zs3jpHA;W|_Fb=d;;H+-YM1~3 literal 0 HcmV?d00001 diff --git a/42sh/obj/job_notify_change.o b/42sh/obj/job_notify_change.o new file mode 100644 index 0000000000000000000000000000000000000000..016ee8a829ecbb17af582d78318d13d96eb7fd1b GIT binary patch literal 4480 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 Hl11@fC#|vd literal 0 HcmV?d00001 diff --git a/42sh/obj/job_remove.o b/42sh/obj/job_remove.o new file mode 100644 index 0000000000000000000000000000000000000000..6c8354b477bee827fe02fc14642919400a58a155 GIT binary patch literal 4532 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/job_update_status.o b/42sh/obj/job_update_status.o new file mode 100644 index 0000000000000000000000000000000000000000..3d4cf87007b847a71ec1d304a89063aa61edad9e GIT binary patch literal 2748 zcma)6-D@0G6hAYYnQXGj?k3TyRKkLdHehyR8Z_9biMFzZ6hrMt5X*HkJ83rE?5;Dj zZ7Qt+F08EvmUy-UAA4U=nkRogg86XTg`cv`-$L zI=O9!nxz!RW9W1{5yu8&kwr*C6rAbWIpO(k;1c4q=;Vn_Tvnsxi6yBPO z?;z@@TC`()u2nwgc+GhCBl%wDW;W7}c=MJWgcyx4#0z0}$Fr){k|WC2Jcrkm@0tP{ zRWV)JH9m<~nVt(89F4DEWphB`-P$8w5MR}@qj<+7c)#rt&%adNG2eF;-j^yqEv}Sp z5$T7_7mqH0jK=q9@TiEwe81Wi&#ufPPhZr^7mMYB5EDnXk0u&Zcp2sV1$gYrM*YK%6ggL&9=u*YQ+-`EGvce)@+^Q2u&t<9j~s z58k(YbbaN@`buphu$I;-^~vqU2b+K0)>2pbce}SA!_NEe-C?w)AJb>=jPtX~OiY|U zp1I(-Ua?ZnjARG1gPDVN34g)B$RLdD@KE--e)3#9H&>Y+uq$QXt&~_7wQ9lg9sIkN zU-Pmy466lSw zkB;@or6|q{ST-dd+{q4l79OVh7FyD^-M-MFoi1TYOKDn6zj66}*1Kjf!dh5nt9u?J zwOqwuv=|Ez*V*nhmLNU`$MObm_yVls==_`Gc@89Gq!N&{GxJvuLAg%i=(gIe2L}Lr!OB`EG9M=!Seb@N);L zje8VOETtLo_W0X|X-*lv=1ay?=BUv=YP3xm`l``p#=kXMF{7J@4ec%6L^f|=AGQzl zLE^xH$CUkow9TB7Pb=B0Bm}QFzgChvmx3cCR_jdakJw1Tt=Nv|iFwOCuf7)&O?4n~ L(JK1VBOqm%eI%K5Gqdi@ zCTYWJ?L)Fn1L=?YM??hC3L*g&Z2#03lnSE%6saJ#LJJjIC|YYZerM*+W_N0vTyo~z z^ZNFj`#3ZC?#}Q3)-ope7#^S+(B~2!VGu?uC_(al#`k{5@C)~GWneO*CLX6KR%XKD z0+^!gjt}f!klooCN&n3{=4-` z!G%Kk%u{d57)70yQqadWJ*_Bx+bbjbIbN76W5A;=I)n4a_uPY*8CC}K*j*>U+YfRa zuZQFHb386Gh{NujxO<+nnrz#A+iJ8ZbKz()v%}Za- zG21j979uP7vgvEWY@MLJ~7js1*^gxBiz;SSin6$kCB)u z+&D+&m*Q9L00c+jTZ-SRiXWkP`}I@Ks}#R7UA#42xM4fC|Issb6ZuW;yxe$P2B4c_ z`+U#TU#@{Fa}89?=`Rl7oJYus_~kP~<8j)?Yt#Xe#Rp(jDSQmY*>z+rr{FE&l3PL+ zZr&2!r}%JHd@26pwN9)8U%l!0-NezaWBb3F)bz39)X3CJeJ9unxTg~Be6&5RKv(Of5k$j;h|C&&< zupGxpj6k_u=&ARGo(gUYKH9LO}j8Pfg@(nZz3LltphTq4`xu z%Dq9-aF$srRGut<}@7HX(uZN>fVGa zvy%ajkOM|#EXm$j`zlx9FXmGN2O_$UG^qOsXlXtsLGN@=%8S;CY_Y>r!GhS<(MV)|dy)dlXTHe-F6V3f%(Gjy5t(i(j5& z6P&9BJ#8GTD<5HBqaca(feq41aea&A_jgIHA4>9|w6;s~ACY|iAxR8GrGOYA;}uEt zcT4NYb3HukyKr{0q%MO<{E+@gUmU16B{^V}1Z+E!7iOY51s7k(p!ceLF132CV@kgMSF7E^74*-)RRY|A)DqP9E@OI{5TEPdavgl=DY8 zr?(H{@RJUwrb9A_HPVBR7 zCcE1zgO-w0tzktsthAPAB&T!u2hAE}_IrsMw~e8h3Vr%zGgf9nV_HTo2bui`^dV5? literal 0 HcmV?d00001 diff --git a/42sh/obj/launch_process.o b/42sh/obj/launch_process.o new file mode 100644 index 0000000000000000000000000000000000000000..f3ac076e327760a0e6d2a4df4d5f7c41a92e583a GIT binary patch literal 6352 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_backslash.o b/42sh/obj/lexer_backslash.o new file mode 100644 index 0000000000000000000000000000000000000000..59eca88c8a916595c5cd3d44e1c8e72d5bbb387a GIT binary patch literal 3564 zcma)8YiJZ#6uvXFv+wN2#HO*n7JSqevm0X?f?9QBRyVrQG@ED;%P`rUB&+Le*qMz{ zR4f)T#DZd5`lC=R^oP(F^g%0au~evFv4vLprxXjdNJ(33DWnx@zcX_uk2M-Ed(L;y znRCB;?!9N`?$`hR_Me9_L1Iu47i3U|ia^ljLB`2>pLPL*shy@VXpT*8k}x^Z6vfnr zO}lT~U5TEqN!#h|;T__mX;T%9iR5#!V+2l9l&scU>Q@Z2Xt@-nbyvJ|v-6laJO^n} zXk$D-+p@Gp>(~xozL2q8<$TvTj}x!)bvrh2Mn1K-x2O%#`lsjT@V&+f9+oes_Z4VJ zIiJaAKhN`Yd2Ql7*gt-JGv-%R^?uE`mv3R&nZM=ZiB7_deEZdmm122*4xh7)v-7Eg zgLzHS)%}#-J?mY>^IOOBd3)CUY`#M8Uh9C%^V`k&mU6ydACk|?Z&1yY^BpbY3;8EE zj`zy;&(6<0I5^{aU*~+U@(pZwNItxD7G-&U>)m!1&U&u~X3H;A*pGFZN=ZME)3b__ zYMnY_fb&JTa~yp1O*xGE<0+S|R~u0Jia1?+fTB$Q9-QQS8#!NX(B|VN1O0&0C!BbH zbGpS?zTV56?=~OQ13qfc-zPuXmr4o<*c(mB*FsJqp4RmVu$~@6Iv`UUt(Rolf~N*N zpx>Pwxsg0R7D3$c!AP_ z7vb%H(AtlPlwm|D!K#cZsjSlFv&Oe5CVU<@!# z!6?I2O^vlCHpjbDUBFaZJ4+`z*sdL&t!#UDdrP8|ZRt$JyI3lbPTSr1_EyUxe5QLx zSAw@pKsAbCuJ73WIBPHF)_3K(TLWDY9S#-l>2Gk-m3;Q%3{5BdK>FpvXfyH1c z8l6>5)tZY5bA)A~YFP?Zy61=H2vsN!(IrTsKwwQ^Exjl!m=s!oigHB}S|x1sOCfsl zc(AQ{0}54^naEvj)r`3tr$EOUVxURv(Rqo z6=;ui4%#c7hxSSDK>MW+p##!I=%927y281tCTA0NeuW2OShxldWbw@Kb<6$%8rEPF zkU#{jibRp2k+QbbF0#U(6o2i7vO z9ub##1FO($A*)7QQptk8dh}_3au?z>qluoi%odu_cMj%mdRXOA0kRk8k&Y+PwZ1Nds12*x zKKm1Qy6?T^bbhpNE)O*8@PKsQJc^2vqUe};6jcVfC|5os z9XGkC0(evwCb^;z7X*zeja*cAJnBK`=fTd?URz@)6o0FUXIgVkRXEhigyBk|GU)N1 z<`XSIWY0gub@whG&saQEc|zP&Vb>sIzavIu=b#1QPN)J}pgAByPS4~^S^UeHxMNs8 z*V|{tCLY8}M$xfixz){0Y?{Y7XvC}!uEFekAUZ(AWmf_&DwG|r1UyA;+5^zX?(r`^ z3>i7OMCO~gs->_X2mOD`0ryt9dY$ZDCyVZFatKz~U6N~n;#R=-@&a@tTV+2SZ;EcL zkFidBfptwl5Z1kD+wM~wmvdai5kPsn-{pwDRg&bVRs|uS(-xyM)n;_pYQ-tHpwh>$ SC%WeB3rfNNN=>KoVgCbU?FkM5 literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_default.o b/42sh/obj/lexer_default.o new file mode 100644 index 0000000000000000000000000000000000000000..bb8f644d356942b0a630396872d334f5c35fc336 GIT binary patch literal 4020 zcmb7HTWlQF89p=P*^6hryRm}_B%!M&&>&&2Nz&8>H_ayAur?cTeF;%YHCgYD?WLPp zcV{*YG|&_Ssxc2l6hxnpcxfLBeMuimMMNoTdQ)4eNadlGiW(#bQ4v*D8!m17eP_rH6Vqy7K?{Fn31f95}z+24KmxBoHy7~U>OkF4WNrOenQ(C4;)W(3|goI zQ;An7hwsac z?+@J~#CbyDy%g&jTYP=uA|u6A|K-rl%XuG2*YyFT{I6 z!CWg|)t#wxNITx=SU|Mb)qKyY{NBU+Q{}s2evOhl>v)&reb83(#m)e~go|_YGYaqlg6RNW+ z+VINtqnM{}H{GvS-HL4&hgU;|IHK?}%6I{IT#^YK04n7+JZH|HX`s5n0NY-B9-LHo zdlX)}E5K8#!1U+BK4rMyYE@Svw$Jx9g;!C@i~)~r{U_wd_mXCS6%>xiZvbsVJWEl7 zEYJ-a1GP3jf~1yctLv)$slwtrg@yM93X2b4C@eOY3ri0#FLTsl{@lVvk$Q|tz<8ms z)LdSgI;VUepZ|@t=a*AwVhbPaPCb4j^jDZ^7`zhsVr%4(isbQlS>*AR$U!+;CcuSq zHh+$jJI|MjJ_~&w6tKcl9@zm+6c+Pu0Tjf%1|){m&ql?b@OcN83kyHhFqOjMZx{1# zhG{P4KQ1i1G4Pe2<#-Ncip7HmGRK^TSFO95!Ty2%fy}mY4To3X-~g2Vo!k3wzg2jR za<=9icNzi59WhgC*8Kjm$WD0}oGmq~rA8$?)~G+=lzlI|bGtVu92;XizvMe&IKMwP zRh)z@jvNpZ`7v?dz2n2;o~Z+S^W);K@qBJl6!Q}kK{t2Lu+%8OGpO5MX?xX&96@ILT;!z& zcAqptuhrezOw;wMv#wLg5YXi%%R8|=S8AZcIRQVMo?ri}(yPWG5aG9B5NT&MAR)jKpJX<2tzcVZJ5+k}zagiY1akI-&yPp6Tj=QD|s zo-bm_n5NK`X{1Mp$j&utbSp;hwk!a}Qi1{TUWfofh|ZptCs|#H9qA$XAoeB?7$MFu zA9h5HJ5MCUZ4_v$p9Es%qd=dAqeHvRILZj438op}0N0Ig(qKFW-eD|(o5m^di18eF z)ZlF$Grk8NH(mnoG){wC#u@O0@j7_d>aGtzL9~Ovfj%5V=-dK4zs@tETYBxVaTDY z-4**9MEnHUIQ9LV4BMdXwx%I}NYfrZoB^DamgB>}g`S-MUOqhj3e;ITyQ40I8N+EX zkt?7pPfkjnGi-q^_)|>3ehgAIj@D z>Mu9y11G<2r4z?amov|vc;@fF-+1E=ck`>6m7ZQ!7#ZR!}%EX${#42ICvAqqViEB$mai7q{;&XmzTxm3M?rNZ1 z7Erlp)j+OQMzQ2uL1?TqO)R}KaT+u+8D-*vq>0N`Vaas@6PK1Uagj2L??4UwU*(OW zbYZzLimjW&0}$B>Sy*xHp>d%dPiyH!H1@Q5$|eLIxfs+`jmMryrk~LFb%lQ~jv!VS zFA!S$DA@(B@kt=9>XvKG3cl`EZYfc#PS5z+6-Tz|H9{?0-7&aJtg(0xdRci&d-(p~ zE!RIs;5F9@t~xA8Tr2QlRR-bccc35KB2c(YJ9H7}(v{6fY38Ro|7oToqh{A3Gcsdd zADJ~bL;LioX$_giAu}3TFe5NPiwwd2l5|_6^d;c4;7bqDz1DXi)7%7^88vSnH9Ln){RgHN`GOwD8`b4I7JYw4 z?wD8KcOhZwdmIu|>ie>iw<~!aB;G~ecOVfLc}mG!l)Onv2C|d&ak`UZpx)#nq0!yp?&~+p~_mv=JLz;epG>C%xlV#D4)_ Cf@tdi literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_delim.o b/42sh/obj/lexer_delim.o new file mode 100644 index 0000000000000000000000000000000000000000..7e5d553f574a48ffcc98ff87ee8f7ace0d418218 GIT binary patch literal 3624 zcmb7GeQZ-z6u%MS&3`hyzhPC5ETx8%nR_LI>TsJ_2d34>|R_NN<_cnn5 zAsaC?BLWfq%Mbj6M5BKgqlqMHNHCEE6NzFZMhzxvM%0KJ;}qijo%im8u8a?Fdd|7$ z+;e~T+P18($ zk7@U9y*;wM{g&?Zp5-0Fqh*hjGDfjMIYh!~n%1Rv4)kb-nX^oq*1Rp;w$2%54$f1w zDYV&&Eep6<&_{eWUOJn!%*A-)9LJe+jPKjgAt%L4bav+SLE8Vs_#C`fIKchlr83=F zno^ASGGG059%s;F1E0eA@#~v3zFZ>HqZ_y5tuMOsFTFg_TVhhYzC_Xru{b^l&pF0> z<0bn0)4G;P^ig=X?KjHfYvA!*zGr+kUbb_Wb-~5)9p-rRINp?!TN~xQqWu=c*Ploh zb>@x%=TfQrZ$jyI+f|t zv{-ZDjN=?Hz>NW){oS5L{_&8D&QI^vx^uW)dxEA-tOsv#yhe`K$nm(!5N@y2CwcSx zO=T>^;{9IZcy1odA>dIve~0+!T*}EowGWztp9Z?<)FVG*i)a|s3My>01kr>I7dqUf z-x1CK5FP$G5X~RB7R?WgMn?v&MMqZBFF$Z4IuaQz`>=kL0EWj{+2IOw$QT_yD@5~= z(W_sLkB`G}B|2P>;W-#y`WbX!F!+=MZZw+z*aFB$Zd|S84phoaMaePnt$(#WJIp=^ADjX2R52b7Wn(Bi0TXYuUu&kyf^COItJB z+_9-C(#F=eMZ)bY7Kz90Zg_LErICEBV@rF4HQS;oymn(e7LG^R)^Hn(w?@{sgk#K# z%Z`YpGA2u;4U?H#It5|aBALyYI)=E^jMP4z5z|acu0#%5ZyBMdvzea2K*mV*Wc028 z0cPlNqqiv8o5(RUyIaoy-HH9ZK|N};ht^3%vdUrW`aNNHJSA~&^EF{Z4Tpt|Q__8L_M zkf)51gSQ&OhG49us$eCx6uvE01WvWfXFcSnDITN@=2L<*A6r5Kt*{t4Z?Cu$11@2S zw3|F6D&vB*7hIGMkU<&(cS(70Svm%;NGHMF(o5hT=`^@kdIP*fdK+Ao-Us(dXTeLI zM~&Tl>4mN5F(8%+UqA@5c%uKZrGE_$tv5)qm#qg^#1lIoCaoe4&fJ&C!{zx7!t*1T z_cyR_K+^P*?;)m1mFiEB^WZH_5$7`X4`}mAdqAA)Q5U1vL|U~tx19OBb?8$8kY{^W zK~TwY?Ql<}uE#^zo*4C)fhmG#JA^k0wi+a?D~Ui%6V|AkAYUL;Bdyqj9>p$%X~i^p z);61HMenOn+i0-T{Wyf|K~ac@qv%?7h$Js}T(^timhSjDx<5KM@)-e9E1XMu@m!Rc z@&DsP^NFSq7@GZGQ-PFmjjCm%^$C}g z-!ImjkwX_g*#FS=8Ot-X>JA-I$Ih=fSneBqr>geSvSi@-{qJGU1<7{21lN zJbRvXdFax8b1zCt@}g_zUX&SRqFDKgblqg44B%cnp^_;Ga)Hn&)5t_=$Gz@$e{P&S zowYTWGyY8z%7o_Jsj#n&346+ga-Z9CoG&vIo^^i{()hSj6Ij?^{*1V`)XqTU0(?bA zAG{!3_m_eTv<65>Ws>QEF8mw1`LeKdsEqtZtB{A$h8DN}dH9Y1?H%SuJ|8X?75} zSfI9t%LR~#wf3Yfm7`p8yE2>W5ag%4$)z8%3J?AJG Kv0gBG3I79mWE=JX literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_dquote.o b/42sh/obj/lexer_dquote.o new file mode 100644 index 0000000000000000000000000000000000000000..e0890780374b0fa44e3022b91042d05b02a9bb0f GIT binary patch literal 3744 zcmb7HYm5_B6uvXlnYP<*yX+!wNaZCev;|hO%JS&4h3?XYbssje1ckVMXXeh*mZvv8=iGDd zx!*nap8J@d`{(MvZpH+Ofq`70UKuO|LKzRbLB@NOtjBIRNPSQo9hi(LNJbP@HMMP~ zUAOg)__~hUx>GyHD}+bG-l}AbVuP}Wgi}Qd zDz+@*Vo@FO*?8Gp+A^2pHI#TWc7Y~WT1q?|yi`|LUhAXzm&WJd9pxAgi~%z!yT+GK>6%xJRCX;vOK=`_<3;VyU>3-vAkB6-*j#Z=4q-0{l$#lt*Xh! z;vVNYUWgkv0FTaXE%qM|xeQP1Q8(t1UAu#-mfi=~INnl@w}<0#mH8O!aq1+U^Onu% z7Gn8)qx`(q^I%T$`PSbfK3bP50`}PpO~H=?HNv0fWkSxTW>71rxX=(pB@-@oxKF(^ zG4OMu|MzHOVAr+8Kw&5`Sh$uLTtL5p!ewZe6KAkA0z-8u(SKUtPD8;HO8XIPwD-v#JmKm8dwpLJ8N-3(tL=8ToW1t8LTrHdnj17ILN*PP0g-fxeMcK9kCKM_Ti_&05+t zBDM339;T`2VwfpYV~z3UvCd=%WU{G+wZ~i8+SP51Y*lAVL%fZxXp6@>STf$;ZdYTg z8ZC|Fvz@Cu;;hjY4Y6e_+mo^O1X~kpW9_Z+WlgapvjXEGv5aoARMs$=sb(_}hAq-L z-PF*;rD|k$XpER@(*8{4ad0dn^lVPw6e{ROW|OXUhX_!o_mQ5nbWbYJ%-jo_4t!f0 zT+&e{BMA$^V${1kWu~mLm@rD15vY-+K$S8vFiNP#P83~&6!7_;@h!x5m1Z$1FbU79 zD-73aVQGaFpq9t{O*Kn!DrA|7+|*RVm{MD!x~HS}VxJE{o**L!?-&Rhg0YI4qLF-+ z@NKFg@H(6#zx6HfHpPQog#L6!nBO`^RErbi#d*HP6bvq5wv?p?i9R3%X$QC{?IwfN z5AKrogUixEa78){?v{>#d!%>3z0xu83h6^|pL87DFP#Ffw7xG;VIv<4!kVw3i9z8z z2tgJP_5NV#m%yR*L@D;*3UEa{wBc#eMzw=8_eJt>d9FZsegX6T3HB368ec*BIH}rq z6>>VfrP1Ov=DQAU25FCo(>%T>QEMP=j5w`|`MuUi(B&!Kg%DnlYrT6sgxljGY)_Kv zwP1?iSqI@wgDn9G%PT0tal&HXYREUpw3J57phhi1j7HQ^v!>ZVBYNM0+Ch!g?&lz6 z5AKQfSOQh+DkF)#VHMkkO9-WJ!;$c8NLn|t4}z!^_a(i&FRqE<|KmgbiAEC`3SGeh zQy^uekuG6-e8Q#OMUq}%ijwMd`;(+X7rJ>MGx_7oGynJ|J$mA6f1RKBsT?_beCJa) zC(PF;NB6wyyYXf1?ka!ZM>TW4otF+B-uVgooCW;|qUCpCvSUF{fEIyTL6m?#&;W>1 z55Xw+V?ZdBLo!inxrtiIM2I*^R7CDYTZ4O9NktQ7nVV=M;Kyih@E6=l9!!*P?sX9= zc~P3Vmz9606e}N*(oJ5p1GrZTDw)C{T16DvX=I{p$Gz^CKQ~sM*4pYzj2~!%C@D@t zg&l27*j6P}`Q4s_e2hu(ymo_NhKHRCfyDwn4g9a6hbi1cz{O7iUMFlf zJOyaNp0vGD$Exw09twTBxkTn2`5ushg6yxjF8h>bxu#zB)XSo>QVu|qm4fX4Ojc0! z)yqn~JXYzKCqsJ_hGtpXE4yL1-CU*g$m7v0HOu3aL-G_60x;M*W^9V`> zw7s&REE2s~sSgkrVw$su%e9c0-<;QNsT|;PCYMvVgdjiVeJ=4S#DXw5g{nm=qdXSt cOx?&IHhLiG0oU@*(`r9-Dn8aVy&L`h14dOuSpWb4 literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_great.o b/42sh/obj/lexer_great.o new file mode 100644 index 0000000000000000000000000000000000000000..d0803dfe150ad1d3c3a4a13b065ba932870b4139 GIT binary patch literal 3892 zcmb7HeQX<55`VkvUE5j5cAH-42Oy)Sr3GS#Qc6WbsoS{S1P4N#l-`Nc)^WCp!CeRM zy0jHV2m`7WBwD@%5(t4*1Og;JrJi(m0(!buLgG$$Meqlpo(@nEAijhMAENx`?b~3x zg_ftx%$s>Lzc>5leK`O6{TA1^;PRjlkn}^@PPl>lZU*IXW z=I7&y^w{a~@>5eK%e3>`DZP`v_mIf1S0t1>ZGIkJdF%#W;MV+32)r(Vch4E(@%*Op zg;u=9;yn0xFP$NtyKCx{-@8fRJt7wH?K8x~q2rLP`Tbv<2R}b2(ok8i+fv^`c{{$- zHLLc`MSI*dvwe*bAv)}63C30U_Qnv$OnIw;Q53?%J6 z@7Bidr1Bz|utKN8y7)hs9cWh?wZriy(4(`UNd%G~N1-J|7a`23z3PWZM*T2S@k6FF zKN_`v^!)iynvQ=Wo83H^*kM(iV%bitPWB{w63YrD+*#eLd!Qs&u1H?IoH><3s$}i7 zDjqi{DpuZ27FcT3L1-#pDdsEVsi8{w2CLvYsg*07NoJXdaNN9WvA)d4^k{YjGTT4M za+x7^-8I8~?CR0M^_gL|X*iP}VcASB=XKLp_i>HnwWHUJWLTdk)~7dImCL4c2HTt- zX1SrvhW>Px@w~i@SkZP_zT~*fHA_VZ#}kFJ?OGTT(sYWuEk?|AX?wNPT1CXf&guLSLqonOy(=hE#GL_!1tshBwYbyB*76lqv-Lxo9A;eX^ylc+Mz1Z zxV9)dN1BTrEC(bds_U2QYp~6gWlV{l-HzuZ3D>#Ox;75Z&jiq$k6=KKNpC?&s=R;d9j?C%4s9|?xyLqvYx4fBmytFn zN3p@9mwhtiYD|7WvAiLnL%##;0{cC7TNc)4lIHWH}Z#`+9 z^5Qs)gnQ7ZyGK1Yyapl&3S1vNi@Ko@VTZERUje2`p)C;M0@xKGX=7UkV!pIiAB236 zOzUXI3G^s;DNQq$(Bq%Eo@NX`4t1CY=LY`>q2j7Aa%lryeg%>gH?7dUcjwy|_8p@7 z(Yle(G>BSbEa|PWC(wS655*JBBQP|&k|q40RG5k~>fA>26E5v8k^xA{lKS*&kfcTr zfqQrHoL7!5{rta$d5iA*>fek0qNd*X+bx&=u<#Q5oSxhE>N7`H-WreWc)6qd=!!z( zfm;qD<_*yMAX@$aCZlRx0HQ@70#N~Wfa)MBJp`k@&Sc<55Sg%@o~@}e>eFWMPoqFlv{RBkfS4iH{jp^}NN z{QwA!b{d&z+X=7Vs$UQ*PixI%iHRdd5KYZ5sI+^SNju|GJQ57;6LXvm&x11rbK-=5 zL|Hl-zf0cG?rlHDu7|J8=(J1H57BmTiRJ)FMY~X{j^kI@?6bm3#j$N}YIY!1bt=A= zDqgaB6>G9MyPOoiYjN%H>pwY3zzr_}-X`oeyaX7*mh_y_$D)ag9*T;50x}DGw;mKF zCaICOZ&Y0yP&<0nP_G)(u2MUp$pdOgtEn2ga|TqcS5>roF*u;cwW@j+q%xo`)b^_h zbh`#r9foJscI^%h)d>SdOr9L^oVoxJ=k==R52zQ4IPD4Uw-CrD52}*3Rt{q|zw;Ke z`=3HSN%=F@eG?=;sQXVszd*?QA+bi<-9j!E@?0Sy`1rFzQn6yhM8nT98lP>;Tl7UO gI-}>`s)&c#+$LU3dU?G!)5QM^mOb9&mxqq_GfL20v;Y7A literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_greatand.o b/42sh/obj/lexer_greatand.o new file mode 100644 index 0000000000000000000000000000000000000000..abad67abfdf1c9f77c6dd8f28906cff1678e1d86 GIT binary patch literal 3808 zcmb7GYit`u5T3j9o$Z`syGiN0$f#*4kHl#SD59aQ+qiX7w}d=Oe}E3hz9ug2Ir5!L zfdUnw2rKc% z-0ZirJF~lf|BoO44iZTUfq?>`2^A~>LR$(t#m2L=yF%WFV>|}U*MUh)F*c$ZhGQOd zyuPOor}qq>*8Se6qQiJRZ9GckLI>!u@59nC3g&2a%&?t`Yc`DD>r;c<=3IQ7TX<1u zrsm0cT%OmT!z-2ZuDKB}Tjx!5k{4Is>OB1Ta-*Xa^8m+NAD@r+gupmoyrQ+Y%tIRS zz8A9}7wf%U;zDHi4HrPdqoiiCn%B@3#iLBj<_d z+&Xc_^)40X>v6Gx$IlZFht7p;jPHav5B_@75wY;oq9MQe@_ww-F{;)rMXO*K+1}Hx zMAHHQ98+fM<>ydn?GUH^49&?gMeYHVeFC0#B%<6OH?Qmi~Dw6)hLB zalM-b-X;;u2V%W9oh3frmpB9K-bQoqOF-k|JUs*1&7VO7p!tobVB+=v-!_t|eVv*7 zp)*svi=TUr9B=+4Am**L=!OrE0HJxSMi2Yk}_(CL22 zOaWzT=S*huH7Qejua-VJ^Vsa{Y%TrQw}$J^uA#}_+ha#~F>tRNzV0IrU{hxDt#}>I zXD&SBEXKHRLF7AEXZ&wd>Ay0QZ*<=HdWw&7BAea4GjYJI*u}Dy=g?h>*q`DDpFXjVLKj8)8>ld}pPc}kAh7@f>jin&T5IZ!F@GxLs}>{@S+ zlWAa(?c^MjdehrdBiUidY~M~AN)OQW*ADj5u92Nv(u1^pFr6BvY!x<~x*E&t zMy?%BQ?Dnsq_*xD%BF@gv^zCOLj&opeW@(Dq0I$FMa!XF$#%#wN<|3U6Zx{`nD`{5 zVHa;RiJ9SWrRFL)Laq^dscelUs+L_Gv&=$*0WE$h`C-eC=PKlsZ#FI9d(sw?4>cQE zxCk!e(FJUmI~Pd{q}9<@Rf)#6<=Kuhuu9aFw;BL{~K9f#`s1i?q2( ziSn0=BYmx#a6VL(WMS%SCDOX;)L#j(e>gKP5rH(kTpf+1c-@N@PEgua9beFGN$1?(%3vb5mY@NlhHx(or84Nc zml{iPcM9FR`QK?@yMgn^`^G*~Aa3)=vfelr*U{|%@!|1I3mFWJFIkB+NEK;BF}gYt z<8pPe4Jba&i z>g}#OfR2(LU;Hg$k_7ty+f7nhyz`mg*2vGcsw-rzYd4jNt>N0Io zO`zM>uj(*7t46eY+|ltKRqv_yd_r9c&x?B0i~H5feE&t-H|h$QoBCCGk1A=`$YE?2 zy@_BDRr_%vYaAT(ej(REV$JOjc~Uzn~)NyT_}zf@r0u9K8O6QdOZVw?@g;f{5Qa?oPMDH0Td)lBme*a literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_less.o b/42sh/obj/lexer_less.o new file mode 100644 index 0000000000000000000000000000000000000000..a4204ee6f4ce2ede6ab0ddc4e3b217c91f277d65 GIT binary patch literal 3888 zcmb7H4QyLi6~52U@7azW+ikk^ZyTQ4wPiGM)^$}xLsvI(_ma9>mY=rbM-Rt&ZCqSC z^Ly^HsY63%s8$AA8AF?xgh2fNNK^u;2mzZw1ZfhWu^}WT)FFX73B*7`%GhZ6zWeUW z9Jiz8D(9Sg&OPV5=iYPgyUwrw{kO{zAv9fpfx@7911tkV+Xz~w@m<)J zOtCY+08gbSu8&uopRYJ}wRno@UA5j9RDMG$p$D#;pO06YIVlU=ncsgD-d2V8=^Mn8 z`OOzgop`sY`w-xrzd=0j;rVN>H?Q!XQycio4dUU_NyyIpUQ_oW$nU{KTV?%jM}14R zQ&^{GH>wYntFyLU7-^4)^0K34Bp2ct;PFU)1Lser+=1uJ*~jast{-6AtG@?36yAP? zcR}GPRm6pu3;LA7eXEqK60vi=a|+K^$tD!y)?J-Z@=F3L*Z*_ z%{PZqkF&hiqQnaOQ(@{htUF%X7I=Co6H%e87|uz#R`AhV-X!8faKZ~#jG?p^(NzE`;Q zQnunOICY=f6~}e^OCme%A~IX7my7k;?0CI)(kXdvcK0rKPB?H{aJ{1Eh>`rk+;m|I zvM_pBOyECFC!NuQDH;AH?$* ziG->eF=?mZ?{R|EIC&0t{S#U%D47jO31s>6#1CQ!o z0gvh50`Jn#gU9tBfhY8zf_De6DO_YGfIhN>flx|&1wu1I=jMMW^;f~6&Fy6Fse8fA z(7BJ^O>NC2Vq1*ZoDR2ByD79K z8sCoI0cyRWEoqU64WNG+9>%S)z33XC@P{KeK}4cahDHnQ)6LYP#~@-QF#2i-yM`e) zX#3)aAU{vje$MEi$K16XXFQ3XT;>7J82b{`aSpDH9EC8VxZ#sI3tjmEq*UKorTeeW z7oI-f&H8cQ=(7l7YmcSg8G8lo|M6iwX&u4P_(9h2b5a)u%E(W*KRMaA0osBR5a`(s6iPPWj z>3exsDf9H13y66U^hXf4Ka9n$2i*bs0Ek=10-Of5KrB6k;92Mep|OTEv1ZD|lR*;^ zag*3sbeecHl$R_jOsujp@gUHPLt7!yWbq(bZ{@{9NiUXJdGTb>#9Y;kEH_O&0m_S) zjwXKexr=DbnkF7Q<@LYn7s1YRuVt*y)FmUxsuq+~dt^dr3u!H#h(w=Mv)l~N3(Ew$ zawWK=B9}~mDm2{fA3z~K1mBS0eb=e^cC+$p>k9w--#gO*n3N3NU~(>HDIOT~l9rDEz?}4v82K zrfhmjGZJ0@GUDc#(KBR3hm4eY$moR@8Z)A1(=gFpGiI1WhHicqgJVY8Y#8ey^)X|k zdCqtbx?9GKI1Jx0y3J2Ys9qQtG1nQf$^0&&#*EvBjO}B_`&69yW$CvG$X5>v^?gw3cPRNeNcfviD7j6^Ta|>6iz9L1Y8eS%j nue2Q<`lb$D@cnn{{>yA1S5GFNUjNaw@$Z6Doo#n3LKXi7B{Ew# literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_lessand.o b/42sh/obj/lexer_lessand.o new file mode 100644 index 0000000000000000000000000000000000000000..07ab404a32399640be1f4a1fe18d8617de107533 GIT binary patch literal 3800 zcmb7GU5p!76}~g$8QVKv+u05IZ!m1y2I#JxG(@X*o5smH^=_SXyFY0jsHR?fvg_6v zuRP-=DJ@iNK()3H4gGlmsqlcRO27+6f(I(mAGM+qMYKo}s!;kswUK}p5MrSf%lFOP z*{t1^rdK}ayXVZg-#z!=Z~W&k|BVWvXaWinfh_1y83@XD$SR#5Qx;>vhsW6lCA7gQ zC@DHoEX%XcdOEY&97N@=4|()eBbF>^UwEm4i?r``OcIpeu~}s zg?utS@yUGUg@w9pIps4FLRGx=$yhjsq;8&n)eJhPK7^i2o zoUhiLs%4c%uY?M5QSxP^a~^!WQzo$gWXfH9_PlkviPa4nSXSqKuqycuOTI@XpEQLj z#C%vMhUcwbb9~0`@ea%LdPpYonjG(`kI9eok|wbkOf-|<2Dwk3r|$!Y`57_+*;v>G zh2#IUWv1BvQ*r6fxnld__lxb;N^!aMesTFAf9=*KSeJ^g8cYn;mDCG|R@lMPsz{yB z`p$RTKP!aJJp z`&~eAdvWR2bO+BxpPoEh(e5%tgu$(q@Y{0X!{XA*xqDyA^C)LZrIW`qi+0nkHJr@w zP;Mxf*;}dO{uvz3!5BKQe`wzqgxjoS>-Jf@8EC6+yKdR34pl^U#zo_7xmhbWtJ#TW z<9@s1x!D8z-Faan?yT#TJzI^#7w4pr>9o6{0#h65%#8>{53wP zDTNM2S1&BQ?c3C_=JzxA)E&@FR~D54h`5sAG6h`kFH{~Hu7ZF>)o#Wt(b{HpK$!o6bv>=mr~@%`5Va$;wx|PXk%;F|k3jU@adu}$R8n`ey+_{$QL2EK_(zvfJI0f@(yAE zf_q^L1chrz7nfGLxHIS?BTfQ02i% zp`1-C=|nX4xa?yWB3D*Pv$iJNV~Z!#-&T+I2HQ`FTM(-Xo_0m~AlVD8un&k*b1L;# z75}Q%pB7QC&7StM>mRZ$w;5X5+ReiUMTf^d=Vtx8))m16Ff>o%j<*2s6ZRY40(`@! z48l>zw8^U;2LHoFR1xRS^oy2K^hD1;b<-Hv`$zQHh^`uU>Pc9AMoZrWG)BIur;T}i z8|vD)zTH^TKa1+XxNgGnBRyf9_gkk&baP~5IM_HZ>PPZ%NEvY&#JlA+FT8fC+hw~$Okp3S@>ITJ5|B=-)^qI%;J9&)k)I; literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_number.o b/42sh/obj/lexer_number.o new file mode 100644 index 0000000000000000000000000000000000000000..fe70e8357abe4b3a986d34b73d8b1bf1d26b8770 GIT binary patch literal 4304 zcma)9eQX>@6`$R`y>H)L>?BQ^IGjk*57P5FjuQ+xZZ7d9XXnxw+m}WV*q-m!_NJFT zbGsLkxUQF_vX!S-t2ojv-i9IeE6AB11KNSwEp{3!}}M#9v5*vD&%+*9vqiIx_G5>VOhK&J@AJ1 zzP~|ny369_$Hpr9Ns4!Ad@kN|0%oOnhB;oQDb0945b?b!_FEHqeh2xWyr3-`UnOr& z=+=#R4>r}%L7r3xNbqIxPUH(b#OC;1JP{tdHC}#ds-$aX{se`0!+uL5zFrYb_LlKE zc;&ILUf}H!c$Wm8Q0a`Bbo(S1-(SPzh|T-$6z^+61QUxmvp>E`eDqxSSr`g( zM+$x&=oA9QBUsow-frZzL5sa5AP_3C`4 zzKedf>Xl6GS965-b9%y=b2~lod}R&w>$$o9=tVhGd-FxcT{88Vxmx;9ykARSp8bSH zAEkZ34#4VMJ$G4*UAy`cx2NZ#7yYyU?u$NlJM>qn?p)_Z&+jyP_6kqh?hT#~EPD3v z**t)x<9Q`hr^Pz?fHU*ZTxRwSDO3AxE&cA?{AUXbwe+>C8{vKxC}eiv5F1GkvHK4X_p|$Q zhxVq2*@5A7YLsQuBO^{XbzeW%NPabUcr?xW9kDmH@8C!_HIiXRQp0RyD7|kWm1TT) zVqeTKZI&-tHnX*o0bx0!P&REHLqcknaYkpvG@D+ldL&0VX$eUu5E)5u1kPx7F>mMjT7aO3fymtFBCV3PM%q**67z0| ztdd$$@PKjwJgEEx zJfyr19#-A}Z*lK;#@yAUBfrLg9F_hGA*u4yQ-9|A`{2+fJ1O>P4%{n0{lJ$=_7{+{KKOTtbxLdKL&z?8E34(rEc8!kJ4jn2Z}x|_ zp*KX@T6uGfg#&%)%OG`AU;rWj@*MN6hw%CRgzf(t^}E5ml7Ac`@GY==LDK%<0f=={ zU+6I8_sFz|Ry5F~ok%HK(L|4LdM~XQ_%YN`8f^7_9YXa7Iq`zn{#@f``OO@lvsM8WUq6NrE|&DJa+-D5&u>`sAFW3vDM^=Mkl+38$@9$@*84= zM~%j)>}cErqT`wFBR_~f`5do>1=J~fMNR(Zr&sRy=##g*AGV(~+S?NEcKxBSdV~C< zO1blqCql9C$(IW8^AA1qk4qbF-(j}D{?N`(-@?20xr=SAjvQbrD_phlZ)3JD;Z|#qS)@dur4{ZzIJ9JHU zOcHS8or1d()rdO4*HL)A@88t)~ot^RoQz` z{hYk5O^w3Ta#r<@tG9V4)OKi}A5=rVs&Z8Id1qBG4A8v27=D2dhX!dZj4?us_0sUt zvD+}Vmd`t@#=Mj2I`ox6h*@;)QzwN2UYo~DtULy0X$Haz^1XG1RZX8 z?upBg*h}JV+7~1}eUi42M3ZL6FVW{zvga8JfsADGm`#YXWaXwkaq~VNk|Bq z?|nhYcE~6UZrg@VgUb7jI-Mtt`WKt@{w6)wq%&>Y)(op?Oc?kQKz}N4Pikh_E*cd^ r7qwn-KP_mqIEDZB_Bi+C_dk6{XcIcW)8Xpe@XjZJhJRzaS!C>g?Le)L literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_quote.o b/42sh/obj/lexer_quote.o new file mode 100644 index 0000000000000000000000000000000000000000..79d4cf775ddaa7d38b8a2d735aa82caf2ce1868c GIT binary patch literal 3632 zcmb7Gdu&rx7(e&k-rIJ!Yxh7H4oGo44YYMkTx1{}D|FDo+yl^PE?sxo3gvdRx04Yt zghj(L5<$?vG)5zT7%?$M6W<|`APFXth>3}4Fi|t3M%0*~5a;i^_grYp)02MB^PS)M z&OP5br=S1x>%VTs1c`xxT%aKtEC@oI4!T6nn>4{=cO0TIXpRj`Mid|?nx>ihF4NX+ zyC=4}=bG(k&vJ$EXxgKdjEUrPv3(?*rfL0pUtvJYn>ov+X>FULU8|jL=HTq4MWNlJ z*s_RQu#WBEWwI&DRgNc>L^F1T7FXIzA{@MAUtdliruCQR=it4>G42#EZEVfbkaE0N z`0TIo^)~W-c@^J}Z{H2`%O#BgJ%2sky0Sh0+FQC%F30TPWAc)|<-iz&cH>U_6mF`ZX=l zRy^Vm#|v_2(8n0vDJM~XJmoSxeNfw)!|vJxG_CYLc$4F;I4-xnu4fg!Nmc$ z(0k)!Kg36WiNweDUW|_wCgS6Ti}CTL^cyQ&fOR4MslxU#26ZAndP?9y6M>JF(M$6K zPt6AS`;=jP90=nv1f4+8sR^2NEOzCm2D=YfF${`Wemk}>F%~;Nv3qiI5^>|PEAi2j zk;gxY(m4z!5*s^$!+I{C&KkkyP$U!yE=Xl?c`R;@zz8)phVEO)^0`zvqwmslHrI9* zvZfwNv2br5L&M2jI+^PacjmI&^pu$oH#O!5nXX|(-b|W0Ym2Rp_9l8D6YU+WJJ!iI zZRl!a>w7y|V_j@bS1j7Y60z=XTaB)7vn-Mi_ipHku{K+@Mpv!tPDH!oY-6;Gb$7;A zwMP@o%FE7(r45rMGkKGlS|$yVw?!&zm^!++)bi=wIwPi;RA9**D&KO#&SZ^&V8O_z z2MoPGNPq@CaP%If29r5vX1D7G@NJprlFlMINmvLLqtX3IGilAmglb`~zgCv~RZ6|T zTBt!Oi7r9%tLlU5GSr*2fJy!tbgzdHS|hBiko?p$-`8II5XxGXnaEx3wTvlEC8m20 zMz2s+0C@t80=!cpYzW3GYKvx4D-qjXOW@5o20rUCKSudbF)dv|_3z2yGav1_|MJ~SjG2*r2h>Zao1U!l4ZmHx_*`Qu_}rd%G3E^DTM&JI z7bc_KxEDkpy%R(mFbo<4(bhvSs)eZ_G}=RQ(bjSoRR*~T5huxNJc>$#M_HSSKH6pO zqN(v?R2y^ban|NRrTyknRFo7&+svb=GRQ@_@)>En$wd{wqqe{#R|w<+p;4ugi^`5i z-D>~b`116vt+8PIJQG4mbM{l%-Nl4mRYH}|?K#A!n1RU1--I$b>D&h_>aTiQTvcgT z9}Y2MMMj5R5H9;G!3CNFB&3a0rqGXnLswrFmPz+*HN#gs!i9X!vBK#k%}ZH{CqI%8 zTURY^9qaZF4H9tCLx86V#fFCfJ*Y@K7&^Wgzvp4d$j2ozuYKvkkOG42tN2S+m9=th zi|lEUMP;4rhb1co+5Lg6Kvi30rA3~mydlqoH5-n#vb0|gD5G$$mBqF4RH!qcR>0aX z3(9iQi{%492f}2FABBXy_^2(FgIvzzau$~m6sH{L5`RrtfPi=-wa8@kWj52c@^^~f WJ9>`w9DgY7XG_C>UESy>xc>kJtsT(- literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_sep.o b/42sh/obj/lexer_sep.o new file mode 100644 index 0000000000000000000000000000000000000000..e081e5b5b6966339baf8a63080c1b7d86ea8572c GIT binary patch literal 4032 zcmb7HeQaA-6~E8V_xU+?Y$xfuly1XX+N_&aJN*C!>UMD&w=b^SWpUC~8t`zOm)OI7 z4t_6bS6UQiHn1|JZUck>4I#uIW1F-;K(vz>>_cO05>#TKA|VunU@00}0U;GuHT=$d z_j!)nvT~(!&OPUz`@84fb3fku)qnnWCBT>@Gcb@JG{?c>Ae0TDOJuxGSqQofr>PH$ zrvsA_MahVw>$Y*+cI&P_kvTH)zV6jdQ4lDEN5iTBpxB@+lJJVIPa9M7v$|#19Fwk( z+@Bub=QT4A=cvHzq+r$-U#sfjRjNhD+>ZCxHQtP!P+NOD^)((IUSVpgW-QSB*T(1J zeMi9DC|=o|sZy7AyoR$#j6E&pyFuh7j`b7iyJmc~f;nqgSL1CL`4r)?mpi;#Q(hDA zXrbtY*dCvUC&Ie{yu#dE#n8>dQ3~&>`R)+$r9?Qdd|-SoUUlk0C&BIURR!KAfwy{t zcustCg5o`+UcI#A?!a9avPpe(r0SOuG>M^*WL%; z5O_lZZ;QYaD#P?kUY(?O-YR9&L2RGzd4czo2&M!)D%y48qjiaqL&)6-6nrmeOq{3F zkOS0AHc)G!A&A70Y;F3$`lQzQvsQm+Kx>@3s5RzSw59orT73_TesM4QYD<}m+7blQ z8kuEipdoc}5X~QMX|De)hJGtrm$+3%cI3hnsfzA(|E&~F&1Yjb6KmuI`GL?(sbp-bGgF@ z;|oU3Dp$?;U}7LK5Z_X);GWz%H~=NFb9-Xjoy@8glNIB*QFFO&8FPsuOHNwom@L%F zh1zs-tX6%{DB4zX=XR^a3?2TKU9b%{lG&G@%uPV%Mh~)lW{ll`@AwEiGqp50=p zP-AxWGlmI#S6V{Sl|x1n4uZp|_jJK7IAbxXOWGXi;c_IVY>aeC-N>iUFUgTm=;NVX zNV&X)$&p)dO#KPCc1uGYa)es$2#@yMgWHO8<`bsT9>$cNYt+Cd^xhK+0SKQE2x;r}uud z=0}Zm_%$^6qS9|5B<_2B?kz|EJvg+|T@-tCKe*z1{L?!~>&nwC0_VuXul^B2{R>#| z?_j?J$s0PBA$sNR(A$uk;4QE7^|8>q&^D8Hldn$=QEiyC^}fCs3kL^KzYGt4TW}Yd zLHIpDKQjb6ci(nrEN&7m|5WUi#&?w~B$uvYGk^{vqrD?IcQpKxh+k;G*R54TRQ6xpcI!(%^IzV%1T{qO#|xNhT< z|2VhtEKk1qlan8L??XGxTL%`u9J=)S&d3B?vg#+qoF~%+M)GiUs>Z*4kuyiE$sBdqlyZspZ zCVYL2PP-(%7wH6-Xbg~4Hj9<{X?*oHpA=RpPtDlLWmZw$VxhQ zt;O8SKT#s!<~x9Q340Ci0PNV1t}E(TGI7mAq3=t-j|JU34~iU>c%b87Tv4)F-l>#$ zSjqBrDIQF5RXM<;&;r>M-=NI$Uex0$-k;^+EcZXmeM+5&9^gUcxBMo!hR_Ua5Y5US zN9zGb3djclY;z^WyOe(djLKb6py9&UFs3OEz4sz_dUxa zSp>A(3y5QYAROI+vb-B(+JJqAcNhrrDK05Pz94eJ82u+=>RaiyMs@2ntpMa#U0r!h z$bKPj6B2^_l^+O6pH)#9yh7C$mG!mhbXl~vGkpe+wPl;eF(ir}SG{bO@h&&B>3BFT H^lbkZ_AP~l literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_special.o b/42sh/obj/lexer_special.o new file mode 100644 index 0000000000000000000000000000000000000000..f7b4e7af55fa9c90961aa30c1fcb3b6793eaf006 GIT binary patch literal 3944 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/lexer_word.o b/42sh/obj/lexer_word.o new file mode 100644 index 0000000000000000000000000000000000000000..74ec9aef6efbc1745a7d1bf04ee1590277b1a3a0 GIT binary patch literal 3936 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/mark_job_as_running.o b/42sh/obj/mark_job_as_running.o new file mode 100644 index 0000000000000000000000000000000000000000..15ff8cf5e649e3e42608b3e60e885834c61a4e96 GIT binary patch literal 4452 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 HsG|KBX!NTj literal 0 HcmV?d00001 diff --git a/42sh/obj/parse_great.o b/42sh/obj/parse_great.o new file mode 100644 index 0000000000000000000000000000000000000000..3e1581a19491b501db52f9eb7d49b43ad0b5b1cc GIT binary patch literal 4640 zcmb7Ie{2-T6`sBG?%nzD`TP?H0=O{*sPLUJkf6p+v5V>9P|2k@vC>rA^WEA$INv$D zd&HrbM75}LaTO)4()^c3s6}e4rc&BOic*kE6G23!Qbn!!FR7ZgR0WkrG_pbz_xomN z@%cgu9r?|h_sx56-tN9PGw0ubbmfzf5L!^61J!`0bad??v^zix1V5vFHR??~OB*y_ zhEGANCx~X6t~Kp?V^2OXFmhl?_D4Gy1RDKu+4ti@LqS+Co_2N^3b@rs4ZbkB-{bVftSl zpYQJn%FXTi%N53oG^zG?h#wH`jEdsAif>DU_Z~5I)A;OkVcc>)?XR=yeVtO@SuWyr zH}yA}&d3m}9P8G&nbUp70ig*m=1hKe0(q1dW4A9 zO8*SL4fF`~xv%{WoZA=EWC&E*xCBXkvdXDjj)zm_zoup{52ea8S5xKErBr$Nz0}o;kap=zVkUO;do3r z6$PH4dEkX&)`AYAkR#{Dh^3AR$>cJ!;}Y4loAylPs6-PvvaM{+#*D`u#S0>nFFKZZ ztY~L3DOt&5nTfP5#vB&MxAC02ujCw(ZP%D_{LWppa z7K}xs^oL7B9d!3LQP_zRu4TPPS5_#9(l=f z((1JnWWm65Q;$mdC+HzfoR`vFa1H63mv2Zlf#*i9Qfeq-4${yuaIMk73XoDSP->zi z^htI##>-&FFVTfgqbq>|9pM?U_CRCgIQSx==0JytJdF`IpFj&#BJ&W|P-+cy#3OI{ z(#k+bo2U&%G4lejnzf-;3|a8OM|3V03L9L>*a+Czf-ZC~x<3HY?+9N6YttJe?}Bq- zec8ggT=?(655h#}!or}n;nL3&=>CIAqbW?=He*{P0_aCn*ue+r!00tf_uv6U=oc8q zD6Z67!1QqFH(;BHv_!kX;>MOp5BN1g33@1DRKV*ql9Y}>8l}_)NrV<5_EWVvJO~yy zHbnM=pI}HEseiziHU&CrA`e6AruAkSO)rKfAfq)p1{OBfNe$`$bF{X7>$|v`F%Erw zk_MU~m8JoNX3>2cU}#VHX|T4?{qh~W#<^Ye!goORP#-_y_aL1>e4&26%NuVb)QBzl zYkeuq%F~9NM*y3LdFRgupMNLL#7-+bK?Sr*Tguh8i)jCk4$sLJP&1vO@wC=(1_p(W z%RA3WP-9dM;G9i*}fLE6|@`l5Qr%{17gkn6m$x70rVHphoA@oz7v!L^@D~% z6QFN_SPf7SERR-jG$uA7X1aoyqJ)^WE5Xs2_k>sqd|))@6d|UXGGu-cV#+B)<_sYw zkfXn_gb+6uWytCv#DY=~E1nR`Soz}aLx|gi zf(9WIVu>k;TM8k*d*zGU3nA_}DhTd!gie4I!~!S8oj@6Kry|5oL98r7EHh>JzcMz2 zY-HBaiQjfem!4xEBlojdJF;JB({U}nA{2fWx?JW?(8!1Mw7973h3JdLzZ3XUoqy*$ z4&8uw6`GoMJywTa<4PcH=>{V5xzRBiWnt53=YT`(SydgUi${XK|KzjN3Vxk3{p#vzIsrP_CWUm zy%E4lOus1g*S(>yCorf7M)a0JeY4T4Zv(InKsceV8I(@iJe9RrnO?(h>r2RbX!c;4 zSs77tkG=}PAVlqlfe2nZo`6-4hwco4<4ts40fz6?`!{evz3=iVfxoWsR}}s;aJ-jJ zW***V=e-_oBo)6~@wJMB(VuZfag0ShJJtBVlnPO7sFJxeSI+adZKWKmlJ``}!mPZf unq#A0?j~lajPX((opS-)6Ym3h`e79>0eG literal 0 HcmV?d00001 diff --git a/42sh/obj/parse_greatand.o b/42sh/obj/parse_greatand.o new file mode 100644 index 0000000000000000000000000000000000000000..317a5abc01cad32c686c75246f63e0a0e74be1de GIT binary patch literal 4532 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�P)9xtosJDxcl}BE+y(YncH!4abYl9q zB)n_OYt>z6cUE7^E}S0x`fo;=o2k8f@4G8?(009I*-3357#tW(_2)}CP&RKLgfTF* zbzsXT;ko(rY|iy;H&B*m!_4_*cOWm)m{= ze3A2f;ad~FYumz8y6D?8B42iV+wm>0co;pXET1uva}lf(gk35-Q>lvM6{j4#kRn~l zp7e!VoSOE9=jU8Ip-V|}7cYezUn1^~8eBTWs7FUD_+-_*RP<4es*Qe8w8w5J0xJ5*!p8%0Cn_IMm& zZnO$Im|ai-g%HsWtsxPQlTV0P3w-x<(AbWoY2v3p-o3&>yof9cPJyUQ!)9?aBN1g! zpky6>x|h$35YX;pYHO|952+d=$L9`7`=_X3&Au(IPEf;|zPM~PMvi}TiB?+t8s)c6(EW#0BeIguvJ!do6 zfm8FI(JULGAZKI=?BKI}cKURZp)BJQdLVGA8B3^s>}8ad{GaE;ZxPS%PCBCS3#$nO zTF2Lh-y*~zgkK(Vv*>8^vdX#JAjo0if4{h4as1)MueF_D_uStvZn^k;dBcf6pT71L zJ^kjoZO(?JGebv{%?Do^>woWeFWjcT`F6f@ef3`-&A)%C>FCSnZv5cY`CC32eDr(q z2Tne;_|%27>+`7-^USa~9tuNw3uGtcehA;!5y+1rKZm>uISct4ZXqn3`;_cRBjlBZ=MhXLJedT5Mp4cfy^61 zOeE#SWPpRrA3%(9)x+$siGjJAt5HJ8pxB15KlJ+G4BcS5KsgE zU&NY-Mn)Y*$fC|}GSrkXg0;hU3vDi`C7aFY6KaZU;JNfMSuS5zwTO4fOUtjg zhr5OvQhy7cKV6|m*Go!b{>Vg%?=q+Pbxax4ZzX>>sZ47gqf>(3-?;sZen9GqZwiJZJnb Wpj4ccmh{F;;YAI9U*MW3#Qy+6u7+y> literal 0 HcmV?d00001 diff --git a/42sh/obj/parse_subshell.o b/42sh/obj/parse_subshell.o new file mode 100644 index 0000000000000000000000000000000000000000..02223c9c52e484e420a7eafcdd0c4261bde99e00 GIT binary patch literal 4668 zcmb7IeQXrR6`wnM_x61LIDddmNXSu0VkGQ?K#0|t)TV$Ihe%e66OvLb=exD<;JoMT z?tv3XL`zlW;QYE4Y_6IJ>M-klS&!I3vswE zmcQr$59@f?P~5T#_IP#D0;tqj*2YJMAKE-;73b!l{7~_~M)1%z4>H6nSMt&?iudw7 zYazaDNVEECo<)e48y|P=JzW3%`Gt5dDukQGD>)Mtxgwy_P37`(iqZLncM(1}`#c#OYcUo_>-h5>W>-4Rvv$y0FENkn=dXHWeZyBXD+Js<8nutI3 z%_I9~7p(~wUpH`wo(HDF8&Y_^3QvgwpSu{g$-{grmmG;0UGFmruc9VX1Rl%iC(Mug zBG1B9aA0!sJ)rHd=hmG8FMu=bMnUz3Ly&l$e%dl-*4{M_o*#NG1JBy8%-U0z&06(+ zvo?0loF#SeR~tJ6>GGU(7SdVsEljden6*>qII21O;90XaY#bFz97>zB13~*6>z@xT zX15q-Eq2XA%EN{^y9q7$?Ap7%qL4mw#-il-BIo(Sx5j;BR163(E8cbeW|;ew{(6E$5VqQ z;!3rp6Op-go~SJs4XyX5Qb-`ZP0%2*5G;T|j&;TwT2m?F36X4p?Uqgo14zdv=5DIH z&OjVR=m+PEArrh=tYqAwm;sY@_{az>p$ZkThndT?lcCfdU)Cd<690w#15o3V1lRmyG#hqk$G{SX z&XM#*Q0q%jC03yNGgR6l;~lUbtt0s^I0x3|4Xnw5FF?NoE*b|GI=%G?;yjM(3Oe;p zLqoGiUz6knUj*s*Z~-(uLTMcqAQCU5$z9XCwZ&kXk@z`SKQ#+d17K-=WpV@fKd9;_ z!alTiV*B(gr2~+*QCbB_BrZZUY1(Csf~EC4lH0-g)%3e)|5zyX#+NlFcS2fD?-g=3 zSu|~^^o6N1n4#Y;EhPR@de4O3pW$fwqp;UJI>dBov-20_#cKFZbXG z`-X_ZJ)n7Fm>=rwSd)C?6PrbY%sY-_<2n?`Vc~zhblc&v z#}9w8{oF0D{Qbk#AO5s*+Y5g>ar-Z{?8#f!IJaH?&Dy8a&3lfG^q&9i&+gMs{xRRR zxc1(~{THq_J^kw0JOBCm{(G*hI`B;Dv6prqe*S~gi}RTm_Fo2W3Y)@EUJcp^dIYo! z^c3hjpr3$V2b~7}4Ri^V#Ds4J@w;yTje&}weIRB7OeE$)a1;hMRg83{Vu(`3sO<(v zVcb*2RN#V97*kX+)RZIRiz*JS92qlIF^H5EQv;IBAE+2Ys)vz9V+NZVg$YCzb80y_ z3eOU%c(^D>1{76HD5YY?Q^mMcSUi2G;xVCA%qOatVoJp$g({vj3X8`JRR$_G2~VjQ zq>)Z&m@Aa&_g zw7;TtjA%=tTBG~g(h;p22EWu=MzjTJ>+4~$T}d?Rgzc5oQvF{JyI8)a1w!`w*p8&^d`woF)fqgTI7lZx< zIVF#QW9RxdgX0_a-5bbyR`EL(U!ph|?e#Yl?*->o78bs3>qL3R)yo5sevVt;&vw1M zBO;GRWMNIa=X;3I#Vmg*IPw`0&nT+4d`rup&=ax*-(s-;i=?LV8LA#0{Tr Q_zMfqS!*g+=KnSR2L&U(@c;k- literal 0 HcmV?d00001 diff --git a/42sh/obj/parse_word.o b/42sh/obj/parse_word.o new file mode 100644 index 0000000000000000000000000000000000000000..38004b4f722ebf3e224d1018b3c459c0c17a1660 GIT binary patch literal 4320 zcmb7HZERcB89vwc{cxNQ=c7$ZX=_MZ+O4&dHk1ldmXsE`UM5vt17QQ*I`&QC*0ICA z*Cj0}LaQ_px&hrN`!S@kA5_)ECZu)J(8L4-Z6JPtw5ej!kSc9V)dm}7Xp4qM_dMsG zn>wb9?8xtV&-QkEZST2z z_`scuE+NnNI4Ptr8iB6MBX#9PzH+r7;YPk~OT2~n6(_eeE%6A)mmeQ@oueG@((#3S zPbrS&@|7wRRW@nldrkFzUg>Z%%#BfJKPrL|9tX*W{bd z7vvBd#~1Rc&#?@?{LD<*u`Bs$4)0U*J)y=osD{(>x#J7?s^f>{2W}kS3yN>O;@h`O zJ~_Ube4&x=od&+?W%BvQX0AD3O~vnHYSm9KlMkCtQZ|n7aTOooeAl%ue%G+j@O=x_ zY0T5NYn2B|m7;Br>O@%T}k*z!XV5A4OrTaGv&n;wT z@~-E&fwCW{y2W%sWJUpbnY>%dyT#0Yw|dwq_+DmUn>Qt-zjPF(iZAk>FMNC4cO6G~ zN|$_RS`?}k->LYvS2~UwWVX-GpLY?L5`p{%Fcu@+|uNfFFZf* zlDk|&7ha$gsi^RlDg&=niw=A+3R&_NOWaPVkVtT`}v@WEY;XVmRzS;a#0g# zPw9#%l&hX2xHPDgsurliRNfU6Md9&!qxjV$PKCWn?S+~vptWloT08Y_I=mEM`0d zWju?_d>$EZmq@SmAXF;S5kCoinNU}xSHvGd=|fs8;1d5ON^Rhatc>&~P8;Pt)^g$(!E%95S|4b-N1`nk}SUw{|YZlf)T79sDc^T#qUAwF-RMOZG-w(~N zX52*o1EIAk(i@A9!CKGOo8@RSDBcIiSeYn7S;ji)A^C4$>zT0ijqJ_12mbmIHqZ>| zbQpkHL-q}T=AG7~P(9}Dat+S0Zip;g1G<~T{D|Ly#qpWDxt5D7Vs_xL{OT}gArEhA z>=~H?EVzMx@$Hv?&rm)DA)baX)wiYH*!Bw2|Kr1Jhi7va$&jKD4OdST*Gf!YJBUMI zF$lStc;WC}%D&qn*u%pAR%y-I(fiMSz5UX4&;IG7{*QiKU32EbtLt9SGjCkCy|QNE zwSk9{%}3AYHof=yPj1uS_-&zU_55Ei&%OUi(?dVIxbg2V&fWZR-@}h2zV^(Kv)}#j zt<{CpnYjhaZmBNfaF04@o-TMhm;pLl!7iOFK%PS#nXokc}ysXkw}PJ zOhG(S2yx1a>p2Bkz||ml%F&BKt{`r3Lg$dFhCHbV@pMxVcNQUTGu7~aMXZTvWYnR> z)uaw^(kw|~7;DE52yHg0C7Vs_33#!e>mk;^NOk3kYA?iaYx0|sJ6giOZE5&M#CdpX z+Q+Re$Tju>(XPHVM7cCR;b%&fLb+DNGdffA+|bIDw(s1r6!DIE8F`O;cyOpDb*~US zS3oZxAn7TFMc|7v_M&=dz=#RH7Xpvq$%8U>V%eE>+@KglK8A}FZPWDTCTmzv7&*OT zP`3tA`m){xt9?*62lWW77Fg?yn*IgozMOtbPVdU;kukj^C!IUlG^ekEb53tFtb6nx zAl*5AEs#Ou2N477BgEtA4#VDh3>pL4#ed3xcQHUPg{>pd82#2;0^G=zg(J-mRw|f3_gYM U7Xr^iyYA`8wtP0BJ!r*$0p@3QO8@`> literal 0 HcmV?d00001 diff --git a/42sh/obj/process_cmp_pid.o b/42sh/obj/process_cmp_pid.o new file mode 100644 index 0000000000000000000000000000000000000000..cba88d1e49e21ca292f7c1430e01b14280cced2c GIT binary patch literal 3160 zcma)8T}&KR6uvXNGYmVhETv*A{aLfn77M!zC6!21L20v8G^F;&#OP!gc42YZ-OkJ+ zCEC!$7@ANTVtg=~sEH36`&0==>vv}EU6v^oPIB(~ z*>k^p?m2hv-EUU^__vNRDa0^6Q)gpuJQbQ z%Nykyy^2>TS)MzHx0mCHIoJ8Vg$=nOo;f~lXJ;wj_4x_BH#xvo@$$u7iKYbcuJQaX za5+H52ZbA|b=)vN+bm9IoqO>*=|I%bO|8c8)eZ4xOv_6#n4iECW!xOkESC#eqiD`h zdiU)25uV=>p4KOu=I7&;#;3go2lLBuympRvXN!1Ver3}N;w=U69;)ZSYa&oTKR@?; zdBgpF!0}$>1w6V%JbZK>WH7%5{ym8OUWu$F#}K6AWYheK5xH207kO9FLn!XKYI7B*lGD$QM1t;C{vZ z^fR9n2LMsmee$Ea#3(@b3q#580Qd3uVaVeusznM#b)5hh(;5*w z(n3Z*x?lf*G}5vkkP*e3sPFRxo2SLSo@!pV8(0_b@G~`?77tPN^b3b{W*T8qljMnz z{MOtB&pw9{R{6ST%@K5X9)l8A@QyI`B8CNUXm{NbL|X3DE<>(@<%4p9X;+}#C96wL zXxe+wbb!d+aw4V?=rOXAa$<+}Ei77HPRWT~+IPZA%Za%5gRpw!M7#D2tQ^hjl@kY; zLhuSbt>Jf}sge?duC`%#A9g5S@9inl14m>)3`{u;Ri|mnAZdi6jzRl~ls)S6P;Ww2 zGAhmg5*+SQ&%ygA)X?7W9r{sIXakI8o*l}NA{Y(w$hZCH+1UB;KhzX29mu2~vTiQ9 zf^+YJYVkLVi6DTOZUiE_`6Q-7D)<+pGr}W3NkNn+9f~lRE<1W~&fa+KuUjv*f7N>R zw+~|tvo|VoM=ZVYhW_?wZnygN6Yhh}*?m_0omZ|RmWuWT_~R9+rMogx<<79K@? zBp0=pyB4@>7LvQ@AW;+@503SJ9jHTfsgjuC5&x%zIGJ%^bRdMVTw^I2- z{fF0kob!PYI8p|G_ybojE@~`A7iw~fPKy`itNsk=IBZoNhsnQX;rCw9`s%$CYLb*l yvMk}I1u!dETedoUW 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/process_mark_status.o b/42sh/obj/process_mark_status.o new file mode 100644 index 0000000000000000000000000000000000000000..4a4f743f8fb633557a7eb2177ab0574a1a75a696 GIT binary patch literal 4296 zcmbtXZ){sv6~FJ<@A+?ScV4@~{_v(GU8*&9nv^MIElbvTa!Wg=u35(i_IS3RV`q+^ z_1<%q5Udm&rWw=GPT~s_Y+sQ0C$z%$VG_~?LrfGHh=H_8`_Q4aq|*2Tm1@Sc@;mR{ zmpV>HBXOmB&!2nF@1A?^dH33X{NNuS1sD^23L&7eG|?MCQ>G*JY18M?s(w9>sDd&e%3m_}M8UUQ^Y)Wt-*d3|I8x zc{nkScb0zQy#Mp(!;A5`AzYD zM+xt0KjwMtQf-Q-<#MJzPw}pg&%=9`18fzqTrC>p(u-H5OyOmqyr?ah#+2;EbtwyI+ztU`Ug!t1f zfVCT)Rf5R2GOO8Uhs9TDC+*CYZ2Q=1YqB3)^TKkovmF0=17;9^*$Fl~$@of@yiOnd z0n8nQSLj%>r$2oNikCkLeyW}6Otp_)X-{8i{%yH6{a&{9tEu+%dsD5O`(JQknkK^GRS8CE!(Ko^nzlQXOw~R9>+e+EHj^; zHF86FqiUN*C0#R(ylz=4A>qX%?^K@se=F1HT+!_fYcI`dGmU}5xN<@_=gL)$EOLt! zU{$Lq1BF!B36ec%DEU&kQc!qs&J>%ZOIta5^pRuAylz@$qpFOhhEv1JV7`KvW@u~} zLTdj=YTuqM?lL`X0Vu7RWz8(4A2N+uJ#Sm-{UcV1m8&+}BsUC+rmos_Eodh0E7cR> zGCG0@H;b&sY?UK0YmL+9S-zy1tftu|rZ4FEBFtP`ER?IPSTO1~(`@{p$<=M#*S1=$ zXfv#0RA&@tpvZ*n!ayu3`Ci!!QzYR6sTjNWfDaTKDD?h(nqcBgrh!XxwpOo$6)BuL`f zg(n?(h0MjX_75G2CS~z#=>?Lue;*?Yd<(-j(EWD=z5{Xw-IooJ<#XubUhzjDftN7+ z3|+oG_zRF>X;0`kpee*H-7WU9&>N6ON!ly+1w(H_x{stGu`dy#P@F(gV&AUNyJU$j zrNzG6LYF*gSnN|m6s9w`PweXty$@-TP)5YQK_(KsIEKOZTTIA;I0ZgHSK8YoD`D~! zB03Zi!yA}53pPq_qD>s31XeIyC8tmMJ_3>OEM*^_%tGrt8ANehPIGm#!=Jn5gE=}P zC)c3kj&{8-sd|0s=IX}3kqtd|)Ndw3G9tTGzaT5x#t! z2@44!5e)>-@Re?Z<*QfSWAQ#uHW^DiDIVJ9mJwq|U@NkhVJQgziEYCu&>HAM&#S}I zb<0ebtNBX3pr^~DWB07rSc}#MMOt-#zj7~&ZFW85>B4fZWvWD_v&N&`+?yJDloMUK z;80W!tjpq(bFVIh?TZUiIQ+IG%SWVJ<&qSY4@luhrNGyu1SCJC*bylxAC!Z(B+2K+ z&m^TJOeOiEL;axA-+Q$o`Jx>Bo)nYM!{`98zbpBJJEXgV^O8?KAlD`Fk|fl{5OT-Z z)08>JhN!*}){X)wb}>Z1&PaAL3;8WXOY-ksI`lf1p8+NRSuQ`u=fA*ZI#Xm~=nyFE zyT50iin-e!=d$rf2vhMZMV--Y?+I0l bcuw(Xs#U`-lubr*p@zTxcG2NE3+(>_k6-k^ literal 0 HcmV?d00001 diff --git a/42sh/obj/process_redirect.o b/42sh/obj/process_redirect.o new file mode 100644 index 0000000000000000000000000000000000000000..fe05bc428dd9cc4f278a155faeea1b9bf0376712 GIT binary patch literal 3348 zcma)8U2GIp6uvXNGu?LE-Gx;|EjY=Rzeso6LZDHi6sg&2NeJ?%QOE7UVq#)qLJSy9uvU!V_s!fX+pz^s_T2L` z=Y03vd(YgRZ?0dx(IkWt5*WZ?a8<)#fI;_z=jdF5e%8GQCz%8CZD0y=oKBEwI)!n^ z(>;4{|G~YtY+tKMg?OCSY4s$GV}1;!Y32(<^%1k?*sj|&cOK~5^W=Ppk8@LcLbA^J z03p-{eIBn=v0Qf$&*tVdkjlj^q($*^Lqm39jP)+8&&PXPV%#lWu{>O1N)YdctnaXt z@5uVz_xEp!_1d}eNCBG_#4EBP8tCsxgW;)*uJ=gJa!Xta&)>#7usp7nzMp<7Xx_D-6ftgQC)Ps zze&6oL8(}F5rgafR<3us zEaoKukj^bpANM7}fT*`IEPf^U0^+%@Ymf#cVRnNXiBpglEVwb?Hu}Eo)Gyh|D@Jze z=v;RC=-lKR?IM2MKt}g$cDjFVdc6HI)3ejN=B6jwr~0qC=2ZXhd^$O9DDmSdJpYmf zcnL;Bf-%*9MJ8PC{wh0p!Fb_(A73WLDV#y%a!dd zq1YqQN2BXn2a=ET+%=&}*FX|~OC2H?9aok#FghM zLh5_t6RvGx6yZ7sEv$_~=*)N(99q?M0-{UZ5P28!3RrzuO^L{d(EgycQB6f6A3^(< zR;QXuL_USK)!imFwK8%E7UxqlYN|c*oo{uiDI@Z|Z*{Awj>u224l=JtO|2Ii;k8)| z;ZqoNMN{!iZ^Q60?2ysyuA(IcM@y$a2yH#oDATkaYDCd@Ks!TawZ04L44-Co=AQ?L zH|iF=zd{W?6n3YLU`LUec0d@+%MD8s2WF1{b^dV2#TBP7f0k$+o2jd7 z5?#mMik=!AUZr2!;oP^Zu+}m@cve{sGK$=LBs2HQ-+G(_n5Sgy8)v_Dd?ET` zi8s|J+WgPW7-Cg%7LkhbPpl22!a2Z-f0yDev`Y0n?x#$>W@n_8DQ@cBvd~kT2!z0q zG36IS@P@^Oj7fNJrbpQ)ZkVTfDbUeo^LiM%dzr$|b`s5OE|)@aMblfp&|>;i8h#P| zgcgMiZPS|dXSG&O)%7!4+z&XrNPwzeRCTO>{%z{q2Xsu*xd{^PPVOn~t)8uCq+BcI oYAGQYub-0=x`=a-#2#!g#RCBw3l02x3DYW7Y6W5D>(w6dA3`bH8~^|S literal 0 HcmV?d00001 diff --git a/42sh/obj/process_reset.o b/42sh/obj/process_reset.o new file mode 100644 index 0000000000000000000000000000000000000000..0576bb5fde233abfbb10f8deeb4677622c5100b3 GIT binary patch literal 5896 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 b!C~PYGec#FGiOl9zceuD`gqOp8+GwNNoae) literal 0 HcmV?d00001 diff --git a/42sh/obj/process_setexec.o b/42sh/obj/process_setexec.o new file mode 100644 index 0000000000000000000000000000000000000000..b1678ef84af1500126aa04f8e2f02b7de2ba38b0 GIT binary patch literal 4136 zcma)9U2GIp6uvXNcRKBEw_8dJD#exZC$hVxRBfaxl^>@F2|?sXqm$`&yWP6%t~;|8 z4NcG@&{Px95aWZ<7bPJkV!{&|HE3*9j6V-P=!-GIv<8zVnn09@-??+A?hY+*v*(_B z&OPUwbMLwL%4dZk13VlN& z!T$Jum3T`f-npB^6Y&+Tlpjx%2ie2>?I!V@=Zdqgca_8&ksDYiE}0D0Wxjm4>%}D& zkpB2iYOa$P-;r6qpGv)O#VX>Q$E>G7S!i%I2a;L(xn#QBpU`|#3( z=0FMAbshZmU|Qm>mw4YvJSkF*8T7`)z4M&Q<^`gEz3uY;pOV2u>s{~eIpU*z5w$Sn zCXRw%2-*mHy854k_k&X!wu34gJ%Z@kl2d6l`}i?q?1C|RF=mX7OdDh6N#li)X}ZA; zFRg=vF)ogQF}`im80(1|A<@~9SaT<{OQ~dfe>#;cmI|q~ zZJTx)FVJ)BJkFBU}B&@n@3kDJIr=0 zr))FJ!Hc@D?4S-g=0MKMFr`sh7HQ&vNL0Hm(x}YCE~*JA=PB#!0+IVd>q0BSy-g3& z73EBos@^7?+odcJc_0+RE#WP!x5+hTOlyFE3(}+nBB2lg;8xYcwzr9dF5J1=W~H}j z1t9CVunjF2j2)zhQ?8g!$z)-+ni$%{E)%`?IWbdnJcY80%D>W}3=s>c$BWMj`5E+( z29FDA6g>;ldxr=40WczUL6G!Z*Nzf<4INRiwdPH*_Q0L`N$@bD3f!f(G5vi=jU=sB z+jRX5q*jvRYFku42WdA+3AJsZegP826G*CUi}c?;saA3yw+#0oQseTF4e)8*3 z+g37-;I$TX!Bd#f6m1E{JdW-xzc6m{FYj%fylA#&4p(1=iYAG$B#RI`}x z!|*)e8Jzro2JzKm8&u2$Z^uo1w1+T6l_QQciRS9u(%qTQoTb!={RU6CCRM(q^7~#z ztHi&N4OL*G`DBO|04YoZ=ct=BK|NJXJb6&-IB|Il^{RJ&Sx+Q-Slv+Xo-xMWg{|stlk!ibo+)T>11Vlf zMo~@W%Ka#3$+BHaN-3FL+jUR1#(vIc0!32PVeF=_QlqZp8AYpv+MXDsiX^JN7>N%q zSLu3Vj8i!?4q`0IF!bVmUOQ8!0u2fe)&0pe?L{8YzT#nR3-}|v5qyF6A-|P)H?QyJ zfjvC5g{zobvKLcZcz6$Q-oiuVml5`Xv%Fb*i!a1nb2krlAG>M9n#cJq+K+sRwvMmZ z%U1zlMK^DO6h>I{5Do8nS-_9Qzc13LG~!ZpisNSr7Ri#qZf~rciNfno>NgCAB@0+<} z>;(!}KKDHCIo~~V=bk%v{q84!|8GzT#V62#{GhWMx;O}JHYiE`4sBJ9J8)V0cseiz zNtbbkVQ2Q+QUNoJCwq52c~keKD^egHb7^T1B0`&A93u0YVVIU(&K0uKP>tu|?3Uv{ z3wV((S7)loC!Oi9WDS5iBZjeQ=f-W1PI;~6;-LLi^0|DtnQaE7hnFv!j#o8aI~ROf z)56mfSG+A=s=vRS8Rq)U%+JGnPr}?QUal}uWJooh&c#QI$UG-yeuH=)a_F}Cl~aXm z#<~@6PStvSBKM6ui__m0ZzyFtDOTs_;mOw_?v9r#mGT**kQ!oow>)pF%x|qs==xpr zbMcD(dz}|to!?H0w@~7(s+Gb`R`tBo@++mxYP^vuyxsSRXCElt_IbY{@m`l%JbRCL zC}Ib)I=^10NQLm8x7{oJJ3g;j9Kv(jMy2qjTp?{3eVcB&3Q>}HacSHNJZ{A!*nje! zSFK-W&=@G=?YaTg=fQD_w?X2SB%V}7RER-OCZDR`T){!Ce%^}`FDsKdC7<{B9rEM4 zI4)5)kjb}zUWR{&a-$GwaO5Gjf~Gf4L6Wa*`p{kF?aA@KB*)(GN{)|yd`euUe{$^X zevqCV@11lECn8*vF#oxs}8?w(cC5 zV?4w6l03Ge4EEzzbeo*`?US1(w)m6d=j62Gy;lj9oY)Xbj$Kxh#5zo@GqcdW$p;*N z%K_}Zk({VZP7EWs_p&<$UAjLU@BM?L!hW&)Y;x@9U0*yuk}C|4jvUD3N86WmTk(

|XMJaT41t zgeOwvT&kQ-Y%Le}W=z{kEMH~~id?}K)l-X-unlPx)|8YQ7Up28EJ`VRP%!5KxVgNP zOAC-;bKj=QC@8~IF+tBV3=E`m1$4!VEi5}_S1ggT@d53x*f<|-V<4Z(ihQw`Aa8D@vKkdw)2wW6 zZgz~)}SC-h{gqoT?OzarX7v0=h+fKvAPFmh!rPl z#8NV}q|2QCij>tJ2tLKXhPuY{N%K!#q&z2O#~=n2U7?o}R8Q^zl0r}=d4uf^6OQJ7;H^X0jNNp3*uR)tbZK>K8iqd@%wGOpS zj}mPUwNACICHf9DBC83tZEp0}p4O$d#iN%zty^td82uBpFEehL+O}Az4*Y!R+KU(n zDC$Fy!z{oeoJbgKPjFte4xE9(`CJC>Ny&Xbmc4R47OQ<2*1HJ<0P!r+TKwC+znSf72dxF|5 z0E$?6BjhA(;rqjV5I+ae{{_te3x-r;*Ns9>Mxu&-7{c4IL~0b^>Rz*2e zs_USRY4RJ_L`O7!QWX&Z*KpnDsGFxBoYw%}#%blPEe7J%0yhcK3^L;{9sI$2 z+w~s*psv>ppANk9u>Hr#O9#*ITlmW#U0(FT&eP9*bmTjs-@p3pxBq?N>0f;7rw3PD z?>clO`eNU}y!+}iiz;fne&NlgO}{alT2EfP*lHim&71Y=)$jYUFx+UL0<8mW1(_gj zw{g%bpzndsfqo0R3c3!8;dLwkEeCxT^b}|abO>}3#FB%XU?K6EgvQrH6N>^T85?VZ zCKd}<3XSDM6Dvvvvc_m)PST4zfhO({X?jh1vC5^1JDOhH=+eZ}rHK_SP2A)(vASel z++Z|u)5#>b!)W5xm4U1jnz&`9R~jl!tZ-@Ku|N|~CK)&)O*|^4iKh#__T2Ph70|@G zlU}THnpm7NRql40Smx4;M*>YeBczFkFikvYy})Ue0_%+39>gx?Zl`@(yW+|On$f%s zt~|3%DEoCquL*{Z!;3307qsH=BK7g(#+ZqZ_}HbQK{z}m0CdO-`QiN?S+ zh@l6xriwNj0lu|?e`@L_HGoAGzrrNQrsEtq4xEltQhy#CS#<1kd9wkI=j?b&>RZ5( zct;!@Id|~lf`#gM%;kYcBwr-?{gQ*xFW_7j!0Vyc!Qiz{2-8&YXqC>f>Eqj~bmljG ze0`PPR;3GL0C!y6w2ea1PUp&adsRCC@78pFT9iuymu@?SH&@8!Gj_4SmzXW2@(xJ4 Xgnv`n1H#DScL=V}{DtA%qs9LKkPi14 literal 0 HcmV?d00001 diff --git a/42sh/obj/put_job_in_background.o b/42sh/obj/put_job_in_background.o new file mode 100644 index 0000000000000000000000000000000000000000..5405492390abcf6cfa62257a59c3eddebee6e3f7 GIT binary patch literal 4068 zcmb7HYm6J!6}~g}jK@2EWp@)2(jA^ad3?6G%ug4Z@P z<0YU(0ulwnONF*Sid3nJDuF6hLOfJ{6cp4-C<4Tyh#v@q;0F;^TMevIrom={PMrwri4%u0uv|+I;>$Tf-shW%GA#=s_F2-2hu0ffhkA@ z8E093eYYPYjQ_>K}i*OJgj8R<* zlBvBa@~PFUohb{T!4u2cxMO1LwOubuN-y$9!nity2U8DZgx6@PV&d< z9X%cqUZq-f>$Cj*dh?6$UX~bVi{~^aTMUWgy)ECqT=Ex;5coFypxhUX1@m(&&8fQg zL%icMC=3;1t}l|hd_laKiXEgF&o9E0+i@0nm3F&Px0;n1ruT#Oek$|3Ql|6PkLDNR zwW_;<4UXqGEc;=##LJr9bw)yLz4P*GSL`_6uVZ-Y&JxeRyS?CgI}&e9X0iP&@zBHp zWIVs8Wc^0#eIOexv&&=awOcb-r*CzdcR9_PWo_Qr^@K1d@ru&;4Dfgk>_Pp>J&)nl zr>#jByBh|?&x7LSr|%}qCMTPr5mRK?AkZ@Hm3TX#LD)hv#WjE;;J*Vql51jFN_P)05t8(Ftjc&=UA z)v6BLt)}m`8l`r}x1d{2)2deNJEq)Lr&$}ZMQOVSs8YpsDsHW`#cl1X+rC%2bj+I; z3&sei=?fr<08e;C6;4gGr#Lw^%jb4hT-2ErsR&s=h6fcNw@9_)qe*;gvQe25jaGB2 z7)*qnbX?E3+HT9Pdvs|yo{u*Kj0>s5M{>(^?x_n-^Is_S0I<{aoT+BLRwQzh_n|-2 zs`1rzcgAUX!nT|s2j3A#5i)l|++~Do(Pa=8kdc7usIYbH# z%vLCilnZhLS|V4_m**BK{U|SW1jc@4Lti3yxp{^8)6AxUt5FIGO{mhe2_=(UEfTq_ zOcQmg!8sg(?!CwtfCM- zcOK9$16ZCfHqEQpAiV6tW-x;G%ZN)@qZsqQD55s%woPPEZfV0+$t%0a66)i-9}4t4 zF+=m81E`YcLy~)a7 zDtQ!4Gc>MTAHehp^whG{=U_`y{l+)o*TS3{WJVgK>!>Ye4p%^`QCor>L|WepnOkqH z)OUg{10`-tt_4dO8nOErTTYvbc@u>9KV1K^cIL&;et9EcJNoX^j8Jhu_9LMh6Lo z!Gm5AI=F_9C{}W4V^+kbe;~=RZC5+84k5Y;O7ceZSxH!Uq?Avg7&vCkvU` z=idVsOGU*Gu^6-l#Co_9Q~~**2S87P{t7w_Itn@l`T~@}&%X-9I)f@$9_UXF!qQ}5 zT0%ouwluMtrHL&=(|sTr$Y!Ex79_n`a5S+wq}KuI#deUN7pxC@u_9$4tCl8~kMueu z1KE<&i#>a;@ur{fuUrD zAEphbI_XET9y;<2-voF+KNaMs!^kvuCWL^Dw(81B$iW>CJ8qHSEunkE^C4iJ!98tJ zp+k7{LO~>s5a5O*kykXm@0fnQmeY@DS@6`A+W9``Bn+!}XzHx06~6Dyy!qMLotgciY$Kmg%tA z-t4*Oo^#Lr?z#7#bLYN&>Akn!j|!oL1S(J%^pu7w145Y(%2ED^a=hK|I4o@f8JL2U zmg98YHFvpE0MqrYBipuqAP22q&>{j*}TT|wg{$N;bG7<1x%j*Dw5 z`L-s(Z_bIA9~-NhJL&Jq{snk{mN2J_XW8QphqU6|B+v7U(u;KoANbL3|6Cx=>0dQ( z7tPv-@&4Yj|Ic>#cun=3coTWUbFtOG08bu=I5l3rQYo9dou8n4A6oA}q<`zAL(iSk zKOfH-+utA808A4`J;CWFQ-Z&`1Xf0ew^iZ|SXxAZje+*>PiuD2xd%F>J6Y2qP? zJ;+x74$1fp*1IoA{MqHU#*5)hV4bdBw{NlRg062F{=ig-8HtyX%2$EMJL*NmpFH!H z{WDAYconDX4`{s)dS(1>ka#l^Pl^KFrJzkdo4=OrA-1k}o5cIRbY^X*Kl;!|_{V+m zwj|*%jL!FhUV}Zi{;?h*9t9`twV>w0DM%j<$!4p$+oQS0>$$0aRdS8VnMVESPs9=0 z<+NS^<{BeMrY4Vy)SbVF?#X$m_H&-b^PbVF6S?X7%=FGM><)XHshJb0yVi63y_f8R zrH|DZdDUw?$@9tGyJkIle#JX`cv|G9M`nhnbK%_d=&N$>#>gRWs@(J%*!UR!RJp0= zdmEE4Phb6Vu2DbG_#Flvz}!!H=ucpy#HxeP&78M6+<2)m@|g5Vr0(U95PZr7KK+x( zP^1Dy;M*GdwuGI)8J<>ijc0-_fnxfi#>jquQBvCHuWYWZ89g#xjlsP~J}{9>YK%PW z>A0%VncUPfy}8C8Vfi(weF9FoK+t!8<$ zfAy+bX7`v=p4>fFu21%7hYGt*$CxyndbwaPcQchbsOlJIt(LLujN#aB)hQ2T%xcwk zF6p<<&s2(50S#|ho2XTd!5z+6RvHdsybf8nY<=9Rn#HP9w+jP?__S3nXU@HT)0LNB z^NFo1#Hl?hI<}q9+>*E441hAg%rwutk=Ji#%a$9i&g?X+HOsLxYX?>itjwHil<}L9 zUAq#(zy+%ZR;@T~9|uQkfEvtKt$ejGcx~0$VH$32@PgH~lCW%7%(*rJ&xE&TQRB*m zRS?`FQLzfT%f!!DaU#%2&PFd6N^VRx!%g;qR9rSIVuc zmCSNk_jb>ySF2c}j*axS(qW}j=}&fRp=3I;Ala#OA@`BI)K?xfVG_VtSRF?8+)X^Y|tw2z<}&czA*OHk`f9ogl&wcA!d?ahq!`bC&abM9|d9;#0?@v>l;DwsFF^>tn(aHJtDOLY?AtzqJ17b zrgYs;7WGE#WlvmDFCy>=s>h*-ENFWUY@50)@dCKF{pWI9{s754s1@9n!;ri~{FvI; zo_G_IcQog5ld$~jH}aRydn1q|SG?lu{1_{}w&NJ1(+e-~%Y2iQ#!}Tf_5?~Z{;6#E zy6KTbTfPYt5dqim3CFBKNP(yigOFk(28x3?mdS}vKH=VDE&OZSS8l&?-<|IsySudT z;QpTBpT0So-t$Q8Pv8CF3;!7km(uC>o%`x)fBF@pXTibG{N~}GA71wMmLDrSX*=jBEfLsqJIHBiOtMh@h~K^5;4sbVfr#q^L)F#D0~(_41D3#(oI4syIpn zXqJoAGEHb2AJfD~e@vqi6oSx1#E^>EG%AKr5faLuK?_Bc@v&+fgy*^U z+~9Z}3r9Kcd!F~a=Q-~^-_9@I`SZVnLTI{xK=vcgNQfvh(mLduG=4z(SB+b7mTizc z3{Jt^KqHcA+SXCqExUMs;=um@Vy`sGAdtw%ZqI_Cjt0LtN#!Ne9Jj`blV-urJ0{cY zc_==#*Q*vD&sP-R+kvGjui*0v)E-|ZmvYS2d^!iHB0U|d0B-S?e95t~ymgrT%j5I- zzOHCi%9qYg}>i9f9H61J9OU}$>EHj&&W_a)W-tVjUx>QJeKQumRD7pb z$mhg2lT20ftx@aEd?79t1bNP7?RearU zwYZ@86y%vO<&~+I_HR1tFjjx>LB;n~wE%CZ?``~m_&6@8!r@a(=>*>j-3lWubI@m@ zISqrzm5E(2t1Vbr^`Yevqx7aRd;OqMb{3@Z#evt1((xNcsd)8L;x!Q!!YCJS80B3? z>2;&@ldB{&N{Izy_NHifVl}!o%0%;xuwF4{k6(eglTKy8G8Ek}16?*wb&{{)N%nND zrNT$GzV`Cs;-b@Twi9k)cw9=n2ixMc?>gQ)Al?2*+#Le*g^GS$%Xy=G{E8cA8P&7% z8ouDXQM#mJ_jFk_tst40Z2$8R`Q_xzGYG@o}M0_7Bx z65qJSl@7>Q%Zc}l*`FT#>??5|F46w}(Shh;D_=@M zXuoH(DCASIjCIt?$MV*AF=d%!hl)AdDzv9WY@~qJv1C4-%#X(g^SMW?lwF8z?E93C-#Z|N6NBQR2ZwsZ10w^w6GP(up+tPY=uZp}yT$keJr1J& z^vHwz6QajeyW@NI4fn@~4KW%Y62pUuJ-zXMVVidDQ7bD7N^`r@NR`QDC!>x?XKgW_ zw38w=mCTDm`f*FpwET-iGE=b8Hj{=bxGI&)+7>*OHl3yvrp-;4%;Pk0jKEG$#cUxx znYG5FPu65geJlxxSAJ%uR6h37lbKUl3Fzh^L8gP!eM_Gs~OoYW2Dx~{eC;crpg#%e*Uvyo{Y#Jm{mYO+{dvfcejc($e+jZyzX(~U z{}?i?zXBN%ex5+`Ifz%0wY`Bipjx$E!QVo^PE)sUqX_;3r3Iq6Z(}I9h|+bU-M)>D zLjDHD1;VD#AE0E&|0Y!E9f*Jy^5YYwf9W9ezDgVAxBD72hp5(fZf326Uw{Ofns!hG z!&K)xckmF=s&7LA9XLYNL{Ff>&k;43(Hl_zDWVpV0(Cz@w0eO^KR0*cDZ(`hUN~`v zaIJ#pPdr1|N+|s7%KsvS`~k!UWPM#=BUG#26ucYyk2JM#Y&uZ-6VYmp%@j%@M6Ivk z*o5Ujf$u|>cSsH9y(s!W6B>mIhWzCAI~@vRIBozrr#^KUnaQ=eSNDl;&Xl*n#*w4_ zZ*)MaY)f3-mgnvN+IO%JL4y?yJ+r|NG0Z2RXM!-v1u-1e)ERP>o+b7;fm z_&emkB6A6Gb#UBwA`c>`kPjo5kU2g06P&L#&`2C-nmGK*#Mz^XgN~ia#EGGa)2FQp(xh}`eZ|wjJzlVr)6zmO0I$-*eCVCK3V^gi~zNC$=WU%f}sT{WJ?*Cl#z#J z7^oQ)bWX?`6E03uKdRS-VloPNcb5$J$#rPk3iOdKxfx`ApxuW?eR6Z)Vc7xw$v(Nh zPu854!P9ar>Ndc(sZX}U2Fe3V{+e$w?Si6+9J@H%eKG67sWO%SPWg;6=?eNs-XW?XpCMP_j?GK z&mT5b?E;$=zC&p!r~W%ibDcGyftOgUfZ|jY-d2UV9xMHKRbl>WudMH_!lPAqq6!NW zzelE%_#rZB*}0-UQ^a#*`AQS!gw6jCj9K;(3lAhhth;e5wiC2L<)^gOuy44;IcR|l zOhJlKiDuibbK3RCzWhvj>X|J$7`@6M(1^!npN|UBPDMzZBMX{s=bh==tX*|0p31f- zo*O^*bYK<%PD0`JGnnS4Zx;i+;zG_-x8l9t=S*Q9*ykE5B{HYEfe_MY?y!mX- z3$Zo608fP{?v9r&my3>F%FZ*qPwe+i72lW&XyUH%`FIP{$Grr%#&=8MJ*4o?-6NhC zUpbp=#p_e|A;5d>9`W3l%6HuFsKQ%R2e@*Nc(`;PWNUnHnf^wD_|lzf<6EpHzqy5Z z?9;VtrBj7c-nI`U6>b|BF-X(>n zL=h2UE*O&s_pMkcd5Eq1O)0#KDws93-_=ivkLMC6aKt}o2EPOJXZRCp0uNiBX3$a4 z_QoYh>PWVm?mC{d>Nl*Vn<=Z|CEWV%krk`Hc+0BSK3Gn#2;6F`QM+X|4p{ZyTlM!o zAfQ!GU$>SvMC_FjENe9&HBxbCuPvun8HlyCcn#L?aM(y+vl^VThT)p^tx;me&SP7m zkzQT8s@2o0>ks;#o*AbQJI^QBGjGxiK`bq5rh;TtDMYW%yeGE<+b$*oZe3wh*AzI0DditMOvksxSK| z5G?yByy3iv)xH+?S62J2UA5}JvFg9Y?5o}!EXuQ4XErhB#76ofYw7*eH-A0OwQuuw{j4h;_tC%%v?;=vpo9fmM8vTx{-FN$gO0LLf z-K@yXWhXSs!v>%dWQ+ndSGc6n2>6eY;BB;pIQOBm6Ey%a`qr_6^S9*9KX);0vZ9xc`3&-;Am!QQW+EW%Rg zN=4-MktVUj`?5I4m6*m_!1e~)~A5D{V|~Lhru|2ZW^RL9XbxSLpvb(4e=sX zDSeNS7cp9*G_LOn%O7I&JxX8I_r!(48a+j^$2TpWE#)iWvU| zI=S08h2h^Z3_Wk&1ZxZH#KwL5`nbhGK**ifeA#~mZ}k4`22;axpq{77wtX(;*13Ea z{vRK{$D}@jq476J!%J)kiD!fse|_SzaLDPyhm2!3M$88Nz z5*u?$6*I4}SS3`kY?O)@geu+{HPO2|5P6rB*Z)dT8xEg`3h(VreV-G%sRen{UOpzY z({U}{*%rP8FK*-k(De<1ZEgnN_hLL6e^q~~EBLLw0AJm&GVQ}?m(b8K4Wt!HxneDk zudCZHwkQ^+XWZm%L$X$_1X8lFfAlfYq^Z7CO?oeM6wHKFSI&GHj?T z-yP!+#{L5gfyEZmac9B3X2dipJHoHa2WoP_%*fc7?7AY&Z_9RbPR5~V%V2m&8a3JZ zhU|u-V@!sj=)*AV$_{f@O7oKJGQS~rLe=G~qJM)^29{ZXCuNMz8B9MU@5eBdk%noU zyduL!=ag(Sr(_6@k#}SdjO}AE9`dF;`#T zaa2#LH^cmqZ#VZUzFToH&NJUo9AgnQ z~RPCM=?2S4{Tp*Zm8wOE)zb?_U&hM)h#ujHAEV-g)ot>@JTb%VT6H#n{L0DY~Mp9v04CHopW_EXAc4jj7 zP79=~D@zU2Eh*TdM5EQjq-d;|v>F7JZTbL7lp2jC{)MrvOG5)es%UBP_dEC8VP-bJss-mU9D;MTb3(;n&!GSo7db@99QG2hN;Hj+*KFTOr`rvgC>HMYT!M%=7G;w zOzu|BN0j4()xeHbH9X>R@Ur>jw0NhufK}ykph|GqY4H;M{l)Yna=bP1xp)%_=1%c4 zxq&=g>c{&vE+)!s73Z;_BM;3GBJ8l!##c<_2GdxWdc1FOb5)hs)cRDZro|ghBxQ&n zh3Bs0?eP+YLN;yY62lB{N_^i|@tsitoxW{+4qm>0hg{(L_)N7w7Ad@^nyNC0##}evWPTXq zw9QiP(M&F7nj6aK7tiwwWnFB?vuH#UjU;H6Qe_Y|MM53!c zf@mI6O_Eg3Zzd-Z>&H8x@cyOd?}|#ClZa2LYU1O($SDaq17l-5>J`{?t4+)l;?JOj z-Gs`*akA2u>ALO+L38`ErMLW6@7SeCZ+YZ;xpb{}eB}Cg>DnY6YxuEOBHLeXULd5s zV>>o-O*B7__+Z&{ecV6xw@6u@ii=C3ldby}lDqFFifG=4AyiB+m;I-W8`Ps*m^J$|ww1O!lcH;j1^=!@F_S2! zx;7Q_JJLzp>RNWMH6+qjQe<+ru+mv51>Ed>eh^97@vc(P@>cUL`+-a@10eP;Y*P}; zAqt{UL{_myawt(mSA`PTY^KnkM=+w0w}h41lNKc_of64X(E^4fmP3+xAPZz86C4R7 z%T6SB%DyZF4h={$pR>~#hoYtg<-@f3-cJq;xHBzlbyQ`_q@H9od9ZfA-D^_0bgtApz9rQGPI`o;)-PjYJWx~_6 zzKx=e^wMAmUA3;qb<9|V*84*tq!w?z?`Prdt5>dXquRf$1|`re2o{_L;`EGU)uwrx zLLv5xTR~$bh?NMUu^C%Wv?0ejdC<>Ii>t#uBq-}0BA=DZU$;^|si@ZXI5@3Y^DqhT zA>R`4xOck-{m`zT$@VV+9FlziRBNW4Ffx2J=m#mF%#r=0x$kL6+FZ>u3@Rb#2Ry%4 zulow*+#1Na5>j26g@_XnMeDQqT%u_eza=$(OQfGKs`_@vsrCJcew~`^9=-)Rj86Lc z^+VZ197Z=AAq_EdZK*^GYz7}R@pyraEuj-2oAignFM-lR@7H4@e1;sRT~F#Uf0(Zo zDW&vSB>Y!bO6#%q@SBjN-+&&AhM7a8G^ocGh2M3hAw9Mv?9P^+(PQ_7ucEDqJ?zk9 z-C;)f6-qnx*y?Zr(gdZf9_tkWA6VlY?7doW4)}kA^|XgR1c`X&hYeV>PfwJQbC*cz zV|uJ19CD?F90xbQY>Vl!un3sI3huyT0rU-XLW@D#8(PD0(CLe~*hOV~XcQ#si&T2?wO04y zYjb;P!N&I?f=GBjJfwsO+C_j^$jM(`(+jrxUz?o04o6&9{K+3!+7k^3F=_fonw4rM-N9E{%`>z&v%0+*Gy4i=7`^Wnh^G~jYX zJQlW*5|i^pJ6@0csJvjYjfK~#UtCyx*?uxJ@BAM_XaAI((ed87)VzuD%)Hr$TSmG^ z_lGt=*W9rH`egL*V^3dwz2i5JEr0(N_`QMp4(bP}5p)zoU4hD7vJEwlx)=2@>QPkc z@e|xsyeyz_Yf{C%s#M%ZRB>Y|6?ZOG+;B*-EIcGs@r)@eo_MO50+ebLELGf7%8^-* zDjt+Ys3<&XRPpdBs}oAaOrlggp|s+0RgOFvRPp?%9(gpV;%QM<|8IGHSUN5PJXDE0 zlo&O|&HURO?UZ&mjh8>7J*qs^#+~BtZYXWf147#s(IR1={~)Y5h`FfeuQAS>H&uK> ztZ9mTLtoqI=6u?%L%pEvRGib=WntI;o`a|2o!0Id*o`VX_rTTndlfP2;w&sR?fs@k zJT;CDRja>;;lh*5mQwiK%Vzoq?5>K~RkDh%)Rp<<$`ztUW9_!OO!b{ueU(EW1GZUA zCvZi{r8|ds(4gRr$q}-a4F*Tg@dn=j-nsZdK+Z~4OeDVJhO7!Cr+AiVMkM%_G0VHb z&{r94-mS(Qht^2x34;j8yfEzUQlZJPzvY&O*mH45#J38lbOSy zNPzJmXaIB)^NW=k{+*&PI&|I$DC`gL#Q-|I$)WRNpm2@P21SWCLBP-JRrD`VQvQRY zM?rz_eL~5572TrrpHgy{qKg%sujs>yu2wXvD2VKb$(Q~89F(!R`C+Y+-F$G0G6He$ zgzTTPd!c&@ax?s+s4V<+rR=ew#3njdAgVkcEX{10%_yuSbd literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_clear_function.o b/42sh/obj/rl_clear_function.o new file mode 100644 index 0000000000000000000000000000000000000000..38b5dc8b6389036fe92621b792b2b578834bf134 GIT binary patch literal 4004 zcmb7HU5p!76}~g}jAzyxuQwagjkZY#oHjwqt~Y5)0;DA=P3qmIu#}`wsc7mQ&+bm@ zjIEh*yGa{S;Rfd?cDX=->_5VS3jE}ieuZZne~&an?# zYJ*cyM(9Md?Z{n@5vpQ0mkRkf><b8U z^Go^Ubcpxot2Uc;*Y>L?ncfZW`>xFIfXwHq_suWiYs{aBCwMTw9kPD6OTHhklP}J% zS#<{a9vI;J-8%WAQ_Y*cZ$t9EDL>$~b@E}+#gv2j&B*#q-}jB->k})rf%$bBC-I(< z-SVIG{F-eay|1@NQ}S7Ij~NHw_mbrMv`pqP@UeB@BR_tZA_MZthi3BQw6URaD&~OPzL1BQgY-5I zLCN+y*Qp<`to*UkUbQMKXS$V@*5yj4)$Qo*w~TgIj6BQHDxJgKj?sSmUn>UHO8dfe zW#!_Z$zSQ5=}HAL6>H_eRfb$VXeGZM?zWeAf`)tcT5S8wDqLf+E1~POR#V2^7dqrP z-d&lsD(zobU-Y(cGi&G`nHMY9o#&^zslR_NA5=+-fea9Tkq zB0GjK0jGfh1Zv!dMt~JYRp)WU)x9th91`F({K!Q%6786q4?AKtRs;5xcD>;*S}i~H z7Jav7@g01ghD+dS1gAh;lgtS=d1Sx0t+~!301mgFrnGKeWtcuWD57>^C%*HL@*$?8IVv2VT>u6LOxGEAQD0bY$MzTT zgw_0RY#l+rtolOzC$vTxDl|rDS^Zf+?kpb9L5xv@>YVzR`4W(U>bzPK<~N}2;Wu*B zl3|iGwrXmrXnsGnT(vZAa)`L!f?Bf7S5j+HEp0b{mRd_{X{UKHwLG=7%X}5qJsjbL zTADVm!1@ZU$JNq7^C+~-wCZZ9BJ_PwwQnOrS8_AZUx%6*H{JvkGuzC!fy^LdG4pp) z>w{`3YyK&r~DX|apO^dl`F1|lH1rjN^UG2 z@CX%7?=u(hx2Ah30-sF=!k-s1}f9Lkjqkx&x#}fvxCAhnCqh?MQ zI^Nb>UK~C1+h6B@dF(qQ6OQ%b)7Hf5*(yO^L z0%9U2cmK6=;9)kE><*MTo96r#Yh)xNOExn)5T(!9l3hx zBFZRMBVDXn$;JAPqprJHsC2P@WfY5+F4nQ6|6jA8!<=!(&?9Z<6NMywEiDM;^g}{f zE-J<0oN-Q$aw{U|x+J=GP4-8%7m8n2Ke-|OyYT>GRq-1{D$3Qu20Rsx0Z|4|N1Rwr zy;Z~YukOt+MCCQJ+zNx#DtmYC|A^@Ggr~x?E$@vt9GEy@G1fw42W}OIi|4wVWa)?`IMA7u2EBa5hjJ~K9zNc-{XEk+J zE9z}cg=*-JXa%5t0OsA=Fjc*!e@WYd@Jwtyg6Al#TYy_gqcLGP?NZSr5J*GG^V2=;j zjO~pVHl`qOaT&2|Uf8TxPuaM5;6?y9?jyFmp~PQ5xeLWV_1}s_^7BF?c#=1l{{lBi BUEcrz literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_clipboard_function.o b/42sh/obj/rl_clipboard_function.o new file mode 100644 index 0000000000000000000000000000000000000000..a3eadebbcadf5b5f147c1b6409245c8fc8dc457f GIT binary patch literal 5132 zcmb_gZ)_Y#6`$R^-CN(;zVjc_GmeuDXVOIU?%dR=B1j>jNp&%)6ouG?Kh^rYxAvWT zzPsM;*>Q;>tploc1>8baq<#SriGH9Gg5(P(s1Sq&m1t2bRPh0&kcvhM!XiouX(0UG z?5uOQb{l_Sq?z|;-uum)nK!d@_v($m|2M>#6kupjgQyh+jgE@agL<8m?^CQ+w_}lf zP&^r!jB1pWD2Cx!Cmfe|m7`RNfBhHh?a@JUF!mynx zR~g2E&+R|@kk`#ToEHS1L%}o`xl#1+ie;0l{dixc1!^eKmIlFP*Tu_@ja98_ntyYA z9^Qh0*(hG2G+rhbKb|J`=oJygcSU@ePR6tkh_9M0O<49?yw_C`m>{Ou=LYS%^PS3? zJVbwd9-i0^c4xe7rBbwvQg({MTQlD`M0{RKpB=l^L?-)@D>H$DS;Jx7V8&_x!&JHd_vU}AFT^FiMWo`8Ap8)_86NT?_%sM zDDg*78w<^ssyKIzU3cV%GYfBL=CA0Pg}If?LhYSQy|$8>|4N)iPg6LV`ay^<$1@Ad z?+{j|KDWY|`RgqD4a%|QgEw!XT&8>hPe%2FH#76U)*rbL-OB!N_--^}bpJr(sp!_z zH1xXT)z$fn8U=isR*$As*XG~)*MjEG?gS?LH8B-}xO_oaW$Gv5e6kC_TzL4>{M;p< z-3tw9!TEm!KgBgzNm{mgC0-xCwEk+1!tnBjt#^?%>h0yHeaOr&57cY!0HCA_%;*a< zx_@={)6J$IK0NZUK5bR)Lb;^xNe!e1^c`jq*Ku;s0EE=wuGGCdnO!y0MdWnS$`zbK zX(C-M8fLLj87pV2Ib*z5G9CD*OqL$DftAiy3+PB6sg@@#)3MWoyX-t8pK@h()toD8 zPLo{8+KzQwQz$u%#$}GdiS3fHf@50_t5k6rILypvtE^C})WCW%u}axycHwc0)od%r zY^#Vkm|3gZfa1hhbyZH2L-Z zlM^ibD{w!Ck!;EdEliW)Qch09!f$wzB`4zHKSSbv<8nd||HYFgq$!e$aw5aza}Yzng}o|i%iynr4a8e+ zfy4q^!YWi0K|rU-TRdr-oCtZl^*z ziK&dfSDq~2xcJJ|le;5l&QGQfKzR%`hsqNfbP$!wlc?lhApwOa9O#d@bbCy)p|akX zUR)coX$JZkKaKa1$8N^_)7GM0nU(}p}KrkCr5 zzPq05n0xaNk>4HrVYJuOpF64dUisFwS95)@o87$wr=E&z1^xCvU+ZrG7ss3JpgpI@>};2Z2;{jszCvFsUf_1lAd0Me`AkXN8LH z0bxa1OpcW50!tSvIwwL!2~Jj&_d-RddmCDbVn&txPZ50i&0;NwpDV?}*tnBk71K4l z>PhLseS7X_O&WXFP8;HP&ilP)Fy6RhRIMyN*d;5Kr*9z?^nP%KqV0geDRYs)2f@3~ z00=mCxm6QBmg|PY0wlKtqLQM9ud0j6UFw9=rw%EBA+Ym`3byaKqV81!=#ZBbXQ9>^Pc9FB4OG+FgXhVwXC?WL$J|2yvF2T4{ z&GYUpL(0w}CA3#b9j7+vM$+*`M2P5ylpVY?x!M`mx@l}BhS4{HZXQzPy-F04jES^D z0)jLxw_r;#{|jiaddZ)H;=PfioI_3}$3SsUCAWcM5tBcGE%ko~6!%uL4vLjd4uaw? zOMXnq=RgTU+%M{^kj1^NJ|N`Xf^HXdi=g`i)ddCNcyz}R?mo~c7_S@^@~BXlLiWzv z4E8CqM6#39Av0E~G|zr%z@^Q)-v2nY9|EGoG-pt6F$e8@YmADQ0I4 zJfK~5^P8OmHa^-(;d`|kI3xH+tcaH^u~XJm&MGp4Khce;?Bpt2p0*f2O~!b+I)h&f H2%r5A^v7zY literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_clipboard_utility.o b/42sh/obj/rl_clipboard_utility.o new file mode 100644 index 0000000000000000000000000000000000000000..f674a8f0f9a9530b7279621406dcb7eef6ae4eb6 GIT binary patch literal 6544 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_default_function.o b/42sh/obj/rl_default_function.o new file mode 100644 index 0000000000000000000000000000000000000000..24cc459a9ccb8c36b75093a36d5457d523c04bfe GIT binary patch literal 4108 zcmb7HZEPGz8J^v{-CO7E^Vv?#RZhau3vDXZKGUR?+eF~d7+p$0QJa(^f!61}J>RD1 zyVLHT-GoFcHI!IRpcPc&7o~sTPb(n-0<{!^s1k_^HGHUiNFWL-O+*n}3b}i@%jc?N`ebI-9IR-7( zfhkCXG@{vd=-wYja-<)cx%be2^;mjM3B=>HuV#dh&`I$?>_cwb6?d*ZZwH|-&9=So zV|(xVP{$?4S>&S7K4(U}tJk~a4qm8gwyTM!WZczKF!V}-w6iXexF5W`f zksKb%S^^ zzE;`k#XH%9mrHkkw^-=;{i687qpfw<`-H;#jrsxiY!DAcCn0;|dr0MPyx!4)IIIru ziO*>+V4b1eZY+6?iftd**YSk#4TYCi#%bX3Oxc6{Qz7@@xi!1$V|Swgw!QW|IIr-g z72d4EQ>wu7Yq3lo*IV6dNW|XtW>q~LQo(#xt#{ws#K+$yOW<^r2n;?4IsktjB~O6Q zf^!=Vg1Q^0AgL|u{`8LW;nK=WrR7)hrIizxN-OOPrPcO@l}jtGTYcIm6iw@M#5n740Hx zUt52!%|c(3UKS*qj#z zZYWwlY9NGDs~rlb?zQHcz!t4$AOi20E82lu5rJFBM8awNfe3BMf`~ayU<*`_4T%g| z5SE?$;8*v8P;fRdr`ZTy1fsYtvDw)n^StbHtkUbv#(cir2)y}*Tgfy02JhJ#aGL&6 z09O=p#9O?KYBSs>VHODeT+A#J^9~ApXP`cYiBJ=)q8tIgrfZMP(y(y8o zJ-s`9L;wDf4Eg650KWg{zS)mPTxMhWA=#R8cN&N(RXtgJ$HpSTz zCuvLS4}zJe(LDmPhEiV!JE+fEkAV|KpVJG%`WmDOYK~s8EW${wq8GB(H)GA!3pwi< zXmVUtFXXKs#@f7I*lwMTwVGboVLcaXo?f`g`WduI{^&>a!ld;&wByw7(+ktqK}dg~ zR@Vz9VeW?bOE@HQso#NR6Wgqpz&UFo&uCd=QhSeHNLqi6wd)xB{O0skK#JW&N{Gr`b!?`gOt z61V}9@`i}wVhR$Q-Zj=+ANu;>n3I3> zcz*1aFZ})a%GRGdo5v;}IGKJo_!lpq9}7=;TfhDL>;L-9@mtKxCFo?hFr$Cuw7L|fpQy+W+3 zSL4%6?9F5!((f3EG8o4ae0A{)cxu`knE~_~=KyKF_aN>ir{1pM`B?Yns$sFC7TbXz zYejG8)U9HTB{&)sZT0S4=T5{`irK26?Ym`MA`N$<#-kes-ffXm4?+mY>j(#O5^{7! zK|!KdIxcdiXc*FyH6dGKP&0-%{mn?3Rm1#>kuc{C^J(*`NO%&$u=yu^ywkY#K_j)t zNaDNxv@!H+X}hIk%UPQZ9bQ@UF=G^5ztjA<(GMYMe#y|Q)zpdx{z8;;v z-TuPH_V_MdB6h_KTJ`c#8&40s39uK?eO~Ew>3s|dTfSKAh4PV(*j#jl+(5h9^q2UG G5#m3y=7^5~ literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_display.o b/42sh/obj/rl_display.o new file mode 100644 index 0000000000000000000000000000000000000000..98cdb4f6ddea9641499cf8b555b25c67fe793cc2 GIT binary patch literal 5492 zcmb7IeQXrR6`$Sn>@7ZXcgDs!Fdr8V9GCcfE+qtt+hAkR`3e%HKrv0aIq#kAgX8XU zyXLDPC>IhOLj{faBY#9{)v876NB(K5lz>XxsEyK(ghooEs+Ah4jY>aMgp$V12lV%5 zXU%!fF7C)PZ{C~te(%l9o7p+P`u;y}`59Au3=L`>YKfzXqM|H7ogm>1u-;2hbY zxI8c!)es3$48zVIvYo!e@7T0^#~t47{aJN-ghy_-G%*$=Q5`!$#4U!A$qtSV8B4ZM4+n^#rl%YCjAO^dfb zZHf@R@ws?%JJ{Xv(xp;9YZTJ^DZHBbJ|W|CQ>x{z@i}d$M#%SSSu8=W|Eq!-X8EcpM_NWxT06e-=K1BWzMe*QeM~tB|cGnp+jH&m*X^D5v z8D^32B#w{-7#op8f=r&@TtOgu=No|mm2b)@E&`8AbF*{rp*tl$S{I=bZ~~#h2NN{&fc<=71tIz_ke^-m#3Xnb6+yrozE!$Oa@k<}E*Mpu&Tpn>(tXy|N0 z%94aTz7@Xv;d>{1Z-?(|=-z<4k81{|#Kx-?sdZJM28~eGlz?GN6kNhmO6dCT_ zkIM0=yUg^xtd3&*F~V>FXsx>{Z|jv?)2{wH@6ts>Us+MJ7LQ@|u?yyBCvmTzkxG?A z9SCDqCId6$c2vhZ&8}B1W^{(d6e~3})EQd(IQ-PEmt2lx6IBb_LpOVL%a&bRqX)8O zD_1N;*LHSwc17FGJU&P9wOwF3SFh^)_{W%4HWPWA>3BAivvY;vL^*F{a#ksyKHO=t z#7+wUiF7%aE@u+k%Ei4|)3y?;S6L$rish`8wOw_iRJ80`X}Vx%Yov@^GTRWua>!uL z1{%v1Y*s4cF0`3Bk}iWUjiQ^+l?IClg24;3a!0ak)XHXi*WY%z z5jEDX|J~(sYOF)Q3GM`W*sI36^abesinx7hY=d4xZxv>w=G9n|&A9?qUdInZI_G8d zHASP9d=Fh;#D5DU>|3I9h-d=7C{2L&MR513u{u5Aa?5Bslr>^3rp6i=zXn$O1Dd6% zbqoA$Ad$LxdK@%_DC(LC@BwhND|Pb;Vjs9TaV=O8R!0gMLN31I z^d(2`i$XGmX_NiiC`Z0){pjmISoY5Gn=9X;C(#bn45~;K&~vC%M3RA0l2Q@L3fd{S zJ3h$=6|Yb7<;FD|9eN;A#Y06Dng_-1V;n!G0*vse&>&I5q{)*WyBm0`t;4$TCW^^ z;DeW7_dC?Tp?-uKhNBqj8dTcRhf#~DCs8k;UPL81{um`d3n&Vu5s4_Tq=@#MM3e+l zL|H~6N)FsbR4AcIbOMdkqC-j|I<-pJmxgpeNJL4!92A941&QdONG&?)B%;GF zMRb}-L`O>+QWlela$S0)G$s*cw$%Dx+v~^H(Kf)Mx=AA+< z%^Ky%cBUK(E8zyePMD;>2zB?n6wK}0(m!K8!SEC6#<|YfaP<11clF#&tDqr zst5;;87^KRImH)J_`LcnJffv|G{u*sxNdW8H*eBD!xuoNrg*(p;Tl9fZJ28VyiL2r zR}S(1OMJ@^-=5-M=;i|{u66SkZGmFz=PVrcZuN3|;BL!mi9QW71h>4vP6Kfo(QiP?3NzXXb5Tc(C z*wz%kS77>1(i-i-s$q61jE(SCPz>HDrXa?Hd#WOaTs;ZCQZv_XoA+X_DVi&$gIGkk z`g|TiyeeQL*af1BHlS+A$lr?`W$|mE$eH+eK(Y7nGAM4;_*Tg;l>ASjgrtdoS<)|p zk{+EEvb&DdzK&-eH`xjeA#Ymb`nn&~-=SZut^ARV-WS;d37TSr7k+hkwe$ulMlG@V@bDCC;l~ zoK?fjXVYaV!1=|$4(ah*17e7u1dhqUat=Qaoc@7aCR;SBC4+dbAEZZrl`>${cFwG| IaR(UtFM>7SsQ>@~ literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_dynamic_buffer.o b/42sh/obj/rl_dynamic_buffer.o new file mode 100644 index 0000000000000000000000000000000000000000..ecca9fe2437c5ab999ef11e7a65d87a856362216 GIT binary patch literal 7260 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 Tc+NI&f5VZW@-tBxMcMN|8`Dhe literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_long_move_function.o b/42sh/obj/rl_long_move_function.o new file mode 100644 index 0000000000000000000000000000000000000000..79b6abb2bbfcf26a1aaa25f91c6ea7a9be2580db GIT binary patch literal 5336 zcmcInZERat89w*g_u7ur#7Vj~Rr=x0r5~b+v(eIMO(ETy$_<^AZfzNC=+?1s61T4H z`P%(rMNz{hECWk{@dt?yA+-WjZQ?^zRFgVBR5XOvfiw+%K+y_xFhqc5thAy$&$;I& zwv(>i4~}&1d!F~a?{nUB?s?BW_vQcm?Y{vbG@rl&)sI>*@Q9+KEJJ;V%3G9)MQ+Cw zeNa3MPQltrC5mO0?4u>O?czOykM5bnUaLcQTjb-gkq#kDs{CSt!Yh`QwnxfimQyN9 zm1S-J=(dM*MqIDvIV#`7*iDJY5?3_NaFhQE^^T@eN@8n%*V8Vlp>oJM;O{4eRw*vkG)hEI8jo z$&?JSF+Pt^y$*4EzGR`0wXIz85W|}{Ut7gDrQ(^nZG0|Ye&m3B!Hx0FD8AK-?nic{EseplDPXOCN>MZ8_N)3WN% zgA0o9oZ=gfxO@tVun^;3n{qaPGdaoFINzgiUu`)ttN>oP0;L zeww2ts)N(j;N&0vT?w)|c{D0opW^PnICz62ys=&xB_=QQCaMojSDyge#jEV2!^MFp zo65R6cq1|S)95FD(zi0Z;H4!E2mc+XHC^mtN9kWsFUdLeGznj5SUY!l6It=~b zbY(a?Kcejm$20k<#wib}!MHBL$!l1U7Ej}bS4nJ0RI#Gf@>MxSjiYJSi zWHB8dF6Ix|sge`lc%L&a;4_{-G-pnQjg~zlB})p&6(gCF zW0ypsh=ZjhQsc>@$m9xTG_#q)NFH&CLf#Qh=D01&j-3`Rw@8(X4ydGXT#?FS0D*JK zLW=^(DJ4?}<&aKEa7c($K3B34jgpq+=EExS1W6X@t1y=>TFyC{v7DWbat=A(V8+3d zFCGJNT2eYn7WkQ$J~S<2Vp^N_zLpNd*Ag+iTH3UB95Z?klAXY(RFf>~)2FdN-!oWAK>j)b>4rme#7>4{yzlvcZ zrxb%XC2ilg$+W3~X;U53raGq0lF4`xeum%N0m8s;JYE70wgq2-7}ocPUW25eKBC7& z==VTx5vBB4FvMk%D6PjLp?`SD)?=Na>z?1J9*c%a63e&zdiI3$Y-GTFDBt5 zKvP6_k)i^0mS_oC;2n0=Xn?J-O@MAo_Ol4>As}RvZ zWOkH5d+jKJ4sR46c0&LWL_(+GArT_z6ehWh??7h+@m+dkTLR75kFma?|xo@O>TiZB%Y(Zo)X~1E_mZ$5B6t$}Rj2ROa$URAw85VEQeAMBzrD zitiIAAq%$%RopYmiUUx^jjybj3RE#KRzsq2J5a^MS1M)+Ra_dy#SKms_od=`5s)e- zkaFaSKot)OWwjqos+b3gi#bCTlSrw!`Ke+~C>0ZdD&~fwf48?Ez&qnxgvVS_hc{{J z%7j8ySI+B~Ck*;d+@gOo-QA34Cf?^E_f{M=YH%^hwTTFkA%`1pTAZ zt@A9zkkMp*46@(QU?5&VNHg;zS%9w-<|}W*r-$&?x!~A~-EZ*iLmr33QP`d0PM{u2 zEOPh9A+hq^*C3%c`F*E+PRTP$I!Yc?aF4k#H_5<>F7uH<8otr&0u zlI31hVy`@?u$Qm=cV)kq-=~0U%mwqJ7BjbMG269RSlGfv8y9#hopB1;4tA`oD@A)4JaU>gOryhf3laFJx9&qxs?y{wla=1b2Q3{|9Z@ikJWZ literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_merge_line.o b/42sh/obj/rl_merge_line.o new file mode 100644 index 0000000000000000000000000000000000000000..8d8474e796d52528f870e3566c103b617956e466 GIT binary patch literal 3944 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_remove_function.o b/42sh/obj/rl_remove_function.o new file mode 100644 index 0000000000000000000000000000000000000000..d36ad2968b779b78b590e2f2145e37cafbedd1f5 GIT binary patch literal 4312 zcmb7He~27c9e*>sGdq{P?C#yg^y2l>jhogKa<^x!dfI3c&6Q0^A;u&|Y?}il9diWm_pBnZ-$ia-B}zc50Lhf*87X#9NMyjgcQ zr@cP-zVDCs{eIr}?fbrYZ(sW7U;dpELQ4pApd_eapv!~MHi2%^_&?hH>!N{+j6sWa zU_i&JS<|I#}(ewW_u_W^jIK|@v3!4ntSm+-{mdD+pW%MDR+6qc;)G7-#tbA?)+lB z(+Xy-cwTL$&X8WbBsUQ4jLPC^mERxm`>Ca`nx9{;&AP#zc<0o9MyNvM(y`R$tKyw3 zJ2J)I{9-({9c#cVHyTyfu9Z(Ry*t)>UgdXGr8DrR`9*m3>Em*Pd-MC1!rQ9wyfxy< z{2FDa7w=y^cu%YmFI;S_y522n6MwCKz~|S9heIbJd-Gf2;Y5qq+gcy#9evOKI`xxS zXJ|KT^IolD+xz!)_=>!$w_VEkZQ!vaH{^s+Ks|WwoIT@XccTE??*1MeQ+RU~iTs^LnY(TyB|5*Q}+RBKsN6R%%Txx2&b# zzHz~#xU`TL+0XW4;L6l3!vFb$=zhpGm0D+)uhZ1lN=sKJq=iGR`TWui?ZSM%?WYi0 zQ@2V>Kh8h)V)h>Kmh)+qfH$@LU};--R-2i}ZM61mZJ~GC-8}jE{ritRl0W78fmg5P zC&wqoC-U2zDn3_ZlM_(JAJ{SeuKPvcJ4NpKm|O8euQprstG4f+te5#j@{}{YvqGUq9|TVNiTvM=&R3Kv?$ub^uL5v(f0Vc(qW-(h6?M z;p1$C!kH`k!mBl!5UXBex{k?2qaKLBJMD^Q;8sN7Rxz`1ntmWcTe2WxP8|~n94#9X z8MGiQJ15{*^@31vN-(Eh3teQRxGk~S*nvd>thSL?Oee6tpKvo*Jp=Nf9fgy(=$ z_ZIA_jbKp>UIjy1B9l%NKnQC+eD@AfnZ!Zslh1_(93Gw@ z49lb0FSbifh=Yog#W#H93Bwa=P&-nCq-C{lkR|jd8()_CCG^ndE=w(BoPH4w*S(F>ME zcd1qMLe6?I)?B?XZ2c6PjGNI5dFz!}o7D?jt)Iu*oL<;w{U+8ty|CT-9keQEIIb5a ztUgFDP&=U)c3GTjGZw5@^+HJ)F4W`;@HaJc9`c_cCWcctz;cPr*6ZNRAdzS0H)Cy! zUPxLivGxwGLr1XmEa-)PVO)l4UPYG$B{!uuf(<7Jtx@n5nl=#dUP!m7y^Ro`gtQ5% zB{$-y5PfC}@($R{&E_D)_d_%uP3{FtSq8C<0?g((x;Yw$Qw^|uD%YMRHP|^zYABwi zj*t{G$XN@BkQy==76!4BX9s2xNpTL0}Rpzf}!!UVSWi*Pf2+#Me}nF%$eg!5HBxN z+4u&)l0_egR||9cQOg^>>zRSGzkDVAlSALkjyU;e&g4g4`_k(#RYqTRHjGT1`&{}S z@TdOv@<{jvZ}fZD?)&TIGw)e>8L__y{R70}yBkyleHe5Y#LfB?=!>AQgT4#80^+Fw z6Ff#6L1^4inz%3cdayB?ChooRx&f6Y7O?VSNz=soRu3C)D@{DI%EW4?iHAjDu~2Ec zicVqibkoH0R)Nnc6Hl-5Vx`iH^{lX1`!w+|C=-jACf2qxv7l*UjVt*7xBID%%0pE9 zV@HUt7JtyxU#&aF<8skX9~9a`PRsSDtc&ns4tImjy}@F+eLMb`irtyqTOX6ngm?{HxlNok-B7<=BK5YwT2Ac+-D4!Up4Lm*Y}y9F!~`3n@@58 zns&+%mph`(OVVLzr;*!dm^-^*hT$Ja>3#S)G5sa{22w%XHpFwOJX^&iU+shj`+ literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_setup.o b/42sh/obj/rl_setup.o new file mode 100644 index 0000000000000000000000000000000000000000..b153f269154eb255bf721863bebdb85038b53283 GIT binary patch literal 4820 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 EKNq8kTmS$7 literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_stack_line.o b/42sh/obj/rl_stack_line.o new file mode 100644 index 0000000000000000000000000000000000000000..9d2737899a7bbebac995d54172fc21a4bd960762 GIT binary patch literal 4116 zcmb7HVQd^n6`tL_-Mibf&*wOG9l1%5UK#?_K2y@lDrxFKjLvQ(8w8k-zv&u4ev`6<;cUYFVe7YXJ0K0cUwC>39$<;MQ~e4p>} z7GhT>cI$3>JQQEGRtvm)xqiLzDZW+7aHV{HbD_l{{d_OU*>_2~F5_!sKe#U_my9o{ zHW$6{oqX5#<&c?6NV?if@-0{0IK=+=6rbD<@!ovZcDvy@&FV74d&l=~lkx480a@=E zU&7a_9gH`)Kfape+ba1!afN(weC?{+&-Xwd-@+C0MMv6~{NC?Nz9;1Ze(ehRaEN2d z{`fo|b`^JLby1lX3W_Cz2_xgO9pdBe(!fK6Cc+lz6*19 zJPm^%L;apSPiG-_0COAmp>`Ke!OHJ{zvZsV>YpnsuM{h*$Ie&QSie-Ltj(TZt88ES ziB@s{evXWl)!B2Em1F0`&{qZk*Jt0lfb#MW*ahdx%ITTPTIXD4bvD4dkS{EJjXHLxb=33$GIk}&%Rqgn*GI6XNvIaS>5HgH8vOiuw!?znOCqaPAs;Fh`1 z6JFhq@T8Q32Ht_Hd&r@6(iP>qLU5F;fnN>k<$Xcxpyx(mdB=_6lIZajelrqr%0%&4 z5hkMMN1+#qc7U9Zgu7G?;Mwj#ZTRh43#_8u3PtGO?}<+6)kWwvFokeCK`0_87GWaX z7A6olG7dBfpg36gHT*D&r-X1@&B#MEQaUj=8z*9NR|AffxY24Z7CX(*Uu=5yBEO-@ z$9f5Lt>6fV>ykN+V%Mn)5sUB@%*s10a>aek%ciN=0@;POu}Jwa5z4)WRm;_F#9%a_<_F>Y7v^IsQpKO0I#)r{b`pKm# zsI}oQbAmK&X397Uk$Di!aVo=Es{8aW*x!UCi(b=9!afDoWly)qHf7&{7)x!iHJIY%-blhM&@-s1t4MJhv=@m+u@oY62I?rP zwI%Zc#Aa0Up7aDnI%AO9cm+-7-)Q#IIF{WHQA`&uPLkfxJxO{*O)`z-NF#uPeGf*& z2my=Ro&GnO`ue;v9kGZOzg>mbiZ`Z_@YU!-s@*Bgs&B z>udN8YzPx6n-k~8VY(Qp6b%=lABZ+i1-jQbtxUs3;yTEIjlRHoS+ zDi@Nk9~12q>LaM!G5m>mBOy_k4Ky)5Mrla)jwWuVG%;Cd;wIxtU}0X;#QCJxacSbI zlO`qry||BZAde|d>)QQy3hlmvRv1WUPRNjkE3lHd@98~{~ z9D=VdehE)adow?XmgkQFYyHn0o*=i;spIEi!>=tw<%_V~2?K@7{>P?o7Cn~mNLY5{ z@5-Ln4=*L=S%{p#tKy}=)49aVgn@9qC0V-C<9PE;o)v=z4$7M4o%``YJ#{~kdqi3BcfCmw}FgcH2ZA+M@3 zP~cC?{_AA_tqHbnl5(4rTcm{GB3ds;QY>W*)pZY&%uKUTEq9gfvy TZ@KO@gwwNe$_d+62lM{{aYueL literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_state_function.o b/42sh/obj/rl_state_function.o new file mode 100644 index 0000000000000000000000000000000000000000..05eca172c5695f450d7bf0b0905ef9043aee643e GIT binary patch literal 3988 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 E0TdRdp8x;= literal 0 HcmV?d00001 diff --git a/42sh/obj/rl_word_utility.o b/42sh/obj/rl_word_utility.o new file mode 100644 index 0000000000000000000000000000000000000000..b893a634d66731ff56553d4d56743651ecd0265f GIT binary patch literal 4496 zcmb7HZ){sv6~FJ<_u0=*Z08SIM%u>IU1`-V&PqC>&7%#}$gvveN)v|I_UiawUhCSH z-*cB#&9ud7mCT!zGWEj{ANaO?pa=;ejUlG4ozyWQ)(NC-AAlh?X#>#~6j<2A!tcCy zUurvH3r9Zp+;i@^zjN-p=ic}H`bU5J#KV~6Vral_aG9eCgF&~0SIGE3$ne_(OEd@M z=)h#eK{A3g&CE`lcHh>I#veR-OLuzLCDWJC7RNT_om42yvQQ2+Q9A(#uU4|VSbfVF`qTo<4uW4_Egk>*k?zF+z{_%Ds83M znxBIwwqp}`sdBlH)rzT;l-|1a>LR}fMMD4n%=~P;(&TY#gIn`^S>Wvucn`FR&Mnch z-iG|jsdOvedo6g?P2!m|XWz0`CQZ zCsc;*c7`m|+WFOs7GmpqmjvFQ#q$e`i|HWp6Q-v8=(&Ul+3&OPX|NZ3NUWy-Nj_9| zhrx|RzD;0_gP+kKPb|KdSe#u+)Mr=fp4vO!+6oKKQ>tw%6%i@;14b@jNf=Ne&cy5c$RMJ4<18P zn_XtXv;F8L(za`&J_?j>srFGgI8PM}h{gC#%W?jGTd%z@CDN}Z>f?xcgkt(?E8$JS z0IYUNT8uA$@YU7TRck$o@Sd@oi?2R>CD=a?c*Zuhelc}%Z24;ZCe8Y^CozcepCIKi zJPar2Az$s2@Iw50aGs7)ZT2P$Ubr;03d@u6>kILwCp7?%jh@e0I+2J^)pKiQ6|77= z_dO%whp&v#Efzj>XksjUDqAu1QZYO{FgP$6-jy!k>b+}t5X!*N-hsP!GozA@7Er%; zWiz^|7xU3dL3^}R$!JwmFX-mXK$=Cz4WL9*6+KnSL=RU=$FphEhz{*FrWm}-c-QEq zs$oqdLlNiSR`jCD2%MRkB@A0k>ZXx3S-FDKZL;)Ks>1YQxr%Nbg_TPNGxXD0 zRyDF2W@HNp$061eo8bZ?gna&E?BFhz0c_wv8cLch) zD-crp0v%E(_DUXru~RzWa|Q18-{=2g+i2H*6oHE~S(rw<@aZwsr1Bli75IwZk8`L5 z898`*AZ!T6yj_wj;P(?AV`@8mN4rQF#@*qwE}ExtAJ|ud*Sc-m*qtaFqHo&5YMqak zwaa5g3`!Fx(367FWfCs={Pfe7{wuU@`MhZWRO+BXXyqztounbA6^=0nTADZmv$VYh zX?qjW4hLz5knXUM_#)Q5alBS%8&&mAo*M|#yO(5!hmITBW{I$B`;I0Xj5`zm->dI>2l;w^(|-%6ydlW z8B|xH{f@K~a^!$If!@6`w1ON-Fy#rT{KxQ6B+oPG{~ldeulHSukZYUzS4hgh6{gIu zJK7iIh+F-;qiv^k&~{j!5joPvl(&K9d6&S!?%Ta>5WVhBwF~k#gm-rnU>{jY`y4?$ z0Bs*>J$Mw%=ZT=d3pQn&X8_$Oy8I!&AHw5R2wT|?vnPq>5i<6Aa}Z%qXf2ATvoVUN z%ZXB_dB`B77BR!pkU=j~2n$!*w?-1MTUAL0oB@l-CW%i*+-0k=?|x_E``cXShG9>D zt@44K1`}C@2}#!^k%LP(M6I}l`TzK|1B1Amz(Dj-LHW5D#~%bgBRnD+Bk8P({OE?J z?-F{2(-;v>DErwvJ8zgz>094=!~fcE)7^dld_A-EQeEGA+l7wV!N(W;N1qG!^~0VH zUpVv3Kd$xt^31-EU%|XL!G8h&2OL762>2fGDEJ|82|NeB0Dc}!yNMs8P40mNQK^uL zYDbu8U&%xpElgBNWTFDVWkW^8Wl&2>R%eZhc#J@86&ER z@BZ~~d_>BbS|yvpo35B0n4$v<1HE`{rC^xopxkW?^xf#&?@uWB+RLoDSW)b0cu@h# zCRb46itn8AB6lfy?!L&?i#({zaW%<%P2RV}`(u1-lFKi0uksrADM{X*<6U#SJ;}Eu zxhDow9z!wiQSRp|hI@1T^D*8Q6=}&a8Sh7lJz;OCG9%=dg^UWhQ^;*XhJ}QnLQurfRM2NZYKTGf=C^c9 QL!&i)k&)K?!3LNA0*rA6ApigX literal 0 HcmV?d00001 diff --git a/42sh/obj/rs_setup.o b/42sh/obj/rs_setup.o new file mode 100644 index 0000000000000000000000000000000000000000..ad2715c7ccbd9ce6ca0e3fe764296f2b2dc5462c GIT binary patch literal 3128 zcmb7GZ-^9S7=LGGXKv0t_x3y!%|9)inUS}9n%0q#9+|CTB&Jqi47;;)cO&cWIy0;1 zp>QEYhyA%Ip$~nDi24wH2!x1&Fv%h+LjvhT`9&~DjQVmYc>R7e@9gcan&$)0`~2DG z{mt_}@AJOz{(SAqjSe9cO<({gz%?C11`JvPo~H9Qw84menBp8zYy(q}yXgd3R^W^U zksjH*pL${UtQ~7Rr9wP@_Pb=17mSHGhSIW1PO&~>`GFU@Eo;m3L%X&%LSmd5>A5KL zYXk_PHt7w#a@7vq?Rd|!I8F42Tz8Y}mUx9?(Q^(l-`4zMym1LIS3I{eT;-H@yzgax z8>D=Z#Rr{3{p9xDGC!|S8FBoZ@ouz43-N{-;Wdpd5%GQ;DA-|&?fJ!caT)K7SE$v> zj#VifV0t&LcSe5wahcGYcg!!ss}}c%8{D4XMjimr%1DSG=7<;OS1Z`pxl3E*{T|Izx23Eat*sYW- zYsZ%68J8tqMmooU$CUq$&+kp=%^9_ZJ?w5Y!LnNK15=*Y%@Xfji6>0~*wI+0jQg+b zRzk$~_2wns6*=jGT<`R4@?%}nj7>&?EXHEmUC}}^khC#f#CHvUCUJ{m4jp$f?8#4F z${+tL{W<$(^4t96vFZGYW7C%jvG(iyiTZT@YegA^h@6i z@f2lt?AZHE=8)t0Zncsb%noD+GOO(}j(-2(0F3PVb=kEK3g5GHo>M6G`?lxSf}H1D zz7y1ISzF}x_?Vq5cy7Tf<#u}2{f-^@x%KP(Q4xm;w-ShGst7Ep03rkv#rp8D;|Y7T z;EAH;yW@_i`%Xz5jP!$br|w`{+4TVu3A|lfnR>-{ zM=DM!!%QlCZ^2jnzV%UXdtc&=WdOfWh1GFj(#Dn1INr_nMQC zr|DXz_6hSOG@_`>)jrdFFSb^weO>1Jv2~x?mo`6!^%EmAYTsg^pM{#3!eA)+d5YgL zd$F+;L}$atD#DBvC+TJ4dwAu^9cN4=Kmb{Q)APuYt z15(G6%7ZTiG3lq|4MWK+`TFu~p0^h+4PJAXzrOcU|G>nn$*+!Xxc0+nQ z#RlM=24cbK;vPuXgmn3k5}q5yC~l|3;)c=1eUvVC2VHCxiS>Ua?m+oiB1B7){Z5P) zii@s{?-I&bT1j_xm{W-2N0xyvTqDlRjGQmTP%8b3`sDohZ`q%SQN@QC73F$rK1PM# z04r_R9Ih?9Trc6(ExX0xAlEQ+b>EAvocr+LBcjFQAMtaRe6Hgw5H}^hz&kX$^|GV9 z1Im5?1#J?ALr*}DE;1P5%hcJp0km#KPtG%Qx@v4U>Uxi{9onqyZnaedOT)tW7D4tu q8c8E3<1;Bax0{0`wsn(7%Q6rQ!SjvFVolQvQiKQdBNKoC2Pf-p3p32n*(35wFD1PL^(H|u0uXC3Ty zFja#pg;X_GC3-;Og35sle-a0fIB>84iIxN8$f1W^ka_^A;#5(D`QGeo>fNLyPkHm^ z{meJt%+5^w>)(I=+s>F0W@w;o(1wa81%=!P)yThx#AyIzQ`UGsFd1o*k`T@vv+B5g z*FQBecj~V1^%}B6cm#cGA7l6<=K>i|I5)~p$+8z@fO9`yL&n8e^goWsfHWb$3x4xv zuCl-ZDl(iOe`S2;#8%aH*{ezWX#fvlAEbv@C>ml!5O0PyyG4d*v;49no}SB<%oW;C zKR*xeRf(}zJj>1(X-E+7bII?V#H&kw*$(%+AiN{Ll5Q`USdE2-uaK3&~=%7GS}HO+#CS)=Rqm z$!V?Hxj(Dbe%IFinAYmzf!69wt4-Xlt=_1w-ndCaw98#rg_+$%W<#q@!ER`4ji^?i zBKM}~uYKRA)n>1uq@mTJKZ)sN*){EHkx8s?Hk(cDa%J-?OjG$*PB8iuO;As2^{vqA zMs4D2H(l=~D6QV39htqISf@p5Yd=oE{)0%DO~t@crtQ-yj$tPmkFg2>`}%#!trNf zM`Dk39__?wRar;|Uf7REbJ*vq2U$4&Y%GTF9Z4`MV04t+GaVHtypuhF2+0Z8h_)g7 zTc_U(D5rBsDG5ahhpxQ#rs&h{ZVO$RK2Kiv5?ZEKscDPQzd7|?G!aauogCL_PESE! zi0ixO?w6nMd_#o9EU;;}#5a~g!Lc|I%~t%~YG`4k2dEH27fr$04>J`%0_c9YJO?ja ziW#X7&X2)A38i%rUs|(#g=l#cqP5D<|1oLDEW{SoThefQgyIvAopNr5Db=Ks>}-#| zk1Cqx0qCWF2&vg@c%#PS$%~<5UG84GltOF}Sw*=M??S8498kqOy)1AdaeM`heY875 z!U;t^&=Fl%J0l}%$6soH)bUG^K_{BG*+V`ei7FIT-s617QX} zfd$U!N3h^Da0M1SJ+SV^d*6X=gHP*0UGIaictHke|7jduY2ZXM(jJobA!%VmepK3S z*o2@@8O9DnTU_>Xz^7bm{^5YH2mE6JpYdG9Dma$SdUprU^QM{aOM9Eb`BkP!VBI1q_LkvLYg5Z;@8ldLz1V)3NeH*e;>-@N&> z@BRJfzx|9USq2{{eNeVk_!OalJOxEZ`w%&Sfgrz;kF*&T>1tX8^E?cb_4(TsaJZSDhN}lVRA|lN@hKrq$2R-tPS}m~GaXq{9le`IH_R4d- zx{o1gUX}8@K)e&UnIQA9AGj|d2hKMzyk$Gw&-*Mj-y6h>QHS$Z4O66;&QJ0r_Gq5b zY`Ql0j8#l;-+VtO&>2d|Ju<(T=hs%m2B-7;iFhZ8_f?NPkzdm=)4cmB-Y-4!qMOYF z=d01~y+rx_)guosu|THtJ3~A<-{a!a5_IDfPhDW2Wn^#FD^4oJTTx5#^rcuT}1ljRv}$U5rX`|Egun4a$z@eB(3lIH6k zk{_;%cnkAGA_BvYL5aX0m;QIqOQ0bSb`eTaaK2dfKM_frH&bGdJU(;{D`6+n( zfnML^Lh83)#s&X&4C|e{-^5*=g-60ge5h^eXI;hTMc>@gI`=xig16}IEIiORf7Gu3 z&~m)>cI&3?w#TQZ!eXoDyX{uZU2Bh*PFpS8H``&uc3p07IMJyI(J;iqz^tqqj#t_1 zE1Rr}m$bOJc=es)x*dd$?-gguljX_cDbt0Qr8GMUMtNqsJT-9$p>idJz={z#MqpJg z2L6g|Mqy=UI&84Lp_nqJj29kPvjr{pbYV<+4Ca?9Gpx)FWecz8-^jl(e0CVt27dzL zy&k|lV8cvanR958SfuGxz&WJ`>?mG8_@a*ph7Zjbr_v>ouY7!oDI1!i4fhY+ z0k4zbbsWmlKS4_S&yOqzY~dBc|0~yye2?)Jzs7Gk TaET4q72Z}8{(VJt7>fM|LwHRz literal 0 HcmV?d00001 diff --git a/42sh/obj/shell_get_avdata.o b/42sh/obj/shell_get_avdata.o new file mode 100644 index 0000000000000000000000000000000000000000..65b52ae7b718d816929767548a584a40a2d4f358 GIT binary patch literal 6236 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 V0|hHt8Y~rcESGV)EkZ zP!MBXYbLAU_SZgy!5E6TvH!LymC0moWB-gX7z2gMEVdw{e{?E#=iGN+(!AE$9XRiN z+;e{C+>du(^2@!chi(AL3HU&EA&)V91d)-JBP(P-f@(3D=!S@~Y;qF^Xb?$NjrgEp z>ZZLX*1e}i#Uel*nEzUNYU6p%gpbpQ8Gdz`G>+Ypn+m>Vo~{v~+(wKOgTp9k4lc zj&JH5$0OEnK+}1P_Wmq9u`Td;JT03|#nrSnK<&+&?~kHC>xiCzY=0(Rre{CjV0(XC z=o=#rtft%XbQ|8*MdBHUvJ1}l9f8*;`srUJ9=^mJ(%#>ct-qfi zi>GG>aGr)*NWYa#_p0iSZIz_~XcYI!o5DGRc(g?Zo__jG_7-GVsIadLqy%^f7jNDR+lfjWA50sI@-D|N)LR&vJe5Dkd+!T8- z+x%z!pm;A7^`H4ZI$XGOGIr;4$v;G0PLwF})bo20q>|8f z>0(dQ@q%C`Hv*o^^??a%b+nY5A1q@bN{t>BIwU7f*$@mxNcNe4HETf!~DXY>?awV{nI zXoOoggx5a{`J5gZ(30s$J`qo))c&}kX0k>;tV3jP9+M+lE~({uBRg}M{c+vMM_M=J z6Hpy2%&eBn$JJCO-A@oz&U_-1?r_pGdO*lyn-gPOEPlAMmyhd<={ulPhO`zg2nz^BV`I(43` zbuDlT)lx$U{MiZ)t9j#!A@FG))VmWeK^MRL$OdRRI_%Yh?;nn$ zz8jeqh5WQc&B#c!Eaaj!60ZO1#En&`Ta2DdQ0MlHVh(k>5;<{?nwgyy^#R&_ffJ6c_2xF3aoaGi<-Qpw`dBcIe)DyU zIML6%xQ7_yfEIj8(tTe&J|&s~vSeKwV7m(N-k=bup$+5YTq7}8?O&|s0`tmkEYQZ5 zjSpdX#^eNZoo4RWSwQ}q9Lwc?wi<_B9jr;d&VpQ(i_GCH zj55ht-_5}JnkUGfuJuHiEO)TA#~7AyVp@}IFiHM~fu|FzUt%={=8%suk9-yjcCflO z!gpc86&UEkKvRB;*oO$arrROoeDS-4j0Y|>DC7zuy(nGizmJo|xi0$&CAvZv%~^-& zKL(9=iE(lAZVdgcDEa+mLV;kCXVp!ON`uSg%rg4(MYnwrOdU8%T{NmK2A E0n!^i%K!iX literal 0 HcmV?d00001 diff --git a/42sh/obj/shell_init.o b/42sh/obj/shell_init.o new file mode 100644 index 0000000000000000000000000000000000000000..73af4f67a9f832f52a9292f6390a6a9937283717 GIT binary patch literal 3940 zcmb7HU5pb|6u#5$oh@`}cY#$AehLOz; zRPzQ%MU7#s+_HSbW7oZYk#X&kmNOwfn42hlzG5kJL%vFrH)9)O*SqoyO&&gc~&slcXFxIRL__E!SPm{(1_$cIa*ne`(Lwvb{F<8OsdJV$&!6C`FO!DoP zd=fHTGX=j)+COha%NC5`@irviZ?e%TIo^vmiEk$S#9bKo94YwQkQ(s66}mscSQ`e0 zIM{lmpwM_J-4Zm8v%E>K{h;r>JOcOHj%#|YdZj@v>pQO1dM_P@?V`jNYr`?UzQe25 zYrW?VGf|`0mrw(}UOlJR%I(6|Gg|BYR+M&KWyzNxMR2}1zYRd&bs`3eM$f2ls`Z|g zRBIbGrM~0rgI^_Iz5}G6b|ULJq1V?o<|?(Xr1LjFog5tPtobfG~?O zYiQ_&`1-;vD9iDSXQ$TtmT>GD)$6^Ddba?z-aXO>W`CC2_1c%R_BAXCI=LdCzVqY= zNT2$AMX6fM+OAfvx|&84ZF;W zWmd9X>no*aa~ap^S}@-!Fw1t?m@_jo%-qg01+yZp<-C<;N{4c9VhWEY+STca4rMY{ zERtlarr`W`DzoYN-~#cPESgvvk7LKHX*8OwESnfjJQRO8KD+G^xV3T?kp^lUThIjA zyOPszR{k_)Eh?2sd?#h|0FaVYl-9`J7l%Zd z8UU5c0_{c~i|j276Y6*eIg7kb*_+5Xy(_8`5q&Uy<8qw>^AkoS#KT_S-K%nOidu9F z?MEJLOO3*9aXd!~lxVk;&`DC53eE9dMOTg&XZOhNct+dz;xgckNHk9rFO7&U zFbIv2Of+C=`nO10(F;WjZ%^c06GfBwp(!tHV9Id2(%#k@+XFA^gRY82e-I6>1;6F; zMEk3e6_fl${1rYCu>}<6kHjRVKwv^r{C$q#>Gb#;T@X#6X%P}lDm*eVHiJ*!$|LGx zKJ65rrRMo`wU0;o`Lvh@>n^TV)%SRZTHrHOm)|$Y6McLlyi#gE*Iwdt`}p)UkM{Gp z`Zb?`mMuW46I&Xa5?dWxgS47=?8VO8!;^iyUG3sYINh1%cl7br^h>CS-SY|WJiw>I z98L31bt|8(9^>-{d9)ARegMm29_izXx-~KZV`S_jq)CjW4nkuNQ*S_Hc~h@I4R0J1qDd^&{bjSl)>4&j3# z{6z>~4PoL6@?8jFstnd+j+^j;5T^4O^nWIVFNLtU&tUUqCkny#>q3~;C0Ktfgg*>n zW>}7iPeo>!`0=w`W_X7$Sf&?;8Clac#hLV7@;TQim0gD!ZU$wrR8VE*UAI&<3Z|Vc z<~#$QqbBS+Zn@duT6U8mQz&M~41=!W;D0ZRcN1MXIk%jzh$4FRiq{JwNC&^0#hhER fnX%0(7DZ6D2@Rrb89$@$ATy{5UO_|9p#b?Cfl5BI literal 0 HcmV?d00001 diff --git a/42sh/obj/sigchld_handler.o b/42sh/obj/sigchld_handler.o new file mode 100644 index 0000000000000000000000000000000000000000..d7e807d6abd4dc6c2dd5544873e73fe61b446b56 GIT binary patch literal 5956 zcma)A4U8Mb6`oz6yuZPtO%!A+RUwclB`t#T(?Y**cGkHw zp=6{t@4au|ym|ApZ+7;%58wLO5JC$HRG zDS{}Lx){DuMpk?H~I5xS;F|Y{)IE;N+WAmg_YnY*`myv*yZ6 zTPA^@JO_sIkc!XOWUbGVTmC9FTf*)BZd87PHc2y(TKu^Fa`}A2nPI$h;|u(~t(u>x zzjC!$W0Q7&(`t?WqQ?1O72jdZpL%rM_!_zDl;eKd-`ZGfTvB*BSjc1Was5r_Y#CyE ze1SjiF_zEwm#fz+j#bS~GrUiYcb$swJn2n{S3WmB-(M}iMJ{lAe0!9?A?5Gnv=WZ7 zw(-u2ub#8p{r#xT-}xu#&%3^U-0?oI{LQGv%$=Y=ymZoKdwiFv`3lDSLhrGGDyeO} zc5NEt^sHv}8|7-jvesTayG333%LL#_LhzM28oa+kwE1&NRBDDbA9GiXM|nK zHAJp4WwV+QwYulRs#wWQiAt?Hm5~+O%k}Xr$y}f1%bx3aqTav;^Uz7X=?S}1uIFnA zOw?;Gy5H`Irt1`h>r@b>u$v9~m(2B6?}1aTDblY^!t`b+gLRJB19xuksKp!B4GmJ*Po=_IaI|p05c*BSUCpIpJ(`Y=Dxv zKFifAIJ|OR(-l&5at*sAuw<}f?aI2037BG4F3gTEP!ZDjQas3cUZb3EdPp6`a>Mm3 zOs4I)n4{@h0ifqJrpuT}+bYX7@oX|Qw5^&1Y)c~0D}inc+lEDJ_;QIkG0Z3Qv@&+>EH_ypo)cqMDE*2PcY!aurn#Yp-SnlfXHXOiqTa#wKT{l78M*wzft7D<$%J{kQGdnNnL}m*MT>+Q(;DB8=M-2~&P;yl~j@%GQ2^tuEV7>z( zqCHwD84uH&5M~0lm-kSaK&FYwXL0{ooH?trh2UgQw5-FlPPW|QSxVE`ReAxsS^>{p zj3ORi1+n`iJUSC`_k?9Qy~C1;m(a}5%2AmXJH;ZEq^?k$Ecldazxfojv#G7nvl;U~NUtJBeL~OH&0i450i=IX&u%mS z0epgkT^Y*WrJEyoa1+&YL)oLch;+g@(uFE~4_rnxBMbQ_5JRVh9|sFZjpaZNLhQIA zb{K4Z$7b^da5>yO!#)CyemZQ1{aTDeLk<3KCv*|W?L z{K+25dUlZ+gZ3hO*rI30%q5V9FszQPdUmzB8`>?@DtdNO7=MGB0)_iyePHSEd~*<- zzQP$sn+dc9dbY#laOJbp89S#`YFRzoDIyEu)>wvW1@Oqpu~lIGk#6%6@F~ENUOHR{ ztwil4y4VHnW@>#HzK9zxL~YzKl0fJqSG19eV_B++Q+c1q9!Ny3N(pfTcyn(!u|FRXe+Vhgz*(TcpV0z zQ(|v{ZH^C`@2J-C)9C9xXb-?Bjy32oPeJQ`AaSfg)I0+k*E5baNSou34$=~9&@YUi zLHr1&iTTDaA!>NqIcYGgG(=-j=Sr~2WL!&J2;n@0lo;t36wOn)CQQPr%?5ZKZYC{j2!?Qi!C&N3(hnU`vT|cchKZ2EaL1Og7z_*#1?aQ zUWCSZjE(SpdKsErp;0}1s`=MI8{^ycdY~=g+ZD`sY$@I@5kVFgMiSLwScNj(bfWbP z0q7YCD(ruVy-W^~aY~HIxCqiaY%~!25bWCcu*n;=T)(pzeH@xx>4l8G4;r1v&&C^N zE`TQ27UN6{<97I34k$GgTLqR$4VagKv!B!;eR03Bb!t9+1sNiR9o1=W44z>}rOi#y z7(;3ScMTTvsx^~vBLcz+Ad9a@q`Y~PzKL01rgHERiOy|HsJ-ncD6{>4o(+yBF$@as z83+||MQ}+7qHq2@AesR2L!AE^h5ciGfq7ld@RM7I4jsJi>3h?iGmrlC&5h}I zpDPUBi;4d^=n&`?&{0qb>(vKhnmrHnWl$c(S7$fq9uQxY-+=xE;*RE?W8%ty#zB{Y zn0zXrZ-VXw-3K}VdIod^^iNO+-k^D)vq9&B)`M)&PRtoXk-KaN9ECfQ5RXY*kyyAp z330=61yFc|6XL0^Af|ajJPcGrW(h*fOA2D@C&VP8dgQr6h{u8Q#nerR$GU3BQ<)GG zr-GP22r;FohCHbW@hDSPJlP5HO;$ZJ?-Sy8g0f=bBE*EIpu3dS-N)kMt4}L_QYb4P zvxIm+s34e{2{B_UD}MP9;-`>;n9B(<#Vd$M6(OEp$`?;XLOdpw6%SED?lFjah7eP* z8Y52)LQF=gA-`V;@smcm=h04xn^0NtG$h1*rmR*f_e@?2;&DeS<|x&Wo0AZ8q_X1v zCB(Bb2tq;3!3yHhKr5a(3VIwWp)4vjAfBv*xZjm~e(4b6QLP&OzszJH$1r=K#j&Ek zY3XK83DT9e{Ys&2OKa&)Bg(~KG;Fi}C|!N>N$^c9)+E#4)-Ou<$yJB~Y;|z~YEAnn znLw?v59)1KbliOHN|U#>N;zNjMqBD=(`^LWXnB0%95DxRuXjf+|F=;)j?M9@Yd?CP zE?3L)sx(qUY(lp6#iD05oE&bmRi_2;lI<%M*Moq0_q&6Pl~Q+QC|Jot%Y;{5zZI@) zxCYC=5I)dqjXAR9P1bL$E~!xPfMNI-H@^|S@(`+DLMbh5#vTqE5ihJo*6R_>YSN$7 z#VdRs8C85(aUKsCx?C3WwOj#kko-~xlZD3%u~xzO=KMJk@}~#T>Qu$?YE>Bi4~@-) AM*si- literal 0 HcmV?d00001 diff --git a/42sh/obj/sigint_handler.o b/42sh/obj/sigint_handler.o new file mode 100644 index 0000000000000000000000000000000000000000..7e400cb01eb01d14ef15c248c4c51d2210069346 GIT binary patch literal 2616 zcma)8-)|d55T3Q;#EDbeNhkt=;6M$uD*n+ls1cx2s|me`6jf=`RtQ+m=Zk%jb7$RM zLW*%!Q7OVgk;*^7GcQOLyp$&*fkfYs;2+=xsSic;5kb{-W^XUCw<-2Wv$Hch`|UTo zdu#vt?_Upx09YKbK^;KdNnoR)qCAVLlm7(SqKPPf$ehSWOd!qDAPVP!wHbu{&|jLn zvb66lc(zlOLC(AJBAl`uKRzfs(!{!5#H(24^(seD zF~a%m<+*4$07Fb<2TxM!D=+8&rQczXiYmVdFM{oj zXEYjhi#x^|(R-}k-zCsnqBMZ-d-4nM-14e8V3l7+?#>a3_jjLof?vZhRlJi5-b7LY z?;GVjLVm&3#)0)-mf7dz{8N46;YTbWReoP9{I2!HGu<_;GvMpaC$>}Jd|`IK6o5Mt zPm{rK5RaakTX_HEQ7QFWHNN8E>4p>3_u#I~J|pq&NIdC63ZI&&Pj>J7wH<+|)_au5 zpnMb>NFpzi+fU#}_dvXbsS%M!be=)oiM}Tc&!CSy-~wu=P`#vb$(8V4VVwG3F5fS;cW!|gZqMD*Z~Ux%_*2t% zHd@WAR=qVjb;8%0Ww+jHmh0=S$=u0G({jyL)eW?Z^XKN@TheStYk00{`Mx%3i@_1_ zJ+rXtmUE`-1fE+j_;%HH0$wwmO5O7ECY0zC)fN^mo!2%j&$nGio5>gRMeV3r$9E++ zQ$!~}J(WLktT$L;*+-0m;n{{)DO~W}Rm%+g!t|71gYK2dbzDF$z{c2QdLj`|X9u54 zkFjyw_E;W+2mg zAvqr!(MG>ddzUy0uuC>3unc4I*jJxzivAUvGH?x>1iroc#gZOf39?8>NEi!$ml|9C zLt0i~q0NUWU2`d<&fP`n#P27E)_sZ+QRpf$7(|=Ep9$Iyfa3KpQqyROKjl(2@>%@9 zrG^lO=wNn-$ZaB=E{O=RPZxo0W?6Q0D0vgJXd$}T|2!b9-Q8%Lp_I;U#m*jze#YO& zoEV(Kma+fRhp=U|1}amoEhx7K@2y}nymyrG3`@jDk}oG%tT+)HMl68SAz1FXSO*Tj zh!!_1_jKszXsZz5uwVc%SU?}A4Zb4n3(}$y@mXod&}PK?Gy?DvYKJTOoqkRk2fh;U gh7r`b;|3Mm1Fn1d0uQEjkTIU^8lk_gug5#F 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 literal 0 HcmV?d00001 diff --git a/42sh/obj/token_append.o b/42sh/obj/token_append.o new file mode 100644 index 0000000000000000000000000000000000000000..fb2c0e5e535aad6afd96b274ce8c48a4199d2301 GIT binary patch literal 2924 zcma)8|7%-S6u<9f_cd#>ByHT>+$M2t{emuOy9!}zXS*%)HMTJ3HusA>USD3D)bu4L zFKr!Gt3_$7gE^SsZ~i8NgNgnkC{&bD95~UxKtb#e3j1X)IIw=sd-t_Tw%Hyy_uTX4 ze(t&F-20N7|NQlD3uBUxVE}If7deI)7_TKgEJB3F+y;WW-@|f;7!GXKi=x z>St2t&ur-4>>V*7JlghJD`S)!lz9>!X=M9-V>%&azELU-K-n%4L|=oWZ`0&iL136%vH%X)K?-u=txEC;dqyhVX` z)mwzTh;BU~zfSlf6cBI&Df!*t8dQQxB7r_~gHM6$iOx$bN?h;SbbeN?{;n?k85>-@ zrB>%^i>W*6(p*hldegs3Ypd7QrBv-mF%o`14wV#jY1U72NsTOg+gkn6iE|cJpRaeQ z5%pr_wzuNF(L0Nyx38!EW=?$1&uTTbTK!2~_&)aXcSH2_Vk0BxMq|@vshlfVv1GhE z-W_|=$m4r)Fxd?y-q#!Nd5V=wMj~&{nx%wYc*V3dJTueE#0{1>TgKXiUdrjEOyX3j zFlicgInmc!&a#|kGb5{)Sp6DTVYcQNSy@QBzGNhkFIW>XXCQ=(ZtJX^yI?YdNo`VB zD9U}Ih_W}-CbgsfawqeJjs^l~kuS`Kqi9?lVeQgjt1omoa3t_Va5(y0kTK4gEKC%o z>_V^`f#0yGA?6wa7`2M~v&q$KHD+yuL~+V9-)AbSQDqLeF~(fcWqb*Oxs?=XZ+ zmsF9&rDW?rSJJsjIHa&d-Icif!R(Bq&tZf%^SPrD0`t9%LAi*5obt&Q+Gn?X)K8{m zG7ZWd%>M~y&yqGIcliCEVMfsMF}WkclpB~{CbeDu2!i`@rCuCT=`bFnJ`TCM`>Qw5 zduWYL>f{PJ&}> zJ--;Jt@OPS2~K}$#IC&l6;IqK!nXka5d10lYcTbYN6Sre#}O$>cSAccO0)-9T7TJiu13C+q2HzY z_lh@;Fz4;Zv+g_C?!E>9_`(w3+3J6c?^Dt|kmkyH-WBHuFzM%=N|rwjb5EKl(|n+x z@9F10n}^ffr@X+!@C20~coecD%@6c**;XoY5UBwdInY)Ios1#((q52hNcfdwLOw3! zqe4PBe)?8Z+{2Jz0up zP_?L45h4nQ=Fq}lfP}d8&>|I(2tq=YdZ>gD;)p;CKyY z`{pxQEa;{DofjCnH>P;7&z&(GWDGW+ZI&%;X@2G^(a%={0umzIYGH z)5oPx-|Xn0i&vjtata*uuO{(EB;LP0;yL~`bR&qj9>9Ad>Q5e4f&97twccqwFy8CZ z`WFc^*&`mB&Vda2_fg0N^5WgMYbXDVdJS>5w6^tj#VTpq^wI7e8xk)gl{3I&RT1}3 z);tieS=JV8RM*|0Y5w=%XNfl<@fs3OE-6M-_U0_T`&X@44q`CgOxU$XD>`&l#yhi( zf1H;TTgG4jV&{jzbJD&H`4HCdgJ!_p#PNFfyj$PP{8VxEx8mx#&EjhNPI0ZhSzLR* zxOVPNarkiY;$2E!-Wc5)5y{Ut-uSk_{gIiTKK*KD*|eLLx|JEr=Ck?Cexr(}es(O6 zMRxR1_Tbahw2fTVTrurjtNx~GX-2J~@wLbrlsnbL?woE{bi0(BvFl5w(Q4*K4>il= zH>Qf!a#hsQoKMu0lCfCHqFT2WGtR*FCB3DSQPyp0R?e7Yn+qg%izgFlHIzt2_9k|V zL8MB_LOCcV`a_8qVlT$_#i!CQ#c_dDQlx4sjdyH>LWv`>7;>&Ai8YZu5bhrQZqg!@ zh{YIyC^`V!sWdOfxPm``-3u6XN)xANWI2v^mF0k(cdn|Z5T^}%5=pVdBBZRZ@I?~I zw=iPWxbCdJ$4FuRA*o@N4I&pXoCPb#`rd;WQjSDFguKS831yg~pJ4VKuL{a=G

? zK0$d|8BS5;YfRU9IT-#JLXE1oAi|$vhzONI&|t3>iX4&0NSj0M+WiYG-28Ku!*ybS z%(^DNy{roE-2!#v?_|TLF>_-uaSsb} z#7ZkpCaXBJQpE*h6<1Kg|6dmR5Ftkb>w6?G4#W7!ON}@)OJXG@Qt`g%C0Oy%kFw=I z47If-_Y)NosrQvv2HZlraVj(kLm~c73}6&|23T~O9F1yJ+a>;w_&XTw4nyZ5$d=u9 z*wwk}p`=jb{a>o-$O(1txH@z~?H^Z_9~A{>5FK_8iR7ewO3KHjgkbE*tdy8jk_V66 Km!k9Xu=+nxJy|9I literal 0 HcmV?d00001 diff --git a/42sh/obj/token_expand_var.o b/42sh/obj/token_expand_var.o new file mode 100644 index 0000000000000000000000000000000000000000..bc14a0b11c10058e506f834b64e7cf9976904262 GIT binary patch literal 3056 zcma)8-)|IE6uvXtJDu&eyW3U~5zQv8NE5qTvBrvsR4ESqku(Tc9?WFA9lDFl>}Gaa z7X+;ojSa@o2Z;XwM&k<)8f~HoN(g8ozWCq+F9wq(YQkfcX#LLIJ7sqO+moDo?m73| z@1A?^xp(I3-+%tw$e0pgXuu8N5=WB)gB}DglJOoiMZTbuQU*FO8F7LJL8j^16;Jeq zzI$M7_ia7sosk{FqhZWIn(*u63-FFf%+=!Mo&80c62|*o#&=EPy+O$b zZ4C0q*j@MQTF#_hz7y|qoi}4+y1=Vx>pX(|9kjB3h~fAGydaG$<5{Ir!8RT1Acc3w zey_;Yx5$9@tr(xcD~=!V4>%kjrwah;6oQ>vC7vH&$;yWDxf)x58>H4bH9tz6%$Oe{ynHjyloOsZxVP?Wq{2EeUd@_74nXc7~b!f67Op{$p9YF z=sn`=#8{FXV#1MvUke_CKb|J`F{DAm;8Acb(SC{LlC?uC_V*ZbzZtWCq|Q+Q#@x|G z;{@?rdX=Uca|1Vx69YGADhf-yLvh?VfaWX{qbK@k(3m~17;~3`301OP!ra-TRhBru znI?f5%+;AbSUP-#RvD-oa~F)+3z$AqO`PlTA?60I-}q^1X-Q0)y_kCSyMDTwso~+h zBdKZIE$53)sxRG>?n!OT7Vw^Q_w_(Y_ijo*(Z$McHdC-Gwwv*aui1`iS4tMjXWDYp zS(e#T#{7)s<}G(3GwK!(*jcZf>D^S$v9P-^FwgV{SXoM{ZZeW66rIVG-{c*SO<11A zvN_9T<@{lr`KDr_0DamjFr`&_G~Ui5@uc=pyj5w#fvIU2+mvlhk@)7=v$4mTpKnId zai&Vc&UTz>Z=K2$jI7!k2r&zvy>=xMkHrWA->()HiSKMDr4N-9?S#5D7NfHH1uX7_ z?%$AR_Bbp=JB9GuGqS&Ydjf;9*T#^NP?U%|U%@8^efq#QsPm--(ps+wEq9)@HqsbB zgho4#<_K8b(Ma93>Q?=I$S=sWP3>U%N9d8i+OKx#`dRdTChY~aBgwRH(VZu?E&3q@ z*ZGeS(NEE6O7wFwq4JHF`;FitkVGnd5;pPm?EYtiLwoi&0+|*rb#uuSo{MT+s>NT) zhgKuLj~qetFe$J^aFrYUE6f;SQfwrNum!g6N$267nfGFgmwVq#Hcx++O`STjz%xIT zFg6Q54gLiD75FNcvO*Y?$TeUPrGreAzfLfSQcfn4s2w88Bbg|*(u>kbCd#ce(UFmf z&QQYtUltm%L)r#OsOQ5WOJi_5?-|QdT{O*K`ku>)yMkd$#>Nk zTf{*!Mir;Bm(VK8t#}Jsh1LKo%P#<~V74$dLEpFV<;Gh8SO1+z=ftguE?0acq44{g z^fi3FHppXxJUYf3wIQx)$9P1Wx0}k5Ah~AYua<#nC}!LImlbJ zc^{?WI;?MV<$F~_s0j1}a06rALy%awyH5n)y$%xP(*3m1wTzS-qg~It+dVZ1l z%?3zVWh=Z&wHUfu@p@UD2AVP(j7SaBR9=Nw7#i~3!`y#!ehTkpIbptdW$!?hQ(Eyp zl=;m_yiF`VsD%2-_T4l;zu*nK!HszDH$@AvE)n51j7<@0zlRFNFvZsV6rL*Mo$(5z zqZQZj3Wu294f{POSKlBLT7SpAh;zV4ccTf8(|jLHNxaPx&z5-76o4I3I;A>)m9iHi zw(eKmVc*J0CxJ(L*-xll4FCQ+3MAkl?lU3%`j0A?%53BJ(2ivrlciY)^cduqVI1OxVy?`ox9Y z(_anpJ<9Fcwg0i)Vb>4JRWCP?@5}e)dW#jj{Hq4~VC4H(=O27P1b)$~xMQww)vC|9 z9vbAj`J%A)1(<0S{BprBS-bt}LAO{7tp3%(h?ol$r9!PBg7Psp9Gn`PQt)wF96DiF zs@`y}?giyx&n@N3UM-p}YEFnE0x5Z7>7)qfgahM?BL!bj(K@yJ(%nWZoi&%HJGCy< zThGJUrEN~e((6*|Q}=gl>Oijyp-ab(Zd`@^O{T%mletLj=#J*#o3&iT(i>AL^fi%z zUx@Z@EtXED2q{Ez0Uqz@rZK>S@h>=Pb0R$D9bzRsq%DyMNA)q9JrK&F?ROBMWi&0O zpBXzC>ikH;8s#;wW$GB)^fM!G)9QQ`qcF^IjA7U^^Ayx)!TM8is_{hP4G8lc4DW*5 zwzr>ySlqTT`7z{AbZypqM3QS=qBW@ZB$8a~Z(5J&Jy~H+L!F}86+aJQBobF3;@@E~ zwfK*8;q|m1AGEn?#i({jksW;>FKKH&VnxDjLgu58rnz*r&bsC zYQlsx@cBy#;*t1_U5Kpf*BQr~hJOcr<0n&J9Diu$?ls=Mul@DI(od&X{87xke*Egi z{^zqDhd=quu)aBqxc9)HgISJgFbij5(@VfB!K@E!KtHb$5L-hRrF5~rbg?Ciz#z7i zF7{ly*jl>A=UiNtF1AEsvBh+;>)l`w`$pF^SVr+Y(8U8H;cr*sILfC=h8dFN$t6w` zslsc=_6Th(t7SXliPMPU+V_BaXQGnJ`9ch)voGme7O3B-i-^(135=RHlU{&P;~HRX z_EHj7J@BovSFF@au2o($u(sI~91X1S(g<)xgh2s{+IW!xE(*wx@EFK@2?owVc<(`N z!?L2Cha{v}Ml+Jhe~g5=(|pv(m^+Py8w~RUBW(^FcfpG7G~(ujp+nWo3Ef2IHYQ@F zRs1&r&Z>ta+q9%yA>}eDAsBC-k&-V%1`b7CP#VloZ?uJTpvE8Jl3T&{X7?-p2aUt0 APyhe` literal 0 HcmV?d00001 diff --git a/42sh/obj/token_init.o b/42sh/obj/token_init.o new file mode 100644 index 0000000000000000000000000000000000000000..0b21d8c0329b6afb8f8218102f80c79093d2ed86 GIT binary patch literal 2768 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 literal 0 HcmV?d00001 diff --git a/42sh/src/builtin/builtin_cd.c b/42sh/src/builtin/builtin_cd.c index b973bf53..6c84c1db 100644 --- a/42sh/src/builtin/builtin_cd.c +++ b/42sh/src/builtin/builtin_cd.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:57:53 by jhalford #+# #+# */ -/* Updated: 2017/01/11 14:29:14 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:10:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/builtin/builtin_echo.c b/42sh/src/builtin/builtin_echo.c index d044d7cf..f84c9123 100644 --- a/42sh/src/builtin/builtin_echo.c +++ b/42sh/src/builtin/builtin_echo.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:21:41 by jhalford #+# #+# */ -/* Updated: 2016/12/13 17:58:14 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:10:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index 8e777ae1..6d9899f6 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 21:13:23 by jhalford #+# #+# */ -/* Updated: 2017/01/09 16:19:38 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:17:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 2f18bdc8..b656db94 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/01/11 18:01:05 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:56:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index fb3a463a..9857891f 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/01/11 18:01:10 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:12:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/builtin_bg.c b/42sh/src/job-control/builtin_bg.c index 1f34dcdb..d17ef2ed 100644 --- a/42sh/src/job-control/builtin_bg.c +++ b/42sh/src/job-control/builtin_bg.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 16:54:18 by jhalford #+# #+# */ -/* Updated: 2017/01/11 14:37:23 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:09:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/.ft_post_tokenize.c.swp b/42sh/src/lexer/.ft_post_tokenize.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..a6c9da13d5dd5f006f103c2758d6bff711b4e57c GIT binary patch literal 12288 zcmeI2Pj1sd6o+3}AOZvstO|=h5<%0XwPU9cW^j65{?S>6*Fw=p>*_)*cVc7 zsCq95Rb2&b;d{@8=1hR`DK@|cW;f7RjpaKzsG3G4T2#ni$19h&W?#>hY=8~00XDz} z*Z><~18jf|oOlDOmx0&xE>0!y<~18jf|umLu}2G{@_U;}L6 z1RAjE|NZZ00qW=I=IQ_c^!NYAivZh{9OcUefHvhS`a zddCYDmP+wmI89q(DOyh(4?W-M^j(4Z!KPoWnFr8IRC-(uOL_!6#+CxNdakX6YoS>& zYI?=c%?cW~t!m9OZ{f}X#@m}mE?g)S=!jkijW$Oo=ThK(DSihUMg%krdPcxj)9y3^ z=^i2r<%oz$H=Iv_!--i2WuhbxDyPxNq7-=Vz&gB(yDi&kZ#dHSLoJZc)<^1-;Q&&$ zQql-B1^&5a%1lH%B+`8*^b|P$+0&dUKt!u-#Wl$w?o!~?< O1|HY5LZ7{{lANYtt*zFwSm!De6FY<5d4(TY?QJqUs*f-lQ#cD9=~&2E!yty&d) z`3fEcuO7U35%f3hQBKL3++3S+>{Fp(%2J9N44-y|8uq%qXi>%}R7-ZhVX%I(T!FA{0&z zkOSlZIY17O1LOcXKn{=t+u4DzJHnpf06XGCRO5PNsE)f-kptuaIY17O1LOcXKn{=t z4C=US1b&5SDll`uY4>rXf@-L_>UrBc~G$Pd?C9YA1q_-PvjB1=UsInrb3e)pf^n zLOqgs%rvLP^)V%thi0;VC7SI|MN2ZK#fhU@U-c||%p5P&v`j*&j(s@TQ9-GdxZM^$ zFW~YL$BbN2C&3AD9tdU*Yx9{IK7r5bD(|=NhS`ocf!(C*IYGTCU1w2O3)qnsHhW6h zRS&w-c7$6R3@i&j?KFhF5V#^}r$f!9UMG}kf2ixqAP`%#~LWbtkuGd>^ z$jlBNbo`81AiHU(I#jmX5|jW!~+R1y1()f2(YJ6^UoCTbO}eqh|_ iSBc=pG=`!qE0IJiDwzK-!6ALs?F(+zds4tlXRzN8#fX{! literal 0 HcmV?d00001 diff --git a/42sh/src/lexer/.reduce_bquotes.c.swp b/42sh/src/lexer/.reduce_bquotes.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..1f2cadf37f75e3babd6de5051868b74e783e77be GIT binary patch literal 12288 zcmeHN&u<$=6rLb~SRe$^3!;~4ES2@z@p|p3k+w}r3q?YJ04b>|6=AJ+$Mwd}+8K|P zq!k6kk3WP9;=~^Se*j43niFTlg%bzF3BH+~-Plc)wjx5R^v3!;Ki+%ad-KisV0*jG z>u!08F=AT#Cy=N9!B-2PH+Hi6cZP^~Tg2rmA(UT{*-pvX959DZD z#A@QNwkCalB4d9j_J#DNNT#vqba$sCB_@sd1S&F-0;IrWE3nAgt)QvHD$D2inU}X7 zn}GsI0aAbzAO%PPQh*d71xNu>;K@}$jThLbDE}$D1@k)q#tU{{^ma-eDL@L40;B*b zKnjooqyQ;E3XlS%04YEUJb?;C_<#TIvyAl|6p#P^i|_y6FEREpun7G4B4Y#KRp94E z#`b~NfWsFU`wI9H*agPG72q=90~}Zao(BGYp0PiGUx8nMd%zFC7r#u>uT{0PG3qVM*R6x^0DJv(D7dTlgqh7~YqkmDrnBHE za0Fn2wm9WZFU=Cy%WuMYHK_Akym)8a(UnxIAXEeRm-Sp^%!&Jvbi7QxM_2QLBN9x;p&C3wWbNT`_ZsBlF1QerKTCV?aK9nuv~bQ zK@BYS1$T^Qf(pW`2jNi_m$svL@OmtxY| +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 14:01:59 by jhalford #+# #+# */ -/* Updated: 2017/01/12 15:31:34 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:31:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index a3de30d2..23367fcf 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/01/12 13:58:20 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:37:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 3955993f..a75170dc 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/11 16:11:02 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 20:49:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index 37ae772b..4a35438f 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/11 15:48:13 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 23:46:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_backslash.c b/42sh/src/lexer/lexer_backslash.c index 9a6f2438..b1a6c908 100644 --- a/42sh/src/lexer/lexer_backslash.c +++ b/42sh/src/lexer/lexer_backslash.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:49 by jhalford #+# #+# */ -/* Updated: 2016/12/03 12:35:13 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 22:06:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 04c87fca..2dc52117 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/01/11 16:10:53 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 23:58:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_dquote.c b/42sh/src/lexer/lexer_dquote.c index d5c1b2e3..35485a56 100644 --- a/42sh/src/lexer/lexer_dquote.c +++ b/42sh/src/lexer/lexer_dquote.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:58 by jhalford #+# #+# */ -/* Updated: 2017/01/10 15:15:24 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 22:04:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/reduce_bquotes.c b/42sh/src/lexer/reduce_bquotes.c index 5198a2f2..6057e8c0 100644 --- a/42sh/src/lexer/reduce_bquotes.c +++ b/42sh/src/lexer/reduce_bquotes.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:46:27 by jhalford #+# #+# */ -/* Updated: 2017/01/12 15:10:16 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 01:14:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,4 +49,3 @@ int reduce_bquotes(t_list **alst, char **str) } return (0); } - diff --git a/42sh/src/lexer/reduce_parens.c b/42sh/src/lexer/reduce_parens.c index dfad6686..175c1dd6 100644 --- a/42sh/src/lexer/reduce_parens.c +++ b/42sh/src/lexer/reduce_parens.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:13:31 by jhalford #+# #+# */ -/* Updated: 2017/01/12 13:50:10 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 18:26:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index c08e5c5a..250574e3 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2016/11/11 17:47:15 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 23:01:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_cmp_type.c b/42sh/src/lexer/token_cmp_type.c index 08f3ab87..69c90510 100644 --- a/42sh/src/lexer/token_cmp_type.c +++ b/42sh/src/lexer/token_cmp_type.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:08:55 by jhalford #+# #+# */ -/* Updated: 2016/12/05 13:35:53 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 23:12:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_init.c b/42sh/src/lexer/token_init.c index cf9fe1b7..7f55464f 100644 --- a/42sh/src/lexer/token_init.c +++ b/42sh/src/lexer/token_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 15:30:25 by jhalford #+# #+# */ -/* Updated: 2017/01/11 15:45:10 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 23:58:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index 97876ddb..9453a0cd 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/01/12 14:48:33 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 23:44:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_ask.c b/42sh/src/line-editing/curs_ask.c index e465b8c7..62634544 100644 --- a/42sh/src/line-editing/curs_ask.c +++ b/42sh/src/line-editing/curs_ask.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 17:03:49 by sbenning #+# #+# */ -/* Updated: 2016/12/09 16:47:13 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:22:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_clear.c b/42sh/src/line-editing/curs_clear.c index cb3d0694..a76809ab 100644 --- a/42sh/src/line-editing/curs_clear.c +++ b/42sh/src/line-editing/curs_clear.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 17:28:50 by sbenning #+# #+# */ -/* Updated: 2017/01/10 17:20:41 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:22:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_goto.c b/42sh/src/line-editing/curs_goto.c index 389c982d..451be308 100644 --- a/42sh/src/line-editing/curs_goto.c +++ b/42sh/src/line-editing/curs_goto.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 17:10:22 by sbenning #+# #+# */ -/* Updated: 2016/12/09 16:58:26 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:22:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_move.c b/42sh/src/line-editing/curs_move.c index d96d0ec1..18373634 100644 --- a/42sh/src/line-editing/curs_move.c +++ b/42sh/src/line-editing/curs_move.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 17:21:08 by sbenning #+# #+# */ -/* Updated: 2016/12/09 16:56:41 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:23:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_setup.c b/42sh/src/line-editing/curs_setup.c index c9842a54..5c43b795 100644 --- a/42sh/src/line-editing/curs_setup.c +++ b/42sh/src/line-editing/curs_setup.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 16:36:43 by sbenning #+# #+# */ -/* Updated: 2017/01/11 13:55:42 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:23:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_single.c b/42sh/src/line-editing/curs_single.c index a7c883a9..5d233d62 100644 --- a/42sh/src/line-editing/curs_single.c +++ b/42sh/src/line-editing/curs_single.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 17:04:53 by sbenning #+# #+# */ -/* Updated: 2016/12/09 16:40:41 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:23:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_term_setup.c b/42sh/src/line-editing/curs_term_setup.c index 9a18bc72..8bd5eeaa 100644 --- a/42sh/src/line-editing/curs_term_setup.c +++ b/42sh/src/line-editing/curs_term_setup.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 16:50:26 by sbenning #+# #+# */ -/* Updated: 2017/01/11 13:55:40 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:23:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/curs_write.c b/42sh/src/line-editing/curs_write.c index efe19c72..c9e4297a 100644 --- a/42sh/src/line-editing/curs_write.c +++ b/42sh/src/line-editing/curs_write.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 17:52:20 by sbenning #+# #+# */ -/* Updated: 2016/12/09 17:03:41 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:25:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/ft_readline.c b/42sh/src/line-editing/ft_readline.c index 90620a39..85b96e20 100644 --- a/42sh/src/line-editing/ft_readline.c +++ b/42sh/src/line-editing/ft_readline.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:03:48 by sbenning #+# #+# */ -/* Updated: 2017/01/11 17:35:14 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 00:37:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_bitset.c b/42sh/src/line-editing/rl_bitset.c index 60190f51..1c909e4a 100644 --- a/42sh/src/line-editing/rl_bitset.c +++ b/42sh/src/line-editing/rl_bitset.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 10:31:34 by sbenning #+# #+# */ -/* Updated: 2016/12/12 13:26:06 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:35:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_clear_function.c b/42sh/src/line-editing/rl_clear_function.c index 6782b79c..02305b2d 100644 --- a/42sh/src/line-editing/rl_clear_function.c +++ b/42sh/src/line-editing/rl_clear_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 13:34:29 by sbenning #+# #+# */ -/* Updated: 2017/01/10 17:46:00 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:36:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_clipboard_function.c b/42sh/src/line-editing/rl_clipboard_function.c index 5b884d97..a5c93532 100644 --- a/42sh/src/line-editing/rl_clipboard_function.c +++ b/42sh/src/line-editing/rl_clipboard_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:32:11 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:34:12 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:36:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_clipboard_utility.c b/42sh/src/line-editing/rl_clipboard_utility.c index 86b1987e..5a7a595c 100644 --- a/42sh/src/line-editing/rl_clipboard_utility.c +++ b/42sh/src/line-editing/rl_clipboard_utility.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 14:04:33 by sbenning #+# #+# */ -/* Updated: 2016/12/09 15:57:47 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:36:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_comp_function.c b/42sh/src/line-editing/rl_comp_function.c index dd1d9729..b4d0927a 100644 --- a/42sh/src/line-editing/rl_comp_function.c +++ b/42sh/src/line-editing/rl_comp_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 10:49:03 by sbenning #+# #+# */ -/* Updated: 2017/01/10 11:51:19 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:36:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_default_function.c b/42sh/src/line-editing/rl_default_function.c index 5c953981..bb1bd721 100644 --- a/42sh/src/line-editing/rl_default_function.c +++ b/42sh/src/line-editing/rl_default_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:30:38 by sbenning #+# #+# */ -/* Updated: 2016/12/12 11:50:26 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:37:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_display.c b/42sh/src/line-editing/rl_display.c index 26f787f5..3524d155 100644 --- a/42sh/src/line-editing/rl_display.c +++ b/42sh/src/line-editing/rl_display.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:38:39 by sbenning #+# #+# */ -/* Updated: 2016/12/10 11:52:18 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:37:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_dynamic_buffer.c b/42sh/src/line-editing/rl_dynamic_buffer.c index d6f1a673..932db10b 100644 --- a/42sh/src/line-editing/rl_dynamic_buffer.c +++ b/42sh/src/line-editing/rl_dynamic_buffer.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:42:31 by sbenning #+# #+# */ -/* Updated: 2016/12/12 10:28:59 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:41:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_long_move_function.c b/42sh/src/line-editing/rl_long_move_function.c index 5769b90e..a54f6859 100644 --- a/42sh/src/line-editing/rl_long_move_function.c +++ b/42sh/src/line-editing/rl_long_move_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:55:48 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:57:16 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:34:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_merge_line.c b/42sh/src/line-editing/rl_merge_line.c index ed0b0ea3..50ee04af 100644 --- a/42sh/src/line-editing/rl_merge_line.c +++ b/42sh/src/line-editing/rl_merge_line.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 01:25:03 by sbenning #+# #+# */ -/* Updated: 2016/12/12 11:34:02 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:34:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_page_move_function.c b/42sh/src/line-editing/rl_page_move_function.c index efd20d87..1995f6ca 100644 --- a/42sh/src/line-editing/rl_page_move_function.c +++ b/42sh/src/line-editing/rl_page_move_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:39:57 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:42:37 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:37:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_prompt.c b/42sh/src/line-editing/rl_prompt.c index 3dc9e4f0..30fb6240 100644 --- a/42sh/src/line-editing/rl_prompt.c +++ b/42sh/src/line-editing/rl_prompt.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 01:45:09 by sbenning #+# #+# */ -/* Updated: 2017/01/10 16:41:28 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:51:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_quoting_function.c b/42sh/src/line-editing/rl_quoting_function.c index 57ce891e..06384194 100644 --- a/42sh/src/line-editing/rl_quoting_function.c +++ b/42sh/src/line-editing/rl_quoting_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:35:25 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:36:41 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:38:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_remove_function.c b/42sh/src/line-editing/rl_remove_function.c index feeab949..a4bdf334 100644 --- a/42sh/src/line-editing/rl_remove_function.c +++ b/42sh/src/line-editing/rl_remove_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:45:08 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:46:39 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:38:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_setup.c b/42sh/src/line-editing/rl_setup.c index 3e68d63a..ead0b93e 100644 --- a/42sh/src/line-editing/rl_setup.c +++ b/42sh/src/line-editing/rl_setup.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:07:47 by sbenning #+# #+# */ -/* Updated: 2017/01/11 17:35:12 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 23:27:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_short_move_function.c b/42sh/src/line-editing/rl_short_move_function.c index 8399cf19..7dc5196b 100644 --- a/42sh/src/line-editing/rl_short_move_function.c +++ b/42sh/src/line-editing/rl_short_move_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:53:18 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:54:52 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:38:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_stack_line.c b/42sh/src/line-editing/rl_stack_line.c index 3e1a538b..0824fb11 100644 --- a/42sh/src/line-editing/rl_stack_line.c +++ b/42sh/src/line-editing/rl_stack_line.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 01:06:54 by sbenning #+# #+# */ -/* Updated: 2017/01/10 13:07:37 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:39:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_state_function.c b/42sh/src/line-editing/rl_state_function.c index 200961d8..c7deca62 100644 --- a/42sh/src/line-editing/rl_state_function.c +++ b/42sh/src/line-editing/rl_state_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 13:00:59 by sbenning #+# #+# */ -/* Updated: 2016/12/12 13:01:51 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:39:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_word_move_function.c b/42sh/src/line-editing/rl_word_move_function.c index 205d9046..de976fa4 100644 --- a/42sh/src/line-editing/rl_word_move_function.c +++ b/42sh/src/line-editing/rl_word_move_function.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:47:31 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:51:53 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:39:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_word_utility.c b/42sh/src/line-editing/rl_word_utility.c index 46010b9f..343a6ecf 100644 --- a/42sh/src/line-editing/rl_word_utility.c +++ b/42sh/src/line-editing/rl_word_utility.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:48:07 by sbenning #+# #+# */ -/* Updated: 2016/12/12 12:50:44 by sbenning ### ########.fr */ +/* Updated: 2017/01/21 22:39:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/.main.c.swp b/42sh/src/main/.main.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..cb0bbd5e35f9decaff9cb252b1ad9066390ffcff GIT binary patch literal 12288 zcmeI2%WvaE9LJ|fJPee_vIm4fnkL%Tb=x>j%Xaay3w=`v?XrEaNGq(VGfCV!c4WJy zB?<@xcO;J7_y-X8J#a!=3GE5NUx0+Ph$9yc@Et#rw3~J-wU?DkF>B7cY#N=A(fOJ4Q zARUknNC%_?(gEp!bl?$lAZiYf&yn+EY2Me;>%fs~+LRaRfOJ4QARUknNC%_?(gEp! zbU->F9gq%42OdEO7=GWMev*)-r;t2;|Ihya|KWK;J_du}&U1w9fLFlXK|=Py2>9(; zLcRuHfd+8F9GC$H$blhn0Xz==d4`Zb!5#1o_!8`b8n_8G@G2nS{?mlq13!Up!3W?q zpn!iBLjDGSf&1Vd_yuf&8E_H22>!r5{SJNwcfrr#NANwUgO9)_SO(($7lAC&0qKBr zKsq2DkPe*Mfi_VB9_`*179iq2twDZrOgL!MuuEVG&FF zBHvR-C$77W#|w_v+>J&@`wLYgE8wgmCaPjiizuJe9hXzpKubhFl#bFjaMD@hk;V2z z5>P^-kP@jrn3dm*LOM*>-dQM@t<@XrYgTy7_6?PEQl~-PPGS`WDTtuH>kR%i>}V zQCr0EB1I7|Q>v&@k&azw0o62QMaa>I)bS{OK;ouhE8pj~I?Te@dR?Qsq0y}<;M`)( zrh8yHUe(!GF+NU*F&)nc_0s57su?=fbfTndFji>>NTaH*t?f-bKt zF5jZFHy38!n_vBKg`)4ahx~gLl8Ev8&hjHM#R7!udlO9-ggm|rWEuH8+!LE5u2_j^ z(wROfR*iT-n|>Hsali8^7k(b2-8)T9)ZufonU4+ANi#kk!t0?Vg=3;*c^nNePUjaE zXEw^~B2sskHCU}(^P?;cI&vu-!CuO;>b;k40@)~0U@g5yS2oIJ%#1^KnrK_`(@-?b z62q43gps1f(>j~3?*U6TUndO7JD%wqS&H}?e2=ksXcGcI^JIvvXd=kOht30~HXl3u(_ zjVtC<(R}@i5Ztaax9SI#u4H~pDAM%O>CXf^9jB>`K_&gebkuqlWrDK@W;csBx0${3 zwjD4pEcij~de8i{8jFmXnNp8tCivi*hx7=wt|IbG)iXiyZC9`#B64`x95a)Sw31vh e!NYS;*)q*c5;akh2 literal 0 HcmV?d00001 diff --git a/42sh/src/main/data_exit.c b/42sh/src/main/data_exit.c index e22c741d..e7eb4c74 100644 --- a/42sh/src/main/data_exit.c +++ b/42sh/src/main/data_exit.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/07 18:07:50 by jhalford #+# #+# */ -/* Updated: 2017/01/10 13:16:38 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 21:06:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 1829cbd1..c303d707 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/01/11 14:03:16 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 23:28:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_singleton.c b/42sh/src/main/data_singleton.c index 33d75a04..c215e7f9 100644 --- a/42sh/src/main/data_singleton.c +++ b/42sh/src/main/data_singleton.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 11:36:39 by jhalford #+# #+# */ -/* Updated: 2017/01/10 11:47:11 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 00:37:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 27e00034..cd8b64f7 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/12 14:02:30 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 00:37:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,14 +26,13 @@ int shell_single_command(char *command) return (1); if (!token) return (0); - token_print(token); if (ft_post_tokenize(&token, command)) return (1); DG("after post_tokenize"); token_print(token); if (ft_parse(&ast, &token)) return (1); - /* btree_print(STDBUG, ast, &ft_putast); */ + btree_print(STDBUG, ast, &ft_putast); /* /1* ft_dprintf(STDBUG, "\n--- INFIX BREAKDOWN ---\n"); *1/ */ /* /1* btree_apply_infix(ast, &ft_putast2); *1/ */ if (ft_exec(&ast)) @@ -51,11 +50,13 @@ int main(int ac, char **av) return (0); } while (1) - { - if (ft_readline()) - return (1); - if (shell_single_command(data_singleton()->line.input)) - return (1); + { +// if (ft_read_script()) +// return (1); +// else if (ft_readline()) +// return (1); +// if (shell_single_command(data_singleton()->line.input)) +// return (1); } return (0); } diff --git a/42sh/src/main/shell_exit.c b/42sh/src/main/shell_exit.c index 0983fa88..83e4becc 100644 --- a/42sh/src/main/shell_exit.c +++ b/42sh/src/main/shell_exit.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:37:04 by jhalford #+# #+# */ -/* Updated: 2017/01/10 16:51:45 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 21:50:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_get_avdata.c b/42sh/src/main/shell_get_avdata.c index eecb524c..6194cbf3 100644 --- a/42sh/src/main/shell_get_avdata.c +++ b/42sh/src/main/shell_get_avdata.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 17:14:52 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:26:32 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 20:56:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index d91fce50..04fb5a22 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:14:35 by jhalford ### ########.fr */ +/* Updated: 2017/01/19 21:23:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index b540d564..461d8736 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:07:38 by jhalford ### ########.fr */ +/* Updated: 2017/01/21 22:02:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.ft_parse.c.swp b/42sh/src/parser/.ft_parse.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..5596bf6a046de669ff1f94f273aabbc4415ce6dd GIT binary patch literal 12288 zcmeI2U2oh(6ow~U00vSJz2ZYK$x5x)o7(%4HjP6oQnHYUO&VpJ7KDoB_0DFUY4#2?@ifw%^VTafw>`i?(#y--pja#QI{^kj~G=Da@hW*sTY zw9404R{5M+V;Ijd_MQ33J5#T|!1kV)V6OCC*;a|8hp5R~P_3A=RkI_HSb94VwASTd zTX<1u%~r#%6-v(vTp0>!bs{H@Oz#L4N|6KPz_A_JjXLKpPO@6HQdYHv=_!8t`ORa? zPysnW4v+)n069PokOSlZIY16Px(-Ca1p656KbCG`KAk82Hm8>~kptuaIY17O1LOcX zKn{=tB;7f1^Y=LEP7Ca9Ae2TF@!0+HU@GbZTdqe%KFN*d90nuo%Bl?baD{$0}VzJ1S(q7l^ ziSdWT>0}GK9y#c&KWGbX6mvELB-fUll{fiE9A;hJK=|)V zoAuR|2WAggdX!gc!%yu^ehKFe{l3@R#V2n%IrD3Frx~*h{J>6XaKlo9Cpa>}%>ZwQ zXxqG6uFP5Gid8N1$_2YNXIJNWYo8~_n{y8?6biV)_jurNbehWq--zF(MDT)DsaQ1# z&e@e&`}{>ExZQPo9ehGZl7*5|G)mhgJGn@MWXc3b d>y8oGb|#5P4b=WG!3RA%5j?5)#K22uvHS1y+gShr literal 0 HcmV?d00001 diff --git a/42sh/src/parser/.parse_word.c.swp b/42sh/src/parser/.parse_word.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..9e721f92f141b7ce10d8e067a0762e837f2fe034 GIT binary patch literal 12288 zcmeI2-D(p-7>1`FSk|^G3L+vhHlW*0oBc`J;#P}V5k#sUSoO$do1M^Y(@mJ2)|R3o z==FHusW(v2Q*XcnucF{P`;)XiD4`ai@J)Dk{=V;>*(X^@$Sgaro-Fd&TAiU>WbDV| zPjCM0U1ht&LoAeWC?h>_bP;t~?|N>n;niC5h|mwYq5VR3Rz*{#cEd|o>{K@GZYWbB z^D21Pkx{LAgbz&-0U~f50%NT1xsJ}PjNjy!FD)I%gmQ=g5g-CYfCvx)B0vO)01-H) z1XOp3eZ=0+6#Ktk)I*2rqDvJKAOb{y2oM1xKm>>Y5g-CYfCvx)B5(=`g!q4d=Nx0h zBiKCt|1W?4f4#uiTWAdWex9*4=o+*;#@H5g8~QcM*ca$C)P*{b2RYCUXcQWO_Tc>+ z`U!o5Hlf$h707_}+GimuM1Tko0U|&IhyW2F0z}|H5qQrGDb$8cxamyHF{7n|cB+C% zwBweUs!*y)Zdw?cn3`{P5+xE0+(J|sMY6fxMMrhkL=v>55QRZ@sMQQp9a-ikVoT}i zq!Wp$`6yIjElri=_c*+C3x4LI$w{7B=i&WiwcQoSd-*h2c)qy!;Mt?X7GtJ`Rk71p ziFJ%->Dlms8^DaY*@>fx?EdEPU0elOs9{)Hty2Ry>HQd%zRs~77AMLuvU|%;>Y6H8 zR=8EpdF_Qy@Fb=uh+)8!#HWSHzL8u^E1D-m2t*w3-KpaxMgd@6D+0SQWtNS zhX%OYJWIn~=%5Yl)_24{3-{8n|4FPh2lVu-ejZsg@~Si((Bxp4@0XTn X>4NEhGCXLX_j1FNdQL1nbT<17570S4 literal 0 HcmV?d00001 diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 2dbdbb5d..805fbfe6 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/12 15:07:31 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:37:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_dgreat.c b/42sh/src/parser/parse_dgreat.c index 15d7b579..8cd643fd 100644 --- a/42sh/src/parser/parse_dgreat.c +++ b/42sh/src/parser/parse_dgreat.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:44:12 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:23:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_dless.c b/42sh/src/parser/parse_dless.c index a1970bbb..f0a4ba45 100644 --- a/42sh/src/parser/parse_dless.c +++ b/42sh/src/parser/parse_dless.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 13:31:40 by jhalford #+# #+# */ -/* Updated: 2016/12/03 13:31:41 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:23:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index 490965dc..6350fd9f 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:45:50 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:23:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_greatand.c b/42sh/src/parser/parse_greatand.c index b4d6f657..b607415d 100644 --- a/42sh/src/parser/parse_greatand.c +++ b/42sh/src/parser/parse_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2016/12/01 16:37:58 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:24:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_less.c b/42sh/src/parser/parse_less.c index b1da5d1f..9f97c55a 100644 --- a/42sh/src/parser/parse_less.c +++ b/42sh/src/parser/parse_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2016/12/05 11:58:48 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:24:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_lessand.c b/42sh/src/parser/parse_lessand.c index 8f5b0b9b..3aa80e6c 100644 --- a/42sh/src/parser/parse_lessand.c +++ b/42sh/src/parser/parse_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2016/12/01 16:37:54 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:24:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index dc35483e..7f00ee86 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2016/12/03 13:32:14 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:24:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_subshell.c b/42sh/src/parser/parse_subshell.c index bcb38158..9f6137eb 100644 --- a/42sh/src/parser/parse_subshell.c +++ b/42sh/src/parser/parse_subshell.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:52:44 by jhalford #+# #+# */ -/* Updated: 2017/01/12 15:10:24 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 16:25:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 45c64039..28ccb098 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:24:55 by jhalford ### ########.fr */ +/* Updated: 2017/01/20 00:07:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/read-script/ft_read_script.c b/42sh/src/read-script/ft_read_script.c new file mode 100644 index 00000000..71bbc46b --- /dev/null +++ b/42sh/src/read-script/ft_read_script.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_read_script.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ +/* Updated: 2017/01/22 00:33:09 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int ft_read_script() +{ + t_script *script; + + script = &data_singleton()->script; + if (rs_setup(script) < 0) + return (-1); +// if (rs_loop(script) < 0) +// return (-1); + return (0); +} diff --git a/42sh/src/read-script/rs_setup.c b/42sh/src/read-script/rs_setup.c new file mode 100644 index 00000000..4d735c14 --- /dev/null +++ b/42sh/src/read-script/rs_setup.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rs_setup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/21 23:08:04 by ariard #+# #+# */ +/* Updated: 2017/01/22 00:33:27 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int rs_setup(t_script *script) +{ + ft_bzero(script, sizeof(script)); + script->buffer = 0; + script->b_size = 0; + script->used = 0; + script->q_size = 0; + return (0); +} From fbe52ade64ee0a1cf139a86fd0281f46ccf19b97 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 22 Jan 2017 00:38:41 +0100 Subject: [PATCH 002/206] read script init 2 --- 42sh/obj/ast_free.o | Bin 3604 -> 0 bytes 42sh/obj/builtin_bg.o | Bin 5360 -> 0 bytes 42sh/obj/builtin_cd.o | Bin 4996 -> 0 bytes 42sh/obj/builtin_echo.o | Bin 2684 -> 0 bytes 42sh/obj/builtin_env.o | Bin 2356 -> 0 bytes 42sh/obj/builtin_exit.o | Bin 4564 -> 0 bytes 42sh/obj/builtin_fg.o | Bin 5300 -> 0 bytes 42sh/obj/builtin_jobs.o | Bin 4944 -> 0 bytes 42sh/obj/builtin_setenv.o | Bin 3304 -> 0 bytes 42sh/obj/builtin_unsetenv.o | Bin 2816 -> 0 bytes 42sh/obj/command_getoutput.o | Bin 6492 -> 0 bytes 42sh/obj/curs_ask.o | Bin 3016 -> 0 bytes 42sh/obj/curs_clear.o | Bin 3024 -> 0 bytes 42sh/obj/curs_goto.o | Bin 2972 -> 0 bytes 42sh/obj/curs_move.o | Bin 3200 -> 0 bytes 42sh/obj/curs_setup.o | Bin 4944 -> 0 bytes 42sh/obj/curs_single.o | Bin 2756 -> 0 bytes 42sh/obj/curs_term_setup.o | Bin 4300 -> 0 bytes 42sh/obj/curs_write.o | Bin 4612 -> 0 bytes 42sh/obj/data_exit.o | Bin 5940 -> 0 bytes 42sh/obj/data_init.o | Bin 6664 -> 0 bytes 42sh/obj/data_singleton.o | Bin 6136 -> 0 bytes 42sh/obj/do_job_notification.o | Bin 4968 -> 0 bytes 42sh/obj/exec_ampersand.o | Bin 3148 -> 0 bytes 42sh/obj/exec_and_if.o | Bin 7448 -> 0 bytes 42sh/obj/exec_command.o | Bin 5864 -> 0 bytes 42sh/obj/exec_dgreat.o | Bin 3892 -> 0 bytes 42sh/obj/exec_great.o | Bin 3880 -> 0 bytes 42sh/obj/exec_less.o | Bin 3868 -> 0 bytes 42sh/obj/exec_or_if.o | Bin 7448 -> 0 bytes 42sh/obj/exec_pipe.o | Bin 7196 -> 0 bytes 42sh/obj/exec_semi.o | Bin 2932 -> 0 bytes 42sh/obj/ft_exec.o | Bin 4712 -> 0 bytes 42sh/obj/ft_findexec.o | Bin 4748 -> 0 bytes 42sh/obj/ft_parse.o | Bin 5284 -> 0 bytes 42sh/obj/ft_post_tokenize.o | Bin 3416 -> 0 bytes 42sh/obj/ft_putast.o | Bin 3904 -> 0 bytes 42sh/obj/ft_putast2.o | Bin 4384 -> 0 bytes 42sh/obj/ft_read_script.o | Bin 3168 -> 0 bytes 42sh/obj/ft_readline.o | Bin 7652 -> 0 bytes 42sh/obj/ft_tokenize.o | Bin 4940 -> 0 bytes 42sh/obj/get_lexer_state.o | Bin 3104 -> 0 bytes 42sh/obj/is_builtin.o | Bin 4516 -> 0 bytes 42sh/obj/job_addprocess.o | Bin 5068 -> 0 bytes 42sh/obj/job_cmp_id.o | Bin 3784 -> 0 bytes 42sh/obj/job_format.o | Bin 4040 -> 0 bytes 42sh/obj/job_format_head.o | Bin 4196 -> 0 bytes 42sh/obj/job_free.o | Bin 3944 -> 0 bytes 42sh/obj/job_getprocess.o | Bin 4808 -> 0 bytes 42sh/obj/job_getrank.o | Bin 4412 -> 0 bytes 42sh/obj/job_is_completed.o | Bin 5304 -> 0 bytes 42sh/obj/job_is_stopped.o | Bin 4820 -> 0 bytes 42sh/obj/job_kill_all.o | Bin 4204 -> 0 bytes 42sh/obj/job_notify_change.o | Bin 4480 -> 0 bytes 42sh/obj/job_notify_new.o | Bin 4596 -> 0 bytes 42sh/obj/job_remove.o | Bin 4532 -> 0 bytes 42sh/obj/job_update_id.o | Bin 3980 -> 0 bytes 42sh/obj/job_update_status.o | Bin 2748 -> 0 bytes 42sh/obj/job_wait.o | Bin 3728 -> 0 bytes 42sh/obj/launch_process.o | Bin 6352 -> 0 bytes 42sh/obj/lexer_backslash.o | Bin 3564 -> 0 bytes 42sh/obj/lexer_default.o | Bin 4020 -> 0 bytes 42sh/obj/lexer_delim.o | Bin 3624 -> 0 bytes 42sh/obj/lexer_dquote.o | Bin 3744 -> 0 bytes 42sh/obj/lexer_great.o | Bin 3892 -> 0 bytes 42sh/obj/lexer_greatand.o | Bin 3808 -> 0 bytes 42sh/obj/lexer_less.o | Bin 3888 -> 0 bytes 42sh/obj/lexer_lessand.o | Bin 3800 -> 0 bytes 42sh/obj/lexer_number.o | Bin 4304 -> 0 bytes 42sh/obj/lexer_quote.o | Bin 3632 -> 0 bytes 42sh/obj/lexer_sep.o | Bin 4032 -> 0 bytes 42sh/obj/lexer_special.o | Bin 3944 -> 0 bytes 42sh/obj/lexer_var.o | Bin 3972 -> 0 bytes 42sh/obj/lexer_word.o | Bin 3936 -> 0 bytes 42sh/obj/main.o | Bin 5064 -> 0 bytes 42sh/obj/mark_job_as_running.o | Bin 4452 -> 0 bytes 42sh/obj/parse_dgreat.o | Bin 4640 -> 0 bytes 42sh/obj/parse_dless.o | Bin 4564 -> 0 bytes 42sh/obj/parse_great.o | Bin 4640 -> 0 bytes 42sh/obj/parse_greatand.o | Bin 4532 -> 0 bytes 42sh/obj/parse_less.o | Bin 4628 -> 0 bytes 42sh/obj/parse_lessand.o | Bin 4532 -> 0 bytes 42sh/obj/parse_separator.o | Bin 4324 -> 0 bytes 42sh/obj/parse_subshell.o | Bin 4668 -> 0 bytes 42sh/obj/parse_word.o | Bin 4320 -> 0 bytes 42sh/obj/process_cmp_pid.o | Bin 3160 -> 0 bytes 42sh/obj/process_format.o | Bin 5336 -> 0 bytes 42sh/obj/process_free.o | Bin 3536 -> 0 bytes 42sh/obj/process_mark_status.o | Bin 4296 -> 0 bytes 42sh/obj/process_redirect.o | Bin 3348 -> 0 bytes 42sh/obj/process_reset.o | Bin 5896 -> 0 bytes 42sh/obj/process_setexec.o | Bin 4136 -> 0 bytes 42sh/obj/process_setgroup.o | Bin 4988 -> 0 bytes 42sh/obj/put_job_in_background.o | Bin 4068 -> 0 bytes 42sh/obj/put_job_in_foreground.o | Bin 5480 -> 0 bytes 42sh/obj/reduce_bquotes.o | Bin 4424 -> 0 bytes 42sh/obj/reduce_parens.o | Bin 4008 -> 0 bytes 42sh/obj/rl_bitset.o | Bin 5780 -> 0 bytes 42sh/obj/rl_clear_function.o | Bin 4004 -> 0 bytes 42sh/obj/rl_clipboard_function.o | Bin 5132 -> 0 bytes 42sh/obj/rl_clipboard_utility.o | Bin 6544 -> 0 bytes 42sh/obj/rl_comp_function.o | Bin 6516 -> 0 bytes 42sh/obj/rl_default_function.o | Bin 4108 -> 0 bytes 42sh/obj/rl_display.o | Bin 5492 -> 0 bytes 42sh/obj/rl_dynamic_buffer.o | Bin 7260 -> 0 bytes 42sh/obj/rl_long_move_function.o | Bin 5336 -> 0 bytes 42sh/obj/rl_merge_line.o | Bin 3944 -> 0 bytes 42sh/obj/rl_page_move_function.o | Bin 5584 -> 0 bytes 42sh/obj/rl_prompt.o | Bin 4224 -> 0 bytes 42sh/obj/rl_quoting_function.o | Bin 4476 -> 0 bytes 42sh/obj/rl_remove_function.o | Bin 4312 -> 0 bytes 42sh/obj/rl_setup.o | Bin 4820 -> 0 bytes 42sh/obj/rl_short_move_function.o | Bin 5304 -> 0 bytes 42sh/obj/rl_stack_line.o | Bin 4116 -> 0 bytes 42sh/obj/rl_state_function.o | Bin 3988 -> 0 bytes 42sh/obj/rl_word_move_function.o | Bin 5444 -> 0 bytes 42sh/obj/rl_word_utility.o | Bin 4496 -> 0 bytes 42sh/obj/rs_setup.o | Bin 3128 -> 0 bytes 42sh/obj/set_exitstatus.o | Bin 2884 -> 0 bytes 42sh/obj/shell_exit.o | Bin 2628 -> 0 bytes 42sh/obj/shell_get_avdata.o | Bin 6236 -> 0 bytes 42sh/obj/shell_get_opts.o | Bin 3648 -> 0 bytes 42sh/obj/shell_init.o | Bin 3940 -> 0 bytes 42sh/obj/sigchld_handler.o | Bin 5956 -> 0 bytes 42sh/obj/sigint_handler.o | Bin 2616 -> 0 bytes 42sh/obj/sigtstp_handler.o | Bin 4152 -> 0 bytes 42sh/obj/sigttin_handler.o | Bin 2560 -> 0 bytes 42sh/obj/sigttou_handler.o | Bin 2560 -> 0 bytes 42sh/obj/token_append.o | Bin 2924 -> 0 bytes 42sh/obj/token_cmp_type.o | Bin 2684 -> 0 bytes 42sh/obj/token_expand_var.o | Bin 3056 -> 0 bytes 42sh/obj/token_free.o | Bin 3036 -> 0 bytes 42sh/obj/token_init.o | Bin 2768 -> 0 bytes 42sh/obj/token_print.o | Bin 3560 -> 0 bytes 134 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 42sh/obj/ast_free.o delete mode 100644 42sh/obj/builtin_bg.o delete mode 100644 42sh/obj/builtin_cd.o delete mode 100644 42sh/obj/builtin_echo.o delete mode 100644 42sh/obj/builtin_env.o delete mode 100644 42sh/obj/builtin_exit.o delete mode 100644 42sh/obj/builtin_fg.o delete mode 100644 42sh/obj/builtin_jobs.o delete mode 100644 42sh/obj/builtin_setenv.o delete mode 100644 42sh/obj/builtin_unsetenv.o delete mode 100644 42sh/obj/command_getoutput.o delete mode 100644 42sh/obj/curs_ask.o delete mode 100644 42sh/obj/curs_clear.o delete mode 100644 42sh/obj/curs_goto.o delete mode 100644 42sh/obj/curs_move.o delete mode 100644 42sh/obj/curs_setup.o delete mode 100644 42sh/obj/curs_single.o delete mode 100644 42sh/obj/curs_term_setup.o delete mode 100644 42sh/obj/curs_write.o delete mode 100644 42sh/obj/data_exit.o delete mode 100644 42sh/obj/data_init.o delete mode 100644 42sh/obj/data_singleton.o delete mode 100644 42sh/obj/do_job_notification.o delete mode 100644 42sh/obj/exec_ampersand.o delete mode 100644 42sh/obj/exec_and_if.o delete mode 100644 42sh/obj/exec_command.o delete mode 100644 42sh/obj/exec_dgreat.o delete mode 100644 42sh/obj/exec_great.o delete mode 100644 42sh/obj/exec_less.o delete mode 100644 42sh/obj/exec_or_if.o delete mode 100644 42sh/obj/exec_pipe.o delete mode 100644 42sh/obj/exec_semi.o delete mode 100644 42sh/obj/ft_exec.o delete mode 100644 42sh/obj/ft_findexec.o delete mode 100644 42sh/obj/ft_parse.o delete mode 100644 42sh/obj/ft_post_tokenize.o delete mode 100644 42sh/obj/ft_putast.o delete mode 100644 42sh/obj/ft_putast2.o delete mode 100644 42sh/obj/ft_read_script.o delete mode 100644 42sh/obj/ft_readline.o delete mode 100644 42sh/obj/ft_tokenize.o delete mode 100644 42sh/obj/get_lexer_state.o delete mode 100644 42sh/obj/is_builtin.o delete mode 100644 42sh/obj/job_addprocess.o delete mode 100644 42sh/obj/job_cmp_id.o delete mode 100644 42sh/obj/job_format.o delete mode 100644 42sh/obj/job_format_head.o delete mode 100644 42sh/obj/job_free.o delete mode 100644 42sh/obj/job_getprocess.o delete mode 100644 42sh/obj/job_getrank.o delete mode 100644 42sh/obj/job_is_completed.o delete mode 100644 42sh/obj/job_is_stopped.o delete mode 100644 42sh/obj/job_kill_all.o delete mode 100644 42sh/obj/job_notify_change.o delete mode 100644 42sh/obj/job_notify_new.o delete mode 100644 42sh/obj/job_remove.o delete mode 100644 42sh/obj/job_update_id.o delete mode 100644 42sh/obj/job_update_status.o delete mode 100644 42sh/obj/job_wait.o delete mode 100644 42sh/obj/launch_process.o delete mode 100644 42sh/obj/lexer_backslash.o delete mode 100644 42sh/obj/lexer_default.o delete mode 100644 42sh/obj/lexer_delim.o delete mode 100644 42sh/obj/lexer_dquote.o delete mode 100644 42sh/obj/lexer_great.o delete mode 100644 42sh/obj/lexer_greatand.o delete mode 100644 42sh/obj/lexer_less.o delete mode 100644 42sh/obj/lexer_lessand.o delete mode 100644 42sh/obj/lexer_number.o delete mode 100644 42sh/obj/lexer_quote.o delete mode 100644 42sh/obj/lexer_sep.o delete mode 100644 42sh/obj/lexer_special.o delete mode 100644 42sh/obj/lexer_var.o delete mode 100644 42sh/obj/lexer_word.o delete mode 100644 42sh/obj/main.o delete mode 100644 42sh/obj/mark_job_as_running.o delete mode 100644 42sh/obj/parse_dgreat.o delete mode 100644 42sh/obj/parse_dless.o delete mode 100644 42sh/obj/parse_great.o delete mode 100644 42sh/obj/parse_greatand.o delete mode 100644 42sh/obj/parse_less.o delete mode 100644 42sh/obj/parse_lessand.o delete mode 100644 42sh/obj/parse_separator.o delete mode 100644 42sh/obj/parse_subshell.o delete mode 100644 42sh/obj/parse_word.o delete mode 100644 42sh/obj/process_cmp_pid.o delete mode 100644 42sh/obj/process_format.o delete mode 100644 42sh/obj/process_free.o delete mode 100644 42sh/obj/process_mark_status.o delete mode 100644 42sh/obj/process_redirect.o delete mode 100644 42sh/obj/process_reset.o delete mode 100644 42sh/obj/process_setexec.o delete mode 100644 42sh/obj/process_setgroup.o delete mode 100644 42sh/obj/put_job_in_background.o delete mode 100644 42sh/obj/put_job_in_foreground.o delete mode 100644 42sh/obj/reduce_bquotes.o delete mode 100644 42sh/obj/reduce_parens.o delete mode 100644 42sh/obj/rl_bitset.o delete mode 100644 42sh/obj/rl_clear_function.o delete mode 100644 42sh/obj/rl_clipboard_function.o delete mode 100644 42sh/obj/rl_clipboard_utility.o delete mode 100644 42sh/obj/rl_comp_function.o delete mode 100644 42sh/obj/rl_default_function.o delete mode 100644 42sh/obj/rl_display.o delete mode 100644 42sh/obj/rl_dynamic_buffer.o delete mode 100644 42sh/obj/rl_long_move_function.o delete mode 100644 42sh/obj/rl_merge_line.o delete mode 100644 42sh/obj/rl_page_move_function.o delete mode 100644 42sh/obj/rl_prompt.o delete mode 100644 42sh/obj/rl_quoting_function.o delete mode 100644 42sh/obj/rl_remove_function.o delete mode 100644 42sh/obj/rl_setup.o delete mode 100644 42sh/obj/rl_short_move_function.o delete mode 100644 42sh/obj/rl_stack_line.o delete mode 100644 42sh/obj/rl_state_function.o delete mode 100644 42sh/obj/rl_word_move_function.o delete mode 100644 42sh/obj/rl_word_utility.o delete mode 100644 42sh/obj/rs_setup.o delete mode 100644 42sh/obj/set_exitstatus.o delete mode 100644 42sh/obj/shell_exit.o delete mode 100644 42sh/obj/shell_get_avdata.o delete mode 100644 42sh/obj/shell_get_opts.o delete mode 100644 42sh/obj/shell_init.o delete mode 100644 42sh/obj/sigchld_handler.o delete mode 100644 42sh/obj/sigint_handler.o delete mode 100644 42sh/obj/sigtstp_handler.o delete mode 100644 42sh/obj/sigttin_handler.o delete mode 100644 42sh/obj/sigttou_handler.o delete mode 100644 42sh/obj/token_append.o delete mode 100644 42sh/obj/token_cmp_type.o delete mode 100644 42sh/obj/token_expand_var.o delete mode 100644 42sh/obj/token_free.o delete mode 100644 42sh/obj/token_init.o delete mode 100644 42sh/obj/token_print.o diff --git a/42sh/obj/ast_free.o b/42sh/obj/ast_free.o deleted file mode 100644 index ddd70b608307b8c0bc270d0ed31ead1bcba89bfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3604 zcmb7HZERCj7(Tb{z3p0PI|dB-ER2tlKs!EN#2|}cN<~BXQWSGj+PkedZs)x%8wAN@ zpb(6LlSurb!~}krp#IPVf2bs4NHkF+iHV6OCZf(n0wNla$b6oA&)vH6>6^Xh{W$M= z&U@~8&pF*!|D3-b6hiR}G~fWZQ$>>igYE%eq4O4W9)n2-IR@m}bdzIrf^@xPbeCM+ zwb!k9eBF@kX?;>59;fXYDTI%{fasy{NZ0em=5m{Emn_Gn>&qW&S@V$BEj*mLTokB5 zb7e*Az}RvpFZl>ij%B?=#*RFWcGK zVd!RdE7QASy?@I5?w4ux-Z4KHuef=Ov%%H*rQ}DNF7ZCOOFSpP&TOt4Z*3LcPj`t| z+TMB7^>#_TtMUT|!!pq!QMDiLdU5C+$m;w$<$3VdD@F_fNv#SmSKNwqmh`gORWS3q zzG`{ph$9j&A)SrD;}*S#`jaVF;Ti3EtA*Wl2k83n`{1O+TPE?+5>J{UB1F5VQx2Zr zg6SYuulI_?`%4bmC)a!O7WwhJ#2FiLKQxmc2R?;(uInNsV~~ef4Xz}vmpp92l>xWW z*QfXYobLTSk>3C8mGu7d#q@zPWj|zp`njb9jqRNZfb@YC{psHBkcjO;Dz15;JJe6? z-yZZlz0FE&&%`0i7uypZvO=-FqX(^1p>!{J{}~qoev$4yop|cg79PaJs#O~vNo+GL zyHGR}&B>-@Q=&1~f!kwla}$i@!uiR0vxRNtQbxCtOJ(g6w%0I{Igwg#V^}I{6|z=7 zwc09fF>)n4wQ#=OF1#?2&z7yo4nwffOWfG3g^F{Wuse!oTcT{*g*Ma3 zCkkdsn8myyN;;q%%^uWP_~>wiGt6l?#EEvMEHm2CEF)jA(Bn#5N>eaC*HN?$(N(na z2yjH%6}k4TC0g^s<~u}IYLyw$I@KSIYZIci$|%%wfGXhy+C z>MQ!h>r8_CDMBnu9Q8RApk+?$HhoebtXj{ZY}kY@C8j8T-=S`vE+xj799HKR$10-@ z_ztxnrB(Y1TA^w^XuH7v$=U&kU0~m);7bs}Q0O%X?JYFNz=67&cOk|F7KA^9JVVza zUxNs9uJ33q_BDir_6^jJY1RingHS`-If%3LjEVdJ5f97>{|Z@;Wd@Q&m=5g-trV@< z&|aj~1WRbspq}UG(KWml;(;0Ae<9a1Vix25&>XAL*ANKTz}m#V*~}(5fKWA{wZRjm zcWh(~L?|%D33R5JN|34WIv~?HY3LBl;6yZ<5@HZe+1i#g6_4f3ByIQJ`tr@gZ*$X} zoq$Y&NtI)1SC1V4{ht`t9huhxiC3K>G)NUcBO-!$B=))5zyJ#-0Ol`_5ST9=`*?9O zA6`$qbS|GLPWou)qHBl0Jw4_4`e%+mS=&E;`~q{*J4@6rKKOCwg{Gc;k-ke`PdIk& z^1S$nZSSAI9^UoD(Wj5+5{GwwkMS44K71s8=0@-m@T1@?xCDLy%u+uAJ_SAt{sqk4 z!Jo5tVIHW2eQiOV&TasRwP|4TN%ZoqKkDXT`YgP zdce}fk4P7bLnhHBT|7`SiYJ3nJS;f%Bo;qiJP&dp>z6K;w2b1ppo<4cVzKP#VhzfH zw=0eyHl7=a5rfp{YD5`EUco3k)(E9LuEa+KLkHzFe196R5@}#Sju)aO8h_sR;7Iu_ zi$4(K6T8tW%C+c7v3z>8)xiqb|v)OIy{I88wnoqguN<8l6)zsz0MD+UGtEOT-j= zz?f}r3nc8h_qtL`NjX!>$x=cvPJ3BO{(lxDkR%?s3e(XmZK1c~eJxpeqr+99^PLua K2b~vNi2nfJ*a>I= diff --git a/42sh/obj/builtin_bg.o b/42sh/obj/builtin_bg.o deleted file mode 100644 index 48edac7bd3d076a1acc61b823eecd9c86d441c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5360 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 Vb}+&=Pq!~O>`dXSCD)R%{{qP#xX}Or diff --git a/42sh/obj/builtin_echo.o b/42sh/obj/builtin_echo.o deleted file mode 100644 index ebf062b8112a6d6b3c998874f45f592776a9475c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2684 zcmb7GO>7%Q6n(qWDH5@rsuB^D{6Jl{QIM)8DZQZ8db5r)O8Qo2V2#KI=xEtuuz zqK2TNN7K%}I(6|}C+dCKx-NAsf`{%9WPn$z8)8Hh?+7h+m;81>JiT0Y%@xW&%rC&3 zm6!*`v+PQphD7m9$?p@1SE9{C`6JkmJ@R#Rd(mt>jK@Q(18`sB`KY1}MFi`&tQ&%2 zlwW`sEaU!oy5rPL&DNKR-b48+a`rQl&`5=MJUy*xU$N{3O`AEp zyEFhp^5W*Ca|iLrHQ4LFQ`n5GpIOx^F7B>BAo?DRNxVtF8;0;4OPBDZ0IIS}sNnq7 zEL$K(^IesL-;jeYBOb}IJ^0Z%5N}}$15k+k5SC#y32F}YNz}*#E@0^vI^$GA33mrP zqCKy+?yKv+6xG(+j@oK&tF8G5>gN2my8cxX+uQ193EN|k*`VcDKX`%OWZ~Q_egO{% zS>428>)&EHYSA8tR_VvgMn87m%3&qKTBUnGf8K7lZ&8B6Gum#IerWBe>)#Y#`}%kT zrsxLdW@awEl3Ov|hE=z7WBFpfm^*3I@Yxs{E25D!!B ze2f|Uo0AmpQ6D^m9+H=RCFf_)xOU+i0TYyd`?Ke5?9S z$AW}|ZJyv8s1!m=T%{J{H%NVi75C>*XQxzR78FcQh;RF!o-eoBYeZXcL7n$QpnEL2 zqGNH(+y5tq(x);=U?_C@87QbZe&p%=`#g)+-c1>~8*fgcJ&T2MCBC#sbem8pTXIp7 z()B1NJva-o#psU6Js^~j1nk)B7lEy2S+=hyxrI?Q%`q&W{Y^;iwj2*ImCjy|z0@Ck z#;;&Z3`VhL?5}h`){N%B!n%$&gbpm8ZNcME=Y+&Fj3;`N6TJ5(k15l9P)QE*0c^z2 zaIQ3Y@+R+5rl)yA`JTttK5fQQIFVQ(gczZ>o%Do1@d&X&`>|(zTPa9=Lh2`^Mny!F najEH^X9P3q0XT}K%M|Ty8?=h2IZaPoJ1ul2MGyYAdBp8s%2ZUd diff --git a/42sh/obj/builtin_env.o b/42sh/obj/builtin_env.o deleted file mode 100644 index 245bf634155d934fd2903a4bed833d84a21ad66d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2356 zcma)7&1(};5TCcnrfCzC*!H0KL6G{1Cb1MOezy2Qges-ADuOJV?Y4=eo3Po|D1L&7 zIVknuMLdZ3hX~%hc=oQ~Me!(#)|t2S;%04a2IkG1*_q$|=DoLX-~agXy9Yo-00-14 zYF)=6i;A)t^*aUEkSQueS*98kE?y+nLF`6;|^{kB#ifkabB{$&HO&b+v~V$zpm-b+l_zm9@Ak6$Tr%{ zPFWRi!L%gBFh7N-VAsbp>-DN_IOYP;`={S040Mz^ZC{t4k5?;QlN%i7_m1&~81G7# zc#>b;w8D5_LwI+(#Pe>{SM9f-S9^~6z3LJVKRO8+=GSCA)o&cnNk~HbYtHukFJJjuYa%LG=yiDjX4*0*Do-P&imjEXOH=hVUqFKg#uECGiB}2K1K3PF@HlYr3{t#MvjyzxzH7K<8y#2v& zSM!-->(jwE#n$cb#n$4tVr%B})wkpHC1fWiE}qLS*>0m!bF!nkLavbAV^#6R;pgbQP!}XrJM!%nFbc;O}ApYv-wH4cFnfDMt)?tQ3kG{OsF^> z)J?ApR@rpHbmx}}#9!X_lTT&ZEKX$0)FxW4~`XZ^ri6e>K$+H6|lDO|W zXdF5_fJa~mBB|qv1TK}H28zUXNdqr%N&J0|%k@gaeqN+AfyGi+dHejRfVfz~G?5lf zG7;@*ll}!FeHTac>bIn~?0e<=Z4aUj&h@DN08OlgL-ab$g#L^SUCla00gBV(MPjBD zo0H=E{uMhr@?i(jmR!*0{FIJb3WaM|P=fgD-eXnbLjId+vi|TMAK=9Qq%V9()V2#q72)3qt7-#ZKIu0@2KfOtL4wj9K)W zt*F^wgtW4v@?bobd8nP-z`rXvk2x9?a1`QaY6Fgf-hnCtM;lk$KjVD1C5>KM9VwBt o(6zq!kfvchz#$BxiRIbuV!NF!8u|PfTS7}qNP2=|1m1@3A1EmYYXATM diff --git a/42sh/obj/builtin_exit.o b/42sh/obj/builtin_exit.o deleted file mode 100644 index f7afd20921368a0c0f0cd23cf71372fd838d663b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4564 zcmb7IeQX>@6`$R^-TU<2`75|`8V)%L4%Bx}>QGbCG%j(u6bD%)PAq7(ocH#88=ZHL z-96W7Y!u=^!5rJfBvKm_hWPn$-b?()Scd@~nu^0HHH2^kv1bD@X3CEb`^VbkxfcLV1 z*esrDm2Dc*9N!`(7+OU{@x7R@uV8&edTkh=Q?w=xEOay8-C+Xv@>o>%kD(XDM zH^U3^;;r$DwOZBCtl|`f_h0e7D&iX#0d0TF__QU{)S7zcY%80PfKwYe1sl@MnTjFIw0~7 zlkxv-V}*s^7v}$bps+CadSRiyQdk&!GyCy; z{*F~Nmj2XkC_khC3g`AxeH6}hE`nWF{)Oihpa9&xx-k6Hh1U!7&mFk`SzxXd=4YY+ z>!dNHF3v>xn-_+!{*m_2%fnaEv&Ffq+Pim>mEGN>yCq$Y4G$1c~f=?`-NvXQ>N`QT{Fwo;w1BQVl+Urxk1;s1$s5mb*Ag^ zSPO^G0|id|1tDS4FloH^k$l5({`FF;v?JB7gi;x`JJl++A+6*bjBV0^cqnyy;(dvC zCJ(jWiCro*z(T1*?PQWsOJRk{!sAdo&ZdC|RoxEf{fPw1Dw1a85Z%dHYzvqV%vii# z3Z)VWfkXndQP}?DfZfUt2tPo8|sSiQeg=L8* zCA>JL1!@b_XlgQ0Q&2N0J5bY5yHXE8-AiLLP_wDWpnjCpR;YuiCj+$&>H(IfP>+J5 z5h*hSx7H)*I#~KJ*euzjlKM&FQrjckjgR;;i7|AA4-XZ^+D5p+yEo$#1qO~ie3{=uU=&{nH_R|U z39$gMQM{-v{=0&X-4+m?rTwSQCeB`rzIfq@pZw#>GaU!7eEjlPey(?Pf9`L~-Fo)? ztoIr7=DNHiGd9uQ{mtL){Ok8;_r7uc;mXbG&+hVGil3i7_Vk(8mVrZ=dmTh`w-rR$ zdKYL6Q~{j?eHKI${50q?=+~fYAev+<5E6OPfTK~;kcrY6`vEmtFf!31(ro~Z)|gC` zRa>})zk^Ja9l}I;PbNxNfki1zCQ5waby}FH76m-j4S7)^2`|cYGEoT%)8oR6N>{*B znUEJ%kMN?BArqyhfTubq6HTA+qLLvKRgy4KzLJUZSeU5B$aDdnF#WHziL6UmjPlzh zpAk$$3vx+%@Lnd(WTZ?o5~U4+V%`c`xlY-%x+=yau2kmJ^7~uFb(oF7S7v{JrzE|B zonAsC1%KD4-&m-)Ku1X|v_b?`ln7Wagk*ZiCK#zWx18m9-XQ+=JvXkS^czr9KCZPJ<6aPz~(%qwDL ftjVh3*%s5vo>ug1lMAI9{!!tT8;9i9u956NW9GM? diff --git a/42sh/obj/builtin_fg.o b/42sh/obj/builtin_fg.o deleted file mode 100644 index 7bdf8bfb74aaf107e213a9c2a83af23cba518b03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5300 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 d2TJ&T$rgDdXTT8mOX>TVQ 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 Vodtq1%D#Ap|N7at{8xZD{|n!)Xb=DZ diff --git a/42sh/obj/curs_ask.o b/42sh/obj/curs_ask.o deleted file mode 100644 index 7ed187e9beddc956abb47cc026e5fd964b739c78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3016 zcmcguO>7%Q6rQm?YbSPWCn<;k0v}RJMf}qciHN2&5n1G>DN55ewzXcj zr4%V@QbedCg#%I#AfZ+Qap-{q5>llc3ZlJK9O23VK}7jE7%9RL;l0_JCf+902gH-! zyq|gV?Ki*nw}1Wmx1SK|CD4HSKr0NI7$`^&=msYD5DjZVR)v)@U=q{_c7kY{ojY$k zz7wBTr%!Lk((6JJAc%*b{iEHn5G-I`il$|AnOZ@s+7?e~+URQ|lds5bavw)zt||As zq~nneT8URI8$9jCyC!(aG5t8XX4w@_&t$CJS;TMVC-GE)(JG!<%9nA78}BE0q8o0!9=uQ>67RDX@$5G%yUzEB zz{@+Zd7bj~bgHEn!!yOfYS0&iF(rvVRB z!*KotkP9z2qvb8wU1xx%HNOV|pOc>vcvl6U2noQ-E}oL-uV|JyqI~Q;409flfm`LR|%$!fwzB(4B&{Qg`NC@z11}e@rjli{4i2SpJRL zAdxk-vAA(KvUCa(hqlrywZ@l7dHELh{)}bm#SIc!34wQ8-P{6MkAojsd%MBAv3Ch) zGpE+uBWoubi|Z+RXIZVUe+;!()cUfzc}3k!FMb_;{i{4mBJ%VS)DyBNpUMA=&j`K) zvGMV#6S1>7t7?`@vB5+tk%~QQ6yfoT52heU4D=@s9VAuDNa6{I=dz}4mI_IuW>q!4 zI+rj=@=O(mCw0rzt!#3_D$nK&yP6#6ug(x&Ry48F@r^R~&5}(rwS1l!GrC2JCNau{ zcGCUfZsrX~l_$cT6n|(u2}pL);dXEM#o*!KfzYw;qp%s?0pbyvtBU1my#1CIVwovVe*fGgkrit8@z4|3}dSQ~# z^HCZN`2(wff*hU%{l0;p+1e802^k4T-|@WMp@=VF-6-fVe-8Gp`vqz|q#s&J8{rOU zDRKp+?#o1+tKr-xKA|>TXfEDv%2@lW%zuNm9cN)>jCqDwKnbLn|2XSWrkQ_?`IG|d zy2<>?*d-PMe;-u!jIquk=1(w>;=M4$+TQ?Yh*9MTBZ2w<7SYoNlOsO>U0@x*1r~mv z;wMFnD}XWn*MPYxbHctLY*N@~gndfbn6O~@xTC^$fQzd42BD?AF7lC;OvZv dmbW#tnl%fiO*H;Ki8sj!#ABsdIX#OQ{{SCxud@IE diff --git a/42sh/obj/curs_clear.o b/42sh/obj/curs_clear.o deleted file mode 100644 index ba1fc3c41919f2619a670f93b305582052861744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3024 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 diff --git a/42sh/obj/data_exit.o b/42sh/obj/data_exit.o deleted file mode 100644 index 578a235a5f7b06e4985d2e44500011d1c88f4d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5940 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 QSeR1}e>9gHjzf3<2P8CnRsaA1 diff --git a/42sh/obj/data_init.o b/42sh/obj/data_init.o deleted file mode 100644 index ab89dbcb482fedd149ca538aaa9447e277dfda57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6664 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 b4*t|A)W($B!Jj52+pUy^iAKdL1U&x*gsc(= diff --git a/42sh/obj/data_singleton.o b/42sh/obj/data_singleton.o deleted file mode 100644 index 2464ca288c80ed17d76f54909801668477bfc9c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6136 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 TF8)4lnKB4iDt@t40v6)GuF)5E diff --git a/42sh/obj/exec_ampersand.o b/42sh/obj/exec_ampersand.o deleted file mode 100644 index 49f10fe0901dabefc2011ac5f2cd99ae08a6b871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3148 zcma)8U1%It6uvXNGnsUg-EFqEkxE@jtO=Oiw6+>;)dmyUgceHePaZ1c>}Il=x|v;P zCN(WBw5&*$P^pMMXh9Ic>QfPg`UeFg8hmJd5*48e1;I$G_z(;=erM+1Bs*8yJ%!3=KF6t|(~IV9?#*IWpdXE>bM$ESEwDCL>Oe6Qt{&IpGEU zK;Pd#w0}t#y^nZ@@aVI-7-JgQqU;n2LApL{=EsY=>p8wj*ZU6j?t5CenZUWsEq&^u zOLSz>At~@m<$`Yx<5j6R%P2*YtEb!I8Tq_p9wq$x`~=={jjAv9TB~!PJ zF-q^2`ToSezLTf){EGPnc;);Ne}TjKZJ+}HY7Yc^Z*bq5%=f!S4!k5n>su&~VV<5oZog>R!@9n^Zz+_qQI419 z#yQ|o%IC5F_?n0C%u#*B!RiJBbiMvQnB;i7I9}_T0FSE-u%n_+QtZEyW&4QX`F_Lk zZty`vz$3bFhy2>%OHx2A2&Cj&!50xvSDn_xSRc8;d%??z=1a^!x!kp4|3I#GEmxgQ z=4vPBF0kJyJ~y?iHCMeV<*IWm@e*Cgi;l^&YvL^!Ey-zU;CqL{eLfp zuY~i<&0BC<1x{{idyve@xmy1XA9~BBTy;A6?3cZCQq#M4AKa5ZYC5h}w$nYC?o4;O zqfo;2($&)qC9`d7W=kh?okG@}FoQ-n#wr+K*u$9u%N}si&l-+pIK$b!PWgyg@Z9XS zt?nqJ5lg|$vOQ+F9`p3P=a?pQxwJfUj1|hZXWE|bTF2o*qkFVF3Vu+*Ger|N;v~#i?nM^B>q@zN9=*7fz*@O z01<`B+%%BFdbhJk{E1kMwn&1JMO_aOjKOo5k|Oa~i~z8Inh`sYBBcjAtkHibe?WzU zQ=<82rindBH3uy{Y;5sqTRczVt&yDFQ8GP3Y{8d42?R0 z<``IRYd8&&mRqzMac zMMU+bC@ML}`oAhPV1{C57(vAM4uRB>D2#M`ACo4MQnIN*JBuj#%01wrc>-Ek5POgH z#*;70Pc;Y2$k;4mWOfFvB+bX0(Mt3Uuq3VkRY;rSV}rdf9Q;5n9%IsORB& zi+jw?>il`EzYlPE0N1|?GNW{Wf-v;4bo|Ieq4i^pa0e7gNQ%1VGgZqd5w)mvs-DuU zYWFEk>Y$R^smOzhs#aBP=uX~*dQFklLG^7}#q7=l6wqDgAd$@DuS4R4U9>TfMb{xN z_i%d$*Xi7o{}D)xQ?p!d=5iC45WfFSE;}I;7$E3gbe5@XZAd5Ia{r?to#BS`3>3>Q imQ1f~v*1d_UpDSalj*o_@m%As)$41|^byZD0q;MJ*Tr)H diff --git a/42sh/obj/exec_and_if.o b/42sh/obj/exec_and_if.o deleted file mode 100644 index e682d8ee503da73c7ef4a146dbfeff907b209629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7448 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 S;O*`=Y&kamb+%LJ?|%WG|DVnP diff --git a/42sh/obj/exec_dgreat.o b/42sh/obj/exec_dgreat.o deleted file mode 100644 index 9a362fe9b62f8b80c801214af499fd0fab5c0a9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3892 zcma)9Yit|E7M`^;YdcOHC+Q2y!w?{?XzcU_5rkV>2y)Yc5D-96v~uiCVsO{FyXz95 zy{#04YJyNJC_>^bL4N^42>yU>g#^02=t{sJD#S0IA`&TYL3#Fm-|TGbm_j@9ne&)4 z-<+K}^YFXB9R4FFgb@{}KrNt2i7Ep^ISq7##=j_!#e;@D?1K{Oz!ano8c{6Ex2OC- z4)hy_Zoc8T9!fJ>ARdQZkrKkBtwro23yWoy?9tk|<@v5MS=N;|t-tQ7uvvsSH}RuT zmMV}y)^(&&3-Kz|qB1w*eWG!~J}y6QemNmtVRY2BxAFVu#~0!~qA^Ytuk4If*`*n8 zN{{}#jx(;;Wees{FW(8{a|_P6?fn_A*0kobb^gafJ0afILQ#d-9AAhRPUFe(3X_u+ z+j0t98Q!11cbkrHP={rnG`;|@I(oZW;O6*V)_CV>ybY&_r{bF|6r1r5HQ|k&BA$QO z--JB_lY+B;m29i`WCBO@twX^bM7oVCCl1;<#AUb z1~gtq8~+PDo+;are|pWE@azd|%*E;k9V~19d2qAFyIkYVYCNrqq!1IKOnz+tmK}xI z{JoEAyr>RlS$oj?-oJ>C^OB}ZGMH!vzXbGvK9ApPC*XGrV#tMB**8fa(wB{569`q13W&|H0JR_ik(v-Lf3_M90) zFOi>qBb~1w)V`l-ul&qfc0Ra^o{W}bD4&&YrZotgu%{N}1*=D<5x$0yF zvi;fq%(7wyr$*mEKa}j6RoRuxh36J?_LLn|R%zU|3x2jJaw8sk<_d1P;FfaNy4Bn5 zqVMI_tnwxV-LWpV{5ns6?@DVZh3sd7f!Wg0~!M;$vY--XP`kbg`g_-E*1Pj&_zi#c2SaR zm&z_$0`6(=oBPj$;^Ds3)JbsAlm`$!hX zF5~jnXzG&WrODp5jos^*?@~mxX=68z@ip^Qd7g--{*g=~1I-RWhu9*p078g(w-HSx zlf)Au(GK5@-BbpU&#k|~1 zSeQ(LrR9pmLhv0lWr=VNq@Sqes9g`~OKSblL~J+2rBoNhd%)82{KSReoFUmue@3FT zWs#ni#A;}-gXD4*&3_;=BDpBZ7~}G6<)QG;Ved__s@~^vH1iw!UWLjuOgdrjU%x(2 zAtWT9DuEt6ot{3>yMZ~O78*PoxXkNIQ*+;=D2@0h^NGWu6SRPiC{d7sH((U!X^T2< zvDn(q$Pyr)(adR%)xT?ZGTpZAmHL<8Za;msbLK5i-?4vq+1%T=cFvyu(0A`GEoSy@ z|KWw|nfngCb@p?g{jl=zAFcm-^`i^E{`dB^zwRIT=l&NjmH&GWSf7G^1SK#DXMl2` z4WJRw1n3^ngP>GF+e6ZMNYiFWtl59aj~?CDNYk}5nGsriA59Fd=U*$ zA=1R<)h2Ecnz(1QDXG1fi;H1KVeZrG5J-D*;b~$P=pYymP0T6n#gS-YZfUF!pwh$x zLWjy^rHT2gP26HMeGJlA+-@|@f%J&nY&3EAX)oqKP24it^ml0!LrQSD(W9~G1BpQM zN|;T?-PZ|YDs80OV(~rjVmxPnb{`?w(WBvkCf29Y_eHK~5C1lBoQQY|wPF04YDdjA zVZcUs_lZh*bj;6{onoa{!XqwM^W0F&l~)g3G~eRg<>l1XTg_qFIVfX;vd!Ei&xIBnmeQBY z&C6uO9F)CJ%64-v8i!@~po|Qg)3Vo$cgYU(DYOrpwTQ_S+zD8K_f^0V+GTubA(p;d z!4XE^I<4ox5lY|1;P5l4lV70uS(<|>yUq_2KB9w_E~~&BRJB%(da9{?uu0eBXf!aZ s@y&r3gkQisI^z}FuR6l2PTHu|gyYX8o&vVuwU1XSUL@9-uX+>g|Fifk9smFU diff --git a/42sh/obj/exec_great.o b/42sh/obj/exec_great.o deleted file mode 100644 index 1a00d64d7b7e6a991f93df34abdf980bfabcd4af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3880 zcmb7HTWniJ8lH3PIkw}(apK;flp4~~R@>MKy==5iX$uW-~kX93Hrcl5fAXfUQ}4L)e0ndfIjR~5v^3Ispu|c?aG0X_l?w$x+kw9N%P`TYtS} z=bd4*2yuouDU`)NNFb|PZ`4A(YOUm(oAFL4oUqRXCpWiT5wAEr>{z=w|GDvnc+V+} zYsIVBBQ#&etYJkm0Eve2%GH(o6HAvVVs z;)Tn2b-d!lMAb6w;yAU%v_~de!&>yxQ=?{suS4_m;w2rtmgjBc31MM6uM2 z_h}Pe`5N)OJrh@)Z+HeXYSj;3BOVT&57``FQsr+r-xpfd#4od^{VmnTF;CB&v>&V3 zWz*cg^|GrFJqjc^fcuEyXA;v

ifidTy+q-_(R87HO!=NvUWMs(?0jrLJsB;>@O^rZ77l!neeiEvcmT88x8HMj zcDLoYm71OH%k|`XvMWnf+#20|Jy3FMZ_V|t60TFqTT@n0nWK(X^l~MUA9B$#Uvw%( zr<~v6)E>49XN`L?TMo63C|q%9Lo}};uX&t7p0o*S+-}omB-P7%JjI| zMF&~v8=+Tg_Gos}b}OT{Rn8KwYK?fpsf>0Gxv;@O{Fh-c9R#yMh*q(h4CVHK`SrAtFCFC2 zpxyHjnzVLpiY%fZni}`@Cs0TALleiSb({~h>NX6ab<$PH3ahB`6qr#*6?+ENqaeL2 zz6UI;cP5?$|BR-2dY4E%4e2%z5y1C8yv~_-j@;3M-XHtPUJ;$P2vQ2H_UP!$NU!BCTi<3rik@HJOz_nCbKbpToTu*gDawAw=F7-Wp{F~UD>+NIR%+ZW<^xcZe&Dce*!+zK&(Q&;u`l)Jz86vcAD=idIzaOXhQc>Q!xvx# zw`tVBZL!(P&d3rV-q6fxj@7gOU^3mh`|bLff9<_~jlJZ)R~|VsxN`O%_jjDW{_wv) zSzO9KyZ7rq)|Nbb{DY;hpZvP_?1h%!zH{Q1FaNT4-FHWZ9zF8r2KnJ9!1@C84T#%$ z11Jx=9mMa+G0<;7zXQDrdK+{M^iR-P5CddlQ{=+)EkR+f(8TmnCZ;$|%tahw7A6)= z%)SLQ1erw>Q&5?BL}=ofQ6@%86LWDPI0|#0rsE*x#f_(lS)hVo^3cSbQeI3XnwVP( zix@QVf>5C{S!rVaDieCDy^kkWAPbyF_IfVGv^6&@nU$Di7l!0)A}84LDma#0Y18T3ALtu zmuf?;aSV_azImcr86NTS6}wcOEaT%XKj}K5manYoTR+$0?s4<}qvPV?Q(YQfLp+-R z_aDOC7&9sGg^Z)19y};f{7ox5cwQm<-x-NZw{oOilgXC&1G2>!lpXyt)-PL)yX4K# zVuMn8a+R@B>PEj@@seya4xw>SX8NT*XdI9$jCiMPH(o~jpfRZ%n6D7L#(~~l4JN+P z0!J|2_k$yj?oCS1gCmyipM#^DL7n^-#cxy`%(wqRarlUKR;u)ZH>jekN$00qWBZ0C yeMyrp%!ZE*d^&hVtfM_zwY-`w%-V#7+Fx+|r^GjaCHUUs;}oAF=7{Ha7C!)&IV)=b diff --git a/42sh/obj/exec_less.o b/42sh/obj/exec_less.o deleted file mode 100644 index ee9bfe9c7ca890c4624aafd3139c499be04dfd62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3868 zcma)9TWniJ8lGc&j_o*coVYaMTGK$AO2kg-g@^`97qaVyA`qp3SkRGUpCm5sarT_! zHb4uNvRc)Ow4&mozOd>(P$47`4(SQfG6+Wo#ca~j8# zZAbp+zsx`1{4?{<%<(^dIPptd2qP*`fnuN;i7E#|IUjVA#@{Fh5<$bm?1K{Oz!aoz z8c{6Ew`cu84)oi`?!0YL52ZOR5Rb$5r-d+Si;4YYVX>@=J<*u5Jl|C&%evu?Ew}zY zY!)HTc1{W}OD7BMjCi|BWffw3d?8-A zjAzFy&CJwn%PH+*c)yzOP95K<4(o@r#uwn#Cw8h0ZjbMX#=A`8ZS2s(B5Rv(OMEk> zay#BTZFqN`Bc6ZX%o*qVrN+zZC>}gVJRCX&*&d&v^CO(^!Oq2rYN>6$<@zqn)3+MV zo~l!^tZg^6_88Q7Ic_CtByi!pYH*U7Y5Vc74)9@jrh1O8M>r`g=X;mpjmw%eE`k{Kpf&0P;23QN%~4` zZ91#GquBgcac&{E_Pb(p-^t=UX)}M#eP2TZJ(PJ)94Ah5Y+-(Ep*eP3>+_A{&F5km zxHvzCUZObnTBg`Ms(nAxUd8zh?0j@TJy|%0@>%;@aqf-WJ+E)!!OLyicKc1a-L~sh z>rQSYKb#-V4VG)TErv#hq2$+JnP0m`cy761&)Pv{)ojnpmqlTRhkk{UTP?Yj!Yyun zr(O2F!ul({X+dY@C#sGwN}ex#Yr=PJTX>pReS4QE*B#$>e9Noej}}yx&n+&w$US9* zUaLD(xrXCaryRSIBV5g%^o3iUn)ZcLuh@Xb07~*sOFRu|P)s4HioGi(zZ7&)QiENT z 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 O-qX$S_DZCj0Q(>6a3Y}q diff --git a/42sh/obj/ft_parse.o b/42sh/obj/ft_parse.o deleted file mode 100644 index c327931a035277b880227eeb812b2a38ca59bdf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5284 zcmb7Ie{56N6~52*d$!}mF$sh~3N;NSVS?-vV_UUisedm1Vp8MT%e;wcO=D*+j$S;KE75Jd~P|xc4L{U*@p_;^>P&QXO4Of(pi@_;a zBdVWe<&%5z3P4!aw$7ey6WG<3GYAy&F_uL&4iCT~+TCJViC8}7BJyqM*w!(D+ZE4c zWr`vg@+H8hLY{Dj2EJr(q2IFeIcW#qj*f>nj{8JBj`}Uddy|u!T$G1nbotWRxHOdW z{eTNzQi{P6;HXpb#d>>l$=!0klj3vv-cmGo%a_XZW!a@Xz5`q=ls~B`9<6Zj2-Z(+ z^_21DVwwJ={c*k>W$U%N%Hb>dPRX|`7MCHG$LI2??GT^N7aJT*C#_6u7sLD5e0x-U zJu0BKPmRyv%l7V+8(bdW4;9~h#dqv3`DA>9v3NP(+hu%b?vgLRcW}!2-d23it5yHw zUGm`)OUm;2o>u3>ov-Cy{D}=N+uwM07v`C_3Yn);nS^C+-Z0@R#3{uWRmLOWntmA|z=aLM<)yWt}Q-mHJJkcbmh1HHWUZo5Kfgn!|qh@i98SjSYU*P$B zbNF}W@OfvD;m#}O&}~tDn2TXfLAob^#wOX=ePs%VVtc?WV$PW8*yZ8Qv+f*cpi8lH zWaz9m+&OY>%h=eMYAJT!F^5LlAN?g9CQAE+>S$$oTmGn&_#7(Hsk-^eHBUOUF#6mE zCFM$%*wnEaw?xM^S1DsSTRx)e=g1Cb!RY4A+qXn_Cv$cxn~AoyENNL1ZH}jrx)--C z0ccsVtYzs!VdvtlgRz{Q%(eFAEvdD{MQb+E&?CQ_W9BW)!!BA(9LN%2%Rmq4Qw1xLgOVmZ;55H?>HtnN|@P{I() zAz)}Jp-t2757+A6aKvZ`Pt$6!k)9R88{Sm=xym)6wIL5OhgZ`!AyfF~iA}Yukt_5% zDBdueg)nM0Z#WckfWJz1C1^v(zn5{SrPep?VsPmm#8_8vpkpE6~L= zouj=96e5~|(fn6|nu+Q>jS)Yyp+qx1jrF2ZuS3flu=(cd^PrxG>iu%yEeL-g$dQ7} zU=FUvM}H8X8!+j!j1M5{^&0SeT@#Q zxD!AociU*>8Uk&2iEZ;qgJOQ6!vvPc8^ezOHq)jF17AuZdi0%5pZ!`@vJJY4$}>)T z3n~kPBeqF`;_}kQf=ea~F?sQOHTM7b@U_98yy=p~c|(!Mi&wl)zBZgW@K=P~Ec}(` z^AJfuzFBayMgA+PIVZcHJo(79(b?aRQyTs4>($Dz6P(1n*HD zB#J!xklaUQ;<2U|Px?&y2*H~{le{d_;+#XMJf5l}L!%dusp=^65lqZe%1fpkz(W%z zrXO}>Mw*X`!qh?&bB*dK?+qZYnlgQ$ym+g*5hyRCvLmyGGV!L-#LK5l=ap9-Op1%y zhF(lSDhMV$ns}_0iJ6rqCR@cNvjHG?LUA#d(Tf|XOuU9P@lGnP|8-RT>NumvL{Zn4 zG?R*ZezkoM3vEwCi&XjpJRcnA9@P4OIA_t zz8c3s)l!*wx{$zMN$FH?U%qu5wifK1i&|65+g6E57JIMVDxWiU$wNs9=fTu6Kx+At zfr|BTJfY+Ls9r7rKEdC9$HRRW;EBZx=rcqR{hZ>BYPzrDpL(F6`;9Ig|GY-O9(cn= z6-HpX?lYdz16_Kp@qk_fk6G*V&#cou#$i2Z{8aax)*Fn#Zhbad8rSLJ(|YA;-H#5& zZ;bar6R1VU(|TQ(-q5A%T_F47&vcJ>&oOUBkFFIwL97^m(lDzz7nS@GB&M_Y>k7XB zS%te{E4&pFQ&{{uB=T7J6eJ%O--JYd2_JzBLhgaYN`wa>G4*f{B=#+ALIxn)Ad$zy z%}UlQi8g89k3kTZ!TV3S4tA)<0!ZSyNQ$98;Q}eUD@^lmo$%GSl6Fz zrR_Y2rI^1(rTAnSURZ`zT(CN2B}8d|W|&fZv<&Yo!@_xcTZ#T$GKPnADrfn+)@EceLbbZ4JPW~}(GLFa+*yy2}l$Ho7-@NKO+ Z%cn6r;@n$(_`~0AkYU9pFoPjP`7fcM_)q`< diff --git a/42sh/obj/ft_post_tokenize.o b/42sh/obj/ft_post_tokenize.o deleted file mode 100644 index c755dcc999a0f595a9ac951aa11329bffa217759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3416 zcmb7HU2GIp6uvXNv%BrKy9)&Zslp_*fC=3#f7&1_jnr&OO$Y*#2$}58PP>EKnRR9s z3hgRMfv~An8zs^3U}AjGH(p2}hG^6T6HO$+7o!+7kQ9HwXp9Dk^*b|n%62GFPjc_M z=iGC?Irp6Vv-|bU-~NpF zIa~l!lpQ_0cifTv(MNnhcofU-CdS-PgxO)=hPa}rwqxnW09OX_e4GNGKgr|dA`|_= zw0}X%R|XV-x*A2<@_hI9XQr)|QF1_+JjSL1cu>!PR1^=dWU8)55brj}<8bVIO4dx8 z6)%_1TiSkF|IGM&yc)-tE1qujo8%J2JIcTQH^6sG1pYWjJRD*dG8mu8&%eLkpBnkX z@3269RdW#Qbd-v5KsO4C(zoS~DPyZRp3If8IAfH853v7u$N@a9sPtQ?uICWE5Bxi9 zGsj!S@wmt!7X2~t>GP`_E@E)K$9a4=xKj}TM5pc%ALYfp3*%m5DEP%_XJAiIv1Z1$ zffEezdZP7G<0Y$~df<3xwsti;`m3C+Re#UcDwEkU@UhC|Bze|)u8jV}l1ExG9<5%P zN*+Zt?0nDdDbO`KCfB~A5e6(f?m5rFaii~;9e?6wj9r(Hse0M*4J*LT(yP)p)-#!{ zeR|59#z&z;M3={UZf8e7m-l`)tQ-5Q!w0oewSDaxTOQ7vrRs3LRH?RitSby_rdl<$ z12VSJV9qGW{gyc>=U=Lrj%II^SGLFp3t6XkwS@7q%|>5n2$XqrlFiKY;FuCHpU;1uWagV zc?vZTNlfIb-WF`M^)p1NjfE0V#^czVkt8F7=prx=0$aC52qofi!egwV8MeJGBy?e? zHzuj7f1-J(HRhh(CbpW?pk9x;z5irSpKD(s?4lzmB!wYjA#tL7$dz9~52<*;m3~Ga z7AFedk~EJ@nS_UuN#V#5ut*JE^euGcCN7B`16wT4Zx{zZPpSpta@KGHqc2EWC@zmR ze2LLjk`{@}Q>-z15##sJ!b_t+fPIJ-+9RC>i^d{^9ijU``i4eWY4*A9EG^h?bh?N< z+4}{tx_QlY%7(i{@H82K>U~KL`qB~oKQ{FHg4zNC1JQ95@Y5=U>nDtBhwzAKj^d*# zkPTf<7u5x=orjOd-~8i3tMjVjdLR#ZjE66bu>!LX*5dScWBqqD8+O*%Th&)L}o{P{xR3cJQ&A5tkN-9b)cck=_imJk`s1&54>Ts+3B`Jyo z_=|=Ii0?VVm_dHpghShzFq9HfP0`pJu%eGVg!cALH+xh5o@L#M)G_htX0OPM{Q?`2 zy@p;8ZY7%0yDu*ggy{>4mGpeSlhF;eR4L%q&Qxs6mooagu19BT?1Oej;qQC!iow+e zXk0PrB305e!x$CiHwc6$imEB)oTVA|w8&o+rcj1+PEj#T Vr=VM|TqxrYh|}-Q)jur2{tsob83F(R diff --git a/42sh/obj/ft_putast.o b/42sh/obj/ft_putast.o deleted file mode 100644 index 333c48d2372602bf2f99f70dd1c354aafe618188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3904 zcmbtWU2Kz87(UDq29ZtZBhAIUHv z{xHGBU0}HILKE4AqE{NcFlwTb5MsOl^}<9kK{69bG%k^-0iWmeoNsFZneim=dEUSC zocDa^r~T^BtJjN#FkAv1qzLk#x<_%Mr^*34--Rojlm zI|sULkjjW{Z+@b=?GY#IimFR~BzVsj@WGWwsrhX}^Zl*{<%SAz z!K*a~Z^_peiOLcS>(hLCTkgyk>F@82+sQ~D%e!g4ld8T(RnEmb)|cZ;b?%cJTv%V7 zx(|yLU%=#%B9{e?Y3^ICf0yq&q{1ESO`3o#4{EF2N z^6+TOwVxwYjWbJ+7mVPDO)G zls{*(sufewfD_%Lquf$_s4loX+KUJIzJ@v&q53tU)hk3M z9j)z)B$BmVS-XEA8_8rtQBk`qgK@QybRv?D)$UBE_Qj*wOl|#|OpkE#M6@T87RgjB zo=8d%SsTOY5E)0~^MHVa-c+(XD7!>5D`JssBsWBA0~{i?bUc_`vC-@Duk)?ql?!^^i-pVI?2KY-1n7AQ-7v(gEO`zv$6V_@4m?fQ{pKR!9f$TYtq06S9^p9yb&O_> z`y{~fc+LUdp=Y-513mGJo30QU{(!chYpkV3KPxrsUxyTBJYo|ni*TcYTVz#w2C~f@LYjvR{O33JmvzKD5trXB$Mz;%7vWN zVgQ%z@#ZiF3N5A5t8KTmez>sGvkIF0#K4fsnLd`T!m&5d{!0$WQ>sXY#@{eQxPcbl zV4ol#8)K}OI!^-LXQ{JV{`K-g_>he6+CTnO#l+kb-+aE{)aA+5bJr&4zqj5xUw7!J zZ}Q#L{6Oj8`&X}fpMCO;r^lng6C)pD%z4Q7kl!Fhn4|`>60!lZ6B30CLPjAxG62Cd zR1HDn=F`RVPy<2ZX3)j`Q7#@bx_Itzh1htU=sFEiTs#qU@vtZtx0)_)BY!2)xaD;5 zK&UL9NxIHJR2GjFT|8-OMjltXc&^nzUJAN+L)5^3+rMJ$jouH85b83LA+PEEG!C>0 zV>n<0N{cDUlvfSwt!jD{2Y(%DE{N*o0Z*UHXp&w{G zf6?B782`RGPcWWpr1VG9c&qC diff --git a/42sh/obj/ft_putast2.o b/42sh/obj/ft_putast2.o deleted file mode 100644 index 36b26fade81dd142d21aaa53b801f0dc2aa332b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4384 zcma)AZEPGz8J^v{+1vBk_YucV=vOXH(j=(9bJ75oYdbNG(Z!7$D_^x!!E(Mk#~19o zM5*8bC^Tp558= z-qyt#dG?*>o%em_otbxL_x#)cymKoggccBZpaxNYDe*|6qI?83L;NA-OxWpoQ`xu} zoPss3{4A?pn5!!QVOd9q#*VIFw>6+UE%Gszv6v9|P!$yCDBNOMxmvwiES*#eKcCCf ztNQOVT~9}YPPg)?gb(XdN@xjBNYV^-32c3(AGUnrhs)^F&n=a>Udq3Zk zTyRf0q1Mr(T9q$5F;Oj?=K3|q=kh(L2=0`xSeh);#m^Vz;-l2meE*^1>%oSqu2ti! zW=kgvwGZ+=<;$UL#NqcmSLK_@=Ijvt@wt2|Jh3)kwo;icSf%U?!~4K|=T&@tDxirq z<8%1R6Q}GA_Q&^<;@hhDzHx_qc6^m=&d>K3AKxo?$XEYDW!3o_h7;KHY60K6Lp~g0 zo6;ZOw|Ll5-1*M8IoR{`?QgC;gL&4i+0vO}DQ{T^_j_!`6~&iS$``@MBQu8lQz85K z3RBi(6}#&=`0s;jif^CdyQ26M6qx>$+oo)s-(tyT^v`#PI{$}MFlN;8{_Kau$91vq z!bpp4$ly1kPC?17xB@u_$!!=#^%f4ns#3t)wPyQRX6b5X;d(r?boORu8FlIG4aggr zg}wV?i=FV#obT^IG%qotYvg;IH(6$R=tkzLo^!wrvwtE8kJ;;h%8Zv^Y>{UNY`<$V zdzrjHeUM$GT&|e*ATM(nJY@4O*|Nwiyty~Ca8tyde%xiE>++oAY11t9Bx6r=$rXyn z7Ei69WFus5k7twwZO-@iH)-vDXN0&N8`}$Wtq4HbCz|Zv{_e_1dSj&bq4bP|E82}s zYuLQeY%{WAV>WDl)NI4NQF9E&7F9eKnr(ovY3`#joy_u_Gavt2E0!bh@I>4ou&FW& zuf{+9t0O}r2gK-s(IN53p^=fn$M*Lo#lQo-q7OB>BR5^H74kd902IAqfCBQ+(ag|c zG059CdGO%zk>u$@wN@;bl0B*JR5!iwis1?%_t>)9C)$*xAu3k&;*Uex#n z!Kx*+ZP9iah{lb(qX}&ta!5}>xlY^H5{ULj9*%5p-P?*=O$uEp4z%Otx~B3Z|m5OIB5`1g<>rNwsI|ItM|^ew^gpMZ9;ZzrQ^ zc^yy&Lw(Tv6-~V}@^=VR-((xw!)zwWzo4}#@8_V#Bh0f3n8sYRF8O*TZR&2Rl z9PGS?-#xV0#+|U27c%9TH2G5H_q~ncDcElJ(0L}*M&D;-Sq9hy|?SGhf4QeeptTNeeNrf_r6!YH{N>s zhwt2K`O=ARe(q8(dEtvchTm(bTx%{;5QA($xPpX)* z%8DsQ6|+u_$ke5ZIj$TzX{wke%JKj0UkH2S?gzY3)KMfyQ*n1xd-AZ*=HgnsHDrEG z4RQ}GZ@y2S+qd1LEC!?TXY@zfoct5wQP}EY5SE(u-)I}28plA@-0K!i-_AZ6nU`_nveVfI;&HhScAJOg)=8NjmZ4#38dI_zI&)Y`3}l{= ziHmYO6v009jT`f}S_a0Y`GnU{wq2APVb-85Fa+2@f3jQfjx9}pS0$&qQc~EJ>i}=p= ObQVhaX%FOgi1;5gn{kT( diff --git a/42sh/obj/ft_read_script.o b/42sh/obj/ft_read_script.o deleted file mode 100644 index c2bfbee1e6e1f6011655be4c530631848b2b2c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3168 zcmb7FZ-`V?6hH6HytlK?Iy>u{X{$D{W(Drdrdus3>5`jcDafWK{oye)`*wF^d^5iH z##S*f79vs0D8UbXi9Qr$(1(Hu{9s8%5lKb)C6GumDwOhrsJQ)p@7=fVjDI_D?)mf1 z{k?PUJ@?-4F8+O`MMR4U25=l)GcaVppn2d6bl!lLnc;_noCAt%U<$dNPLO5!_P8JF zp}lc%%f_pAq^(g3@%Y>0NfDjCxa^^b$g+m*Vtv%|d^d1e*6ODRh8~YTON5hTQJ|ky zexVhN0c>PPc$I1?a5du%DV!+&S5ghAiD7=hvjsuS=pGW_xl$-GEF>A!d?uHXAtMNWasPno?;T=|Z$`rtkMLK2F zf0eQmAU4;VS9pJ_Nhejkmv4|C*Cox^WEjZg=Yr#HVO@QYOZXYQ0X&^pFS()M=>a#< zH|6)9&QJW6{!q>^DsR+)l;1meF2C=^bAfB(g0vsN-{s4}%afo#c+#OWeBa>Z{KWC} z^Pdm!@MPAl+q^!r!*;!L)yec{d$YZn`$`p@_@4e=7}>t1*$3_y&n@L#yD;42mE3a8 z&yDyNO)E6BCCP2_fRQV><$^n$+u&BW+9lu1^)2v8^+Rl~S)jrXu9N6eZ z5=%XrOk#tLc3ImgV$OjGXW(t?)MBY*lG8;JGZDMClSV(!rucU$6v$huqaPA5Ks^(`YadiPv0zJMBk3xlZ{-&6d8 z;ZtyIUJK#p#%3kHf=r{n*lhml1gs8Pckovxv@EST0GC#CK6FAD3(b3>{suMvT>Lyl zOTyp>box^Rd3*|v4<-AY6#Bw9H|w79W${yEY0 z@u|gUOPNEv-$dNIV6H4z{}lLNFqdy0cnSCzY=~g_(2696)5V>c0|v1T=we?e7dwS6 zHURH55Eq;-?tyZ#ap+<%DR}M&UEEHE#SNp2`>0&(4!YPX3hQP|+=Auf5+PdAnots> zfucp%b`6O(p4QTBEs2AO;!oy-PhKR>aF z{{U-E_Z{x6Ql&nOSGQ6wj`+DLGgtTA$jX(M^*NWR+4e}9xM^%C(4E{?Hm+!K~6KJqsbPlv0kxU X-0`+wuL-VXzks5g(TeR?9g+V42(!eW diff --git a/42sh/obj/ft_readline.o b/42sh/obj/ft_readline.o deleted file mode 100644 index 794f546ea91f98e9556d839a81e9655c73ddf601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7652 zcmb7JeQ+Da72iAQ?qth8$#FgmB8fl=F(v*81TZ8`?Ez;lA%P4e!C*3nEXlHhED7mE zJ|-?1%twsLG?c9(;*Eh%|Iaiy}dp8 zbT$QcX79J}?c3kJ-P?V8TD|`HzrNBKlY9&hWIyt51&=5)(izAG$zPK)VY}jeVdKc) zWRyiUGfgYC-Wnq@&6V9fE5~G~G+DMw#7Dj?n<_Z`Y_nrSXqw5m6(7@><`rElyT;_G z;5kTxq7<zc(Cn`1OVNc#of!5Uk3Jw=bU#^KB6 z6I|itd%-iOj|5#zc5yw1{aCe$ZWiM%*4gr} zr!gj6ozTBxJeN+D#`AsYnXkWwY(Cd>LcYOxg1hMT&*5`k?>Fa9H zO8ED*aOk~n^v~wY_pRkG*z4a@wKmZ#!FP|d5rhozjMwE~A)fH^9q{ly^DX(T4TTBE zdtC6HDZF^|Tk>HOb4ss&b@kQbJvwP@prYg%Zz4a4aav|Mw=R=Qn&z@A+%4J#-)5l< zH!?;`v98J9$0&OEQUhjx5pUOS;EgZO3cj6!Z=2u~BCY8Gr%YJcznL6o^p1Bxx2+}N zg)!Nd=fXd+Cae6Tb-<@MXiq#YASrsNly_$XYQi~L>FDr4j$ zWB6$JS$3G38pFGz#z^-uV|3^kR}7zIp{=yH_jR8-jdWxgSyk0eacdm2*>2@H5{mq= z#FLG7pE8F35MHylKQt3>Soi}chQ^$*T^s2>Yzz+_W}!Q2ut)v@Z{~egaRr6LwjG=^ zM$3m!9~{^1BDAYC80kJl26u2WylwUp&10qd$lb)h`*|Al@X#R^TDE7T`;_f%bj{w- z%sXIR@i)9P0Ab{1W9#x`#>ng3k$I zisH6P$u2~CFZ`ifb)#EAd5%Xu$0J92u}EAg;!#9;FL%{4hWaW6_t!;1^1Svj1+RCt zu!$)(%+Ewh-4CrQ_uU~Q{PU}%dMGx1`wZACG^HkGhSZSyZE4Y0JC$rZ{Lvjmm| zCi2M?%jR?GXeMW|{&Fs1!3D?6tSG3~GN~h0vY{_yl~NWf6mcwAEHMx-GP{dJHdE-! z!v$8zmslyYF~!QIRFaiaS@^>eWy#`Q0uuS0 zm4YJzP0mdZ)1vqvFH&0}^D&ikrA#`PO7g+w=zDe`Q?l~K4Isv>ab_C}^pQqQ>9Az3 zd1b|{na$@5gf!QL>6A4#Gki{pn28LN8l>5JqvF%UYD904CLw;w^O;Xy(s)^LK~Tol z^-0nagf{=#Y)RuKI69Q6DEM@$W=w6Ae0nfw3tD}pVFwxpW% zZ114La4Ztmo)wWwxRhEGsx=P&v zSRvh{JrCq<`lyfHkm4AQlt3Taen(2mv9R{0Bci)!yXQd*A9(mrye z0Xf#Jee6gXIW|}OH>5%8VXYi%*P2jzo}`=QSf`dpX(nbv%E~c=)$~IQ?1Q~3DeF=G z3`My~{SpwCXJ~$?$OAb_o@-m?gq`pcZ*#mI z?da&IHlOf!Lc5>9u1DAjzsK3pB9YmCSW40tdOe;JjSX4Kl^JRCTE`rAJX0Dn2!>=)1UL zGFODu0VtQM*DDP#aP_o`oxDqt$_n$XIi!SZUs7a{1l3-pM(t7RL8<}$pqpGK0%aN~ zG~kRLW!6&a`21EyTgWY%b}2e)>UtEd-){0V-b7Y?xArI@U)^s(yi}1FDw6trbeIfG zQsmmeJVgy$sWhv%E2t#LYhUF~Na&pTvM}=3-l;Ua4Ue`d@}uZIFj)!1wjKkwdzM!z zwZBuQU?$|HvW(Y_IXaC8CVKi?0(S_^0yV~3t^;D7woCyw11SO^Lbn_MVwPL}2qgV4 zfG}x!9EkhpmN+l~Tn3y2ybOrcLi=Gh5MQVC;#yuoBmDB#cLH&(qEkf0DWX3FgpIxh z7zI+OLU_>!fM)|K#^730H-NYs);oY9U^8$AunCCkEIk0kKGf-F{r7-}fid7aK>RS* zUjd#2+zEtl`gY(<;6p&{Ykdn4CyTxwcqVWF7zXwL&jlL52(SZ)-{E>Q5TQ$N0^(%S z13+BH=*^g9xS~b{eu2p&`BQ;A1U@D3PJu%L7k~#v6@Bt{7$e7<1a=CH3Iy=_cLjC< zb#&;&!vBJd)uJ$)~`?ces;cY5lvHmdB? zo_hMiaPz4i`R5+{jUIWi$DU%no9_jWeAMI58J_wVJ@w~%_lnabXiEJvK6J`FR-Nb3pw=q@B^J*)F zTZ#O-9OM5*;e5$~$-;F9Z<{Y{82eSvHR!l<0YZvQ4i_vQT{6`lFK0bU`>MlSSIndb zJXI6vg!u&46Q~^SYzkwma&O&ul`tM(F56#t!OZc22&A5bil+wNR+iS{LX#% zCC+PMSvl2YhOhv5T-eh-Z?O*yR~1a3gdAs831r>P!6(ii)jvLD_K`#ypGgBYEHkP zsuN0{4mxPeP4u%+ZEsnh=i%aIhla}59y#85@ws^KDVUqZ%NIvV+{GK;Svl!MNfpJhumgM! z^QVS>!}!YC;;3a`k9Wnhhu({-K8<&-ipx$~_nG>Gz*2FiF&3W;j_TW`+60h>`#0|%L zLgAfM6Zrg1;vtD8q&GfW?O%7i{nsa%XS})6IL28qtHr(f;;?CUcg#%<(enzgT^aWQ zkGEuK0g(do;8|nlNExf^bnu=p=M~zlKpENZlXSznfiVE;mbeN z4yR{~QwL@yXX1x@t{IQrhQ2Ro#;Kl}$$y3qr(tP;#W!WhVdJl9@X2QD&-oX=?CdX1aRm;3hI2=PmR`nnyt&@E9`F>5np# zZD?5q?FG8TEidz^r{2m;rO%`Nd}itmX$A=Jf|(~}9!~dMocd{II&dyCjn4po=G;{J z>U8>QX7crx2VY~H|5HivDH8AQ-rf`6W0mcEsTgldv?N;MYjXu0ee2pak=J_h8BXbZGedXw<$vEUMYf!2s*^tF;-?`*oe{`1i< zM19CVzovB}=>p5Cv*~llIANed6kG)J8tmdaA@$Ho^xG7T!XvyG7QfB_M3E-VuScVf z5^a#+th52Tp3i{>?ih`3g0CK^@io@Mz7&ZTOCZcftv%vEuBqqfh!zO)DHF%j*g8+8 z+i_?(he}8uG4*tZ%7WUX(|tktcA=3Qw15%zUqFS6pA$215lkmB2oW3s)9S{->&}Bw zh|fV05d01jd%?nozzQJkmWU0}tTjgWL%zhOg}xOOWryReE%L1hMNgpi4r_~jD`He1 zK7;z#LH=9AXCa;i`5p*;7osjCxU2XLSm+h7pw{pz*X#5*Ap+tK<6THH-UrhRj@oDN zap5;U1P>U02N%Z2;6Y;syw2d62^lf)u(23CVk`rX8f(DojoZN+=FZVHx^U69Z$Lv} zxhCggf$ynDw@IDjqL_OeyA!KzznfcE&w5YvNS&t;eaHHw#&Zd6c)Qfz0&ny^wR4oU zwZ8(V@SngQKuz2u-iHW(05;D0)<_kiS!{|PfL!W>shy|!IcN+kQasJygvRlT%{N&7iOWJ?UcN=z-mT_}y@R^JcY#<>fVl8fu)c>Giu+Ba-te3Miw}|oD@L@C!BKb|9J`+c{t`sx7;4AC z?Ew&9Bm7RqG!S3a?8Aj`-$Z`w0^nrM1EP*x}UFqC%15k?+4{l%fZ9Z zSpA+CbMa>$`NrSQE&0@j;<8sB`RtX~(eIa_KZ5=R;vKdEbQh=-#0yyh@e(`(`aXyk z6F=hBT?~oBo1aZ*K+42x%_d%cBs~|IY>=FN%8T=Xy?E2`_)s_(*>nh`I&u_j;_aq7 zayGMxx5`Qo3hxg#@s?30PChpAj#nm5SvDO9DJ&iwn|Mnq6Q?noII~s9|F*n!HQNq7 zh*SzP#Ju7r-Q$k+x^{OzX#4v}+ZWSf^>v{m@ZuPjf71J@+oaEw4HgZo7B7j}OPYbjO#1jZm7#*DAU#^Kr zMA_DY#MigQFsJ($Ts^G&m;0 z!FR=?;5O8|MBtDJcLDFHSQCc>)OSI~Aa_C{cAeK3`Kf0hk>7edWE8Ru68WmPKq6Q5wU8mmI3&(5y%`cuW*u1k zKVC;0wv_Xi9uuKI$}0oYUM25Wl5>>p8{v;QgR3D~zg5Y&k`U5f$4YoBQzcu@`oc$WVGhL?%E0@m}Ty-d$+ie%JcxH2yvky_X=a;G_ ZyoHrEPuW{454#OA=4^3R=df8N`ZsfI<23*P diff --git a/42sh/obj/get_lexer_state.o b/42sh/obj/get_lexer_state.o deleted file mode 100644 index badce7ae0440381844669163a0ccae99c90dbb4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3104 zcmb7GUuaup6hHTVxwmQacZeO>WzaGzmB9 zR%HdH-EdT4qQcypf}kL}7X=xJuz?DSihJk3iYkJ;XLQw@1{4mt*r;nIp6ut z`F`Iy-=F*4Z~p${pEdx20SaUXa#cbRL`Hf5d7V19p-$OwT%j>Yrj3|D?4wR3MX9Tc zb)#+Alkqc?8@AaRp(Kz9kEVUsW#om%3)F9tq7>BWg;}Lm*Yqw$iJgw7M@=`FIBUG; zd!A=A06?^~F+T&ZRLSezcD%=0q5*DFajn!6VdCYcr#1B))!&+*iC5tmyTvP(XY?U< zytn!6-*LP_r_s2M>&Lfm%lx!lc~-4$&aXxX!a}UwVi?UW@#b@RJwCl-*t}H#qoxBiKpjR&E@TQw{3WZUE)=n^LuHRczEe_NPB)u{7{(ndOA4phO+H%zA}$>)|G|w`C_@CD5=;+DBe?! z7v!Boh({@ZYu?{Y_f4HsW;EPgV}PQxeh_{i#ey6K}j8*f^DJxw1S#m17=_ej%6tJla`eZ97P`fT|;+Z^km zu?I;YZ!d5~$iEuDn^?Z(f97VCJ{-YRYHB=qPSt9~N;xf$7^5y4p8VGxYgWiC|yncDVcaN|a4~FOvnAhcc z+;tT9jr9Wa9>B$PgfMikFxr+>=sIo`LIFrwHKzoLWk%RK0zf&;;YqPbeqCK z4x#uFSvb-5B`W7{)QL4DGSLK;Vlv$!BEvR*9AZ7!-k~}PpZZskiL7JEwvWAs^nYUL zn@M~hfgw>_02#G}<+_0Ih{zY{zda~^pjGn0H!h^mR*>m$h?bmkqht16wP!1x$}-*#y#_# zK-BBMB#wB@-!wPIiZF_if^f&{K`GE2$U?E4FD(@Cm26&K0R85M=E!fmGI){cv^qp+ zH%=`Y%qK{JjvJCJkG(H3c~)}YkX-VZm7I3jgNq(d`O-2lojZ2G7R5sWNmvluv3gohEUy1`L(4C7-OcqwT%)2mIm@*dwGTT?qNc^fLo-uX QiZ%TEEfwcMu`M3JzfyU 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 QS>DAZ6FPWimbMW80f?m@YybcN diff --git a/42sh/obj/job_cmp_id.o b/42sh/obj/job_cmp_id.o deleted file mode 100644 index 7318df93f6c8a7b048060ca9d02bfcc2ceaea760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3784 zcmb7GYm5_B6uvXFpjOc970 zh(;jt1Mv}KVuFc@MB^XhgT!D={9y<&68S|WhChPF7|{5@N5t=&xl?v4%6gM?&pqFq z`^}kq&$)L#|NZ;F5<)03fesRfG&FQM2-?+<3k3hAoi)M-`#A?KvcV}R8G>k*vjOQ^L-$BqB$%0apT)%`HH2ITiMEZ$Hy1(eIz+1%IDOE>YUQf*OYJ1 zNv+9!*_Ljt<7MM>i?!j3_fNhT$1T1PvpdFrEUe4&jTY@7#P;|izGxY*%vWqQsuinN z9A$X__}-Ufe0RyP=3Ftpkgs0a9BgoVd|ybu>m^@lf_y=IjiTMo_e&e!GZWK{P zz0+j=E|9DK<^=grbOB|1e1kH7qwhVHk{^Cawe7E6AH{e2RzQxula7h%CTjSHY}%{w?$!{hxvt~>lEE`VYOS|T(NzxuxNodA}%=! zr{>cXzQx`PdZ#QJ!|a^0<#Wx8E|S5DOiWq001t}3?>eQXk4*Nhp=xnhRO_|jT+oqr z$Ze4zAE{C6+c#5(r^*!gpmijXq>$l6PxI%K-<3*>ce6kZLjES*N0qJ$)_M7lSOr z7n|nYOyFyf-C=baLEfgsEizYEj>*~RN^R9~1SsoSa!N+oOchg~3od#kvjrxs#?!&m zX`B~tpwr?SZbYH)Lbr{BX^AJHHmNfVx{^hmrS=MAH%7;4<<#D|@fJou(7IObHH>2z z#kkDZsl8d_CX5_fy=w1Np?`^o`ykp({S4FrNPIvi@oSLSE&88O??d!i@gq>0q4CT0 zZgeMMC$3JMhMJn_GR{IT2b}0(MCV|wpf#B>%*LopYYJizNqr5*WHx5%8!=>fu}9-1 zO&A(g$9!}HNmDWJz~B@lnNq-Ou8Pb~n1)HB;At9W)_f!~Gcc!`C79npl3AEJ^C=9| zSlr|!n0@98k=X@vsYo%Ben>K*bpFI=3HbJi6nA`>xS_={e^%y!-U8+0@o|Pl1amp<*E> zL*_!3Kpun?AwFa`6~7er2EMG<0&NiSv{Ay$a=VjU9V{_?IvW0DYJ;>n4OhY)i}da>LWmV5y_k`Nn5hzC84+SpNQebZh;=R@mN6l6O8WoGs)W#k z?0|RBv(Kpab%r$&?x-rh zg{PwYk?usV@Es7P?UKfYYge1RxC%|rEl8{2EbO~|JmPI{a{*AW!XL+~QyTK4xgNH6 z?8T3l26p&UkRRbrg!3>)8MVf7jDtHJIIfO>I&`mkJ_h)>;9j<9&>_5OVPGcC4e*97 zmQl2hjt{krzDk>%*Sc0|YF<^b2x2iD5RYDvdXCgHrG^Tg{~|RPEyFHq{2!73G=%;J D0Mr&* diff --git a/42sh/obj/job_format.o b/42sh/obj/job_format.o deleted file mode 100644 index 10b11d931bfed3c6065b03169d0d54dfe5caa2e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4040 zcmb7GZHOF28m{iy?&;b2+>hj9a!JOl#t81r-X?chHE7~RnZzi;b2UPwcebZ@xA$ge z#_pcDiV?$lcgA>J^bkaUTn-dH4nblBK@J232_kpk4^e{TkD^>8;eNy~xV`78uHNj7 z(c}u=dOzx|r{3y*->UlOcVGQCDTI~~=s-Q7mVvGaLc0R=4UIq2o=ZgoM>z*A)`2NV zc^c7dJ9Ov6NRIToZ{2tI1wEE*B@mCxZUTT#TaS2*EN-@4b0^!=b`bi~WZOIM-Er4# z@vw+-j&oCJXH|TWCVL4R>oH!v=}1#IUSEf|5P#+7I$MWFj8~nU^xXs8e`kC#-unvU za`C*zRFhM>@lL7LZ&SQ(MZjbDe(LvKG(NxDn0A97;%(^qUdMY?pcmLh@#dXQ0t=meOcj+s##kv6AwivA-m)ISmkfLUoU&9_?+e(_8Hpk z#)Dp?X4`vqcFa)uR#e8Lz~h;+5BaD5dDnj38GFjd-;E~NcISCeRCwDJ-fId^sRG-d ziDmM*-s)aMB6jb0BCZD&%sI8+i64oN-=#p{bd(4Teidj2{@mAd;3FIc?FB7wT!PfG z;pGlLA&*xMe^yyIGg3Kx@SDov_PN93XDUY^9%-NZg3};CIZ(jZ>Gy6u#bqiB2TzOq z<7+7X@!;tr?Ndj_&q!xDaL$*XEG{lq7Tz7X|D7Eys^XqK_uNrD;QE2rY!t^zBc+kz zCZ~>*V0dfez=@-|Ez<0{C&B*$Dk+ow7aE^yjK!$r0u80Q1XL->dqy@?O6= z>pEdj-ZC1@hzpKlR)jWG5y;-F39k`~)-;5cSF=O@wyKYOvSStFn@2HF4MX3XY=`cnfj8Z7 zYegbAcu$3M%^H_>{W-502*>th4532?7{_i(gJVkz^m?p2!g1iSgz3yweYra8kVrwx zb!$TQ5mIEpN&H*UY=wbn$z8}DwuIKFU7Z^+61jr8CfBF+$3G`CB?vBQIz*SAs>ea6J!biCj8O2qCPjNaS`6P#HtUr>=r}Q#y^2 zUSzsRFZtpe$}IUB^vy1TVl1a=Tqu7f7UCIIAW%Ae6YJy_6hu@L7V}nQ#C2q7yCNq0 z_~u@!p4gz>!^+n3nwHR?o^MI{D0*nE7XYZ`w_^^p`Z1}U#aNI2^u$Zl`mRL}ZU5h? z^>a)Z&!RJrq2n9ET%DW;o6y%vxdOQ!DC2J=WhK{R|lTmHLonorFeY zeSah;ig$dG#~Ch`9QN?d1dfb|4KbA9S9FvBuR zu$b4Q`v`jSisYwYtCIcJXW(_1lY$0&0$P3s8%h zLr}L+?Snd&c_vo-p>7vhMshPKmDF;p;g%mpHz=|j!CcxcEj0^nX$8h_CFKlmE0xj= z`PW3{H#-=iJYva_{IW$hQ_9xJ>itYEnK9rcX~lMz&84Y(E)L4Y|Hp@~-+s^_!O(a$ zXua-9Z2I#;;q8+H^?^Qg2G@j7d27uNZV8Y7d%Uo@XQuGPE7r#&k3Eq- z`R3rxe?0Qb@7wy-g=h9mtv&g`doLb)`TcMI{GWfV`Ly@hN8UKS@$9`P9{;+KIdFn! zz06vCh!r4ajlvXB|4^78FY9b4ZCRUpAV%E{bLQ!6aloz8{4-zH`y_lA2B2$+p=8*DYSB`E6c%fRCRUX4Vn))$OjRb95lzfaWnw|o#35y38Pmkd zR`5TSRY_zFvja2YrVc%VbhJ3pw1@8!+I&GPWRliVwaU-o`S#ZYT3n0|O|c_a_`Uw? zY*ZHb2JqFzm+;iI?{iu744c7fUH3h%YNy`jEm&>`epzW{Z}Zr%IxWFNT`n+`?dTy} z_a>*pcy1t;Jq_@Nz@mIAsP{!_hL=M$4>BrgN$!Cx9|*7;NMyc|Blmg`Lcr$aC2v!q zLv(FJ!Au+-z>QiWuNnQl)~K<<+->N)jb8IUBMZ^mZKTZG4ZUrw{@mDLZZi_wynu!1^E9NltG7 diff --git a/42sh/obj/job_format_head.o b/42sh/obj/job_format_head.o deleted file mode 100644 index ca14729801054db5068a61719e40ea4a04dc9ad5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 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 diff --git a/42sh/obj/job_getrank.o b/42sh/obj/job_getrank.o deleted file mode 100644 index ac357508f56c201b86f2d88139d4ec1d41669ecf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4412 zcmb7IZEPGz8J^v{-P`-{-T9-IQzz-QPD2Crotvc8DsFH}99_~>B&ALRD%zgcXM4^0 z?zr7c(l(K*+66mC$fd3LK_r?`sX?SrP!LE65d%snZ3Pk)2*pDA0U{|yMEqz?D`B2z zch<45X&Xj*=lz&>o_%NLedk8^yLbQj--r-ONT36SK~)W1286Z-v`FIzw0PVfnByF@ zKnJEErD#MmO}BX1^<`gwaNxj$SM@-emjdzl+2d&;RNBJg39_J>=5TSSK59B{%`=(i zj)%5CurnAI0nS@o6xu%B=PP;-HqZmSQpNI2jd(Au@)qJABbd3&S9t_@g`uHZ@gUc~ zI=%q!RXP27@$B+Qg;N^w4)Xxfz9XYBqP~6_`zMd@n(@^N<G~gu?68I`>*gro$_tEM#*ZaK0E6G_s*NKOs^B^1JOUV2P)_Xj8 zH83eP#Aj6|uuj*kmk-(HVbk2RW95tq;~W(F4vj*$Z0P_zBXg1+R4Y5P2{^^SAuuTRr)iql@PU7U=o1xI~uMIslrV8Mu_6 zB~iQxaq&Dyg(vlgDc*5*dOkmS^rD!)|3Yet@lPIIP*caxP7ho-HgMsTl6s1__2v7} zVH!Y)bp_&;*(nLT^<-=8^HtT}e2oaxQ>WP38VStZ;x-Mu|fvRgN2@7N@qnw1-` z40T(TvRkW^D4U~27kAQ^vX;mVIsnKOYIdPEoZDNgj2A7}$!*>2jENPVg6_gDyTY*_ zD>B(RDqNGj6;t0#My%=1J4AU&L;u$Q{vp_Eex+N?N9?O{4SfNG$r&=ry3$OP9d;@mI@;Aux zcgT`!^R{fPSSp#`ep&Te4U00db&hA1A&z@1w}sNI+?s6FLdmq=nQT^Cke_N6#ulYN z7E0b7|5W^AiBIFA3TZ->hFz`rJ=(fT)l!01T~Wv)H$%G%Wo2v-q2#tW9~4oF@%T1~ zv33mm*eJeMg?4@j71;!*U9D7lk@HO~@Z_=s5(r>DvU$4hNF*z84>LaSnL<*ra}6R@vnnDqOMCk3(i^U zO=_1&d=pXxi@@-T|M2Inu_6mY_XF z?FPnhC!~|q+7W|jip@bzfQHqQJuS%OF;_)|85jwbr_a@2_4Qu!8{83_!86f@)b1tj11>}CsUiX*Sb4MOJ zGxg5f$HvyZ^3%2*Kl;aDdis>{=jUI1^*>v}W9f9_;F-F5Yx)mXTjwiZKL5gxFK+zT z&yU>sUe6QL@o(%IS*O2#uRA!@+WE}Cf8WWh3t>arL7PB*pwEJs5OvTrhzI(85cmEK z(BDDtf|?L;2DAmV6ZClylNm#T+1(C~#xtjhxgbp^q0+>%ktUuxO-uu6ViM8Bw3Q~7 zElsRsTz+iK4VrlJ(!}hdi5bU-2^!0uCf)-Qi*-m7OH+EWglS@iNiS{?O$lDEPI-GIY_S$ z%f|?EjX8@MUYqwB5mq(kD4X)w1422RR?>-x!9_9LwV=7TiL$gL=VSYm>944tY4WSd zKWtUJNd)D+WD|OY-vB8MuNOQ)tWur7;JLa}%SkO~Z|VKyYK!w|g9{8f(|`Dv?4c1i znCpm@?;N~{@KyXmoASAo9b<+06CtAlm*p^I?{xz^D$m3A-Aj%O0ju*~C?*v;_-_s< zn290@tysCuwAA#ARPyhe` diff --git a/42sh/obj/job_is_completed.o b/42sh/obj/job_is_completed.o deleted file mode 100644 index 39262e610bffc2eb565821750a922c756aebadf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5304 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 diff --git a/42sh/obj/job_notify_change.o b/42sh/obj/job_notify_change.o deleted file mode 100644 index 016ee8a829ecbb17af582d78318d13d96eb7fd1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4480 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 Hl11@fC#|vd diff --git a/42sh/obj/job_remove.o b/42sh/obj/job_remove.o deleted file mode 100644 index 6c8354b477bee827fe02fc14642919400a58a155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4532 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 diff --git a/42sh/obj/job_update_status.o b/42sh/obj/job_update_status.o deleted file mode 100644 index 3d4cf87007b847a71ec1d304a89063aa61edad9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2748 zcma)6-D@0G6hAYYnQXGj?k3TyRKkLdHehyR8Z_9biMFzZ6hrMt5X*HkJ83rE?5;Dj zZ7Qt+F08EvmUy-UAA4U=nkRogg86XTg`cv`-$L zI=O9!nxz!RW9W1{5yu8&kwr*C6rAbWIpO(k;1c4q=;Vn_Tvnsxi6yBPO z?;z@@TC`()u2nwgc+GhCBl%wDW;W7}c=MJWgcyx4#0z0}$Fr){k|WC2Jcrkm@0tP{ zRWV)JH9m<~nVt(89F4DEWphB`-P$8w5MR}@qj<+7c)#rt&%adNG2eF;-j^yqEv}Sp z5$T7_7mqH0jK=q9@TiEwe81Wi&#ufPPhZr^7mMYB5EDnXk0u&Zcp2sV1$gYrM*YK%6ggL&9=u*YQ+-`EGvce)@+^Q2u&t<9j~s z58k(YbbaN@`buphu$I;-^~vqU2b+K0)>2pbce}SA!_NEe-C?w)AJb>=jPtX~OiY|U zp1I(-Ua?ZnjARG1gPDVN34g)B$RLdD@KE--e)3#9H&>Y+uq$QXt&~_7wQ9lg9sIkN zU-Pmy466lSw zkB;@or6|q{ST-dd+{q4l79OVh7FyD^-M-MFoi1TYOKDn6zj66}*1Kjf!dh5nt9u?J zwOqwuv=|Ez*V*nhmLNU`$MObm_yVls==_`Gc@89Gq!N&{GxJvuLAg%i=(gIe2L}Lr!OB`EG9M=!Seb@N);L zje8VOETtLo_W0X|X-*lv=1ay?=BUv=YP3xm`l``p#=kXMF{7J@4ec%6L^f|=AGQzl zLE^xH$CUkow9TB7Pb=B0Bm}QFzgChvmx3cCR_jdakJw1Tt=Nv|iFwOCuf7)&O?4n~ L(JK1VBOqm%eI%K5Gqdi@ zCTYWJ?L)Fn1L=?YM??hC3L*g&Z2#03lnSE%6saJ#LJJjIC|YYZerM*+W_N0vTyo~z z^ZNFj`#3ZC?#}Q3)-ope7#^S+(B~2!VGu?uC_(al#`k{5@C)~GWneO*CLX6KR%XKD z0+^!gjt}f!klooCN&n3{=4-` z!G%Kk%u{d57)70yQqadWJ*_Bx+bbjbIbN76W5A;=I)n4a_uPY*8CC}K*j*>U+YfRa zuZQFHb386Gh{NujxO<+nnrz#A+iJ8ZbKz()v%}Za- zG21j979uP7vgvEWY@MLJ~7js1*^gxBiz;SSin6$kCB)u z+&D+&m*Q9L00c+jTZ-SRiXWkP`}I@Ks}#R7UA#42xM4fC|Issb6ZuW;yxe$P2B4c_ z`+U#TU#@{Fa}89?=`Rl7oJYus_~kP~<8j)?Yt#Xe#Rp(jDSQmY*>z+rr{FE&l3PL+ zZr&2!r}%JHd@26pwN9)8U%l!0-NezaWBb3F)bz39)X3CJeJ9unxTg~Be6&5RKv(Of5k$j;h|C&&< zupGxpj6k_u=&ARGo(gUYKH9LO}j8Pfg@(nZz3LltphTq4`xu z%Dq9-aF$srRGut<}@7HX(uZN>fVGa zvy%ajkOM|#EXm$j`zlx9FXmGN2O_$UG^qOsXlXtsLGN@=%8S;CY_Y>r!GhS<(MV)|dy)dlXTHe-F6V3f%(Gjy5t(i(j5& z6P&9BJ#8GTD<5HBqaca(feq41aea&A_jgIHA4>9|w6;s~ACY|iAxR8GrGOYA;}uEt zcT4NYb3HukyKr{0q%MO<{E+@gUmU16B{^V}1Z+E!7iOY51s7k(p!ceLF132CV@kgMSF7E^74*-)RRY|A)DqP9E@OI{5TEPdavgl=DY8 zr?(H{@RJUwrb9A_HPVBR7 zCcE1zgO-w0tzktsthAPAB&T!u2hAE}_IrsMw~e8h3Vr%zGgf9nV_HTo2bui`^dV5? diff --git a/42sh/obj/launch_process.o b/42sh/obj/launch_process.o deleted file mode 100644 index f3ac076e327760a0e6d2a4df4d5f7c41a92e583a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6352 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 diff --git a/42sh/obj/lexer_backslash.o b/42sh/obj/lexer_backslash.o deleted file mode 100644 index 59eca88c8a916595c5cd3d44e1c8e72d5bbb387a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3564 zcma)8YiJZ#6uvXFv+wN2#HO*n7JSqevm0X?f?9QBRyVrQG@ED;%P`rUB&+Le*qMz{ zR4f)T#DZd5`lC=R^oP(F^g%0au~evFv4vLprxXjdNJ(33DWnx@zcX_uk2M-Ed(L;y znRCB;?!9N`?$`hR_Me9_L1Iu47i3U|ia^ljLB`2>pLPL*shy@VXpT*8k}x^Z6vfnr zO}lT~U5TEqN!#h|;T__mX;T%9iR5#!V+2l9l&scU>Q@Z2Xt@-nbyvJ|v-6laJO^n} zXk$D-+p@Gp>(~xozL2q8<$TvTj}x!)bvrh2Mn1K-x2O%#`lsjT@V&+f9+oes_Z4VJ zIiJaAKhN`Yd2Ql7*gt-JGv-%R^?uE`mv3R&nZM=ZiB7_deEZdmm122*4xh7)v-7Eg zgLzHS)%}#-J?mY>^IOOBd3)CUY`#M8Uh9C%^V`k&mU6ydACk|?Z&1yY^BpbY3;8EE zj`zy;&(6<0I5^{aU*~+U@(pZwNItxD7G-&U>)m!1&U&u~X3H;A*pGFZN=ZME)3b__ zYMnY_fb&JTa~yp1O*xGE<0+S|R~u0Jia1?+fTB$Q9-QQS8#!NX(B|VN1O0&0C!BbH zbGpS?zTV56?=~OQ13qfc-zPuXmr4o<*c(mB*FsJqp4RmVu$~@6Iv`UUt(Rolf~N*N zpx>Pwxsg0R7D3$c!AP_ z7vb%H(AtlPlwm|D!K#cZsjSlFv&Oe5CVU<@!# z!6?I2O^vlCHpjbDUBFaZJ4+`z*sdL&t!#UDdrP8|ZRt$JyI3lbPTSr1_EyUxe5QLx zSAw@pKsAbCuJ73WIBPHF)_3K(TLWDY9S#-l>2Gk-m3;Q%3{5BdK>FpvXfyH1c z8l6>5)tZY5bA)A~YFP?Zy61=H2vsN!(IrTsKwwQ^Exjl!m=s!oigHB}S|x1sOCfsl zc(AQ{0}54^naEvj)r`3tr$EOUVxURv(Rqo z6=;ui4%#c7hxSSDK>MW+p##!I=%927y281tCTA0NeuW2OShxldWbw@Kb<6$%8rEPF zkU#{jibRp2k+QbbF0#U(6o2i7vO z9ub##1FO($A*)7QQptk8dh}_3au?z>qluoi%odu_cMj%mdRXOA0kRk8k&Y+PwZ1Nds12*x zKKm1Qy6?T^bbhpNE)O*8@PKsQJc^2vqUe};6jcVfC|5os z9XGkC0(evwCb^;z7X*zeja*cAJnBK`=fTd?URz@)6o0FUXIgVkRXEhigyBk|GU)N1 z<`XSIWY0gub@whG&saQEc|zP&Vb>sIzavIu=b#1QPN)J}pgAByPS4~^S^UeHxMNs8 z*V|{tCLY8}M$xfixz){0Y?{Y7XvC}!uEFekAUZ(AWmf_&DwG|r1UyA;+5^zX?(r`^ z3>i7OMCO~gs->_X2mOD`0ryt9dY$ZDCyVZFatKz~U6N~n;#R=-@&a@tTV+2SZ;EcL zkFidBfptwl5Z1kD+wM~wmvdai5kPsn-{pwDRg&bVRs|uS(-xyM)n;_pYQ-tHpwh>$ SC%WeB3rfNNN=>KoVgCbU?FkM5 diff --git a/42sh/obj/lexer_default.o b/42sh/obj/lexer_default.o deleted file mode 100644 index bb8f644d356942b0a630396872d334f5c35fc336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4020 zcmb7HTWlQF89p=P*^6hryRm}_B%!M&&>&&2Nz&8>H_ayAur?cTeF;%YHCgYD?WLPp zcV{*YG|&_Ssxc2l6hxnpcxfLBeMuimMMNoTdQ)4eNadlGiW(#bQ4v*D8!m17eP_rH6Vqy7K?{Fn31f95}z+24KmxBoHy7~U>OkF4WNrOenQ(C4;)W(3|goI zQ;An7hwsac z?+@J~#CbyDy%g&jTYP=uA|u6A|K-rl%XuG2*YyFT{I6 z!CWg|)t#wxNITx=SU|Mb)qKyY{NBU+Q{}s2evOhl>v)&reb83(#m)e~go|_YGYaqlg6RNW+ z+VINtqnM{}H{GvS-HL4&hgU;|IHK?}%6I{IT#^YK04n7+JZH|HX`s5n0NY-B9-LHo zdlX)}E5K8#!1U+BK4rMyYE@Svw$Jx9g;!C@i~)~r{U_wd_mXCS6%>xiZvbsVJWEl7 zEYJ-a1GP3jf~1yctLv)$slwtrg@yM93X2b4C@eOY3ri0#FLTsl{@lVvk$Q|tz<8ms z)LdSgI;VUepZ|@t=a*AwVhbPaPCb4j^jDZ^7`zhsVr%4(isbQlS>*AR$U!+;CcuSq zHh+$jJI|MjJ_~&w6tKcl9@zm+6c+Pu0Tjf%1|){m&ql?b@OcN83kyHhFqOjMZx{1# zhG{P4KQ1i1G4Pe2<#-Ncip7HmGRK^TSFO95!Ty2%fy}mY4To3X-~g2Vo!k3wzg2jR za<=9icNzi59WhgC*8Kjm$WD0}oGmq~rA8$?)~G+=lzlI|bGtVu92;XizvMe&IKMwP zRh)z@jvNpZ`7v?dz2n2;o~Z+S^W);K@qBJl6!Q}kK{t2Lu+%8OGpO5MX?xX&96@ILT;!z& zcAqptuhrezOw;wMv#wLg5YXi%%R8|=S8AZcIRQVMo?ri}(yPWG5aG9B5NT&MAR)jKpJX<2tzcVZJ5+k}zagiY1akI-&yPp6Tj=QD|s zo-bm_n5NK`X{1Mp$j&utbSp;hwk!a}Qi1{TUWfofh|ZptCs|#H9qA$XAoeB?7$MFu zA9h5HJ5MCUZ4_v$p9Es%qd=dAqeHvRILZj438op}0N0Ig(qKFW-eD|(o5m^di18eF z)ZlF$Grk8NH(mnoG){wC#u@O0@j7_d>aGtzL9~Ovfj%5V=-dK4zs@tETYBxVaTDY z-4**9MEnHUIQ9LV4BMdXwx%I}NYfrZoB^DamgB>}g`S-MUOqhj3e;ITyQ40I8N+EX zkt?7pPfkjnGi-q^_)|>3ehgAIj@D z>Mu9y11G<2r4z?amov|vc;@fF-+1E=ck`>6m7ZQ!7#ZR!}%EX${#42ICvAqqViEB$mai7q{;&XmzTxm3M?rNZ1 z7Erlp)j+OQMzQ2uL1?TqO)R}KaT+u+8D-*vq>0N`Vaas@6PK1Uagj2L??4UwU*(OW zbYZzLimjW&0}$B>Sy*xHp>d%dPiyH!H1@Q5$|eLIxfs+`jmMryrk~LFb%lQ~jv!VS zFA!S$DA@(B@kt=9>XvKG3cl`EZYfc#PS5z+6-Tz|H9{?0-7&aJtg(0xdRci&d-(p~ zE!RIs;5F9@t~xA8Tr2QlRR-bccc35KB2c(YJ9H7}(v{6fY38Ro|7oToqh{A3Gcsdd zADJ~bL;LioX$_giAu}3TFe5NPiwwd2l5|_6^d;c4;7bqDz1DXi)7%7^88vSnH9Ln){RgHN`GOwD8`b4I7JYw4 z?wD8KcOhZwdmIu|>ie>iw<~!aB;G~ecOVfLc}mG!l)Onv2C|d&ak`UZpx)#nq0!yp?&~+p~_mv=JLz;epG>C%xlV#D4)_ Cf@tdi diff --git a/42sh/obj/lexer_delim.o b/42sh/obj/lexer_delim.o deleted file mode 100644 index 7e5d553f574a48ffcc98ff87ee8f7ace0d418218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3624 zcmb7GeQZ-z6u%MS&3`hyzhPC5ETx8%nR_LI>TsJ_2d34>|R_NN<_cnn5 zAsaC?BLWfq%Mbj6M5BKgqlqMHNHCEE6NzFZMhzxvM%0KJ;}qijo%im8u8a?Fdd|7$ z+;e~T+P18($ zk7@U9y*;wM{g&?Zp5-0Fqh*hjGDfjMIYh!~n%1Rv4)kb-nX^oq*1Rp;w$2%54$f1w zDYV&&Eep6<&_{eWUOJn!%*A-)9LJe+jPKjgAt%L4bav+SLE8Vs_#C`fIKchlr83=F zno^ASGGG059%s;F1E0eA@#~v3zFZ>HqZ_y5tuMOsFTFg_TVhhYzC_Xru{b^l&pF0> z<0bn0)4G;P^ig=X?KjHfYvA!*zGr+kUbb_Wb-~5)9p-rRINp?!TN~xQqWu=c*Ploh zb>@x%=TfQrZ$jyI+f|t zv{-ZDjN=?Hz>NW){oS5L{_&8D&QI^vx^uW)dxEA-tOsv#yhe`K$nm(!5N@y2CwcSx zO=T>^;{9IZcy1odA>dIve~0+!T*}EowGWztp9Z?<)FVG*i)a|s3My>01kr>I7dqUf z-x1CK5FP$G5X~RB7R?WgMn?v&MMqZBFF$Z4IuaQz`>=kL0EWj{+2IOw$QT_yD@5~= z(W_sLkB`G}B|2P>;W-#y`WbX!F!+=MZZw+z*aFB$Zd|S84phoaMaePnt$(#WJIp=^ADjX2R52b7Wn(Bi0TXYuUu&kyf^COItJB z+_9-C(#F=eMZ)bY7Kz90Zg_LErICEBV@rF4HQS;oymn(e7LG^R)^Hn(w?@{sgk#K# z%Z`YpGA2u;4U?H#It5|aBALyYI)=E^jMP4z5z|acu0#%5ZyBMdvzea2K*mV*Wc028 z0cPlNqqiv8o5(RUyIaoy-HH9ZK|N};ht^3%vdUrW`aNNHJSA~&^EF{Z4Tpt|Q__8L_M zkf)51gSQ&OhG49us$eCx6uvE01WvWfXFcSnDITN@=2L<*A6r5Kt*{t4Z?Cu$11@2S zw3|F6D&vB*7hIGMkU<&(cS(70Svm%;NGHMF(o5hT=`^@kdIP*fdK+Ao-Us(dXTeLI zM~&Tl>4mN5F(8%+UqA@5c%uKZrGE_$tv5)qm#qg^#1lIoCaoe4&fJ&C!{zx7!t*1T z_cyR_K+^P*?;)m1mFiEB^WZH_5$7`X4`}mAdqAA)Q5U1vL|U~tx19OBb?8$8kY{^W zK~TwY?Ql<}uE#^zo*4C)fhmG#JA^k0wi+a?D~Ui%6V|AkAYUL;Bdyqj9>p$%X~i^p z);61HMenOn+i0-T{Wyf|K~ac@qv%?7h$Js}T(^timhSjDx<5KM@)-e9E1XMu@m!Rc z@&DsP^NFSq7@GZGQ-PFmjjCm%^$C}g z-!ImjkwX_g*#FS=8Ot-X>JA-I$Ih=fSneBqr>geSvSi@-{qJGU1<7{21lN zJbRvXdFax8b1zCt@}g_zUX&SRqFDKgblqg44B%cnp^_;Ga)Hn&)5t_=$Gz@$e{P&S zowYTWGyY8z%7o_Jsj#n&346+ga-Z9CoG&vIo^^i{()hSj6Ij?^{*1V`)XqTU0(?bA zAG{!3_m_eTv<65>Ws>QEF8mw1`LeKdsEqtZtB{A$h8DN}dH9Y1?H%SuJ|8X?75} zSfI9t%LR~#wf3Yfm7`p8yE2>W5ag%4$)z8%3J?AJG Kv0gBG3I79mWE=JX diff --git a/42sh/obj/lexer_dquote.o b/42sh/obj/lexer_dquote.o deleted file mode 100644 index e0890780374b0fa44e3022b91042d05b02a9bb0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3744 zcmb7HYm5_B6uvXlnYP<*yX+!wNaZCev;|hO%JS&4h3?XYbssje1ckVMXXeh*mZvv8=iGDd zx!*nap8J@d`{(MvZpH+Ofq`70UKuO|LKzRbLB@NOtjBIRNPSQo9hi(LNJbP@HMMP~ zUAOg)__~hUx>GyHD}+bG-l}AbVuP}Wgi}Qd zDz+@*Vo@FO*?8Gp+A^2pHI#TWc7Y~WT1q?|yi`|LUhAXzm&WJd9pxAgi~%z!yT+GK>6%xJRCX;vOK=`_<3;VyU>3-vAkB6-*j#Z=4q-0{l$#lt*Xh! z;vVNYUWgkv0FTaXE%qM|xeQP1Q8(t1UAu#-mfi=~INnl@w}<0#mH8O!aq1+U^Onu% z7Gn8)qx`(q^I%T$`PSbfK3bP50`}PpO~H=?HNv0fWkSxTW>71rxX=(pB@-@oxKF(^ zG4OMu|MzHOVAr+8Kw&5`Sh$uLTtL5p!ewZe6KAkA0z-8u(SKUtPD8;HO8XIPwD-v#JmKm8dwpLJ8N-3(tL=8ToW1t8LTrHdnj17ILN*PP0g-fxeMcK9kCKM_Ti_&05+t zBDM339;T`2VwfpYV~z3UvCd=%WU{G+wZ~i8+SP51Y*lAVL%fZxXp6@>STf$;ZdYTg z8ZC|Fvz@Cu;;hjY4Y6e_+mo^O1X~kpW9_Z+WlgapvjXEGv5aoARMs$=sb(_}hAq-L z-PF*;rD|k$XpER@(*8{4ad0dn^lVPw6e{ROW|OXUhX_!o_mQ5nbWbYJ%-jo_4t!f0 zT+&e{BMA$^V${1kWu~mLm@rD15vY-+K$S8vFiNP#P83~&6!7_;@h!x5m1Z$1FbU79 zD-73aVQGaFpq9t{O*Kn!DrA|7+|*RVm{MD!x~HS}VxJE{o**L!?-&Rhg0YI4qLF-+ z@NKFg@H(6#zx6HfHpPQog#L6!nBO`^RErbi#d*HP6bvq5wv?p?i9R3%X$QC{?IwfN z5AKrogUixEa78){?v{>#d!%>3z0xu83h6^|pL87DFP#Ffw7xG;VIv<4!kVw3i9z8z z2tgJP_5NV#m%yR*L@D;*3UEa{wBc#eMzw=8_eJt>d9FZsegX6T3HB368ec*BIH}rq z6>>VfrP1Ov=DQAU25FCo(>%T>QEMP=j5w`|`MuUi(B&!Kg%DnlYrT6sgxljGY)_Kv zwP1?iSqI@wgDn9G%PT0tal&HXYREUpw3J57phhi1j7HQ^v!>ZVBYNM0+Ch!g?&lz6 z5AKQfSOQh+DkF)#VHMkkO9-WJ!;$c8NLn|t4}z!^_a(i&FRqE<|KmgbiAEC`3SGeh zQy^uekuG6-e8Q#OMUq}%ijwMd`;(+X7rJ>MGx_7oGynJ|J$mA6f1RKBsT?_beCJa) zC(PF;NB6wyyYXf1?ka!ZM>TW4otF+B-uVgooCW;|qUCpCvSUF{fEIyTL6m?#&;W>1 z55Xw+V?ZdBLo!inxrtiIM2I*^R7CDYTZ4O9NktQ7nVV=M;Kyih@E6=l9!!*P?sX9= zc~P3Vmz9606e}N*(oJ5p1GrZTDw)C{T16DvX=I{p$Gz^CKQ~sM*4pYzj2~!%C@D@t zg&l27*j6P}`Q4s_e2hu(ymo_NhKHRCfyDwn4g9a6hbi1cz{O7iUMFlf zJOyaNp0vGD$Exw09twTBxkTn2`5ushg6yxjF8h>bxu#zB)XSo>QVu|qm4fX4Ojc0! z)yqn~JXYzKCqsJ_hGtpXE4yL1-CU*g$m7v0HOu3aL-G_60x;M*W^9V`> zw7s&REE2s~sSgkrVw$su%e9c0-<;QNsT|;PCYMvVgdjiVeJ=4S#DXw5g{nm=qdXSt cOx?&IHhLiG0oU@*(`r9-Dn8aVy&L`h14dOuSpWb4 diff --git a/42sh/obj/lexer_great.o b/42sh/obj/lexer_great.o deleted file mode 100644 index d0803dfe150ad1d3c3a4a13b065ba932870b4139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3892 zcmb7HeQX<55`VkvUE5j5cAH-42Oy)Sr3GS#Qc6WbsoS{S1P4N#l-`Nc)^WCp!CeRM zy0jHV2m`7WBwD@%5(t4*1Og;JrJi(m0(!buLgG$$Meqlpo(@nEAijhMAENx`?b~3x zg_ftx%$s>Lzc>5leK`O6{TA1^;PRjlkn}^@PPl>lZU*IXW z=I7&y^w{a~@>5eK%e3>`DZP`v_mIf1S0t1>ZGIkJdF%#W;MV+32)r(Vch4E(@%*Op zg;u=9;yn0xFP$NtyKCx{-@8fRJt7wH?K8x~q2rLP`Tbv<2R}b2(ok8i+fv^`c{{$- zHLLc`MSI*dvwe*bAv)}63C30U_Qnv$OnIw;Q53?%J6 z@7Bidr1Bz|utKN8y7)hs9cWh?wZriy(4(`UNd%G~N1-J|7a`23z3PWZM*T2S@k6FF zKN_`v^!)iynvQ=Wo83H^*kM(iV%bitPWB{w63YrD+*#eLd!Qs&u1H?IoH><3s$}i7 zDjqi{DpuZ27FcT3L1-#pDdsEVsi8{w2CLvYsg*07NoJXdaNN9WvA)d4^k{YjGTT4M za+x7^-8I8~?CR0M^_gL|X*iP}VcASB=XKLp_i>HnwWHUJWLTdk)~7dImCL4c2HTt- zX1SrvhW>Px@w~i@SkZP_zT~*fHA_VZ#}kFJ?OGTT(sYWuEk?|AX?wNPT1CXf&guLSLqonOy(=hE#GL_!1tshBwYbyB*76lqv-Lxo9A;eX^ylc+Mz1Z zxV9)dN1BTrEC(bds_U2QYp~6gWlV{l-HzuZ3D>#Ox;75Z&jiq$k6=KKNpC?&s=R;d9j?C%4s9|?xyLqvYx4fBmytFn zN3p@9mwhtiYD|7WvAiLnL%##;0{cC7TNc)4lIHWH}Z#`+9 z^5Qs)gnQ7ZyGK1Yyapl&3S1vNi@Ko@VTZERUje2`p)C;M0@xKGX=7UkV!pIiAB236 zOzUXI3G^s;DNQq$(Bq%Eo@NX`4t1CY=LY`>q2j7Aa%lryeg%>gH?7dUcjwy|_8p@7 z(Yle(G>BSbEa|PWC(wS655*JBBQP|&k|q40RG5k~>fA>26E5v8k^xA{lKS*&kfcTr zfqQrHoL7!5{rta$d5iA*>fek0qNd*X+bx&=u<#Q5oSxhE>N7`H-WreWc)6qd=!!z( zfm;qD<_*yMAX@$aCZlRx0HQ@70#N~Wfa)MBJp`k@&Sc<55Sg%@o~@}e>eFWMPoqFlv{RBkfS4iH{jp^}NN z{QwA!b{d&z+X=7Vs$UQ*PixI%iHRdd5KYZ5sI+^SNju|GJQ57;6LXvm&x11rbK-=5 zL|Hl-zf0cG?rlHDu7|J8=(J1H57BmTiRJ)FMY~X{j^kI@?6bm3#j$N}YIY!1bt=A= zDqgaB6>G9MyPOoiYjN%H>pwY3zzr_}-X`oeyaX7*mh_y_$D)ag9*T;50x}DGw;mKF zCaICOZ&Y0yP&<0nP_G)(u2MUp$pdOgtEn2ga|TqcS5>roF*u;cwW@j+q%xo`)b^_h zbh`#r9foJscI^%h)d>SdOr9L^oVoxJ=k==R52zQ4IPD4Uw-CrD52}*3Rt{q|zw;Ke z`=3HSN%=F@eG?=;sQXVszd*?QA+bi<-9j!E@?0Sy`1rFzQn6yhM8nT98lP>;Tl7UO gI-}>`s)&c#+$LU3dU?G!)5QM^mOb9&mxqq_GfL20v;Y7A diff --git a/42sh/obj/lexer_greatand.o b/42sh/obj/lexer_greatand.o deleted file mode 100644 index abad67abfdf1c9f77c6dd8f28906cff1678e1d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3808 zcmb7GYit`u5T3j9o$Z`syGiN0$f#*4kHl#SD59aQ+qiX7w}d=Oe}E3hz9ug2Ir5!L zfdUnw2rKc% z-0ZirJF~lf|BoO44iZTUfq?>`2^A~>LR$(t#m2L=yF%WFV>|}U*MUh)F*c$ZhGQOd zyuPOor}qq>*8Se6qQiJRZ9GckLI>!u@59nC3g&2a%&?t`Yc`DD>r;c<=3IQ7TX<1u zrsm0cT%OmT!z-2ZuDKB}Tjx!5k{4Is>OB1Ta-*Xa^8m+NAD@r+gupmoyrQ+Y%tIRS zz8A9}7wf%U;zDHi4HrPdqoiiCn%B@3#iLBj<_d z+&Xc_^)40X>v6Gx$IlZFht7p;jPHav5B_@75wY;oq9MQe@_ww-F{;)rMXO*K+1}Hx zMAHHQ98+fM<>ydn?GUH^49&?gMeYHVeFC0#B%<6OH?Qmi~Dw6)hLB zalM-b-X;;u2V%W9oh3frmpB9K-bQoqOF-k|JUs*1&7VO7p!tobVB+=v-!_t|eVv*7 zp)*svi=TUr9B=+4Am**L=!OrE0HJxSMi2Yk}_(CL22 zOaWzT=S*huH7Qejua-VJ^Vsa{Y%TrQw}$J^uA#}_+ha#~F>tRNzV0IrU{hxDt#}>I zXD&SBEXKHRLF7AEXZ&wd>Ay0QZ*<=HdWw&7BAea4GjYJI*u}Dy=g?h>*q`DDpFXjVLKj8)8>ld}pPc}kAh7@f>jin&T5IZ!F@GxLs}>{@S+ zlWAa(?c^MjdehrdBiUidY~M~AN)OQW*ADj5u92Nv(u1^pFr6BvY!x<~x*E&t zMy?%BQ?Dnsq_*xD%BF@gv^zCOLj&opeW@(Dq0I$FMa!XF$#%#wN<|3U6Zx{`nD`{5 zVHa;RiJ9SWrRFL)Laq^dscelUs+L_Gv&=$*0WE$h`C-eC=PKlsZ#FI9d(sw?4>cQE zxCk!e(FJUmI~Pd{q}9<@Rf)#6<=Kuhuu9aFw;BL{~K9f#`s1i?q2( ziSn0=BYmx#a6VL(WMS%SCDOX;)L#j(e>gKP5rH(kTpf+1c-@N@PEgua9beFGN$1?(%3vb5mY@NlhHx(or84Nc zml{iPcM9FR`QK?@yMgn^`^G*~Aa3)=vfelr*U{|%@!|1I3mFWJFIkB+NEK;BF}gYt z<8pPe4Jba&i z>g}#OfR2(LU;Hg$k_7ty+f7nhyz`mg*2vGcsw-rzYd4jNt>N0Io zO`zM>uj(*7t46eY+|ltKRqv_yd_r9c&x?B0i~H5feE&t-H|h$QoBCCGk1A=`$YE?2 zy@_BDRr_%vYaAT(ej(REV$JOjc~Uzn~)NyT_}zf@r0u9K8O6QdOZVw?@g;f{5Qa?oPMDH0Td)lBme*a diff --git a/42sh/obj/lexer_less.o b/42sh/obj/lexer_less.o deleted file mode 100644 index a4204ee6f4ce2ede6ab0ddc4e3b217c91f277d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3888 zcmb7H4QyLi6~52U@7azW+ikk^ZyTQ4wPiGM)^$}xLsvI(_ma9>mY=rbM-Rt&ZCqSC z^Ly^HsY63%s8$AA8AF?xgh2fNNK^u;2mzZw1ZfhWu^}WT)FFX73B*7`%GhZ6zWeUW z9Jiz8D(9Sg&OPV5=iYPgyUwrw{kO{zAv9fpfx@7911tkV+Xz~w@m<)J zOtCY+08gbSu8&uopRYJ}wRno@UA5j9RDMG$p$D#;pO06YIVlU=ncsgD-d2V8=^Mn8 z`OOzgop`sY`w-xrzd=0j;rVN>H?Q!XQycio4dUU_NyyIpUQ_oW$nU{KTV?%jM}14R zQ&^{GH>wYntFyLU7-^4)^0K34Bp2ct;PFU)1Lser+=1uJ*~jast{-6AtG@?36yAP? zcR}GPRm6pu3;LA7eXEqK60vi=a|+K^$tD!y)?J-Z@=F3L*Z*_ z%{PZqkF&hiqQnaOQ(@{htUF%X7I=Co6H%e87|uz#R`AhV-X!8faKZ~#jG?p^(NzE`;Q zQnunOICY=f6~}e^OCme%A~IX7my7k;?0CI)(kXdvcK0rKPB?H{aJ{1Eh>`rk+;m|I zvM_pBOyECFC!NuQDH;AH?$* ziG->eF=?mZ?{R|EIC&0t{S#U%D47jO31s>6#1CQ!o z0gvh50`Jn#gU9tBfhY8zf_De6DO_YGfIhN>flx|&1wu1I=jMMW^;f~6&Fy6Fse8fA z(7BJ^O>NC2Vq1*ZoDR2ByD79K z8sCoI0cyRWEoqU64WNG+9>%S)z33XC@P{KeK}4cahDHnQ)6LYP#~@-QF#2i-yM`e) zX#3)aAU{vje$MEi$K16XXFQ3XT;>7J82b{`aSpDH9EC8VxZ#sI3tjmEq*UKorTeeW z7oI-f&H8cQ=(7l7YmcSg8G8lo|M6iwX&u4P_(9h2b5a)u%E(W*KRMaA0osBR5a`(s6iPPWj z>3exsDf9H13y66U^hXf4Ka9n$2i*bs0Ek=10-Of5KrB6k;92Mep|OTEv1ZD|lR*;^ zag*3sbeecHl$R_jOsujp@gUHPLt7!yWbq(bZ{@{9NiUXJdGTb>#9Y;kEH_O&0m_S) zjwXKexr=DbnkF7Q<@LYn7s1YRuVt*y)FmUxsuq+~dt^dr3u!H#h(w=Mv)l~N3(Ew$ zawWK=B9}~mDm2{fA3z~K1mBS0eb=e^cC+$p>k9w--#gO*n3N3NU~(>HDIOT~l9rDEz?}4v82K zrfhmjGZJ0@GUDc#(KBR3hm4eY$moR@8Z)A1(=gFpGiI1WhHicqgJVY8Y#8ey^)X|k zdCqtbx?9GKI1Jx0y3J2Ys9qQtG1nQf$^0&&#*EvBjO}B_`&69yW$CvG$X5>v^?gw3cPRNeNcfviD7j6^Ta|>6iz9L1Y8eS%j nue2Q<`lb$D@cnn{{>yA1S5GFNUjNaw@$Z6Doo#n3LKXi7B{Ew# diff --git a/42sh/obj/lexer_lessand.o b/42sh/obj/lexer_lessand.o deleted file mode 100644 index 07ab404a32399640be1f4a1fe18d8617de107533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3800 zcmb7GU5p!76}~g$8QVKv+u05IZ!m1y2I#JxG(@X*o5smH^=_SXyFY0jsHR?fvg_6v zuRP-=DJ@iNK()3H4gGlmsqlcRO27+6f(I(mAGM+qMYKo}s!;kswUK}p5MrSf%lFOP z*{t1^rdK}ayXVZg-#z!=Z~W&k|BVWvXaWinfh_1y83@XD$SR#5Qx;>vhsW6lCA7gQ zC@DHoEX%XcdOEY&97N@=4|()eBbF>^UwEm4i?r``OcIpeu~}s zg?utS@yUGUg@w9pIps4FLRGx=$yhjsq;8&n)eJhPK7^i2o zoUhiLs%4c%uY?M5QSxP^a~^!WQzo$gWXfH9_PlkviPa4nSXSqKuqycuOTI@XpEQLj z#C%vMhUcwbb9~0`@ea%LdPpYonjG(`kI9eok|wbkOf-|<2Dwk3r|$!Y`57_+*;v>G zh2#IUWv1BvQ*r6fxnld__lxb;N^!aMesTFAf9=*KSeJ^g8cYn;mDCG|R@lMPsz{yB z`p$RTKP!aJJp z`&~eAdvWR2bO+BxpPoEh(e5%tgu$(q@Y{0X!{XA*xqDyA^C)LZrIW`qi+0nkHJr@w zP;Mxf*;}dO{uvz3!5BKQe`wzqgxjoS>-Jf@8EC6+yKdR34pl^U#zo_7xmhbWtJ#TW z<9@s1x!D8z-Faan?yT#TJzI^#7w4pr>9o6{0#h65%#8>{53wP zDTNM2S1&BQ?c3C_=JzxA)E&@FR~D54h`5sAG6h`kFH{~Hu7ZF>)o#Wt(b{HpK$!o6bv>=mr~@%`5Va$;wx|PXk%;F|k3jU@adu}$R8n`ey+_{$QL2EK_(zvfJI0f@(yAE zf_q^L1chrz7nfGLxHIS?BTfQ02i% zp`1-C=|nX4xa?yWB3D*Pv$iJNV~Z!#-&T+I2HQ`FTM(-Xo_0m~AlVD8un&k*b1L;# z75}Q%pB7QC&7StM>mRZ$w;5X5+ReiUMTf^d=Vtx8))m16Ff>o%j<*2s6ZRY40(`@! z48l>zw8^U;2LHoFR1xRS^oy2K^hD1;b<-Hv`$zQHh^`uU>Pc9AMoZrWG)BIur;T}i z8|vD)zTH^TKa1+XxNgGnBRyf9_gkk&baP~5IM_HZ>PPZ%NEvY&#JlA+FT8fC+hw~$Okp3S@>ITJ5|B=-)^qI%;J9&)k)I; diff --git a/42sh/obj/lexer_number.o b/42sh/obj/lexer_number.o deleted file mode 100644 index fe70e8357abe4b3a986d34b73d8b1bf1d26b8770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4304 zcma)9eQX>@6`$R`y>H)L>?BQ^IGjk*57P5FjuQ+xZZ7d9XXnxw+m}WV*q-m!_NJFT zbGsLkxUQF_vX!S-t2ojv-i9IeE6AB11KNSwEp{3!}}M#9v5*vD&%+*9vqiIx_G5>VOhK&J@AJ1 zzP~|ny369_$Hpr9Ns4!Ad@kN|0%oOnhB;oQDb0945b?b!_FEHqeh2xWyr3-`UnOr& z=+=#R4>r}%L7r3xNbqIxPUH(b#OC;1JP{tdHC}#ds-$aX{se`0!+uL5zFrYb_LlKE zc;&ILUf}H!c$Wm8Q0a`Bbo(S1-(SPzh|T-$6z^+61QUxmvp>E`eDqxSSr`g( zM+$x&=oA9QBUsow-frZzL5sa5AP_3C`4 zzKedf>Xl6GS965-b9%y=b2~lod}R&w>$$o9=tVhGd-FxcT{88Vxmx;9ykARSp8bSH zAEkZ34#4VMJ$G4*UAy`cx2NZ#7yYyU?u$NlJM>qn?p)_Z&+jyP_6kqh?hT#~EPD3v z**t)x<9Q`hr^Pz?fHU*ZTxRwSDO3AxE&cA?{AUXbwe+>C8{vKxC}eiv5F1GkvHK4X_p|$Q zhxVq2*@5A7YLsQuBO^{XbzeW%NPabUcr?xW9kDmH@8C!_HIiXRQp0RyD7|kWm1TT) zVqeTKZI&-tHnX*o0bx0!P&REHLqcknaYkpvG@D+ldL&0VX$eUu5E)5u1kPx7F>mMjT7aO3fymtFBCV3PM%q**67z0| ztdd$$@PKjwJgEEx zJfyr19#-A}Z*lK;#@yAUBfrLg9F_hGA*u4yQ-9|A`{2+fJ1O>P4%{n0{lJ$=_7{+{KKOTtbxLdKL&z?8E34(rEc8!kJ4jn2Z}x|_ zp*KX@T6uGfg#&%)%OG`AU;rWj@*MN6hw%CRgzf(t^}E5ml7Ac`@GY==LDK%<0f=={ zU+6I8_sFz|Ry5F~ok%HK(L|4LdM~XQ_%YN`8f^7_9YXa7Iq`zn{#@f``OO@lvsM8WUq6NrE|&DJa+-D5&u>`sAFW3vDM^=Mkl+38$@9$@*84= zM~%j)>}cErqT`wFBR_~f`5do>1=J~fMNR(Zr&sRy=##g*AGV(~+S?NEcKxBSdV~C< zO1blqCql9C$(IW8^AA1qk4qbF-(j}D{?N`(-@?20xr=SAjvQbrD_phlZ)3JD;Z|#qS)@dur4{ZzIJ9JHU zOcHS8or1d()rdO4*HL)A@88t)~ot^RoQz` z{hYk5O^w3Ta#r<@tG9V4)OKi}A5=rVs&Z8Id1qBG4A8v27=D2dhX!dZj4?us_0sUt zvD+}Vmd`t@#=Mj2I`ox6h*@;)QzwN2UYo~DtULy0X$Haz^1XG1RZX8 z?upBg*h}JV+7~1}eUi42M3ZL6FVW{zvga8JfsADGm`#YXWaXwkaq~VNk|Bq z?|nhYcE~6UZrg@VgUb7jI-Mtt`WKt@{w6)wq%&>Y)(op?Oc?kQKz}N4Pikh_E*cd^ r7qwn-KP_mqIEDZB_Bi+C_dk6{XcIcW)8Xpe@XjZJhJRzaS!C>g?Le)L diff --git a/42sh/obj/lexer_quote.o b/42sh/obj/lexer_quote.o deleted file mode 100644 index 79d4cf775ddaa7d38b8a2d735aa82caf2ce1868c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3632 zcmb7Gdu&rx7(e&k-rIJ!Yxh7H4oGo44YYMkTx1{}D|FDo+yl^PE?sxo3gvdRx04Yt zghj(L5<$?vG)5zT7%?$M6W<|`APFXth>3}4Fi|t3M%0*~5a;i^_grYp)02MB^PS)M z&OP5br=S1x>%VTs1c`xxT%aKtEC@oI4!T6nn>4{=cO0TIXpRj`Mid|?nx>ihF4NX+ zyC=4}=bG(k&vJ$EXxgKdjEUrPv3(?*rfL0pUtvJYn>ov+X>FULU8|jL=HTq4MWNlJ z*s_RQu#WBEWwI&DRgNc>L^F1T7FXIzA{@MAUtdliruCQR=it4>G42#EZEVfbkaE0N z`0TIo^)~W-c@^J}Z{H2`%O#BgJ%2sky0Sh0+FQC%F30TPWAc)|<-iz&cH>U_6mF`ZX=l zRy^Vm#|v_2(8n0vDJM~XJmoSxeNfw)!|vJxG_CYLc$4F;I4-xnu4fg!Nmc$ z(0k)!Kg36WiNweDUW|_wCgS6Ti}CTL^cyQ&fOR4MslxU#26ZAndP?9y6M>JF(M$6K zPt6AS`;=jP90=nv1f4+8sR^2NEOzCm2D=YfF${`Wemk}>F%~;Nv3qiI5^>|PEAi2j zk;gxY(m4z!5*s^$!+I{C&KkkyP$U!yE=Xl?c`R;@zz8)phVEO)^0`zvqwmslHrI9* zvZfwNv2br5L&M2jI+^PacjmI&^pu$oH#O!5nXX|(-b|W0Ym2Rp_9l8D6YU+WJJ!iI zZRl!a>w7y|V_j@bS1j7Y60z=XTaB)7vn-Mi_ipHku{K+@Mpv!tPDH!oY-6;Gb$7;A zwMP@o%FE7(r45rMGkKGlS|$yVw?!&zm^!++)bi=wIwPi;RA9**D&KO#&SZ^&V8O_z z2MoPGNPq@CaP%If29r5vX1D7G@NJprlFlMINmvLLqtX3IGilAmglb`~zgCv~RZ6|T zTBt!Oi7r9%tLlU5GSr*2fJy!tbgzdHS|hBiko?p$-`8II5XxGXnaEx3wTvlEC8m20 zMz2s+0C@t80=!cpYzW3GYKvx4D-qjXOW@5o20rUCKSudbF)dv|_3z2yGav1_|MJ~SjG2*r2h>Zao1U!l4ZmHx_*`Qu_}rd%G3E^DTM&JI z7bc_KxEDkpy%R(mFbo<4(bhvSs)eZ_G}=RQ(bjSoRR*~T5huxNJc>$#M_HSSKH6pO zqN(v?R2y^ban|NRrTyknRFo7&+svb=GRQ@_@)>En$wd{wqqe{#R|w<+p;4ugi^`5i z-D>~b`116vt+8PIJQG4mbM{l%-Nl4mRYH}|?K#A!n1RU1--I$b>D&h_>aTiQTvcgT z9}Y2MMMj5R5H9;G!3CNFB&3a0rqGXnLswrFmPz+*HN#gs!i9X!vBK#k%}ZH{CqI%8 zTURY^9qaZF4H9tCLx86V#fFCfJ*Y@K7&^Wgzvp4d$j2ozuYKvkkOG42tN2S+m9=th zi|lEUMP;4rhb1co+5Lg6Kvi30rA3~mydlqoH5-n#vb0|gD5G$$mBqF4RH!qcR>0aX z3(9iQi{%492f}2FABBXy_^2(FgIvzzau$~m6sH{L5`RrtfPi=-wa8@kWj52c@^^~f WJ9>`w9DgY7XG_C>UESy>xc>kJtsT(- diff --git a/42sh/obj/lexer_sep.o b/42sh/obj/lexer_sep.o deleted file mode 100644 index e081e5b5b6966339baf8a63080c1b7d86ea8572c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4032 zcmb7HeQaA-6~E8V_xU+?Y$xfuly1XX+N_&aJN*C!>UMD&w=b^SWpUC~8t`zOm)OI7 z4t_6bS6UQiHn1|JZUck>4I#uIW1F-;K(vz>>_cO05>#TKA|VunU@00}0U;GuHT=$d z_j!)nvT~(!&OPUz`@84fb3fku)qnnWCBT>@Gcb@JG{?c>Ae0TDOJuxGSqQofr>PH$ zrvsA_MahVw>$Y*+cI&P_kvTH)zV6jdQ4lDEN5iTBpxB@+lJJVIPa9M7v$|#19Fwk( z+@Bub=QT4A=cvHzq+r$-U#sfjRjNhD+>ZCxHQtP!P+NOD^)((IUSVpgW-QSB*T(1J zeMi9DC|=o|sZy7AyoR$#j6E&pyFuh7j`b7iyJmc~f;nqgSL1CL`4r)?mpi;#Q(hDA zXrbtY*dCvUC&Ie{yu#dE#n8>dQ3~&>`R)+$r9?Qdd|-SoUUlk0C&BIURR!KAfwy{t zcustCg5o`+UcI#A?!a9avPpe(r0SOuG>M^*WL%; z5O_lZZ;QYaD#P?kUY(?O-YR9&L2RGzd4czo2&M!)D%y48qjiaqL&)6-6nrmeOq{3F zkOS0AHc)G!A&A70Y;F3$`lQzQvsQm+Kx>@3s5RzSw59orT73_TesM4QYD<}m+7blQ z8kuEipdoc}5X~QMX|De)hJGtrm$+3%cI3hnsfzA(|E&~F&1Yjb6KmuI`GL?(sbp-bGgF@ z;|oU3Dp$?;U}7LK5Z_X);GWz%H~=NFb9-Xjoy@8glNIB*QFFO&8FPsuOHNwom@L%F zh1zs-tX6%{DB4zX=XR^a3?2TKU9b%{lG&G@%uPV%Mh~)lW{ll`@AwEiGqp50=p zP-AxWGlmI#S6V{Sl|x1n4uZp|_jJK7IAbxXOWGXi;c_IVY>aeC-N>iUFUgTm=;NVX zNV&X)$&p)dO#KPCc1uGYa)es$2#@yMgWHO8<`bsT9>$cNYt+Cd^xhK+0SKQE2x;r}uud z=0}Zm_%$^6qS9|5B<_2B?kz|EJvg+|T@-tCKe*z1{L?!~>&nwC0_VuXul^B2{R>#| z?_j?J$s0PBA$sNR(A$uk;4QE7^|8>q&^D8Hldn$=QEiyC^}fCs3kL^KzYGt4TW}Yd zLHIpDKQjb6ci(nrEN&7m|5WUi#&?w~B$uvYGk^{vqrD?IcQpKxh+k;G*R54TRQ6xpcI!(%^IzV%1T{qO#|xNhT< z|2VhtEKk1qlan8L??XGxTL%`u9J=)S&d3B?vg#+qoF~%+M)GiUs>Z*4kuyiE$sBdqlyZspZ zCVYL2PP-(%7wH6-Xbg~4Hj9<{X?*oHpA=RpPtDlLWmZw$VxhQ zt;O8SKT#s!<~x9Q340Ci0PNV1t}E(TGI7mAq3=t-j|JU34~iU>c%b87Tv4)F-l>#$ zSjqBrDIQF5RXM<;&;r>M-=NI$Uex0$-k;^+EcZXmeM+5&9^gUcxBMo!hR_Ua5Y5US zN9zGb3djclY;z^WyOe(djLKb6py9&UFs3OEz4sz_dUxa zSp>A(3y5QYAROI+vb-B(+JJqAcNhrrDK05Pz94eJ82u+=>RaiyMs@2ntpMa#U0r!h z$bKPj6B2^_l^+O6pH)#9yh7C$mG!mhbXl~vGkpe+wPl;eF(ir}SG{bO@h&&B>3BFT H^lbkZ_AP~l diff --git a/42sh/obj/lexer_special.o b/42sh/obj/lexer_special.o deleted file mode 100644 index f7b4e7af55fa9c90961aa30c1fcb3b6793eaf006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3944 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 diff --git a/42sh/obj/lexer_word.o b/42sh/obj/lexer_word.o deleted file mode 100644 index 74ec9aef6efbc1745a7d1bf04ee1590277b1a3a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3936 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 diff --git a/42sh/obj/mark_job_as_running.o b/42sh/obj/mark_job_as_running.o deleted file mode 100644 index 15ff8cf5e649e3e42608b3e60e885834c61a4e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4452 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 HsG|KBX!NTj diff --git a/42sh/obj/parse_great.o b/42sh/obj/parse_great.o deleted file mode 100644 index 3e1581a19491b501db52f9eb7d49b43ad0b5b1cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4640 zcmb7Ie{2-T6`sBG?%nzD`TP?H0=O{*sPLUJkf6p+v5V>9P|2k@vC>rA^WEA$INv$D zd&HrbM75}LaTO)4()^c3s6}e4rc&BOic*kE6G23!Qbn!!FR7ZgR0WkrG_pbz_xomN z@%cgu9r?|h_sx56-tN9PGw0ubbmfzf5L!^61J!`0bad??v^zix1V5vFHR??~OB*y_ zhEGANCx~X6t~Kp?V^2OXFmhl?_D4Gy1RDKu+4ti@LqS+Co_2N^3b@rs4ZbkB-{bVftSl zpYQJn%FXTi%N53oG^zG?h#wH`jEdsAif>DU_Z~5I)A;OkVcc>)?XR=yeVtO@SuWyr zH}yA}&d3m}9P8G&nbUp70ig*m=1hKe0(q1dW4A9 zO8*SL4fF`~xv%{WoZA=EWC&E*xCBXkvdXDjj)zm_zoup{52ea8S5xKErBr$Nz0}o;kap=zVkUO;do3r z6$PH4dEkX&)`AYAkR#{Dh^3AR$>cJ!;}Y4loAylPs6-PvvaM{+#*D`u#S0>nFFKZZ ztY~L3DOt&5nTfP5#vB&MxAC02ujCw(ZP%D_{LWppa z7K}xs^oL7B9d!3LQP_zRu4TPPS5_#9(l=f z((1JnWWm65Q;$mdC+HzfoR`vFa1H63mv2Zlf#*i9Qfeq-4${yuaIMk73XoDSP->zi z^htI##>-&FFVTfgqbq>|9pM?U_CRCgIQSx==0JytJdF`IpFj&#BJ&W|P-+cy#3OI{ z(#k+bo2U&%G4lejnzf-;3|a8OM|3V03L9L>*a+Czf-ZC~x<3HY?+9N6YttJe?}Bq- zec8ggT=?(655h#}!or}n;nL3&=>CIAqbW?=He*{P0_aCn*ue+r!00tf_uv6U=oc8q zD6Z67!1QqFH(;BHv_!kX;>MOp5BN1g33@1DRKV*ql9Y}>8l}_)NrV<5_EWVvJO~yy zHbnM=pI}HEseiziHU&CrA`e6AruAkSO)rKfAfq)p1{OBfNe$`$bF{X7>$|v`F%Erw zk_MU~m8JoNX3>2cU}#VHX|T4?{qh~W#<^Ye!goORP#-_y_aL1>e4&26%NuVb)QBzl zYkeuq%F~9NM*y3LdFRgupMNLL#7-+bK?Sr*Tguh8i)jCk4$sLJP&1vO@wC=(1_p(W z%RA3WP-9dM;G9i*}fLE6|@`l5Qr%{17gkn6m$x70rVHphoA@oz7v!L^@D~% z6QFN_SPf7SERR-jG$uA7X1aoyqJ)^WE5Xs2_k>sqd|))@6d|UXGGu-cV#+B)<_sYw zkfXn_gb+6uWytCv#DY=~E1nR`Soz}aLx|gi zf(9WIVu>k;TM8k*d*zGU3nA_}DhTd!gie4I!~!S8oj@6Kry|5oL98r7EHh>JzcMz2 zY-HBaiQjfem!4xEBlojdJF;JB({U}nA{2fWx?JW?(8!1Mw7973h3JdLzZ3XUoqy*$ z4&8uw6`GoMJywTa<4PcH=>{V5xzRBiWnt53=YT`(SydgUi${XK|KzjN3Vxk3{p#vzIsrP_CWUm zy%E4lOus1g*S(>yCorf7M)a0JeY4T4Zv(InKsceV8I(@iJe9RrnO?(h>r2RbX!c;4 zSs77tkG=}PAVlqlfe2nZo`6-4hwco4<4ts40fz6?`!{evz3=iVfxoWsR}}s;aJ-jJ zW***V=e-_oBo)6~@wJMB(VuZfag0ShJJtBVlnPO7sFJxeSI+adZKWKmlJ``}!mPZf unq#A0?j~lajPX((opS-)6Ym3h`e79>0eG diff --git a/42sh/obj/parse_greatand.o b/42sh/obj/parse_greatand.o deleted file mode 100644 index 317a5abc01cad32c686c75246f63e0a0e74be1de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4532 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�P)9xtosJDxcl}BE+y(YncH!4abYl9q zB)n_OYt>z6cUE7^E}S0x`fo;=o2k8f@4G8?(009I*-3357#tW(_2)}CP&RKLgfTF* zbzsXT;ko(rY|iy;H&B*m!_4_*cOWm)m{= ze3A2f;ad~FYumz8y6D?8B42iV+wm>0co;pXET1uva}lf(gk35-Q>lvM6{j4#kRn~l zp7e!VoSOE9=jU8Ip-V|}7cYezUn1^~8eBTWs7FUD_+-_*RP<4es*Qe8w8w5J0xJ5*!p8%0Cn_IMm& zZnO$Im|ai-g%HsWtsxPQlTV0P3w-x<(AbWoY2v3p-o3&>yof9cPJyUQ!)9?aBN1g! zpky6>x|h$35YX;pYHO|952+d=$L9`7`=_X3&Au(IPEf;|zPM~PMvi}TiB?+t8s)c6(EW#0BeIguvJ!do6 zfm8FI(JULGAZKI=?BKI}cKURZp)BJQdLVGA8B3^s>}8ad{GaE;ZxPS%PCBCS3#$nO zTF2Lh-y*~zgkK(Vv*>8^vdX#JAjo0if4{h4as1)MueF_D_uStvZn^k;dBcf6pT71L zJ^kjoZO(?JGebv{%?Do^>woWeFWjcT`F6f@ef3`-&A)%C>FCSnZv5cY`CC32eDr(q z2Tne;_|%27>+`7-^USa~9tuNw3uGtcehA;!5y+1rKZm>uISct4ZXqn3`;_cRBjlBZ=MhXLJedT5Mp4cfy^61 zOeE#SWPpRrA3%(9)x+$siGjJAt5HJ8pxB15KlJ+G4BcS5KsgE zU&NY-Mn)Y*$fC|}GSrkXg0;hU3vDi`C7aFY6KaZU;JNfMSuS5zwTO4fOUtjg zhr5OvQhy7cKV6|m*Go!b{>Vg%?=q+Pbxax4ZzX>>sZ47gqf>(3-?;sZen9GqZwiJZJnb Wpj4ccmh{F;;YAI9U*MW3#Qy+6u7+y> diff --git a/42sh/obj/parse_subshell.o b/42sh/obj/parse_subshell.o deleted file mode 100644 index 02223c9c52e484e420a7eafcdd0c4261bde99e00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4668 zcmb7IeQXrR6`wnM_x61LIDddmNXSu0VkGQ?K#0|t)TV$Ihe%e66OvLb=exD<;JoMT z?tv3XL`zlW;QYE4Y_6IJ>M-klS&!I3vswE zmcQr$59@f?P~5T#_IP#D0;tqj*2YJMAKE-;73b!l{7~_~M)1%z4>H6nSMt&?iudw7 zYazaDNVEECo<)e48y|P=JzW3%`Gt5dDukQGD>)Mtxgwy_P37`(iqZLncM(1}`#c#OYcUo_>-h5>W>-4Rvv$y0FENkn=dXHWeZyBXD+Js<8nutI3 z%_I9~7p(~wUpH`wo(HDF8&Y_^3QvgwpSu{g$-{grmmG;0UGFmruc9VX1Rl%iC(Mug zBG1B9aA0!sJ)rHd=hmG8FMu=bMnUz3Ly&l$e%dl-*4{M_o*#NG1JBy8%-U0z&06(+ zvo?0loF#SeR~tJ6>GGU(7SdVsEljden6*>qII21O;90XaY#bFz97>zB13~*6>z@xT zX15q-Eq2XA%EN{^y9q7$?Ap7%qL4mw#-il-BIo(Sx5j;BR163(E8cbeW|;ew{(6E$5VqQ z;!3rp6Op-go~SJs4XyX5Qb-`ZP0%2*5G;T|j&;TwT2m?F36X4p?Uqgo14zdv=5DIH z&OjVR=m+PEArrh=tYqAwm;sY@_{az>p$ZkThndT?lcCfdU)Cd<690w#15o3V1lRmyG#hqk$G{SX z&XM#*Q0q%jC03yNGgR6l;~lUbtt0s^I0x3|4Xnw5FF?NoE*b|GI=%G?;yjM(3Oe;p zLqoGiUz6knUj*s*Z~-(uLTMcqAQCU5$z9XCwZ&kXk@z`SKQ#+d17K-=WpV@fKd9;_ z!alTiV*B(gr2~+*QCbB_BrZZUY1(Csf~EC4lH0-g)%3e)|5zyX#+NlFcS2fD?-g=3 zSu|~^^o6N1n4#Y;EhPR@de4O3pW$fwqp;UJI>dBov-20_#cKFZbXG z`-X_ZJ)n7Fm>=rwSd)C?6PrbY%sY-_<2n?`Vc~zhblc&v z#}9w8{oF0D{Qbk#AO5s*+Y5g>ar-Z{?8#f!IJaH?&Dy8a&3lfG^q&9i&+gMs{xRRR zxc1(~{THq_J^kw0JOBCm{(G*hI`B;Dv6prqe*S~gi}RTm_Fo2W3Y)@EUJcp^dIYo! z^c3hjpr3$V2b~7}4Ri^V#Ds4J@w;yTje&}weIRB7OeE$)a1;hMRg83{Vu(`3sO<(v zVcb*2RN#V97*kX+)RZIRiz*JS92qlIF^H5EQv;IBAE+2Ys)vz9V+NZVg$YCzb80y_ z3eOU%c(^D>1{76HD5YY?Q^mMcSUi2G;xVCA%qOatVoJp$g({vj3X8`JRR$_G2~VjQ zq>)Z&m@Aa&_g zw7;TtjA%=tTBG~g(h;p22EWu=MzjTJ>+4~$T}d?Rgzc5oQvF{JyI8)a1w!`w*p8&^d`woF)fqgTI7lZx< zIVF#QW9RxdgX0_a-5bbyR`EL(U!ph|?e#Yl?*->o78bs3>qL3R)yo5sevVt;&vw1M zBO;GRWMNIa=X;3I#Vmg*IPw`0&nT+4d`rup&=ax*-(s-;i=?LV8LA#0{Tr Q_zMfqS!*g+=KnSR2L&U(@c;k- diff --git a/42sh/obj/parse_word.o b/42sh/obj/parse_word.o deleted file mode 100644 index 38004b4f722ebf3e224d1018b3c459c0c17a1660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4320 zcmb7HZERcB89vwc{cxNQ=c7$ZX=_MZ+O4&dHk1ldmXsE`UM5vt17QQ*I`&QC*0ICA z*Cj0}LaQ_px&hrN`!S@kA5_)ECZu)J(8L4-Z6JPtw5ej!kSc9V)dm}7Xp4qM_dMsG zn>wb9?8xtV&-QkEZST2z z_`scuE+NnNI4Ptr8iB6MBX#9PzH+r7;YPk~OT2~n6(_eeE%6A)mmeQ@oueG@((#3S zPbrS&@|7wRRW@nldrkFzUg>Z%%#BfJKPrL|9tX*W{bd z7vvBd#~1Rc&#?@?{LD<*u`Bs$4)0U*J)y=osD{(>x#J7?s^f>{2W}kS3yN>O;@h`O zJ~_Ube4&x=od&+?W%BvQX0AD3O~vnHYSm9KlMkCtQZ|n7aTOooeAl%ue%G+j@O=x_ zY0T5NYn2B|m7;Br>O@%T}k*z!XV5A4OrTaGv&n;wT z@~-E&fwCW{y2W%sWJUpbnY>%dyT#0Yw|dwq_+DmUn>Qt-zjPF(iZAk>FMNC4cO6G~ zN|$_RS`?}k->LYvS2~UwWVX-GpLY?L5`p{%Fcu@+|uNfFFZf* zlDk|&7ha$gsi^RlDg&=niw=A+3R&_NOWaPVkVtT`}v@WEY;XVmRzS;a#0g# zPw9#%l&hX2xHPDgsurliRNfU6Md9&!qxjV$PKCWn?S+~vptWloT08Y_I=mEM`0d zWju?_d>$EZmq@SmAXF;S5kCoinNU}xSHvGd=|fs8;1d5ON^Rhatc>&~P8;Pt)^g$(!E%95S|4b-N1`nk}SUw{|YZlf)T79sDc^T#qUAwF-RMOZG-w(~N zX52*o1EIAk(i@A9!CKGOo8@RSDBcIiSeYn7S;ji)A^C4$>zT0ijqJ_12mbmIHqZ>| zbQpkHL-q}T=AG7~P(9}Dat+S0Zip;g1G<~T{D|Ly#qpWDxt5D7Vs_xL{OT}gArEhA z>=~H?EVzMx@$Hv?&rm)DA)baX)wiYH*!Bw2|Kr1Jhi7va$&jKD4OdST*Gf!YJBUMI zF$lStc;WC}%D&qn*u%pAR%y-I(fiMSz5UX4&;IG7{*QiKU32EbtLt9SGjCkCy|QNE zwSk9{%}3AYHof=yPj1uS_-&zU_55Ei&%OUi(?dVIxbg2V&fWZR-@}h2zV^(Kv)}#j zt<{CpnYjhaZmBNfaF04@o-TMhm;pLl!7iOFK%PS#nXokc}ysXkw}PJ zOhG(S2yx1a>p2Bkz||ml%F&BKt{`r3Lg$dFhCHbV@pMxVcNQUTGu7~aMXZTvWYnR> z)uaw^(kw|~7;DE52yHg0C7Vs_33#!e>mk;^NOk3kYA?iaYx0|sJ6giOZE5&M#CdpX z+Q+Re$Tju>(XPHVM7cCR;b%&fLb+DNGdffA+|bIDw(s1r6!DIE8F`O;cyOpDb*~US zS3oZxAn7TFMc|7v_M&=dz=#RH7Xpvq$%8U>V%eE>+@KglK8A}FZPWDTCTmzv7&*OT zP`3tA`m){xt9?*62lWW77Fg?yn*IgozMOtbPVdU;kukj^C!IUlG^ekEb53tFtb6nx zAl*5AEs#Ou2N477BgEtA4#VDh3>pL4#ed3xcQHUPg{>pd82#2;0^G=zg(J-mRw|f3_gYM U7Xr^iyYA`8wtP0BJ!r*$0p@3QO8@`> diff --git a/42sh/obj/process_cmp_pid.o b/42sh/obj/process_cmp_pid.o deleted file mode 100644 index cba88d1e49e21ca292f7c1430e01b14280cced2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3160 zcma)8T}&KR6uvXNGYmVhETv*A{aLfn77M!zC6!21L20v8G^F;&#OP!gc42YZ-OkJ+ zCEC!$7@ANTVtg=~sEH36`&0==>vv}EU6v^oPIB(~ z*>k^p?m2hv-EUU^__vNRDa0^6Q)gpuJQbQ z%Nykyy^2>TS)MzHx0mCHIoJ8Vg$=nOo;f~lXJ;wj_4x_BH#xvo@$$u7iKYbcuJQaX za5+H52ZbA|b=)vN+bm9IoqO>*=|I%bO|8c8)eZ4xOv_6#n4iECW!xOkESC#eqiD`h zdiU)25uV=>p4KOu=I7&;#;3go2lLBuympRvXN!1Ver3}N;w=U69;)ZSYa&oTKR@?; zdBgpF!0}$>1w6V%JbZK>WH7%5{ym8OUWu$F#}K6AWYheK5xH207kO9FLn!XKYI7B*lGD$QM1t;C{vZ z^fR9n2LMsmee$Ea#3(@b3q#580Qd3uVaVeusznM#b)5hh(;5*w z(n3Z*x?lf*G}5vkkP*e3sPFRxo2SLSo@!pV8(0_b@G~`?77tPN^b3b{W*T8qljMnz z{MOtB&pw9{R{6ST%@K5X9)l8A@QyI`B8CNUXm{NbL|X3DE<>(@<%4p9X;+}#C96wL zXxe+wbb!d+aw4V?=rOXAa$<+}Ei77HPRWT~+IPZA%Za%5gRpw!M7#D2tQ^hjl@kY; zLhuSbt>Jf}sge?duC`%#A9g5S@9inl14m>)3`{u;Ri|mnAZdi6jzRl~ls)S6P;Ww2 zGAhmg5*+SQ&%ygA)X?7W9r{sIXakI8o*l}NA{Y(w$hZCH+1UB;KhzX29mu2~vTiQ9 zf^+YJYVkLVi6DTOZUiE_`6Q-7D)<+pGr}W3NkNn+9f~lRE<1W~&fa+KuUjv*f7N>R zw+~|tvo|VoM=ZVYhW_?wZnygN6Yhh}*?m_0omZ|RmWuWT_~R9+rMogx<<79K@? zBp0=pyB4@>7LvQ@AW;+@503SJ9jHTfsgjuC5&x%zIGJ%^bRdMVTw^I2- z{fF0kob!PYI8p|G_ybojE@~`A7iw~fPKy`itNsk=IBZoNhsnQX;rCw9`s%$CYLb*l yvMk}I1u!dETedoUW z9LKb4cjf!e&pqe6=iYPPyEi%YpZ7oWFs8T|9_ViL6C95aI@%(1gXAl;t{Qt_Qrb8& zFd6lr^ovBS#E2yYkVxc?-d%Uh$qsij1%gI+6iY+B48_e3kltyLNX)cysq~;!RN^@} zo8`E-%JH+Ip*B;s=v>g?AP|bsM@P;!nVPAwf z8(%J(9!!{@$9ss1p{xzbx+zm#7H@AfCPJ)?&%u-FU{}YBX0yYINIJTg!u#BMi!#0* z8Bpq~@!5Epf!!j(mGS*f;h3Wc@npJsXe2F_-sdVYeL@$dwSI#1Eme1*K8Yld874Gcb6-#k>6ny-!ls5JB{M#OfmmaamNK? ze00Vbzm0yy(Q}2-k62)=7HG!dwVxoWU$AooUF@A4@4Zl%R0=aJaEKzs_!*2F6RY7$P_aQBSGY#+Qxgr@j=L9bbNi#7~eW$6qV^# zjER`VSfLwUeyB>8*dof6%vWsdlyT!9>|hrI9CF_N-E za0s!s5DP75q5b%U*akXkLR+@nxiz#ekuy`7bf~+dv!gTA78}O-*xuak0A0Nb1Ic(Q zjYlSLG1H1#d6Pvg-0ueR7LG3~k{pf>+Tn>9DHJkGFr`*m=C9{2e^6WOuT|<$?rH~= zb;^3L%l~EHt-hP8Z^NtO;!Kr_O{i~o*F2F27-_WyAhs87ul0({@ADA^V|op9`8U;* z(2dfmqSMXW0^K^F55vAjWmEl4n5LQwpqf@en1)XaerP%Z!!TPx1Z}HL#M8N}+Lll` z3gyleBqg9IF7=U-5y2n96OwgGNSACW`?r$hRv#JqJ4v-Fri2tvfGTxl$@o!vJc)<) zEFSlwtBX8iAWdqW{xImtJihjsKZALeb9P(SWWm)y{)lhwd>n@?Q?t zwL(*o%57k^8@xL~xQ_4TH#Qhx#X(LK#Uh%m(*%Eh;HBrOKt$F-JA`(=FR3bhXVJ>> zuVzElOC5I((dc5OFbx+hj!!#XL6B&4($l4b@Tt*JK#^iOj6R^GBWsF>c)CMc52u!# z+|x3#^Mykff3yEfm$W~9#aeLe-1B*LS@4&WtsitAc*ytYmgJJ}fB5F&VD-Ki-ikFW zURaxGjfIZxe;58#O_cve^fvTc(QikOqFd+>qCbiL9Qq0Lx6sd`Q!RrqD((g7Xp~n{ zQKF@aQbj7tpj1)Kl8Pp7K}Vx3l8TZmt*C5CMU_nFBN|lzsi-!k6}<+eqPIh;PD>S4 zhlHofAS)_PX?0v$(F-S4R5)ZswIm(sMI{xzUowa@Qbn(sbfoeoD=J#)_`iz7gOpP8 z;8E7(Cx~$7HK$~hd$u!WB&Yf_!d*E@K%wiX_i@Tet^ z3U;EO*9ySD3aV=F@!Ec2=Fx_P%G1Z)m|(Hqz?Z@jQK;I}dVy8l9fZUjW5ZoMRdFkT_OGRM*ay zM(>Aqf(QC}9R>mv0D^TxJjNTzg(mD5)9VP9V;8VDL5wUyG=02=65-l|4RJM1aiw3a zLPah?{*l7=i+F%-{}2?v#&_^QHMF0U`j@5tS5p3oq|Zn_eHh4}4i2aqUj!xpXQcjz zQvbM=ACUB*)Ni+G`$|y!+MA_*At>RB%MNgVk6I)7RZyBo9LA7;B<1hPar%7F_+6lc zM|TjCyQEBiv5@I%>SQrWwH3zCghGkbAmtkz#ySd++Erh3S;G#fZ z$oO2#Y1JAX@ws?~QpR!D<2@yDyg3Wyx;-0mPQ3KMK*b#4`e(=I;k_gQ=8Kmv4wg8j z9xo=J{<4hoH5p$I-k(h0obgrC#UazW9`8NprOV(T9$qk`OKncP;dI6cu|7Tz&wGtG z$4i&X1=A>|hZ){=>wRCww?PKef7AF}ywboyC&BgcU6XjN67Tpt@tpX|=}bM|o${r7 zc<1JcXCE%lx!!FO?=7#M=ZS|+=RnrSr|9lNz4%UsMV3V%9MF zw#*C_qFv&}r1MSS@s;jF{mGE)@XVYsSV4B(35GHIJV;5rO%m@bi6>0~Gw11))B87H zbP(&;drac#GMFV{clP5qh>!0j$|0ekGmybA0q5j?It$s(ZtzZUE%6a#SyHuKH`RBi zCcaCJ{}fA2Jb5KGQT;VFS*4tUoJx&<5J*j2o+5~2Pi~yiJ^%Q{*rOLVbMM6Z`u02& z8!;8@{ur3r1pHcVf+IVO288gQbDaOsQyBN`+*(Qp%W?h2)rK zA|sN!Eg&S*m3+FAP429e4w@O;O0Mg+a-w#q;C!=ad(yD-M@+%Su$i571!dznVHZlp zp;)zO<%f!9HkQY%vak&aC#-2LJt8u>bVZcYc21b1W@Zq>T1|ns$AmR!Y-5`v#ET5asiFW&OoT;;V+pZCN{Ve# zpWbqwL)kNgE~QCPeCkQ(K31A|E5j-ub$Y638`P7zbF`XIp%t1whIRt%TcJ-voB*o_ z{AVEifxvSR`YUM8gSF)g-ht?9SRMQjaw&prxJ!+T;3ZfwS{-UU5d0ig2dz#u9u0mE zYnWC-jV}oXq4m>Bs_|vPCeP|pb~XeagQt;1>2aUAdV`%H4S1&PdPBI`9U{dW|+Vyk)0sWsbIHUym z7J`9zA}K7PDepXwW2 zzWB`4>(TJY`AqEe(Oa9%w!P<{zWnU(mzG|5qV=P7x}$3hEL}_&f_ zizH@{E+$oCv5@FuT}T(JoGzBV#A030#d47@?iRYZourFJNEfS8y3R<~B&3A@uk`wn zIxk(AL6RGrxUHmZTBE*0i$bc~ zwTM2hHB;T7`Styp3RTg^RUK;g4-F44wD5emyB=o0Kc0gy1~=6Dj#0 m#iPulJD}8<&Q7njsn^=V7_|AblQj#j3Y|AJ7F+Y?g!mVGfB=^O diff --git a/42sh/obj/process_mark_status.o b/42sh/obj/process_mark_status.o deleted file mode 100644 index 4a4f743f8fb633557a7eb2177ab0574a1a75a696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4296 zcmbtXZ){sv6~FJ<@A+?ScV4@~{_v(GU8*&9nv^MIElbvTa!Wg=u35(i_IS3RV`q+^ z_1<%q5Udm&rWw=GPT~s_Y+sQ0C$z%$VG_~?LrfGHh=H_8`_Q4aq|*2Tm1@Sc@;mR{ zmpV>HBXOmB&!2nF@1A?^dH33X{NNuS1sD^23L&7eG|?MCQ>G*JY18M?s(w9>sDd&e%3m_}M8UUQ^Y)Wt-*d3|I8x zc{nkScb0zQy#Mp(!;A5`AzYD zM+xt0KjwMtQf-Q-<#MJzPw}pg&%=9`18fzqTrC>p(u-H5OyOmqyr?ah#+2;EbtwyI+ztU`Ug!t1f zfVCT)Rf5R2GOO8Uhs9TDC+*CYZ2Q=1YqB3)^TKkovmF0=17;9^*$Fl~$@of@yiOnd z0n8nQSLj%>r$2oNikCkLeyW}6Otp_)X-{8i{%yH6{a&{9tEu+%dsD5O`(JQknkK^GRS8CE!(Ko^nzlQXOw~R9>+e+EHj^; zHF86FqiUN*C0#R(ylz=4A>qX%?^K@se=F1HT+!_fYcI`dGmU}5xN<@_=gL)$EOLt! zU{$Lq1BF!B36ec%DEU&kQc!qs&J>%ZOIta5^pRuAylz@$qpFOhhEv1JV7`KvW@u~} zLTdj=YTuqM?lL`X0Vu7RWz8(4A2N+uJ#Sm-{UcV1m8&+}BsUC+rmos_Eodh0E7cR> zGCG0@H;b&sY?UK0YmL+9S-zy1tftu|rZ4FEBFtP`ER?IPSTO1~(`@{p$<=M#*S1=$ zXfv#0RA&@tpvZ*n!ayu3`Ci!!QzYR6sTjNWfDaTKDD?h(nqcBgrh!XxwpOo$6)BuL`f zg(n?(h0MjX_75G2CS~z#=>?Lue;*?Yd<(-j(EWD=z5{Xw-IooJ<#XubUhzjDftN7+ z3|+oG_zRF>X;0`kpee*H-7WU9&>N6ON!ly+1w(H_x{stGu`dy#P@F(gV&AUNyJU$j zrNzG6LYF*gSnN|m6s9w`PweXty$@-TP)5YQK_(KsIEKOZTTIA;I0ZgHSK8YoD`D~! zB03Zi!yA}53pPq_qD>s31XeIyC8tmMJ_3>OEM*^_%tGrt8ANehPIGm#!=Jn5gE=}P zC)c3kj&{8-sd|0s=IX}3kqtd|)Ndw3G9tTGzaT5x#t! z2@44!5e)>-@Re?Z<*QfSWAQ#uHW^DiDIVJ9mJwq|U@NkhVJQgziEYCu&>HAM&#S}I zb<0ebtNBX3pr^~DWB07rSc}#MMOt-#zj7~&ZFW85>B4fZWvWD_v&N&`+?yJDloMUK z;80W!tjpq(bFVIh?TZUiIQ+IG%SWVJ<&qSY4@luhrNGyu1SCJC*bylxAC!Z(B+2K+ z&m^TJOeOiEL;axA-+Q$o`Jx>Bo)nYM!{`98zbpBJJEXgV^O8?KAlD`Fk|fl{5OT-Z z)08>JhN!*}){X)wb}>Z1&PaAL3;8WXOY-ksI`lf1p8+NRSuQ`u=fA*ZI#Xm~=nyFE zyT50iin-e!=d$rf2vhMZMV--Y?+I0l bcuw(Xs#U`-lubr*p@zTxcG2NE3+(>_k6-k^ diff --git a/42sh/obj/process_redirect.o b/42sh/obj/process_redirect.o deleted file mode 100644 index fe05bc428dd9cc4f278a155faeea1b9bf0376712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3348 zcma)8U2GIp6uvXNGu?LE-Gx;|EjY=Rzeso6LZDHi6sg&2NeJ?%QOE7UVq#)qLJSy9uvU!V_s!fX+pz^s_T2L` z=Y03vd(YgRZ?0dx(IkWt5*WZ?a8<)#fI;_z=jdF5e%8GQCz%8CZD0y=oKBEwI)!n^ z(>;4{|G~YtY+tKMg?OCSY4s$GV}1;!Y32(<^%1k?*sj|&cOK~5^W=Ppk8@LcLbA^J z03p-{eIBn=v0Qf$&*tVdkjlj^q($*^Lqm39jP)+8&&PXPV%#lWu{>O1N)YdctnaXt z@5uVz_xEp!_1d}eNCBG_#4EBP8tCsxgW;)*uJ=gJa!Xta&)>#7usp7nzMp<7Xx_D-6ftgQC)Ps zze&6oL8(}F5rgafR<3us zEaoKukj^bpANM7}fT*`IEPf^U0^+%@Ymf#cVRnNXiBpglEVwb?Hu}Eo)Gyh|D@Jze z=v;RC=-lKR?IM2MKt}g$cDjFVdc6HI)3ejN=B6jwr~0qC=2ZXhd^$O9DDmSdJpYmf zcnL;Bf-%*9MJ8PC{wh0p!Fb_(A73WLDV#y%a!dd zq1YqQN2BXn2a=ET+%=&}*FX|~OC2H?9aok#FghM zLh5_t6RvGx6yZ7sEv$_~=*)N(99q?M0-{UZ5P28!3RrzuO^L{d(EgycQB6f6A3^(< zR;QXuL_USK)!imFwK8%E7UxqlYN|c*oo{uiDI@Z|Z*{Awj>u224l=JtO|2Ii;k8)| z;ZqoNMN{!iZ^Q60?2ysyuA(IcM@y$a2yH#oDATkaYDCd@Ks!TawZ04L44-Co=AQ?L zH|iF=zd{W?6n3YLU`LUec0d@+%MD8s2WF1{b^dV2#TBP7f0k$+o2jd7 z5?#mMik=!AUZr2!;oP^Zu+}m@cve{sGK$=LBs2HQ-+G(_n5Sgy8)v_Dd?ET` zi8s|J+WgPW7-Cg%7LkhbPpl22!a2Z-f0yDev`Y0n?x#$>W@n_8DQ@cBvd~kT2!z0q zG36IS@P@^Oj7fNJrbpQ)ZkVTfDbUeo^LiM%dzr$|b`s5OE|)@aMblfp&|>;i8h#P| zgcgMiZPS|dXSG&O)%7!4+z&XrNPwzeRCTO>{%z{q2Xsu*xd{^PPVOn~t)8uCq+BcI oYAGQYub-0=x`=a-#2#!g#RCBw3l02x3DYW7Y6W5D>(w6dA3`bH8~^|S diff --git a/42sh/obj/process_reset.o b/42sh/obj/process_reset.o deleted file mode 100644 index 0576bb5fde233abfbb10f8deeb4677622c5100b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5896 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 b!C~PYGec#FGiOl9zceuD`gqOp8+GwNNoae) diff --git a/42sh/obj/process_setexec.o b/42sh/obj/process_setexec.o deleted file mode 100644 index b1678ef84af1500126aa04f8e2f02b7de2ba38b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 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

|XMJaT41t zgeOwvT&kQ-Y%Le}W=z{kEMH~~id?}K)l-X-unlPx)|8YQ7Up28EJ`VRP%!5KxVgNP zOAC-;bKj=QC@8~IF+tBV3=E`m1$4!VEi5}_S1ggT@d53x*f<|-V<4Z(ihQw`Aa8D@vKkdw)2wW6 zZgz~)}SC-h{gqoT?OzarX7v0=h+fKvAPFmh!rPl z#8NV}q|2QCij>tJ2tLKXhPuY{N%K!#q&z2O#~=n2U7?o}R8Q^zl0r}=d4uf^6OQJ7;H^X0jNNp3*uR)tbZK>K8iqd@%wGOpS zj}mPUwNACICHf9DBC83tZEp0}p4O$d#iN%zty^td82uBpFEehL+O}Az4*Y!R+KU(n zDC$Fy!z{oeoJbgKPjFte4xE9(`CJC>Ny&Xbmc4R47OQ<2*1HJ<0P!r+TKwC+znSf72dxF|5 z0E$?6BjhA(;rqjV5I+ae{{_te3x-r;*Ns9>Mxu&-7{c4IL~0b^>Rz*2e zs_USRY4RJ_L`O7!QWX&Z*KpnDsGFxBoYw%}#%blPEe7J%0yhcK3^L;{9sI$2 z+w~s*psv>ppANk9u>Hr#O9#*ITlmW#U0(FT&eP9*bmTjs-@p3pxBq?N>0f;7rw3PD z?>clO`eNU}y!+}iiz;fne&NlgO}{alT2EfP*lHim&71Y=)$jYUFx+UL0<8mW1(_gj zw{g%bpzndsfqo0R3c3!8;dLwkEeCxT^b}|abO>}3#FB%XU?K6EgvQrH6N>^T85?VZ zCKd}<3XSDM6Dvvvvc_m)PST4zfhO({X?jh1vC5^1JDOhH=+eZ}rHK_SP2A)(vASel z++Z|u)5#>b!)W5xm4U1jnz&`9R~jl!tZ-@Ku|N|~CK)&)O*|^4iKh#__T2Ph70|@G zlU}THnpm7NRql40Smx4;M*>YeBczFkFikvYy})Ue0_%+39>gx?Zl`@(yW+|On$f%s zt~|3%DEoCquL*{Z!;3307qsH=BK7g(#+ZqZ_}HbQK{z}m0CdO-`QiN?S+ zh@l6xriwNj0lu|?e`@L_HGoAGzrrNQrsEtq4xEltQhy#CS#<1kd9wkI=j?b&>RZ5( zct;!@Id|~lf`#gM%;kYcBwr-?{gQ*xFW_7j!0Vyc!Qiz{2-8&YXqC>f>Eqj~bmljG ze0`PPR;3GL0C!y6w2ea1PUp&adsRCC@78pFT9iuymu@?SH&@8!Gj_4SmzXW2@(xJ4 Xgnv`n1H#DScL=V}{DtA%qs9LKkPi14 diff --git a/42sh/obj/put_job_in_background.o b/42sh/obj/put_job_in_background.o deleted file mode 100644 index 5405492390abcf6cfa62257a59c3eddebee6e3f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4068 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 diff --git a/42sh/obj/rl_clear_function.o b/42sh/obj/rl_clear_function.o deleted file mode 100644 index 38b5dc8b6389036fe92621b792b2b578834bf134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4004 zcmb7HU5p!76}~g}jAzyxuQwagjkZY#oHjwqt~Y5)0;DA=P3qmIu#}`wsc7mQ&+bm@ zjIEh*yGa{S;Rfd?cDX=->_5VS3jE}ieuZZne~&an?# zYJ*cyM(9Md?Z{n@5vpQ0mkRkf><b8U z^Go^Ubcpxot2Uc;*Y>L?ncfZW`>xFIfXwHq_suWiYs{aBCwMTw9kPD6OTHhklP}J% zS#<{a9vI;J-8%WAQ_Y*cZ$t9EDL>$~b@E}+#gv2j&B*#q-}jB->k})rf%$bBC-I(< z-SVIG{F-eay|1@NQ}S7Ij~NHw_mbrMv`pqP@UeB@BR_tZA_MZthi3BQw6URaD&~OPzL1BQgY-5I zLCN+y*Qp<`to*UkUbQMKXS$V@*5yj4)$Qo*w~TgIj6BQHDxJgKj?sSmUn>UHO8dfe zW#!_Z$zSQ5=}HAL6>H_eRfb$VXeGZM?zWeAf`)tcT5S8wDqLf+E1~POR#V2^7dqrP z-d&lsD(zobU-Y(cGi&G`nHMY9o#&^zslR_NA5=+-fea9Tkq zB0GjK0jGfh1Zv!dMt~JYRp)WU)x9th91`F({K!Q%6786q4?AKtRs;5xcD>;*S}i~H z7Jav7@g01ghD+dS1gAh;lgtS=d1Sx0t+~!301mgFrnGKeWtcuWD57>^C%*HL@*$?8IVv2VT>u6LOxGEAQD0bY$MzTT zgw_0RY#l+rtolOzC$vTxDl|rDS^Zf+?kpb9L5xv@>YVzR`4W(U>bzPK<~N}2;Wu*B zl3|iGwrXmrXnsGnT(vZAa)`L!f?Bf7S5j+HEp0b{mRd_{X{UKHwLG=7%X}5qJsjbL zTADVm!1@ZU$JNq7^C+~-wCZZ9BJ_PwwQnOrS8_AZUx%6*H{JvkGuzC!fy^LdG4pp) z>w{`3YyK&r~DX|apO^dl`F1|lH1rjN^UG2 z@CX%7?=u(hx2Ah30-sF=!k-s1}f9Lkjqkx&x#}fvxCAhnCqh?MQ zI^Nb>UK~C1+h6B@dF(qQ6OQ%b)7Hf5*(yO^L z0%9U2cmK6=;9)kE><*MTo96r#Yh)xNOExn)5T(!9l3hx zBFZRMBVDXn$;JAPqprJHsC2P@WfY5+F4nQ6|6jA8!<=!(&?9Z<6NMywEiDM;^g}{f zE-J<0oN-Q$aw{U|x+J=GP4-8%7m8n2Ke-|OyYT>GRq-1{D$3Qu20Rsx0Z|4|N1Rwr zy;Z~YukOt+MCCQJ+zNx#DtmYC|A^@Ggr~x?E$@vt9GEy@G1fw42W}OIi|4wVWa)?`IMA7u2EBa5hjJ~K9zNc-{XEk+J zE9z}cg=*-JXa%5t0OsA=Fjc*!e@WYd@Jwtyg6Al#TYy_gqcLGP?NZSr5J*GG^V2=;j zjO~pVHl`qOaT&2|Uf8TxPuaM5;6?y9?jyFmp~PQ5xeLWV_1}s_^7BF?c#=1l{{lBi BUEcrz diff --git a/42sh/obj/rl_clipboard_function.o b/42sh/obj/rl_clipboard_function.o deleted file mode 100644 index a3eadebbcadf5b5f147c1b6409245c8fc8dc457f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5132 zcmb_gZ)_Y#6`$R^-CN(;zVjc_GmeuDXVOIU?%dR=B1j>jNp&%)6ouG?Kh^rYxAvWT zzPsM;*>Q;>tploc1>8baq<#SriGH9Gg5(P(s1Sq&m1t2bRPh0&kcvhM!XiouX(0UG z?5uOQb{l_Sq?z|;-uum)nK!d@_v($m|2M>#6kupjgQyh+jgE@agL<8m?^CQ+w_}lf zP&^r!jB1pWD2Cx!Cmfe|m7`RNfBhHh?a@JUF!mynx zR~g2E&+R|@kk`#ToEHS1L%}o`xl#1+ie;0l{dixc1!^eKmIlFP*Tu_@ja98_ntyYA z9^Qh0*(hG2G+rhbKb|J`=oJygcSU@ePR6tkh_9M0O<49?yw_C`m>{Ou=LYS%^PS3? zJVbwd9-i0^c4xe7rBbwvQg({MTQlD`M0{RKpB=l^L?-)@D>H$DS;Jx7V8&_x!&JHd_vU}AFT^FiMWo`8Ap8)_86NT?_%sM zDDg*78w<^ssyKIzU3cV%GYfBL=CA0Pg}If?LhYSQy|$8>|4N)iPg6LV`ay^<$1@Ad z?+{j|KDWY|`RgqD4a%|QgEw!XT&8>hPe%2FH#76U)*rbL-OB!N_--^}bpJr(sp!_z zH1xXT)z$fn8U=isR*$As*XG~)*MjEG?gS?LH8B-}xO_oaW$Gv5e6kC_TzL4>{M;p< z-3tw9!TEm!KgBgzNm{mgC0-xCwEk+1!tnBjt#^?%>h0yHeaOr&57cY!0HCA_%;*a< zx_@={)6J$IK0NZUK5bR)Lb;^xNe!e1^c`jq*Ku;s0EE=wuGGCdnO!y0MdWnS$`zbK zX(C-M8fLLj87pV2Ib*z5G9CD*OqL$DftAiy3+PB6sg@@#)3MWoyX-t8pK@h()toD8 zPLo{8+KzQwQz$u%#$}GdiS3fHf@50_t5k6rILypvtE^C})WCW%u}axycHwc0)od%r zY^#Vkm|3gZfa1hhbyZH2L-Z zlM^ibD{w!Ck!;EdEliW)Qch09!f$wzB`4zHKSSbv<8nd||HYFgq$!e$aw5aza}Yzng}o|i%iynr4a8e+ zfy4q^!YWi0K|rU-TRdr-oCtZl^*z ziK&dfSDq~2xcJJ|le;5l&QGQfKzR%`hsqNfbP$!wlc?lhApwOa9O#d@bbCy)p|akX zUR)coX$JZkKaKa1$8N^_)7GM0nU(}p}KrkCr5 zzPq05n0xaNk>4HrVYJuOpF64dUisFwS95)@o87$wr=E&z1^xCvU+ZrG7ss3JpgpI@>};2Z2;{jszCvFsUf_1lAd0Me`AkXN8LH z0bxa1OpcW50!tSvIwwL!2~Jj&_d-RddmCDbVn&txPZ50i&0;NwpDV?}*tnBk71K4l z>PhLseS7X_O&WXFP8;HP&ilP)Fy6RhRIMyN*d;5Kr*9z?^nP%KqV0geDRYs)2f@3~ z00=mCxm6QBmg|PY0wlKtqLQM9ud0j6UFw9=rw%EBA+Ym`3byaKqV81!=#ZBbXQ9>^Pc9FB4OG+FgXhVwXC?WL$J|2yvF2T4{ z&GYUpL(0w}CA3#b9j7+vM$+*`M2P5ylpVY?x!M`mx@l}BhS4{HZXQzPy-F04jES^D z0)jLxw_r;#{|jiaddZ)H;=PfioI_3}$3SsUCAWcM5tBcGE%ko~6!%uL4vLjd4uaw? zOMXnq=RgTU+%M{^kj1^NJ|N`Xf^HXdi=g`i)ddCNcyz}R?mo~c7_S@^@~BXlLiWzv z4E8CqM6#39Av0E~G|zr%z@^Q)-v2nY9|EGoG-pt6F$e8@YmADQ0I4 zJfK~5^P8OmHa^-(;d`|kI3xH+tcaH^u~XJm&MGp4Khce;?Bpt2p0*f2O~!b+I)h&f H2%r5A^v7zY diff --git a/42sh/obj/rl_clipboard_utility.o b/42sh/obj/rl_clipboard_utility.o deleted file mode 100644 index f674a8f0f9a9530b7279621406dcb7eef6ae4eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6544 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 diff --git a/42sh/obj/rl_default_function.o b/42sh/obj/rl_default_function.o deleted file mode 100644 index 24cc459a9ccb8c36b75093a36d5457d523c04bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4108 zcmb7HZEPGz8J^v{-CO7E^Vv?#RZhau3vDXZKGUR?+eF~d7+p$0QJa(^f!61}J>RD1 zyVLHT-GoFcHI!IRpcPc&7o~sTPb(n-0<{!^s1k_^HGHUiNFWL-O+*n}3b}i@%jc?N`ebI-9IR-7( zfhkCXG@{vd=-wYja-<)cx%be2^;mjM3B=>HuV#dh&`I$?>_cwb6?d*ZZwH|-&9=So zV|(xVP{$?4S>&S7K4(U}tJk~a4qm8gwyTM!WZczKF!V}-w6iXexF5W`f zksKb%S^^ zzE;`k#XH%9mrHkkw^-=;{i687qpfw<`-H;#jrsxiY!DAcCn0;|dr0MPyx!4)IIIru ziO*>+V4b1eZY+6?iftd**YSk#4TYCi#%bX3Oxc6{Qz7@@xi!1$V|Swgw!QW|IIr-g z72d4EQ>wu7Yq3lo*IV6dNW|XtW>q~LQo(#xt#{ws#K+$yOW<^r2n;?4IsktjB~O6Q zf^!=Vg1Q^0AgL|u{`8LW;nK=WrR7)hrIizxN-OOPrPcO@l}jtGTYcIm6iw@M#5n740Hx zUt52!%|c(3UKS*qj#z zZYWwlY9NGDs~rlb?zQHcz!t4$AOi20E82lu5rJFBM8awNfe3BMf`~ayU<*`_4T%g| z5SE?$;8*v8P;fRdr`ZTy1fsYtvDw)n^StbHtkUbv#(cir2)y}*Tgfy02JhJ#aGL&6 z09O=p#9O?KYBSs>VHODeT+A#J^9~ApXP`cYiBJ=)q8tIgrfZMP(y(y8o zJ-s`9L;wDf4Eg650KWg{zS)mPTxMhWA=#R8cN&N(RXtgJ$HpSTz zCuvLS4}zJe(LDmPhEiV!JE+fEkAV|KpVJG%`WmDOYK~s8EW${wq8GB(H)GA!3pwi< zXmVUtFXXKs#@f7I*lwMTwVGboVLcaXo?f`g`WduI{^&>a!ld;&wByw7(+ktqK}dg~ zR@Vz9VeW?bOE@HQso#NR6Wgqpz&UFo&uCd=QhSeHNLqi6wd)xB{O0skK#JW&N{Gr`b!?`gOt z61V}9@`i}wVhR$Q-Zj=+ANu;>n3I3> zcz*1aFZ})a%GRGdo5v;}IGKJo_!lpq9}7=;TfhDL>;L-9@mtKxCFo?hFr$Cuw7L|fpQy+W+3 zSL4%6?9F5!((f3EG8o4ae0A{)cxu`knE~_~=KyKF_aN>ir{1pM`B?Yns$sFC7TbXz zYejG8)U9HTB{&)sZT0S4=T5{`irK26?Ym`MA`N$<#-kes-ffXm4?+mY>j(#O5^{7! zK|!KdIxcdiXc*FyH6dGKP&0-%{mn?3Rm1#>kuc{C^J(*`NO%&$u=yu^ywkY#K_j)t zNaDNxv@!H+X}hIk%UPQZ9bQ@UF=G^5ztjA<(GMYMe#y|Q)zpdx{z8;;v z-TuPH_V_MdB6h_KTJ`c#8&40s39uK?eO~Ew>3s|dTfSKAh4PV(*j#jl+(5h9^q2UG G5#m3y=7^5~ diff --git a/42sh/obj/rl_display.o b/42sh/obj/rl_display.o deleted file mode 100644 index 98cdb4f6ddea9641499cf8b555b25c67fe793cc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5492 zcmb7IeQXrR6`$Sn>@7ZXcgDs!Fdr8V9GCcfE+qtt+hAkR`3e%HKrv0aIq#kAgX8XU zyXLDPC>IhOLj{faBY#9{)v876NB(K5lz>XxsEyK(ghooEs+Ah4jY>aMgp$V12lV%5 zXU%!fF7C)PZ{C~te(%l9o7p+P`u;y}`59Au3=L`>YKfzXqM|H7ogm>1u-;2hbY zxI8c!)es3$48zVIvYo!e@7T0^#~t47{aJN-ghy_-G%*$=Q5`!$#4U!A$qtSV8B4ZM4+n^#rl%YCjAO^dfb zZHf@R@ws?%JJ{Xv(xp;9YZTJ^DZHBbJ|W|CQ>x{z@i}d$M#%SSSu8=W|Eq!-X8EcpM_NWxT06e-=K1BWzMe*QeM~tB|cGnp+jH&m*X^D5v z8D^32B#w{-7#op8f=r&@TtOgu=No|mm2b)@E&`8AbF*{rp*tl$S{I=bZ~~#h2NN{&fc<=71tIz_ke^-m#3Xnb6+yrozE!$Oa@k<}E*Mpu&Tpn>(tXy|N0 z%94aTz7@Xv;d>{1Z-?(|=-z<4k81{|#Kx-?sdZJM28~eGlz?GN6kNhmO6dCT_ zkIM0=yUg^xtd3&*F~V>FXsx>{Z|jv?)2{wH@6ts>Us+MJ7LQ@|u?yyBCvmTzkxG?A z9SCDqCId6$c2vhZ&8}B1W^{(d6e~3})EQd(IQ-PEmt2lx6IBb_LpOVL%a&bRqX)8O zD_1N;*LHSwc17FGJU&P9wOwF3SFh^)_{W%4HWPWA>3BAivvY;vL^*F{a#ksyKHO=t z#7+wUiF7%aE@u+k%Ei4|)3y?;S6L$rish`8wOw_iRJ80`X}Vx%Yov@^GTRWua>!uL z1{%v1Y*s4cF0`3Bk}iWUjiQ^+l?IClg24;3a!0ak)XHXi*WY%z z5jEDX|J~(sYOF)Q3GM`W*sI36^abesinx7hY=d4xZxv>w=G9n|&A9?qUdInZI_G8d zHASP9d=Fh;#D5DU>|3I9h-d=7C{2L&MR513u{u5Aa?5Bslr>^3rp6i=zXn$O1Dd6% zbqoA$Ad$LxdK@%_DC(LC@BwhND|Pb;Vjs9TaV=O8R!0gMLN31I z^d(2`i$XGmX_NiiC`Z0){pjmISoY5Gn=9X;C(#bn45~;K&~vC%M3RA0l2Q@L3fd{S zJ3h$=6|Yb7<;FD|9eN;A#Y06Dng_-1V;n!G0*vse&>&I5q{)*WyBm0`t;4$TCW^^ z;DeW7_dC?Tp?-uKhNBqj8dTcRhf#~DCs8k;UPL81{um`d3n&Vu5s4_Tq=@#MM3e+l zL|H~6N)FsbR4AcIbOMdkqC-j|I<-pJmxgpeNJL4!92A941&QdONG&?)B%;GF zMRb}-L`O>+QWlela$S0)G$s*cw$%Dx+v~^H(Kf)Mx=AA+< z%^Ky%cBUK(E8zyePMD;>2zB?n6wK}0(m!K8!SEC6#<|YfaP<11clF#&tDqr zst5;;87^KRImH)J_`LcnJffv|G{u*sxNdW8H*eBD!xuoNrg*(p;Tl9fZJ28VyiL2r zR}S(1OMJ@^-=5-M=;i|{u66SkZGmFz=PVrcZuN3|;BL!mi9QW71h>4vP6Kfo(QiP?3NzXXb5Tc(C z*wz%kS77>1(i-i-s$q61jE(SCPz>HDrXa?Hd#WOaTs;ZCQZv_XoA+X_DVi&$gIGkk z`g|TiyeeQL*af1BHlS+A$lr?`W$|mE$eH+eK(Y7nGAM4;_*Tg;l>ASjgrtdoS<)|p zk{+EEvb&DdzK&-eH`xjeA#Ymb`nn&~-=SZut^ARV-WS;d37TSr7k+hkwe$ulMlG@V@bDCC;l~ zoK?fjXVYaV!1=|$4(ah*17e7u1dhqUat=Qaoc@7aCR;SBC4+dbAEZZrl`>${cFwG| IaR(UtFM>7SsQ>@~ diff --git a/42sh/obj/rl_dynamic_buffer.o b/42sh/obj/rl_dynamic_buffer.o deleted file mode 100644 index ecca9fe2437c5ab999ef11e7a65d87a856362216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7260 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 Tc+NI&f5VZW@-tBxMcMN|8`Dhe diff --git a/42sh/obj/rl_long_move_function.o b/42sh/obj/rl_long_move_function.o deleted file mode 100644 index 79b6abb2bbfcf26a1aaa25f91c6ea7a9be2580db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5336 zcmcInZERat89w*g_u7ur#7Vj~Rr=x0r5~b+v(eIMO(ETy$_<^AZfzNC=+?1s61T4H z`P%(rMNz{hECWk{@dt?yA+-WjZQ?^zRFgVBR5XOvfiw+%K+y_xFhqc5thAy$&$;I& zwv(>i4~}&1d!F~a?{nUB?s?BW_vQcm?Y{vbG@rl&)sI>*@Q9+KEJJ;V%3G9)MQ+Cw zeNa3MPQltrC5mO0?4u>O?czOykM5bnUaLcQTjb-gkq#kDs{CSt!Yh`QwnxfimQyN9 zm1S-J=(dM*MqIDvIV#`7*iDJY5?3_NaFhQE^^T@eN@8n%*V8Vlp>oJM;O{4eRw*vkG)hEI8jo z$&?JSF+Pt^y$*4EzGR`0wXIz85W|}{Ut7gDrQ(^nZG0|Ye&m3B!Hx0FD8AK-?nic{EseplDPXOCN>MZ8_N)3WN% zgA0o9oZ=gfxO@tVun^;3n{qaPGdaoFINzgiUu`)ttN>oP0;L zeww2ts)N(j;N&0vT?w)|c{D0opW^PnICz62ys=&xB_=QQCaMojSDyge#jEV2!^MFp zo65R6cq1|S)95FD(zi0Z;H4!E2mc+XHC^mtN9kWsFUdLeGznj5SUY!l6It=~b zbY(a?Kcejm$20k<#wib}!MHBL$!l1U7Ej}bS4nJ0RI#Gf@>MxSjiYJSi zWHB8dF6Ix|sge`lc%L&a;4_{-G-pnQjg~zlB})p&6(gCF zW0ypsh=ZjhQsc>@$m9xTG_#q)NFH&CLf#Qh=D01&j-3`Rw@8(X4ydGXT#?FS0D*JK zLW=^(DJ4?}<&aKEa7c($K3B34jgpq+=EExS1W6X@t1y=>TFyC{v7DWbat=A(V8+3d zFCGJNT2eYn7WkQ$J~S<2Vp^N_zLpNd*Ag+iTH3UB95Z?klAXY(RFf>~)2FdN-!oWAK>j)b>4rme#7>4{yzlvcZ zrxb%XC2ilg$+W3~X;U53raGq0lF4`xeum%N0m8s;JYE70wgq2-7}ocPUW25eKBC7& z==VTx5vBB4FvMk%D6PjLp?`SD)?=Na>z?1J9*c%a63e&zdiI3$Y-GTFDBt5 zKvP6_k)i^0mS_oC;2n0=Xn?J-O@MAo_Ol4>As}RvZ zWOkH5d+jKJ4sR46c0&LWL_(+GArT_z6ehWh??7h+@m+dkTLR75kFma?|xo@O>TiZB%Y(Zo)X~1E_mZ$5B6t$}Rj2ROa$URAw85VEQeAMBzrD zitiIAAq%$%RopYmiUUx^jjybj3RE#KRzsq2J5a^MS1M)+Ra_dy#SKms_od=`5s)e- zkaFaSKot)OWwjqos+b3gi#bCTlSrw!`Ke+~C>0ZdD&~fwf48?Ez&qnxgvVS_hc{{J z%7j8ySI+B~Ck*;d+@gOo-QA34Cf?^E_f{M=YH%^hwTTFkA%`1pTAZ zt@A9zkkMp*46@(QU?5&VNHg;zS%9w-<|}W*r-$&?x!~A~-EZ*iLmr33QP`d0PM{u2 zEOPh9A+hq^*C3%c`F*E+PRTP$I!Yc?aF4k#H_5<>F7uH<8otr&0u zlI31hVy`@?u$Qm=cV)kq-=~0U%mwqJ7BjbMG269RSlGfv8y9#hopB1;4tA`oD@A)4JaU>gOryhf3laFJx9&qxs?y{wla=1b2Q3{|9Z@ikJWZ diff --git a/42sh/obj/rl_merge_line.o b/42sh/obj/rl_merge_line.o deleted file mode 100644 index 8d8474e796d52528f870e3566c103b617956e466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3944 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 diff --git a/42sh/obj/rl_remove_function.o b/42sh/obj/rl_remove_function.o deleted file mode 100644 index d36ad2968b779b78b590e2f2145e37cafbedd1f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4312 zcmb7He~27c9e*>sGdq{P?C#yg^y2l>jhogKa<^x!dfI3c&6Q0^A;u&|Y?}il9diWm_pBnZ-$ia-B}zc50Lhf*87X#9NMyjgcQ zr@cP-zVDCs{eIr}?fbrYZ(sW7U;dpELQ4pApd_eapv!~MHi2%^_&?hH>!N{+j6sWa zU_i&JS<|I#}(ewW_u_W^jIK|@v3!4ntSm+-{mdD+pW%MDR+6qc;)G7-#tbA?)+lB z(+Xy-cwTL$&X8WbBsUQ4jLPC^mERxm`>Ca`nx9{;&AP#zc<0o9MyNvM(y`R$tKyw3 zJ2J)I{9-({9c#cVHyTyfu9Z(Ry*t)>UgdXGr8DrR`9*m3>Em*Pd-MC1!rQ9wyfxy< z{2FDa7w=y^cu%YmFI;S_y522n6MwCKz~|S9heIbJd-Gf2;Y5qq+gcy#9evOKI`xxS zXJ|KT^IolD+xz!)_=>!$w_VEkZQ!vaH{^s+Ks|WwoIT@XccTE??*1MeQ+RU~iTs^LnY(TyB|5*Q}+RBKsN6R%%Txx2&b# zzHz~#xU`TL+0XW4;L6l3!vFb$=zhpGm0D+)uhZ1lN=sKJq=iGR`TWui?ZSM%?WYi0 zQ@2V>Kh8h)V)h>Kmh)+qfH$@LU};--R-2i}ZM61mZJ~GC-8}jE{ritRl0W78fmg5P zC&wqoC-U2zDn3_ZlM_(JAJ{SeuKPvcJ4NpKm|O8euQprstG4f+te5#j@{}{YvqGUq9|TVNiTvM=&R3Kv?$ub^uL5v(f0Vc(qW-(h6?M z;p1$C!kH`k!mBl!5UXBex{k?2qaKLBJMD^Q;8sN7Rxz`1ntmWcTe2WxP8|~n94#9X z8MGiQJ15{*^@31vN-(Eh3teQRxGk~S*nvd>thSL?Oee6tpKvo*Jp=Nf9fgy(=$ z_ZIA_jbKp>UIjy1B9l%NKnQC+eD@AfnZ!Zslh1_(93Gw@ z49lb0FSbifh=Yog#W#H93Bwa=P&-nCq-C{lkR|jd8()_CCG^ndE=w(BoPH4w*S(F>ME zcd1qMLe6?I)?B?XZ2c6PjGNI5dFz!}o7D?jt)Iu*oL<;w{U+8ty|CT-9keQEIIb5a ztUgFDP&=U)c3GTjGZw5@^+HJ)F4W`;@HaJc9`c_cCWcctz;cPr*6ZNRAdzS0H)Cy! zUPxLivGxwGLr1XmEa-)PVO)l4UPYG$B{!uuf(<7Jtx@n5nl=#dUP!m7y^Ro`gtQ5% zB{$-y5PfC}@($R{&E_D)_d_%uP3{FtSq8C<0?g((x;Yw$Qw^|uD%YMRHP|^zYABwi zj*t{G$XN@BkQy==76!4BX9s2xNpTL0}Rpzf}!!UVSWi*Pf2+#Me}nF%$eg!5HBxN z+4u&)l0_egR||9cQOg^>>zRSGzkDVAlSALkjyU;e&g4g4`_k(#RYqTRHjGT1`&{}S z@TdOv@<{jvZ}fZD?)&TIGw)e>8L__y{R70}yBkyleHe5Y#LfB?=!>AQgT4#80^+Fw z6Ff#6L1^4inz%3cdayB?ChooRx&f6Y7O?VSNz=soRu3C)D@{DI%EW4?iHAjDu~2Ec zicVqibkoH0R)Nnc6Hl-5Vx`iH^{lX1`!w+|C=-jACf2qxv7l*UjVt*7xBID%%0pE9 zV@HUt7JtyxU#&aF<8skX9~9a`PRsSDtc&ns4tImjy}@F+eLMb`irtyqTOX6ngm?{HxlNok-B7<=BK5YwT2Ac+-D4!Up4Lm*Y}y9F!~`3n@@58 zns&+%mph`(OVVLzr;*!dm^-^*hT$Ja>3#S)G5sa{22w%XHpFwOJX^&iU+shj`+ diff --git a/42sh/obj/rl_setup.o b/42sh/obj/rl_setup.o deleted file mode 100644 index b153f269154eb255bf721863bebdb85038b53283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4820 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 EKNq8kTmS$7 diff --git a/42sh/obj/rl_stack_line.o b/42sh/obj/rl_stack_line.o deleted file mode 100644 index 9d2737899a7bbebac995d54172fc21a4bd960762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4116 zcmb7HVQd^n6`tL_-Mibf&*wOG9l1%5UK#?_K2y@lDrxFKjLvQ(8w8k-zv&u4ev`6<;cUYFVe7YXJ0K0cUwC>39$<;MQ~e4p>} z7GhT>cI$3>JQQEGRtvm)xqiLzDZW+7aHV{HbD_l{{d_OU*>_2~F5_!sKe#U_my9o{ zHW$6{oqX5#<&c?6NV?if@-0{0IK=+=6rbD<@!ovZcDvy@&FV74d&l=~lkx480a@=E zU&7a_9gH`)Kfape+ba1!afN(weC?{+&-Xwd-@+C0MMv6~{NC?Nz9;1Ze(ehRaEN2d z{`fo|b`^JLby1lX3W_Cz2_xgO9pdBe(!fK6Cc+lz6*19 zJPm^%L;apSPiG-_0COAmp>`Ke!OHJ{zvZsV>YpnsuM{h*$Ie&QSie-Ltj(TZt88ES ziB@s{evXWl)!B2Em1F0`&{qZk*Jt0lfb#MW*ahdx%ITTPTIXD4bvD4dkS{EJjXHLxb=33$GIk}&%Rqgn*GI6XNvIaS>5HgH8vOiuw!?znOCqaPAs;Fh`1 z6JFhq@T8Q32Ht_Hd&r@6(iP>qLU5F;fnN>k<$Xcxpyx(mdB=_6lIZajelrqr%0%&4 z5hkMMN1+#qc7U9Zgu7G?;Mwj#ZTRh43#_8u3PtGO?}<+6)kWwvFokeCK`0_87GWaX z7A6olG7dBfpg36gHT*D&r-X1@&B#MEQaUj=8z*9NR|AffxY24Z7CX(*Uu=5yBEO-@ z$9f5Lt>6fV>ykN+V%Mn)5sUB@%*s10a>aek%ciN=0@;POu}Jwa5z4)WRm;_F#9%a_<_F>Y7v^IsQpKO0I#)r{b`pKm# zsI}oQbAmK&X397Uk$Di!aVo=Es{8aW*x!UCi(b=9!afDoWly)qHf7&{7)x!iHJIY%-blhM&@-s1t4MJhv=@m+u@oY62I?rP zwI%Zc#Aa0Up7aDnI%AO9cm+-7-)Q#IIF{WHQA`&uPLkfxJxO{*O)`z-NF#uPeGf*& z2my=Ro&GnO`ue;v9kGZOzg>mbiZ`Z_@YU!-s@*Bgs&B z>udN8YzPx6n-k~8VY(Qp6b%=lABZ+i1-jQbtxUs3;yTEIjlRHoS+ zDi@Nk9~12q>LaM!G5m>mBOy_k4Ky)5Mrla)jwWuVG%;Cd;wIxtU}0X;#QCJxacSbI zlO`qry||BZAde|d>)QQy3hlmvRv1WUPRNjkE3lHd@98~{~ z9D=VdehE)adow?XmgkQFYyHn0o*=i;spIEi!>=tw<%_V~2?K@7{>P?o7Cn~mNLY5{ z@5-Ln4=*L=S%{p#tKy}=)49aVgn@9qC0V-C<9PE;o)v=z4$7M4o%``YJ#{~kdqi3BcfCmw}FgcH2ZA+M@3 zP~cC?{_AA_tqHbnl5(4rTcm{GB3ds;QY>W*)pZY&%uKUTEq9gfvy TZ@KO@gwwNe$_d+62lM{{aYueL diff --git a/42sh/obj/rl_state_function.o b/42sh/obj/rl_state_function.o deleted file mode 100644 index 05eca172c5695f450d7bf0b0905ef9043aee643e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3988 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 E0TdRdp8x;= diff --git a/42sh/obj/rl_word_utility.o b/42sh/obj/rl_word_utility.o deleted file mode 100644 index b893a634d66731ff56553d4d56743651ecd0265f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4496 zcmb7HZ){sv6~FJ<_u0=*Z08SIM%u>IU1`-V&PqC>&7%#}$gvveN)v|I_UiawUhCSH z-*cB#&9ud7mCT!zGWEj{ANaO?pa=;ejUlG4ozyWQ)(NC-AAlh?X#>#~6j<2A!tcCy zUurvH3r9Zp+;i@^zjN-p=ic}H`bU5J#KV~6Vral_aG9eCgF&~0SIGE3$ne_(OEd@M z=)h#eK{A3g&CE`lcHh>I#veR-OLuzLCDWJC7RNT_om42yvQQ2+Q9A(#uU4|VSbfVF`qTo<4uW4_Egk>*k?zF+z{_%Ds83M znxBIwwqp}`sdBlH)rzT;l-|1a>LR}fMMD4n%=~P;(&TY#gIn`^S>Wvucn`FR&Mnch z-iG|jsdOvedo6g?P2!m|XWz0`CQZ zCsc;*c7`m|+WFOs7GmpqmjvFQ#q$e`i|HWp6Q-v8=(&Ul+3&OPX|NZ3NUWy-Nj_9| zhrx|RzD;0_gP+kKPb|KdSe#u+)Mr=fp4vO!+6oKKQ>tw%6%i@;14b@jNf=Ne&cy5c$RMJ4<18P zn_XtXv;F8L(za`&J_?j>srFGgI8PM}h{gC#%W?jGTd%z@CDN}Z>f?xcgkt(?E8$JS z0IYUNT8uA$@YU7TRck$o@Sd@oi?2R>CD=a?c*Zuhelc}%Z24;ZCe8Y^CozcepCIKi zJPar2Az$s2@Iw50aGs7)ZT2P$Ubr;03d@u6>kILwCp7?%jh@e0I+2J^)pKiQ6|77= z_dO%whp&v#Efzj>XksjUDqAu1QZYO{FgP$6-jy!k>b+}t5X!*N-hsP!GozA@7Er%; zWiz^|7xU3dL3^}R$!JwmFX-mXK$=Cz4WL9*6+KnSL=RU=$FphEhz{*FrWm}-c-QEq zs$oqdLlNiSR`jCD2%MRkB@A0k>ZXx3S-FDKZL;)Ks>1YQxr%Nbg_TPNGxXD0 zRyDF2W@HNp$061eo8bZ?gna&E?BFhz0c_wv8cLch) zD-crp0v%E(_DUXru~RzWa|Q18-{=2g+i2H*6oHE~S(rw<@aZwsr1Bli75IwZk8`L5 z898`*AZ!T6yj_wj;P(?AV`@8mN4rQF#@*qwE}ExtAJ|ud*Sc-m*qtaFqHo&5YMqak zwaa5g3`!Fx(367FWfCs={Pfe7{wuU@`MhZWRO+BXXyqztounbA6^=0nTADZmv$VYh zX?qjW4hLz5knXUM_#)Q5alBS%8&&mAo*M|#yO(5!hmITBW{I$B`;I0Xj5`zm->dI>2l;w^(|-%6ydlW z8B|xH{f@K~a^!$If!@6`w1ON-Fy#rT{KxQ6B+oPG{~ldeulHSukZYUzS4hgh6{gIu zJK7iIh+F-;qiv^k&~{j!5joPvl(&K9d6&S!?%Ta>5WVhBwF~k#gm-rnU>{jY`y4?$ z0Bs*>J$Mw%=ZT=d3pQn&X8_$Oy8I!&AHw5R2wT|?vnPq>5i<6Aa}Z%qXf2ATvoVUN z%ZXB_dB`B77BR!pkU=j~2n$!*w?-1MTUAL0oB@l-CW%i*+-0k=?|x_E``cXShG9>D zt@44K1`}C@2}#!^k%LP(M6I}l`TzK|1B1Amz(Dj-LHW5D#~%bgBRnD+Bk8P({OE?J z?-F{2(-;v>DErwvJ8zgz>094=!~fcE)7^dld_A-EQeEGA+l7wV!N(W;N1qG!^~0VH zUpVv3Kd$xt^31-EU%|XL!G8h&2OL762>2fGDEJ|82|NeB0Dc}!yNMs8P40mNQK^uL zYDbu8U&%xpElgBNWTFDVWkW^8Wl&2>R%eZhc#J@86&ER z@BZ~~d_>BbS|yvpo35B0n4$v<1HE`{rC^xopxkW?^xf#&?@uWB+RLoDSW)b0cu@h# zCRb46itn8AB6lfy?!L&?i#({zaW%<%P2RV}`(u1-lFKi0uksrADM{X*<6U#SJ;}Eu zxhDow9z!wiQSRp|hI@1T^D*8Q6=}&a8Sh7lJz;OCG9%=dg^UWhQ^;*XhJ}QnLQurfRM2NZYKTGf=C^c9 QL!&i)k&)K?!3LNA0*rA6ApigX diff --git a/42sh/obj/rs_setup.o b/42sh/obj/rs_setup.o deleted file mode 100644 index ad2715c7ccbd9ce6ca0e3fe764296f2b2dc5462c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3128 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 TaET4q72Z}8{(VJt7>fM|LwHRz diff --git a/42sh/obj/shell_get_avdata.o b/42sh/obj/shell_get_avdata.o deleted file mode 100644 index 65b52ae7b718d816929767548a584a40a2d4f358..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6236 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 V0|hHt8Y~rcESGV)EkZ zP!MBXYbLAU_SZgy!5E6TvH!LymC0moWB-gX7z2gMEVdw{e{?E#=iGN+(!AE$9XRiN z+;e{C+>du(^2@!chi(AL3HU&EA&)V91d)-JBP(P-f@(3D=!S@~Y;qF^Xb?$NjrgEp z>ZZLX*1e}i#Uel*nEzUNYU6p%gpbpQ8Gdz`G>+Ypn+m>Vo~{v~+(wKOgTp9k4lc zj&JH5$0OEnK+}1P_Wmq9u`Td;JT03|#nrSnK<&+&?~kHC>xiCzY=0(Rre{CjV0(XC z=o=#rtft%XbQ|8*MdBHUvJ1}l9f8*;`srUJ9=^mJ(%#>ct-qfi zi>GG>aGr)*NWYa#_p0iSZIz_~XcYI!o5DGRc(g?Zo__jG_7-GVsIadLqy%^f7jNDR+lfjWA50sI@-D|N)LR&vJe5Dkd+!T8- z+x%z!pm;A7^`H4ZI$XGOGIr;4$v;G0PLwF})bo20q>|8f z>0(dQ@q%C`Hv*o^^??a%b+nY5A1q@bN{t>BIwU7f*$@mxNcNe4HETf!~DXY>?awV{nI zXoOoggx5a{`J5gZ(30s$J`qo))c&}kX0k>;tV3jP9+M+lE~({uBRg}M{c+vMM_M=J z6Hpy2%&eBn$JJCO-A@oz&U_-1?r_pGdO*lyn-gPOEPlAMmyhd<={ulPhO`zg2nz^BV`I(43` zbuDlT)lx$U{MiZ)t9j#!A@FG))VmWeK^MRL$OdRRI_%Yh?;nn$ zz8jeqh5WQc&B#c!Eaaj!60ZO1#En&`Ta2DdQ0MlHVh(k>5;<{?nwgyy^#R&_ffJ6c_2xF3aoaGi<-Qpw`dBcIe)DyU zIML6%xQ7_yfEIj8(tTe&J|&s~vSeKwV7m(N-k=bup$+5YTq7}8?O&|s0`tmkEYQZ5 zjSpdX#^eNZoo4RWSwQ}q9Lwc?wi<_B9jr;d&VpQ(i_GCH zj55ht-_5}JnkUGfuJuHiEO)TA#~7AyVp@}IFiHM~fu|FzUt%={=8%suk9-yjcCflO z!gpc86&UEkKvRB;*oO$arrROoeDS-4j0Y|>DC7zuy(nGizmJo|xi0$&CAvZv%~^-& zKL(9=iE(lAZVdgcDEa+mLV;kCXVp!ON`uSg%rg4(MYnwrOdU8%T{NmK2A E0n!^i%K!iX diff --git a/42sh/obj/shell_init.o b/42sh/obj/shell_init.o deleted file mode 100644 index 73af4f67a9f832f52a9292f6390a6a9937283717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3940 zcmb7HU5pb|6u#5$oh@`}cY#$AehLOz; zRPzQ%MU7#s+_HSbW7oZYk#X&kmNOwfn42hlzG5kJL%vFrH)9)O*SqoyO&&gc~&slcXFxIRL__E!SPm{(1_$cIa*ne`(Lwvb{F<8OsdJV$&!6C`FO!DoP zd=fHTGX=j)+COha%NC5`@irviZ?e%TIo^vmiEk$S#9bKo94YwQkQ(s66}mscSQ`e0 zIM{lmpwM_J-4Zm8v%E>K{h;r>JOcOHj%#|YdZj@v>pQO1dM_P@?V`jNYr`?UzQe25 zYrW?VGf|`0mrw(}UOlJR%I(6|Gg|BYR+M&KWyzNxMR2}1zYRd&bs`3eM$f2ls`Z|g zRBIbGrM~0rgI^_Iz5}G6b|ULJq1V?o<|?(Xr1LjFog5tPtobfG~?O zYiQ_&`1-;vD9iDSXQ$TtmT>GD)$6^Ddba?z-aXO>W`CC2_1c%R_BAXCI=LdCzVqY= zNT2$AMX6fM+OAfvx|&84ZF;W zWmd9X>no*aa~ap^S}@-!Fw1t?m@_jo%-qg01+yZp<-C<;N{4c9VhWEY+STca4rMY{ zERtlarr`W`DzoYN-~#cPESgvvk7LKHX*8OwESnfjJQRO8KD+G^xV3T?kp^lUThIjA zyOPszR{k_)Eh?2sd?#h|0FaVYl-9`J7l%Zd z8UU5c0_{c~i|j276Y6*eIg7kb*_+5Xy(_8`5q&Uy<8qw>^AkoS#KT_S-K%nOidu9F z?MEJLOO3*9aXd!~lxVk;&`DC53eE9dMOTg&XZOhNct+dz;xgckNHk9rFO7&U zFbIv2Of+C=`nO10(F;WjZ%^c06GfBwp(!tHV9Id2(%#k@+XFA^gRY82e-I6>1;6F; zMEk3e6_fl${1rYCu>}<6kHjRVKwv^r{C$q#>Gb#;T@X#6X%P}lDm*eVHiJ*!$|LGx zKJ65rrRMo`wU0;o`Lvh@>n^TV)%SRZTHrHOm)|$Y6McLlyi#gE*Iwdt`}p)UkM{Gp z`Zb?`mMuW46I&Xa5?dWxgS47=?8VO8!;^iyUG3sYINh1%cl7br^h>CS-SY|WJiw>I z98L31bt|8(9^>-{d9)ARegMm29_izXx-~KZV`S_jq)CjW4nkuNQ*S_Hc~h@I4R0J1qDd^&{bjSl)>4&j3# z{6z>~4PoL6@?8jFstnd+j+^j;5T^4O^nWIVFNLtU&tUUqCkny#>q3~;C0Ktfgg*>n zW>}7iPeo>!`0=w`W_X7$Sf&?;8Clac#hLV7@;TQim0gD!ZU$wrR8VE*UAI&<3Z|Vc z<~#$QqbBS+Zn@duT6U8mQz&M~41=!W;D0ZRcN1MXIk%jzh$4FRiq{JwNC&^0#hhER fnX%0(7DZ6D2@Rrb89$@$ATy{5UO_|9p#b?Cfl5BI diff --git a/42sh/obj/sigchld_handler.o b/42sh/obj/sigchld_handler.o deleted file mode 100644 index d7e807d6abd4dc6c2dd5544873e73fe61b446b56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5956 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 AM*si- diff --git a/42sh/obj/sigint_handler.o b/42sh/obj/sigint_handler.o deleted file mode 100644 index 7e400cb01eb01d14ef15c248c4c51d2210069346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcma)8-)|d55T3Q;#EDbeNhkt=;6M$uD*n+ls1cx2s|me`6jf=`RtQ+m=Zk%jb7$RM zLW*%!Q7OVgk;*^7GcQOLyp$&*fkfYs;2+=xsSic;5kb{-W^XUCw<-2Wv$Hch`|UTo zdu#vt?_Upx09YKbK^;KdNnoR)qCAVLlm7(SqKPPf$ehSWOd!qDAPVP!wHbu{&|jLn zvb66lc(zlOLC(AJBAl`uKRzfs(!{!5#H(24^(seD zF~a%m<+*4$07Fb<2TxM!D=+8&rQczXiYmVdFM{oj zXEYjhi#x^|(R-}k-zCsnqBMZ-d-4nM-14e8V3l7+?#>a3_jjLof?vZhRlJi5-b7LY z?;GVjLVm&3#)0)-mf7dz{8N46;YTbWReoP9{I2!HGu<_;GvMpaC$>}Jd|`IK6o5Mt zPm{rK5RaakTX_HEQ7QFWHNN8E>4p>3_u#I~J|pq&NIdC63ZI&&Pj>J7wH<+|)_au5 zpnMb>NFpzi+fU#}_dvXbsS%M!be=)oiM}Tc&!CSy-~wu=P`#vb$(8V4VVwG3F5fS;cW!|gZqMD*Z~Ux%_*2t% zHd@WAR=qVjb;8%0Ww+jHmh0=S$=u0G({jyL)eW?Z^XKN@TheStYk00{`Mx%3i@_1_ zJ+rXtmUE`-1fE+j_;%HH0$wwmO5O7ECY0zC)fN^mo!2%j&$nGio5>gRMeV3r$9E++ zQ$!~}J(WLktT$L;*+-0m;n{{)DO~W}Rm%+g!t|71gYK2dbzDF$z{c2QdLj`|X9u54 zkFjyw_E;W+2mg zAvqr!(MG>ddzUy0uuC>3unc4I*jJxzivAUvGH?x>1iroc#gZOf39?8>NEi!$ml|9C zLt0i~q0NUWU2`d<&fP`n#P27E)_sZ+QRpf$7(|=Ep9$Iyfa3KpQqyROKjl(2@>%@9 zrG^lO=wNn-$ZaB=E{O=RPZxo0W?6Q0D0vgJXd$}T|2!b9-Q8%Lp_I;U#m*jze#YO& zoEV(Kma+fRhp=U|1}amoEhx7K@2y}nymyrG3`@jDk}oG%tT+)HMl68SAz1FXSO*Tj zh!!_1_jKszXsZz5uwVc%SU?}A4Zb4n3(}$y@mXod&}PK?Gy?DvYKJTOoqkRk2fh;U gh7r`b;|3Mm1Fn1d0uQEjkTIU^8lk_gug5#F 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 diff --git a/42sh/obj/token_append.o b/42sh/obj/token_append.o deleted file mode 100644 index fb2c0e5e535aad6afd96b274ce8c48a4199d2301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2924 zcma)8|7%-S6u<9f_cd#>ByHT>+$M2t{emuOy9!}zXS*%)HMTJ3HusA>USD3D)bu4L zFKr!Gt3_$7gE^SsZ~i8NgNgnkC{&bD95~UxKtb#e3j1X)IIw=sd-t_Tw%Hyy_uTX4 ze(t&F-20N7|NQlD3uBUxVE}If7deI)7_TKgEJB3F+y;WW-@|f;7!GXKi=x z>St2t&ur-4>>V*7JlghJD`S)!lz9>!X=M9-V>%&azELU-K-n%4L|=oWZ`0&iL136%vH%X)K?-u=txEC;dqyhVX` z)mwzTh;BU~zfSlf6cBI&Df!*t8dQQxB7r_~gHM6$iOx$bN?h;SbbeN?{;n?k85>-@ zrB>%^i>W*6(p*hldegs3Ypd7QrBv-mF%o`14wV#jY1U72NsTOg+gkn6iE|cJpRaeQ z5%pr_wzuNF(L0Nyx38!EW=?$1&uTTbTK!2~_&)aXcSH2_Vk0BxMq|@vshlfVv1GhE z-W_|=$m4r)Fxd?y-q#!Nd5V=wMj~&{nx%wYc*V3dJTueE#0{1>TgKXiUdrjEOyX3j zFlicgInmc!&a#|kGb5{)Sp6DTVYcQNSy@QBzGNhkFIW>XXCQ=(ZtJX^yI?YdNo`VB zD9U}Ih_W}-CbgsfawqeJjs^l~kuS`Kqi9?lVeQgjt1omoa3t_Va5(y0kTK4gEKC%o z>_V^`f#0yGA?6wa7`2M~v&q$KHD+yuL~+V9-)AbSQDqLeF~(fcWqb*Oxs?=XZ+ zmsF9&rDW?rSJJsjIHa&d-Icif!R(Bq&tZf%^SPrD0`t9%LAi*5obt&Q+Gn?X)K8{m zG7ZWd%>M~y&yqGIcliCEVMfsMF}WkclpB~{CbeDu2!i`@rCuCT=`bFnJ`TCM`>Qw5 zduWYL>f{PJ&}> zJ--;Jt@OPS2~K}$#IC&l6;IqK!nXka5d10lYcTbYN6Sre#}O$>cSAccO0)-9T7TJiu13C+q2HzY z_lh@;Fz4;Zv+g_C?!E>9_`(w3+3J6c?^Dt|kmkyH-WBHuFzM%=N|rwjb5EKl(|n+x z@9F10n}^ffr@X+!@C20~coecD%@6c**;XoY5UBwdInY)Ios1#((q52hNcfdwLOw3! zqe4PBe)?8Z+{2Jz0up zP_?L45h4nQ=Fq}lfP}d8&>|I(2tq=YdZ>gD;)p;CKyY z`{pxQEa;{DofjCnH>P;7&z&(GWDGW+ZI&%;X@2G^(a%={0umzIYGH z)5oPx-|Xn0i&vjtata*uuO{(EB;LP0;yL~`bR&qj9>9Ad>Q5e4f&97twccqwFy8CZ z`WFc^*&`mB&Vda2_fg0N^5WgMYbXDVdJS>5w6^tj#VTpq^wI7e8xk)gl{3I&RT1}3 z);tieS=JV8RM*|0Y5w=%XNfl<@fs3OE-6M-_U0_T`&X@44q`CgOxU$XD>`&l#yhi( zf1H;TTgG4jV&{jzbJD&H`4HCdgJ!_p#PNFfyj$PP{8VxEx8mx#&EjhNPI0ZhSzLR* zxOVPNarkiY;$2E!-Wc5)5y{Ut-uSk_{gIiTKK*KD*|eLLx|JEr=Ck?Cexr(}es(O6 zMRxR1_Tbahw2fTVTrurjtNx~GX-2J~@wLbrlsnbL?woE{bi0(BvFl5w(Q4*K4>il= zH>Qf!a#hsQoKMu0lCfCHqFT2WGtR*FCB3DSQPyp0R?e7Yn+qg%izgFlHIzt2_9k|V zL8MB_LOCcV`a_8qVlT$_#i!CQ#c_dDQlx4sjdyH>LWv`>7;>&Ai8YZu5bhrQZqg!@ zh{YIyC^`V!sWdOfxPm``-3u6XN)xANWI2v^mF0k(cdn|Z5T^}%5=pVdBBZRZ@I?~I zw=iPWxbCdJ$4FuRA*o@N4I&pXoCPb#`rd;WQjSDFguKS831yg~pJ4VKuL{a=G

? zK0$d|8BS5;YfRU9IT-#JLXE1oAi|$vhzONI&|t3>iX4&0NSj0M+WiYG-28Ku!*ybS z%(^DNy{roE-2!#v?_|TLF>_-uaSsb} z#7ZkpCaXBJQpE*h6<1Kg|6dmR5Ftkb>w6?G4#W7!ON}@)OJXG@Qt`g%C0Oy%kFw=I z47If-_Y)NosrQvv2HZlraVj(kLm~c73}6&|23T~O9F1yJ+a>;w_&XTw4nyZ5$d=u9 z*wwk}p`=jb{a>o-$O(1txH@z~?H^Z_9~A{>5FK_8iR7ewO3KHjgkbE*tdy8jk_V66 Km!k9Xu=+nxJy|9I diff --git a/42sh/obj/token_expand_var.o b/42sh/obj/token_expand_var.o deleted file mode 100644 index bc14a0b11c10058e506f834b64e7cf9976904262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3056 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 APyhe` diff --git a/42sh/obj/token_init.o b/42sh/obj/token_init.o deleted file mode 100644 index 0b21d8c0329b6afb8f8218102f80c79093d2ed86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2768 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 From e4682de358917913093d2b2e47be392e76dbd4b1 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 22 Jan 2017 21:40:30 +0100 Subject: [PATCH 003/206] read script queue ok --- 42sh/includes/.readscript.h.swp | Bin 0 -> 12288 bytes 42sh/includes/readscript.h | 9 ++--- 42sh/src/job-control/sigint_handler.c | 2 +- 42sh/src/job-control/sigtstp_handler.c | 2 +- 42sh/src/job-control/sigttin_handler.c | 2 +- 42sh/src/line-editing/.ft_readline.c.swp | Bin 0 -> 12288 bytes 42sh/src/line-editing/ft_readline.c | 2 +- 42sh/src/line-editing/rl_dynamic_buffer.c | 2 +- 42sh/src/line-editing/rl_setup.c | 2 +- 42sh/src/main/.main.c.swo | Bin 0 -> 12288 bytes 42sh/src/main/data_exit.c | 2 +- 42sh/src/main/data_init.c | 2 +- 42sh/src/main/main.c | 14 ++++---- 42sh/src/main/shell_init.c | 2 +- 42sh/src/read-script/.ft_read_script.c.swp | Bin 0 -> 12288 bytes 42sh/src/read-script/ft_read_script.c | 39 ++++++++++++++++++--- 42sh/src/read-script/rs_setup.c | 23 ------------ 17 files changed, 53 insertions(+), 50 deletions(-) create mode 100644 42sh/includes/.readscript.h.swp create mode 100644 42sh/src/line-editing/.ft_readline.c.swp create mode 100644 42sh/src/main/.main.c.swo create mode 100644 42sh/src/read-script/.ft_read_script.c.swp delete mode 100644 42sh/src/read-script/rs_setup.c diff --git a/42sh/includes/.readscript.h.swp b/42sh/includes/.readscript.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..69ba5059fb6607f965696b954f5b50cda8caa519 GIT binary patch literal 12288 zcmeI2KX21O7{=dr3s8zc3?LyLL_nLMIB|mlEj&L(m`8^b`6HeS@o;*g@#a@SK>QnZBdzPY!}KKU!$YKqtzMT#&vB zh35;^mdQe$8->zArrnB^-AN){VU~w|w#xHu<#m0Ll&2RZb?arFPPb(%Sj3BPAZ@<+ zBG2zd3Trl*)mZbGaB&`D?#9*YccrS|qLt)i7Arh}x*47cYokY!n!B}Teo{+|p7{Npe& M+_eV<51m1O0d?(L>Hq)$ literal 0 HcmV?d00001 diff --git a/42sh/includes/readscript.h b/42sh/includes/readscript.h index 2334db34..11228a50 100644 --- a/42sh/includes/readscript.h +++ b/42sh/includes/readscript.h @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:50:22 by ariard #+# #+# */ -/* Updated: 2017/01/22 00:37:21 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:24:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,6 @@ struct s_script { char *buffer; int b_size; - int used; int q_size; t_list *queue; }; @@ -35,9 +34,7 @@ typedef struct s_script t_script; /* * Read_script setup/cleanup */ - -int rs_setup(t_script *script); - -int ft_read_script(); + +int ft_read_script(char *file); #endif diff --git a/42sh/src/job-control/sigint_handler.c b/42sh/src/job-control/sigint_handler.c index de5ec7dd..93e6c4cf 100644 --- a/42sh/src/job-control/sigint_handler.c +++ b/42sh/src/job-control/sigint_handler.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 15:14:47 by jhalford #+# #+# */ -/* Updated: 2017/01/10 17:24:06 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 20:56:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/sigtstp_handler.c b/42sh/src/job-control/sigtstp_handler.c index ecae88cb..6fd5a311 100644 --- a/42sh/src/job-control/sigtstp_handler.c +++ b/42sh/src/job-control/sigtstp_handler.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 15:14:53 by jhalford #+# #+# */ -/* Updated: 2017/01/11 14:51:27 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 19:03:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/sigttin_handler.c b/42sh/src/job-control/sigttin_handler.c index 1b424bf5..b28e84be 100644 --- a/42sh/src/job-control/sigttin_handler.c +++ b/42sh/src/job-control/sigttin_handler.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 15:14:53 by jhalford #+# #+# */ -/* Updated: 2017/01/09 16:37:32 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 17:22:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/.ft_readline.c.swp b/42sh/src/line-editing/.ft_readline.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..b02632a54ad7b7248e527143145e2f36f058d0f7 GIT binary patch literal 12288 zcmeI2Piz!b9LFDs;wmVh7fp;$n!s-V?Vna?7K&oK0;aTe+gjw`W;^?~9lFe{GqaY` zR1b&}Z+a5(CWtY-}n9A z_r00jrZbm$?a*PmyMKUS+d{~3;$ z$W?Fwlt4FF2d*aw`4lXIQLq)sz@dT@IKAwPldz!%^$cpqEo^#0665AWp)b(BEX`v~e86H<7=~@5m(rZ+p&T)mUMd1f zBl5ZCHk9VhpBLZ+I!$fqx+56=B9y z;m=aSuq`~r)L_j*L}NNUEaoO5k9b}DA*UoC8fIc?!K^Ww9L%9UoI>BFx?`WN`$L2X zlO>}=I%rd~t$FIdB`o)l72s`1fq$_ z*P|-CzT7UGDvT9IrqTC-!sx{8xNL#GT~@=Rc_?9?@w-KP%a$fsJG|gd>QFy3ld7(0 zH;sCHCxKpd5vP1dT`=!b7q2~7wpq9vlG?|<9L~Lo-H0a zaIiU@f%lSQ&M(AFYgEqz>7-O0j1^vv^RF>nvTdtoHmnxaFU1R`dxz>f6dzFw_YOko z9xf(`CcdDsR#?Z&Mqizo2wi1xt-R5&iVnpUP z>UF1GSS(EMF9u374`>0ULgMx5F6{$!|aM(?{Maaobb3*%P?6t{lhLTGKLWjS8dNL!bTq3)=}v zchl~Bw$bi1H@t_NGMuU7iw>*gX)cr9oz7&_xg5=9^O;@w+#sD>rvBs2p^m${x^RTw zV#CAH@|-dp!B+rfxGSB_r87e`JCx51Uq)iFprk!Kk>aUXeUg1^2#aXsSE?{8uz$c;D|b5GF+QSiz=U2me}JP&i^OF7JqT*8{V@E1s7eK{0lAUxtst1 literal 0 HcmV?d00001 diff --git a/42sh/src/line-editing/ft_readline.c b/42sh/src/line-editing/ft_readline.c index 85b96e20..e7b4a105 100644 --- a/42sh/src/line-editing/ft_readline.c +++ b/42sh/src/line-editing/ft_readline.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:03:48 by sbenning #+# #+# */ -/* Updated: 2017/01/22 00:37:17 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:06:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_dynamic_buffer.c b/42sh/src/line-editing/rl_dynamic_buffer.c index 932db10b..c52ea08c 100644 --- a/42sh/src/line-editing/rl_dynamic_buffer.c +++ b/42sh/src/line-editing/rl_dynamic_buffer.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:42:31 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:41:19 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:24:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_setup.c b/42sh/src/line-editing/rl_setup.c index ead0b93e..c505c991 100644 --- a/42sh/src/line-editing/rl_setup.c +++ b/42sh/src/line-editing/rl_setup.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:07:47 by sbenning #+# #+# */ -/* Updated: 2017/01/21 23:27:14 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:25:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/.main.c.swo b/42sh/src/main/.main.c.swo new file mode 100644 index 0000000000000000000000000000000000000000..457e93ebd7784e760e2fe818b783dd64267e4b6a GIT binary patch literal 12288 zcmeI2&2QsG7{+Ij*u_8r?Fu9~O&zv%(=?9L(nenBZa;Sm*>*)+b|ngy>o|#9$2Rt~ zv_t_3v3K|bkoXHg0&zgvBNxsqIC0~^azf(3nP>cwq#tyvrI$rB)h`~;%=^4=9*?6` z@n-3rrJHoBI8M-BAmqzSckf*L^=0zycZ8UsV}><8adNZA!%9%riWB8xJv?FQ$BCeN zEA+Q)i$&^0Iclm=XsIpJ@#2@Fbwa$D5)KFl9?^jvRv)Vjknyrs;tDx=kY2jD{)l2C zOgJDM5Do|jgag6>;ec>JI3OH&935c6Ir0e#e z;ec>JI3OGl4hRQ?1HysF&;b*_@5>hmnS2VxJOKB==ipPY0~+8e(7=m;fZv`bd z5jkGNwGGQ}wM?(3)J$fkW6bxIk+Esl@$91G1v_kH1d-iRdO~$(gtl4Z3l+YmEfML% zrsLW?8$$Yu#|%%MMi`M5IssG6-FLP3cqA(CUyZY4i%bR^HZ#m!UNExaO|=v4qwl~E zSVV{D>WzhJ)mXW;wrW)8kStMgJO>3>1#0eck@@S2+;+U(PJ7dLJMBhjcOqtnjQVvN z2efV9>d-BJ6P9@_^j+#i^l~H@=xGwaxiULPuTptsS*AJ;i;FU{wu$30N#f60D(F#O zj@2|nn$M#uLJnWhu1E1TNDa03Y)ct3qxdqZd8%r8y2(P@Hq0P!_YKFZJ9`S|3v>wn z<9ecB9=SsEno9F3k`PudB1uAcNV`F1 zxlGHNu2uB$DZ05&lgFF;66bO`oZ&TYcsM$p%LM1}p_U0ws#;ksO;V^$l=RmsTyU#t zx^+LS^(1qnT#=@S?sz8H9XL&A6e{T-mZR4flnKu6>%A&o-!iT3YgTA_QPB?@(|zmH zZY(mYXG(pVnc&fwhm3Hwo+9c@)iXi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/07 18:07:50 by jhalford #+# #+# */ -/* Updated: 2017/01/19 21:06:33 by ariard ### ########.fr */ +/* Updated: 2017/01/22 17:20:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index c303d707..2b77bc85 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/01/21 23:28:31 by ariard ### ########.fr */ +/* Updated: 2017/01/22 17:20:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index cd8b64f7..98bf0967 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/22 00:37:15 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:18:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,14 +49,14 @@ int main(int ac, char **av) shell_single_command(shell_get_avdata()); return (0); } + if (ft_read_script(av[1])) + return (0); while (1) { -// if (ft_read_script()) -// return (1); -// else if (ft_readline()) -// return (1); -// if (shell_single_command(data_singleton()->line.input)) -// return (1); + if (ft_readline()) + return (1); + if (shell_single_command(data_singleton()->line.input)) + return (1); } return (0); } diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index 461d8736..eca82051 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/01/21 22:02:05 by ariard ### ########.fr */ +/* Updated: 2017/01/22 20:56:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/read-script/.ft_read_script.c.swp b/42sh/src/read-script/.ft_read_script.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..cfd7b8e5e470c64de7e8ab8484431ba649b44bc1 GIT binary patch literal 12288 zcmeI2&2QX97{;fZ>Oug)r9}cwcTw?vdeju$%)U9yBhjkdEDMi3#P> zS^D^6JIl@0QQ86RfObGTpdHW-Xa}?d+5zpr|H1)2JV8D{B@YzUJX>5(%w3DFzGw%u z1KI)YfObGTpdHW-Xa}?d+5zo=c0fCDA3EUT|NC#BBxKt_^7#M1`u_jbBZOQ5E8x3_ z33(Sh0e)B^ zzfk)<@H_Y!=%yXe4rm9o1KI)Y!2RpMgcvE~qco;wyRuGIdILA5RjEy;9Lv|0 za~s`jSmqYPnyqOs4t+Rh5LWBoVrf#82SXr~1gcsTHzpZ(dFWA*9?X+&sQhV>e}yb0 z=S4}z%)l20A#qVy##5g~<~fzOd|e_SAC58}v+Kp$>SflcoEWiqZlqGlXJQx=u~Ga3 z;cFu{Vs&DSiE({^_d?BG#(Oclf!Ht>S=H%$7POo1fxw54$q=i_9kShf{o?l4=9^+I zm3JHvQVYfV{5c(3BhA*N^ob0?azFN+O76^tJSt_o7!!sv*xU>(f&;;k2g;(TrQW< z!|%M|aC9-I1YgA8f?2^fwQZ<5o%W%Ev|JO4>Qczje^+u1V#N=HaJMgaAo#*fN0qf9 z%X>cKc!M#Qr@gyVbCgKUQA$&qs^r=DC3-^bKoNNs>Pis%b>_JE5|U2Mkx|8syePpX c1QtUaM@iyNG=%&o!Nnz%;IVyB@S(HF-}}G+z5oCK literal 0 HcmV?d00001 diff --git a/42sh/src/read-script/ft_read_script.c b/42sh/src/read-script/ft_read_script.c index 71bbc46b..4e674620 100644 --- a/42sh/src/read-script/ft_read_script.c +++ b/42sh/src/read-script/ft_read_script.c @@ -6,20 +6,49 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/22 00:33:09 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:39:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int ft_read_script() +static int rs_loop(char *file, t_script *script) +{ + int fd; + + script->queue = ft_memalloc(sizeof(t_list)); + fd = open(file, O_RDONLY); + while (get_next_line(fd, &script->buffer) > 0) + { + ft_lsteadd(&script->queue, + ft_lstnew(script->buffer, ft_strlen(script->buffer))); + ft_strdel(&script->buffer); + } + close(fd); + return (0); +} + +static int rs_setup(t_script *script) +{ + ft_bzero(script, sizeof(script)); + script->buffer = NULL; + script->b_size = 0; + script->q_size = 0; + return (0); +} + +int ft_read_script(char *file) { t_script *script; script = &data_singleton()->script; + if (!file) + return (0); if (rs_setup(script) < 0) return (-1); -// if (rs_loop(script) < 0) -// return (-1); - return (0); + if (rs_loop(file, script) < 0) + return (-1); + script->buffer = NULL; + DG("{inv}{bol}{gre}read of script{eoc} script detected"); + return (1); } diff --git a/42sh/src/read-script/rs_setup.c b/42sh/src/read-script/rs_setup.c deleted file mode 100644 index 4d735c14..00000000 --- a/42sh/src/read-script/rs_setup.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* rs_setup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/21 23:08:04 by ariard #+# #+# */ -/* Updated: 2017/01/22 00:33:27 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int rs_setup(t_script *script) -{ - ft_bzero(script, sizeof(script)); - script->buffer = 0; - script->b_size = 0; - script->used = 0; - script->q_size = 0; - return (0); -} From f81a51cdd8c216537b14289a335c965f4d91109f Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 22 Jan 2017 22:55:34 +0100 Subject: [PATCH 004/206] others shebang ok --- 42sh/includes/.readscript.h.swp | Bin 12288 -> 12288 bytes 42sh/includes/exec.h | 2 +- 42sh/includes/minishell.h | 5 +- 42sh/includes/readscript.h | 4 +- 42sh/script.sh | 2 +- 42sh/src/exec/exec_ampersand.c | 2 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/process_setexec.c | 2 +- 42sh/src/line-editing/ft_readline.c | 2 +- 42sh/src/line-editing/rl_merge_line.c | 2 +- 42sh/src/line-editing/rl_setup.c | 2 +- 42sh/src/main/.main.c.swo | Bin 12288 -> 12288 bytes 42sh/src/main/main.c | 7 +- 42sh/src/main/shell_get_opts.c | 2 +- 42sh/src/main/shell_init.c | 2 +- 42sh/src/read-script/.ft_read_script.c.swp | Bin 12288 -> 12288 bytes .../.rs_shebang.c.swp} | Bin 12288 -> 12288 bytes 42sh/src/read-script/ft_read_script.c | 4 +- 42sh/src/read-script/rs_shebang.c | 78 ++++++++++++++++++ 21 files changed, 104 insertions(+), 18 deletions(-) rename 42sh/src/{line-editing/.ft_readline.c.swp => read-script/.rs_shebang.c.swp} (69%) create mode 100644 42sh/src/read-script/rs_shebang.c diff --git a/42sh/includes/.readscript.h.swp b/42sh/includes/.readscript.h.swp index 69ba5059fb6607f965696b954f5b50cda8caa519..747c167aa887573d7bd2381b8b4521531f6f0ddd 100644 GIT binary patch delta 163 zcmZojXh;xCG6?hZRWR2xW&i>K28Jh!tr1x-H;P?mW-TpA)3wJrlZoBP%Fxov*l4qd?hYmZ DL%1&f delta 98 zcmZojXh;xCG6?hZRWR2xW&i>K1_pl7)`*q&H;P?mo|wS8`5m(o52MCrL4nWwyx%w( w7&dW1RB22WR9MUg;%(&G%*gVCb8@v7-{u2ajZEx@Rz@aPCgz(xbayZT00|HpYybcN diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index e9f22dc9..279d7450 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/19 21:03:13 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:42:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 47191403..e0a4a1f4 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/22 00:37:20 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:50:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,8 +41,9 @@ struct s_comp # define SHELL_OPTS_LC (1 << 1) # define SHELL_MODE_INPUT (1 << 2) # define SHELL_MODE_EXEC (1 << 3) +# define SHELL_MODE_SCRIPT (1 << 4) -# define SHELL_MODE_MASK (SHELL_MODE_INPUT | SHELL_MODE_EXEC) +# define SHELL_MODE_MASK (SHELL_MODE_INPUT | SHELL_MODE_EXEC | SHELL_MODE_SCRIPT) # define SHELL_HAS_JOBC(b) (b & SHELL_OPTS_JOBC) # define SHELL_MSG_NOJOBC "no job-control" diff --git a/42sh/includes/readscript.h b/42sh/includes/readscript.h index 11228a50..d12f2cc3 100644 --- a/42sh/includes/readscript.h +++ b/42sh/includes/readscript.h @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:50:22 by ariard #+# #+# */ -/* Updated: 2017/01/22 21:24:47 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:19:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,4 +37,6 @@ typedef struct s_script t_script; int ft_read_script(char *file); +int rs_shebang_check(char *file, t_script *script); + #endif diff --git a/42sh/script.sh b/42sh/script.sh index 8fb9fff0..4065c7cb 100755 --- a/42sh/script.sh +++ b/42sh/script.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/yolosh while [ 1 ]; do sleep 1 echo "a" diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index ad4123d8..a3ab0fa9 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/01/11 14:41:54 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 22:08:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 6b2c2562..17da9096 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/01/12 13:14:35 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 22:16:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index b656db94..462674d4 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/01/21 22:56:51 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:08:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 9857891f..ca0b0bbe 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 00:12:56 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:11:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 2ce1d0a3..db7afc51 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/01/11 18:01:36 by jhalford ### ########.fr */ +/* Updated: 2017/01/22 22:16:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/ft_readline.c b/42sh/src/line-editing/ft_readline.c index e7b4a105..90f36e9e 100644 --- a/42sh/src/line-editing/ft_readline.c +++ b/42sh/src/line-editing/ft_readline.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:03:48 by sbenning #+# #+# */ -/* Updated: 2017/01/22 21:06:24 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:43:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_merge_line.c b/42sh/src/line-editing/rl_merge_line.c index 50ee04af..91a3f8ff 100644 --- a/42sh/src/line-editing/rl_merge_line.c +++ b/42sh/src/line-editing/rl_merge_line.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 01:25:03 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:34:25 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:56:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/rl_setup.c b/42sh/src/line-editing/rl_setup.c index c505c991..4870c0a7 100644 --- a/42sh/src/line-editing/rl_setup.c +++ b/42sh/src/line-editing/rl_setup.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:07:47 by sbenning #+# #+# */ -/* Updated: 2017/01/22 21:25:10 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:46:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/.main.c.swo b/42sh/src/main/.main.c.swo index 457e93ebd7784e760e2fe818b783dd64267e4b6a..2ec104e90ca9acf3f0e70c01db2d7441b7d38cf5 100644 GIT binary patch delta 151 zcmZojXh;xCG6?hZRWR2xW&i>K28NZItr1J#ZWQ~)&*->WP~bB^?`<{)hTrTES;xtO z3fGM;a4;~;0^%MZ?gZjGAg%)9R3HumVi_Rj1!68B{tMLkn|(7Q%R{!wY#Kt7Jv3@3 jf6!2$T%;k(V$Hx=z4?+xJ`1~%m8p@HiQ#4s-5pE-e~2Sv delta 179 zcmZojXh;xCG6?hZRWR2xW&i>K28Ox9tq~4)Hj4e?XSCZaDDat|SBag0!HfeUYd2X? z;kw=tAa5rSZw2B7Ks*tM!-3cXh+To$0*FC6l!2IyV>2Vm2e!$-)rI8r^*K2?i&9HU ui}Gq2pbP~K15IlN&RT|Appt%GWKqt|mo)NO*bS`=Ev$^qH+$&rU;+T9#wmpW diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 98bf0967..e64ce801 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/22 21:18:37 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:52:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,10 @@ int main(int ac, char **av) return (0); } if (ft_read_script(av[1])) - return (0); + { + shell_single_command(data_singleton()->line.input); + return (0); + } while (1) { if (ft_readline()) diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 04fb5a22..9096ee5e 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/01/19 21:23:17 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:18:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index eca82051..c6f549e0 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/01/22 20:56:35 by ariard ### ########.fr */ +/* Updated: 2017/01/22 21:58:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/read-script/.ft_read_script.c.swp b/42sh/src/read-script/.ft_read_script.c.swp index cfd7b8e5e470c64de7e8ab8484431ba649b44bc1..48f63c7ad8edd66f56957b07b7e6718865e5f452 100644 GIT binary patch delta 205 zcmZojXh;xCG6?hZRWR2xW&i>K28MTvtr0mdH;Vn@XSCQXDDat|SDJ%?L7WpJYcW|+ z;k;f4kXH%Bi9oCd#F9V^QXvDxd_c?##5_R!4yf}6$7V*B{p^!(Xo#8QmDScVa2BPO zlosVFXc%f*GjO_K2)Jt~)q((2;bec!O5Wm()TG3`^!VhA)a2~RXEe1ppU|viW;e1j Ow6roY+U%jbg9!lmnle%V delta 216 zcmZojXh;xCG6?hZRWR2xW&i>K28O8;tr7Z9H;Vn@XEfU^DDat|H=2Wi!JiW%Yc^R> z;k@2VATJJx1A!PM;|IicK&%bKl0f_qsN**fzXReM9Ge+gPO(out05*(%fMNbT2fk+ zr=Ve|3FH6;B`vCxP=u`+I9=Q^MKpjy$fC8iAkC8vG!r(T(5z%;H?%Ugv@)^W?4i4Z F2>`VYH5mW^ diff --git a/42sh/src/line-editing/.ft_readline.c.swp b/42sh/src/read-script/.rs_shebang.c.swp similarity index 69% rename from 42sh/src/line-editing/.ft_readline.c.swp rename to 42sh/src/read-script/.rs_shebang.c.swp index b02632a54ad7b7248e527143145e2f36f058d0f7..7e751dc17c105905aa9072af6a2f21ece24025a8 100644 GIT binary patch literal 12288 zcmeI2Pi)&%9LIl!vEe}h!GS-g*Hl`aq=^%!sK}$yMpwi{+f6E+CZ-a(&dcJ}b%O0| ztJ)0-Q7%Z_nUD}j960TS;D7{25GN2qf&(Y6oW?lweR+1`wpr;$BsBCqeQNvp_rCtU zuYd1VQ{QUo-01~2U91p}Cy0K_ZlC|=k7vn#dW7u2wS&5Nu>Zj;!3%A(T%0nCjbNY9 z>r&7-8?-KQCkl-zGi(}R;1~h7>xIw>+;(IHVJ&R(RolN#R@ z)k!&^98eA@2b2TK0p);lKslfsP!1>ulmp6v`_KU!f8RfHi0HyYNFIOxPyYXZ^Kqg# zz$p0YF`_l_9QbaO=qi{1KR-&e4c-CkzylRf20EAkN5Nl@5Zwa5g0I1s;B)XP_yl|m zeBgm1VBq(o&<7uY_rMu&5Ix?}BYG531nSVWOMheQ*Li1HOk>-+~)p9b5t{KzR5%uz)(01ImH_ zjRV(63wYECeAd6xOWEV3HKJO(6NOQr*X_uzg|2_m<5A1kukDV+y|ybRTd20$QOLGt z*wQO=^YgWZGpFWibLZz~p?s&{V>9e}Dth7M(yNHxB#nC^XKsV($O#Gg&U#yS{fGx` z+_oHV~jhs8m`C1_=oe- zG4WDu;9E0cQ)C;zP7E(KCXwyp^87s8+G0rfvhBHbWZN5aI<_~o)N?i?y2bm=YHd3R z#bEp0<({-c_010N@Iuw+SEEAJX(7Uo#ORZ%khLI^8%Q7O(Y1)C7 zOTGCxZ4z!Z`5okbxSG@C&YCV_Sxy)-$?&1OyXIIBY0luVDyx2p(Kz zdxJ%N6ub2SFIPK_1`i;bRG=N{vQ2)$bk%jgXgq_u)tZXUFnscI`eA#cCzNt2t(R)f zik|YlNGi^SU(w4Ya|(|VyOV4;DU9sMb=c*WTOUyO((si2B3F<2$TH{^MRx?l zn~-t=(*IdCa^#%pE(6^ezG|Z-J-PoAt>I<0Haw|4UWtZ#vZ`xxx+F6@ZSU2YnAihX zt38z_ste0vQeI-I6SXaVmAHihuKFv`v3M1`kk7j-B1jXJmo&O7VyT=kCa|<`l6Iwu zjX%)pGl;o^m*e5;h&WzT#d7T4hMb33{0~C7>dEy5U)r#eVZA7acOs1N z1^r0w_O7P-BqDh$QA%khL*5yGfIFeqS45t%dLq~_z@l>iIT2#zEg2bK$WtPCK#`qc amX%22N*s9nuLO6>%R4DJw26XAXVBjbAVJaq literal 12288 zcmeI2Piz!b9LFDs;wmVh7fp;$n!s-V?Vna?7K&oK0;aTe+gjw`W;^?~9lFe{GqaY` zR1b&}Z+a5(CWtY-}n9A z_r00jrZbm$?a*PmyMKUS+d{~3;$ z$W?Fwlt4FF2d*aw`4lXIQLq)sz@dT@IKAwPldz!%^$cpqEo^#0665AWp)b(BEX`v~e86H<7=~@5m(rZ+p&T)mUMd1f zBl5ZCHk9VhpBLZ+I!$fqx+56=B9y z;m=aSuq`~r)L_j*L}NNUEaoO5k9b}DA*UoC8fIc?!K^Ww9L%9UoI>BFx?`WN`$L2X zlO>}=I%rd~t$FIdB`o)l72s`1fq$_ z*P|-CzT7UGDvT9IrqTC-!sx{8xNL#GT~@=Rc_?9?@w-KP%a$fsJG|gd>QFy3ld7(0 zH;sCHCxKpd5vP1dT`=!b7q2~7wpq9vlG?|<9L~Lo-H0a zaIiU@f%lSQ&M(AFYgEqz>7-O0j1^vv^RF>nvTdtoHmnxaFU1R`dxz>f6dzFw_YOko z9xf(`CcdDsR#?Z&Mqizo2wi1xt-R5&iVnpUP z>UF1GSS(EMF9u374`>0ULgMx5F6{$!|aM(?{Maaobb3*%P?6t{lhLTGKLWjS8dNL!bTq3)=}v zchl~Bw$bi1H@t_NGMuU7iw>*gX)cr9oz7&_xg5=9^O;@w+#sD>rvBs2p^m${x^RTw zV#CAH@|-dp!B+rfxGSB_r87e`JCx51Uq)iFprk!Kk>aUXeUg1^2#aXsSE?{8uz$c;D|b5GF+QSiz=U2me}JP&i^OF7JqT*8{V@E1s7eK{0lAUxtst1 diff --git a/42sh/src/read-script/ft_read_script.c b/42sh/src/read-script/ft_read_script.c index 4e674620..92a11f9d 100644 --- a/42sh/src/read-script/ft_read_script.c +++ b/42sh/src/read-script/ft_read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/22 21:39:49 by ariard ### ########.fr */ +/* Updated: 2017/01/22 22:19:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,6 +48,8 @@ int ft_read_script(char *file) return (-1); if (rs_loop(file, script) < 0) return (-1); + if (rs_shebang_check(file, script) < 0) + return (-1); script->buffer = NULL; DG("{inv}{bol}{gre}read of script{eoc} script detected"); return (1); diff --git a/42sh/src/read-script/rs_shebang.c b/42sh/src/read-script/rs_shebang.c new file mode 100644 index 00000000..090cb834 --- /dev/null +++ b/42sh/src/read-script/rs_shebang.c @@ -0,0 +1,78 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rs_shebang.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/22 21:42:27 by ariard #+# #+# */ +/* Updated: 2017/01/22 22:53:34 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static char *rs_shebang_parse_interpreter(char *shebang) +{ + int i; + + i = ft_strlen(shebang) - 1; + while (shebang[i]) + { + if (shebang[i] == '/') + return (&shebang[++i]); + i--; + } + return (NULL); +} + +static int rs_valid_interpreter(char *interpreter) +{ + if (ft_strncmp(interpreter, "bash", ft_strlen("bash")) == 0) + return (1); + if (ft_strncmp(interpreter, "csh", ft_strlen("csh")) == 0) + return (1); + if (ft_strncmp(interpreter, "ksh", ft_strlen("bash")) == 0) + return (1); + if (ft_strncmp(interpreter, "sh", ft_strlen("bash")) == 0) + return (1); + if (ft_strncmp(interpreter, "tcsh", ft_strlen("bash")) == 0) + return (1); + if (ft_strncmp(interpreter, "tcsh", ft_strlen("bash")) == 0) + return (1); + if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) == 0) + return (1); + return (0); +} + +static void rs_set_line_input(char *interpreter, char *file) +{ + char *buffer; + + buffer = ft_strnew(1024); + ft_strncpy(buffer, interpreter, ft_strlen(interpreter)); + ft_strncat(buffer, " ", 1); + ft_strncat(buffer, file, ft_strlen(file)); + data_singleton()->line.input = buffer; + data_singleton()->opts &= ~SHELL_MODE_MASK; + data_singleton()->opts |= SHELL_MODE_INPUT; +} + +int rs_shebang_check(char *file, t_script *script) +{ + char *interpreter; + + if (!script || !script->queue || !script->queue->next) + return (0); + interpreter = rs_shebang_parse_interpreter(script->queue->next->content); + if (interpreter == NULL || rs_valid_interpreter(interpreter) == 0) + rs_set_line_input("sh", file); + else if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) != 0) + rs_set_line_input(interpreter, file); + else if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) == 0) + { + data_singleton()->opts &= ~SHELL_MODE_MASK; + data_singleton()->opts |= SHELL_MODE_EXEC; + } + return (0); +} From 830b04208e38f8e3d35b6415af0c9836243a4e01 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 22 Jan 2017 23:32:57 +0100 Subject: [PATCH 005/206] shell tokenize newline debut --- 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 4 +- 42sh/includes/readscript.h | 2 +- 42sh/script.sh | 3 +- .../.ft_post_tokenize.c.swo} | Bin 12288 -> 12288 bytes .../.ft_tokenize.c.swo} | Bin 12288 -> 12288 bytes .../lexer/.reduce_bquotes.c.swo} | Bin 12288 -> 12288 bytes 42sh/src/lexer/ft_post_tokenize.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/reduce_bquotes.c | 2 +- 42sh/src/line-editing/ft_readline.c | 2 +- 42sh/src/main/.main.c.swo | Bin 12288 -> 12288 bytes 42sh/src/main/.shell_script.c.swp | Bin 0 -> 12288 bytes 42sh/src/main/main.c | 8 +++- 42sh/src/main/shell_script.c | 42 ++++++++++++++++++ 42sh/src/read-script/ft_read_script.c | 2 +- 42sh/src/read-script/rs_shebang.c | 4 +- 17 files changed, 62 insertions(+), 13 deletions(-) rename 42sh/src/{read-script/.rs_shebang.c.swp => lexer/.ft_post_tokenize.c.swo} (71%) rename 42sh/src/{read-script/.ft_read_script.c.swp => lexer/.ft_tokenize.c.swo} (81%) rename 42sh/{includes/.readscript.h.swp => src/lexer/.reduce_bquotes.c.swo} (86%) create mode 100644 42sh/src/main/.shell_script.c.swp create mode 100644 42sh/src/main/shell_script.c diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index ec98c235..75cfab31 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/22 00:37:19 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:30:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index e0a4a1f4..0e5c6b2b 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:50:22 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:21:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -73,6 +73,8 @@ void data_exit(void); int shell_single_command(char *command); +int shell_script(void); + void ft_expand_dollar(char **av, char **env); char *ft_findexec(char *path, char *file); diff --git a/42sh/includes/readscript.h b/42sh/includes/readscript.h index d12f2cc3..29c91132 100644 --- a/42sh/includes/readscript.h +++ b/42sh/includes/readscript.h @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:50:22 by ariard #+# #+# */ -/* Updated: 2017/01/22 22:19:32 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:02:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/script.sh b/42sh/script.sh index 4065c7cb..35caedf2 100755 --- a/42sh/script.sh +++ b/42sh/script.sh @@ -1,4 +1,5 @@ -#!/bin/yolosh +#!/bin/minishell + while [ 1 ]; do sleep 1 echo "a" diff --git a/42sh/src/read-script/.rs_shebang.c.swp b/42sh/src/lexer/.ft_post_tokenize.c.swo similarity index 71% rename from 42sh/src/read-script/.rs_shebang.c.swp rename to 42sh/src/lexer/.ft_post_tokenize.c.swo index 7e751dc17c105905aa9072af6a2f21ece24025a8..f9f7efee1f6eda2a16b206f538686718b4d5c878 100644 GIT binary patch delta 566 zcmbV}zfaph6vtmgQ8A?aS^z~zuR(x`5)&sXsRBe9DxgBFh^fYL&cwtyhx1uLt3nv~ z1CTd129|DB#!mbdh>-<0h8C%7UmWPb$mu@Py{C5{eRbE`Zfz$j+0D-zSkUr7YZ%~8 zKi%5+Jps8vI7`&WU3S34ye*BU=SxF+b;g~qOtXGotoQT=($0KrKlCKyu|#`h_|MS0 z>wW-ZpleEmBUmWy#Q~Z`nJ5u?B1iNQe`)fb_(l96&IwMKM91=FpdEX2(|`OO6v1R5 zII7vXMNmGis!7iF(efG%lULCeUIQz8fhU=5K7Ud!pC=QpAZV|pgbbk5D zsx(~3mpGM5MLE!_nF3RtEC5pux7?u0Fd2PO*h*i$%@=cp;)iUwmRT9ob<`J%x=tG_ yhqzlaUE34Y@G^5W`CQ=Au4&cFmN2=md19x8w8FA>GWs%#W`(!u_w7e59{UFYaiG}% literal 12288 zcmeI2Pi)&%9LIl!vEe}h!GS-g*Hl`aq=^%!sK}$yMpwi{+f6E+CZ-a(&dcJ}b%O0| ztJ)0-Q7%Z_nUD}j960TS;D7{25GN2qf&(Y6oW?lweR+1`wpr;$BsBCqeQNvp_rCtU zuYd1VQ{QUo-01~2U91p}Cy0K_ZlC|=k7vn#dW7u2wS&5Nu>Zj;!3%A(T%0nCjbNY9 z>r&7-8?-KQCkl-zGi(}R;1~h7>xIw>+;(IHVJ&R(RolN#R@ z)k!&^98eA@2b2TK0p);lKslfsP!1>ulmp6v`_KU!f8RfHi0HyYNFIOxPyYXZ^Kqg# zz$p0YF`_l_9QbaO=qi{1KR-&e4c-CkzylRf20EAkN5Nl@5Zwa5g0I1s;B)XP_yl|m zeBgm1VBq(o&<7uY_rMu&5Ix?}BYG531nSVWOMheQ*Li1HOk>-+~)p9b5t{KzR5%uz)(01ImH_ zjRV(63wYECeAd6xOWEV3HKJO(6NOQr*X_uzg|2_m<5A1kukDV+y|ybRTd20$QOLGt z*wQO=^YgWZGpFWibLZz~p?s&{V>9e}Dth7M(yNHxB#nC^XKsV($O#Gg&U#yS{fGx` z+_oHV~jhs8m`C1_=oe- zG4WDu;9E0cQ)C;zP7E(KCXwyp^87s8+G0rfvhBHbWZN5aI<_~o)N?i?y2bm=YHd3R z#bEp0<({-c_010N@Iuw+SEEAJX(7Uo#ORZ%khLI^8%Q7O(Y1)C7 zOTGCxZ4z!Z`5okbxSG@C&YCV_Sxy)-$?&1OyXIIBY0luVDyx2p(Kz zdxJ%N6ub2SFIPK_1`i;bRG=N{vQ2)$bk%jgXgq_u)tZXUFnscI`eA#cCzNt2t(R)f zik|YlNGi^SU(w4Ya|(|VyOV4;DU9sMb=c*WTOUyO((si2B3F<2$TH{^MRx?l zn~-t=(*IdCa^#%pE(6^ezG|Z-J-PoAt>I<0Haw|4UWtZ#vZ`xxx+F6@ZSU2YnAihX zt38z_ste0vQeI-I6SXaVmAHihuKFv`v3M1`kk7j-B1jXJmo&O7VyT=kCa|<`l6Iwu zjX%)pGl;o^m*e5;h&WzT#d7T4hMb33{0~C7>dEy5U)r#eVZA7acOs1N z1^r0w_O7P-BqDh$QA%khL*5yGfIFeqS45t%dLq~_z@l>iIT2#zEg2bK$WtPCK#`qc amX%22N*s9nuLO6>%R4DJw26XAXVBjbAVJaq diff --git a/42sh/src/read-script/.ft_read_script.c.swp b/42sh/src/lexer/.ft_tokenize.c.swo similarity index 81% rename from 42sh/src/read-script/.ft_read_script.c.swp rename to 42sh/src/lexer/.ft_tokenize.c.swo index 48f63c7ad8edd66f56957b07b7e6718865e5f452..c523a7884ea4a4303ff526dbeb2ae48a1988f264 100644 GIT binary patch literal 12288 zcmeI2OKa3n7>196i>OtxDB9I&2W;lzWRfYiq*h8r(S;yLi{NF*WX^QbrkQDyY3m)l z`~??+OI^5eCAe^@f`35z3;Y3sd*7T%CUL;hYBz=N49}d~m-n3WCRq&g)hi2Eukp!p zm7yGC?2Y!~=ETp_Y~&DQmhV`8BbwN{h^jx;G4%3;QEvKMgg)*GYS;btlCZ--n=pcw z7WlU2iVfjw&9D}>mxbrt7iD`39hxEs$blU?&<&esr-oS7&@0iExv^0`e0+X~A{0&z zkOSlZIY17O1LOcXKn{=td)a}ovyVN&0rtm-FyeaOKpl6fA_vF;a)2Bl2gm_(fE*wP z$N_SI93ThCfj#Jeh5z?2DU9V0V)OX_Kl%Ot{wQO2!4UX#gt28X0=^9~wgJY$_rr|6 z0MEfH=zuve3pBvNFgO5yA)nv}*aTm}2k;iW1kb=45TFh$a0Ofjr@%>Y0&HTB-@zB~ z8GHoqz-#adJOvBj1}K8)Oe&y44v+)n069PokOSlZIq(k-JYtG3!mjUeRV^&mWX9&L zAhbepC$Cy=5SDll`uY4cQxK{Yq9H!Rk<*EWC)QP&+KC`!cea~qL3U-hBAbYnbp0BFvV$dbyP~_p_!~-iDr9K(UOcQapI`bQ=MiHnB#?tl1V64u@473DoC{ww_BFa z3%I<*F(WqQNpJ$32ZEWy+I(h)kK^<3A@8+shuMxdj@_i|IYF%ev{Se2<-oOqRyx#J?Y2Xa_6NGI2m;G%r1Oiuu);q^qL6|4wCiLRm)^|qf83q&Ukm50i9n^xBiOUcR8M*>g7->lB_86+M$p6zxUf{#g0%B?Z{SSaAW z>{j6gEfU2!{A2M)Td0n%Io)dFTFXla4wfa58tvNIXa$8 z1TRLnD;7Mb>AI#@xL!4@lcugmf=eySZQ`D!lDT4}$m6O%o(T2_w$ms=CH^2Bt;|J< z;M_ek-NpG8%U^T6S()d3ArswiN|BS3*fWGYZ1b6E_Dd45k*l#@qiFE(~ literal 12288 zcmeI2&2QX97{;fZaA^vH1C%dKc2V$dcGtU3q$W;SA*h6kLW_`spi)_R?Qz!BvA6at zZMs@M1eG{);9ua3DmWnyT)A>U964~|Qcj3#pRqm7CL5v!aw&Qz`ekg-%=5nQfwX#2Ts4s7+BL~O< za)2Bl2gm_(fE*wP$N_SI93ThCfd|k57ysXX=3&O3G>|<0|F6IQfBh(9?|}vI{aMDY zfv3Tb3yj?aFM^-XFm@Y!26jONHo!WtKnpPN+arv93+{j~!4FcOVYwZ=DjyY_eMq9hsqgXtM;8k$9FGs10^w#sKw z#Yf0u9#UWOUFr6+Fy4uTOk%Uv>=t7ij2W^#vT4-yvoQ-}X&A=ABb}xA4#^e_rNa zV>8KlQIZKW@RdPGTosnd)EAMtr1LIbvzm|(N12SpjWV|01Pxv+j6{5Bq*lvUVi*gt z!Tf#U>mxA|4Q7m)abtk@!p$8ad$G8QxnZobYVgBZ@NT|k0v|pmLqsb!)aBk=7cO7g zdRN8LdFS$&hS0lW*NvjYGfU%CfJ~~)ur1UJ4g6UT^9{KFW*htnJF8*rMI&GE%5E5k z*y>T#8dUIQq0Z|k)_C1gf+yIt;Pw#PU-%BU+nw`PyJOilw{54h?yTCpzsHN?%~OG^ z)hh1rJ8w7~U5;tNSMfLGpkPM{uC6;Pog)Q#by+Fuu9V~duHUlDnh>RJ%{^}uoQIV7EBr4NpLoV7Cf;J3O;ley9b;50|fv8 diff --git a/42sh/includes/.readscript.h.swp b/42sh/src/lexer/.reduce_bquotes.c.swo similarity index 86% rename from 42sh/includes/.readscript.h.swp rename to 42sh/src/lexer/.reduce_bquotes.c.swo index 747c167aa887573d7bd2381b8b4521531f6f0ddd..20161d543623c465c8f79d471064b961fe7abdb8 100644 GIT binary patch literal 12288 zcmeHNL2nyH6rLg>b%8VpPSDFVmdbkVc)gn_skTj^g(9JX04YJ0im=wZv-QT#+8K|P zgo?Bhl)r*FapM9%03^8P#2Inn0tdv6Z+2%lc7xJZjVe`oV}0J4_uhQ(%{SwN?di5Z zdG7EZPHtjJUK;scYuRrl@`TWXg3$d)4!1<4 z#_qB|?zv+bxdX8$q$@={iA1NnGZ`u|Zbc_hk&6@{1s+F%iAokP&9NolYwKyXg$w-E zS2iDqfnrGkQh*d71xNu>fD|AFNC8sd8CO7!&ak^!!*gaG`R@SepE2X|X@>M51xNu> zfD|AFNC8rS6d(mi0aAbzAO%Q)XHbC<|L-51Wh}8!JpTVLzyE(X&)8?c9PlIV0`!5` zfuH9X+XLPJ4qsyIKJXQ=1B`&Hz?*;za9|#I9{Be~#{L9;1AYa50e%3!1nvP_z^A}X z;0kaam?pszQ0k1 zz!8gq3CQC+i4-DtJ7XpJnx1C(FxJ6%a&mBK`7IuP@__}UuZxY4=x@#cpc*Xuescj_g~)~zSs0d{-oKyX{H2_uuy)NB$W zOlQGXU<<$mZL!OpB+X*mDNe#g)o=1byl8vW(UsKeAXI(CSM^+G%!+!Uw46d%)KCp` z^2&hit@_1rNi&7D^kFqSVL5re+%QPT%5wAqr-p{{4$G&`-rU7@>N(so_3JV)&<7D0 z57R6fOk%+o@=L$1-U7ZXIB=g<r4jE^X54b8~Sqq3KT zmElo34X~IO!qJ500w1vK2=Cw;~y4OyQ4*fk=fuH>&Sn1r DkQu~@ literal 12288 zcmeI2Pfrs;7{&)~RZ*iSO-u$i{$Y#Vc8dWPV^kF7U?gY_UTn6zvv#3u%kHd#L`_sa zh@Zft(f9>Cc=cpVOuYCJycnO^KTsM%K)Dd#X`aqZ=Y5}f_t$RHrqd|jpT5mUOI3z; zl(8R!Yjg8IPq0(J7_&p)4qdgdeG}DitYcP6BWB49w+Vfo8X7ZUdtNv)GDgg(Y50ND zid_*Ip|IV^3H^>NHMeo0B_cosc1<9b-i5INRy8YSm8+c||X-1)5l(*{Qm3`^sMje>9Z+yM1Tko0U|&IhyW2F0z`la5CI}U1c<;s zBw*wJ{dWb%Ru7txptH~!s2}Qsexs)E&^PES^Z|Mgy@FmsNzMC^ zIh9NVhyW2F0z`la5P|=cfF=Uh_Zag7Stu03s2(*%!ww$Rou+UW&O1#znYluAF(>m)zu#1c7MtSYP;7Cc-B zpS^MQ`rXOd>6v@=TTJu4K*8ShBHjkB?^)wO3&TBZxnZs2DmE53%au{1Tro_Oo2FG6 zx2h&@tnl=BbJxb2reTKXq~UOMww4=C;-kCSu%ZkvmMu7MWyrOna?HETj{n^y7h#q? zV1&`S-G +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:37:25 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:27:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index a75170dc..1e5af252 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/21 20:49:42 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:18:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/reduce_bquotes.c b/42sh/src/lexer/reduce_bquotes.c index 6057e8c0..cb70ee1c 100644 --- a/42sh/src/lexer/reduce_bquotes.c +++ b/42sh/src/lexer/reduce_bquotes.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:46:27 by jhalford #+# #+# */ -/* Updated: 2017/01/20 01:14:32 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:26:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/ft_readline.c b/42sh/src/line-editing/ft_readline.c index 90f36e9e..2570d0f3 100644 --- a/42sh/src/line-editing/ft_readline.c +++ b/42sh/src/line-editing/ft_readline.c @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/08 18:03:48 by sbenning #+# #+# */ -/* Updated: 2017/01/22 21:43:48 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:15:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/.main.c.swo b/42sh/src/main/.main.c.swo index 2ec104e90ca9acf3f0e70c01db2d7441b7d38cf5..5c8f87b25381102a358216a0fb7d91735868ed10 100644 GIT binary patch delta 630 zcmZwD&r8B!90u_3%AAWzg-k*P4}n|$Xka8ds6&}aNs$qO2c;Mkh={Y}%8D-0A=oXD zhz_12Vgwzc{)2?>T|)?>h)x~qu`W#;eAu4v9^Sq0D!EF|wJI(rQ{G4@Ot@@Bwc!5B z?du>lwwO!Thn0!zcH6tPS2Yuzv%i(NX7`?LJGzN1V1_Pea70f~gbakh4__9dH+X>u zs6!PFU=QYC93&7S08X&LJ-&DcH*f*X9h^Xwr3@Y6VHXOJfGD_ug=cK{5w4&H$8ZQa zNW(NlU<`cV1P3rcW}Pu9ChgPLKdX{TTuCl(mI_{86eQwWvf7&e)(!8lUO+HRBttR; z32nZwZRB^yFf4VM);Ie1g$-{7yYE?C4~}F)yB^2d5xU_ delta 222 zcmZojXh@JwG6?hZRWR2xW&i>K28NZItr1J#N-}KP%&<}VD?g*-W7#M!D zLzFm97F1ZA#>vINzz)Q0K>U)Ef#Eq27Xon%5bFc64iGZ{@h1)jhW9{x8Hg_c@hl+j z0pd;|t^?vKAWjA1Fd&uzVqPHT0^+|w+kUfeW@LHDHknaPWU_%e=j2*7{>eAhOD8jG oicWs1F3V`W`J9G3g7nkXN@ zc=crBSwDbZz{IP@c=zVXiw7@0vwv!72mvJ~B=3-?v+vG3&pY$m_CR)4ic8mT@QFg1 zp`B*zm$|+C>c=4aew;BoaP6R`2KH{E98CIVsW5I9>cJkVk7GmQR?xa992pwpX1HpE zfnzjn*E7OZ(P&gdCvbgPaQ5(_AtFEo4oILa>tmAxtZbHwYGyVw#Lu3o9MFW)i2xBG z0z`la5CI}U1c(3;ILZX1-^ZR{1ILn0@ueI_gkT?M)%!EA_F(W*ttx^$wGIe>T!ip?zEas+pDQk9U2iE zHESrY$TX19WYg!DI6lXwJ+Us;Haas((XNt0>2f+XqB%~>lfsjHl+Rw9yHZ(LR3$f= z_Hfm02(BYX?KY}Wv!z`PUGHu~$d;$)#-@|Qw)fkjEl?O3v6P#Yg#`prxlV|<+Hgau z<>949tI;#j@|Y8a$)Msp#Woq9l%{o`=+$#Lbm)3cqg@j`({w#I8ZE457&G!be`t;8 z4P|(UEj6t8ASh}UH;bhSqgXOblbdC$Y+B|7U)kXC@#e0=*=!aOKBI=i(aBh9cr_5a z85S>C+VIQuZ<+#0dsyyPP8Qp0^&^d?zWYKbe=knm52 Ry#-Vp8y?yZ1wT52{RSf%de{H} literal 0 HcmV?d00001 diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index e64ce801..6aceeb75 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:52:41 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:09:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,6 +37,7 @@ int shell_single_command(char *command) /* /1* btree_apply_infix(ast, &ft_putast2); *1/ */ if (ft_exec(&ast)) return (1); + return (0); } @@ -51,7 +52,10 @@ int main(int ac, char **av) } if (ft_read_script(av[1])) { - shell_single_command(data_singleton()->line.input); + if (data_singleton()->opts & SHELL_MODE_SCRIPT) + shell_script(); + else + shell_single_command(data_singleton()->line.input); return (0); } while (1) diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c new file mode 100644 index 00000000..6b680e90 --- /dev/null +++ b/42sh/src/main/shell_script.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* shell_script.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ +/* Updated: 2017/01/22 23:32:27 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int shell_script() +{ + t_list *token; + t_btree *ast; + t_list *tmp; + + token = NULL; + ast = NULL; + tmp = data_singleton()->script.queue; + while (tmp) + { + if (ft_tokenize(&token, tmp->content , DEFAULT)) + return (1); + tmp = tmp->next; + } + if (!token) + return (0); +// if (ft_post_tokenize(&token, command)) +// return (1); + DG("after post_tokenize"); + token_print(token); + if (ft_parse(&ast, &token)) + return (1); + btree_print(STDBUG, ast, &ft_putast); + if (ft_exec(&ast)) + return (1); + return (0); +} diff --git a/42sh/src/read-script/ft_read_script.c b/42sh/src/read-script/ft_read_script.c index 92a11f9d..6e1a9e8f 100644 --- a/42sh/src/read-script/ft_read_script.c +++ b/42sh/src/read-script/ft_read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/22 22:19:42 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:11:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/read-script/rs_shebang.c b/42sh/src/read-script/rs_shebang.c index 090cb834..bc1550f8 100644 --- a/42sh/src/read-script/rs_shebang.c +++ b/42sh/src/read-script/rs_shebang.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 21:42:27 by ariard #+# #+# */ -/* Updated: 2017/01/22 22:53:34 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:11:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -72,7 +72,7 @@ int rs_shebang_check(char *file, t_script *script) else if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) == 0) { data_singleton()->opts &= ~SHELL_MODE_MASK; - data_singleton()->opts |= SHELL_MODE_EXEC; + data_singleton()->opts |= SHELL_MODE_SCRIPT; } return (0); } From 0431add79cfd8de120542b24e1bdd32548a651fb Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 24 Jan 2017 01:27:25 +0100 Subject: [PATCH 006/206] modifs readscript + token newline --- 42sh/Makefile | 5 -- 42sh/includes/ft_input.h | 2 +- 42sh/includes/lexer.h | 8 +- 42sh/includes/line_editing.h | 2 +- 42sh/includes/minishell.h | 12 ++- 42sh/includes/readscript.h | 42 ---------- 42sh/sample/20lines.sh | 20 +++++ 42sh/sample/2lines.sh | 2 + 42sh/script.sh | 2 +- 42sh/src/lexer/.ft_post_tokenize.c.swo | Bin 12288 -> 0 bytes 42sh/src/lexer/.ft_tokenize.c.swo | Bin 12288 -> 0 bytes 42sh/src/lexer/.reduce_bquotes.c.swo | Bin 12288 -> 0 bytes 42sh/src/lexer/ft_post_tokenize.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 5 +- 42sh/src/lexer/get_lexer_state.c | 6 +- 42sh/src/lexer/lexer_backslash.c | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_great.c | 2 +- 42sh/src/lexer/lexer_less.c | 2 +- 42sh/src/lexer/lexer_newline.c | 33 ++++++++ 42sh/src/lexer/lexer_number.c | 2 +- 42sh/src/lexer/lexer_sep.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/reduce_bquotes.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/lexer/token_init.c | 2 +- 42sh/src/lexer/token_print.c | 2 +- 42sh/src/main/.main.c.swo | Bin 12288 -> 0 bytes 42sh/src/main/.shell_script.c.swp | Bin 12288 -> 0 bytes 42sh/src/main/data_init.c | 2 +- 42sh/src/main/main.c | 12 +-- .../ft_read_script.c => main/read_script.c} | 19 +++-- 42sh/src/main/shell_get_opts.c | 2 +- 42sh/src/main/shell_init.c | 3 +- 42sh/src/main/shell_script.c | 17 ++-- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/read-script/rs_shebang.c | 78 ------------------ 39 files changed, 128 insertions(+), 174 deletions(-) delete mode 100644 42sh/includes/readscript.h create mode 100644 42sh/sample/20lines.sh create mode 100644 42sh/sample/2lines.sh delete mode 100644 42sh/src/lexer/.ft_post_tokenize.c.swo delete mode 100644 42sh/src/lexer/.ft_tokenize.c.swo delete mode 100644 42sh/src/lexer/.reduce_bquotes.c.swo create mode 100644 42sh/src/lexer/lexer_newline.c delete mode 100644 42sh/src/main/.main.c.swo delete mode 100644 42sh/src/main/.shell_script.c.swp rename 42sh/src/{read-script/ft_read_script.c => main/read_script.c} (80%) delete mode 100644 42sh/src/read-script/rs_shebang.c diff --git a/42sh/Makefile b/42sh/Makefile index 2e558060..8dcf5189 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -72,11 +72,6 @@ $(D_OBJ)/%.o: $(D_SRC)/job-control/%.c includes/job_control.h @$(CC) $(O_INC) $(W_FLAGS) -c $< -o $@ $(D_FLAGS) @echo "Compiling "$<"..." -$(D_OBJ)/%.o: $(D_SRC)/read-script/%.c includes/readscript.h - @$(MKDIR) $(D_OBJ) - @$(CC) $(O_INC) $(W_FLAGS) -c $< -o $@ $(D_FLAGS) - @echo "Compiling "$<"..." - libft/libft.a: libft/src/*/*.c @echo "libft/libft.a" @$(MAKE) -C libft 2>/dev/null diff --git a/42sh/includes/ft_input.h b/42sh/includes/ft_input.h index 3e2188b4..b7820668 100644 --- a/42sh/includes/ft_input.h +++ b/42sh/includes/ft_input.h @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 02:05:22 by sbenning #+# #+# */ -/* Updated: 2017/01/21 21:49:00 by ariard ### ########.fr */ +/* Updated: 2017/01/23 21:45:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 75cfab31..3263c231 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:30:39 by ariard ### ########.fr */ +/* Updated: 2017/01/24 00:45:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,6 +36,10 @@ typedef long long t_type; # define TK_DQ_WORD (1 << 16) # define TK_COMMAND (1 << 17) # define TK_SUBSHELL (1 << 18) +# define TK_NEWLINE (1 << 19) +# define TK_LOOP (1 << 20) +# define TK_B_LOOP (1 << 21) +# define TK_E_LOOP (1 << 22) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) @@ -44,6 +48,7 @@ typedef long long t_type; enum e_lexstate { DEFAULT, + NEWLINE, DELIM, SEP, WORD, @@ -89,6 +94,7 @@ int ft_is_delim(char c); t_lexstate get_lexer_state(char *str); int lexer_default(t_list **alst, char *str); +int lexer_newline(t_list **alst, char *str); int lexer_delim(t_list **alst, char *str); int lexer_sep(t_list **alst, char *str); int lexer_word(t_list **alst, char *str); diff --git a/42sh/includes/line_editing.h b/42sh/includes/line_editing.h index 941853ac..13c408ec 100644 --- a/42sh/includes/line_editing.h +++ b/42sh/includes/line_editing.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:38:21 by jhalford #+# #+# */ -/* Updated: 2017/01/10 12:46:19 by jhalford ### ########.fr */ +/* Updated: 2017/01/23 21:45:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 0e5c6b2b..d211ec07 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:21:39 by ariard ### ########.fr */ +/* Updated: 2017/01/23 23:31:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ # include "libft.h" -# include "readscript.h" # include "types.h" # include "lexer.h" # include "parser.h" @@ -48,6 +47,14 @@ struct s_comp # define SHELL_MSG_NOJOBC "no job-control" +struct s_script +{ + char *buffer; + int q_size; + t_list *queue; +}; + +typedef struct s_script t_script; struct s_data { @@ -73,6 +80,7 @@ void data_exit(void); int shell_single_command(char *command); +int read_script(char *file); int shell_script(void); void ft_expand_dollar(char **av, char **env); diff --git a/42sh/includes/readscript.h b/42sh/includes/readscript.h deleted file mode 100644 index 29c91132..00000000 --- a/42sh/includes/readscript.h +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* read_script.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/21 22:50:22 by ariard #+# #+# */ -/* Updated: 2017/01/22 23:02:55 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef READSCRIPT_H -# define READSCRIPT_H - -/* - * input : destination buffer - * b_size : allocated size of the destination buffer - * used : acutal used size in the destination buffer - * q_size : number of elements in the queue - * queue : list of queued lines, FIFO -*/ - -struct s_script -{ - char *buffer; - int b_size; - int q_size; - t_list *queue; -}; - -typedef struct s_script t_script; - -/* - * Read_script setup/cleanup -*/ - -int ft_read_script(char *file); - -int rs_shebang_check(char *file, t_script *script); - -#endif diff --git a/42sh/sample/20lines.sh b/42sh/sample/20lines.sh new file mode 100644 index 00000000..0e08c1ea --- /dev/null +++ b/42sh/sample/20lines.sh @@ -0,0 +1,20 @@ +ls +pwd +mkdir +cd +ls +pwd +mkdir +cd +ls +pwd +mkdir +cd +ls +pwd +mkdir +cd +ls +pwd +mkdir +cd diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh new file mode 100644 index 00000000..7ef6d678 --- /dev/null +++ b/42sh/sample/2lines.sh @@ -0,0 +1,2 @@ +ls pwd +yolo diff --git a/42sh/script.sh b/42sh/script.sh index 35caedf2..deda5282 100755 --- a/42sh/script.sh +++ b/42sh/script.sh @@ -1,4 +1,4 @@ -#!/bin/minishell +#!/bin/bash while [ 1 ]; do sleep 1 diff --git a/42sh/src/lexer/.ft_post_tokenize.c.swo b/42sh/src/lexer/.ft_post_tokenize.c.swo deleted file mode 100644 index f9f7efee1f6eda2a16b206f538686718b4d5c878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>Wab6vtm#5g>qI1#BLPAa2t7D}_`pttvo5EGn@nV%5mCC&c-%)A2-YLBNJy zf+Miu0B`{=05^a=8@4>hb{k5SRM1V)o8+GvkKg?4{FE%B%%=JD@ftStI#9a|@XgwL zw)W#1*cSm@8Mx9ZAmG$GV=Snuf2G{@_U;}J` z4X^<=zy?me0X3L`H}o#fWbfog*3TU3vqSFK02^QfY=8~00XDz}*Z><~18jf|uz^!( zz@`89zn%kVo~N6q|Nryf{~s;^Y*31nPqY`HOSw+@Tm;ymR489A0PIoTQnn}q$|_}r zQm5FIvy`92{!aNwc~5yq2`Mfmx$Xvq8yjE)Y=8~00XDz}*Z>>&4-CA5f)r{fL)6UK zB`7?6q?JOkjb7C6yP=OQ8TD~IU}?1JS8ta9j4G9$RKu!~08g;x!1aOeD&ae5n^wax zEyK3at~++axnttyE~eX?$1Yqhm+6RJM~yZ|XXkR@11Ww7S{7P&9m}F;0_?QiUMrIR z0kT|6h?sTz^Eq&T;y8mEQL+b>(`al_4!pnX9Nfjdj_Y+-J?VzA9?9n`WA)i^1gSYW zX^fcz|6DU=CZQb=={_@h4m|wX)4eG`M5pGYHQ6BTa^TeEM-@0uj-*l2sOX=7M_nWZ Np49iGN?$qyegWVw9Tflo diff --git a/42sh/src/lexer/.ft_tokenize.c.swo b/42sh/src/lexer/.ft_tokenize.c.swo deleted file mode 100644 index c523a7884ea4a4303ff526dbeb2ae48a1988f264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2OKa3n7>196i>OtxDB9I&2W;lzWRfYiq*h8r(S;yLi{NF*WX^QbrkQDyY3m)l z`~??+OI^5eCAe^@f`35z3;Y3sd*7T%CUL;hYBz=N49}d~m-n3WCRq&g)hi2Eukp!p zm7yGC?2Y!~=ETp_Y~&DQmhV`8BbwN{h^jx;G4%3;QEvKMgg)*GYS;btlCZ--n=pcw z7WlU2iVfjw&9D}>mxbrt7iD`39hxEs$blU?&<&esr-oS7&@0iExv^0`e0+X~A{0&z zkOSlZIY17O1LOcXKn{=td)a}ovyVN&0rtm-FyeaOKpl6fA_vF;a)2Bl2gm_(fE*wP z$N_SI93ThCfj#Jeh5z?2DU9V0V)OX_Kl%Ot{wQO2!4UX#gt28X0=^9~wgJY$_rr|6 z0MEfH=zuve3pBvNFgO5yA)nv}*aTm}2k;iW1kb=45TFh$a0Ofjr@%>Y0&HTB-@zB~ z8GHoqz-#adJOvBj1}K8)Oe&y44v+)n069PokOSlZIq(k-JYtG3!mjUeRV^&mWX9&L zAhbepC$Cy=5SDll`uY4cQxK{Yq9H!Rk<*EWC)QP&+KC`!cea~qL3U-hBAbYnbp0BFvV$dbyP~_p_!~-iDr9K(UOcQapI`bQ=MiHnB#?tl1V64u@473DoC{ww_BFa z3%I<*F(WqQNpJ$32ZEWy+I(h)kK^<3A@8+shuMxdj@_i|IYF%ev{Se2<-oOqRyx#J?Y2Xa_6NGI2m;G%r1Oiuu);q^qL6|4wCiLRm)^|qf83q&Ukm50i9n^xBiOUcR8M*>g7->lB_86+M$p6zxUf{#g0%B?Z{SSaAW z>{j6gEfU2!{A2M)Td0n%Io)dFTFXla4wfa58tvNIXa$8 z1TRLnD;7Mb>AI#@xL!4@lcugmf=eySZQ`D!lDT4}$m6O%o(T2_w$ms=CH^2Bt;|J< z;M_ek-NpG8%U^T6S()d3ArswiN|BS3*fWGYZ1b6E_Dd45k*l#@qiFE(~ diff --git a/42sh/src/lexer/.reduce_bquotes.c.swo b/42sh/src/lexer/.reduce_bquotes.c.swo deleted file mode 100644 index 20161d543623c465c8f79d471064b961fe7abdb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHNL2nyH6rLg>b%8VpPSDFVmdbkVc)gn_skTj^g(9JX04YJ0im=wZv-QT#+8K|P zgo?Bhl)r*FapM9%03^8P#2Inn0tdv6Z+2%lc7xJZjVe`oV}0J4_uhQ(%{SwN?di5Z zdG7EZPHtjJUK;scYuRrl@`TWXg3$d)4!1<4 z#_qB|?zv+bxdX8$q$@={iA1NnGZ`u|Zbc_hk&6@{1s+F%iAokP&9NolYwKyXg$w-E zS2iDqfnrGkQh*d71xNu>fD|AFNC8sd8CO7!&ak^!!*gaG`R@SepE2X|X@>M51xNu> zfD|AFNC8rS6d(mi0aAbzAO%Q)XHbC<|L-51Wh}8!JpTVLzyE(X&)8?c9PlIV0`!5` zfuH9X+XLPJ4qsyIKJXQ=1B`&Hz?*;za9|#I9{Be~#{L9;1AYa50e%3!1nvP_z^A}X z;0kaam?pszQ0k1 zz!8gq3CQC+i4-DtJ7XpJnx1C(FxJ6%a&mBK`7IuP@__}UuZxY4=x@#cpc*Xuescj_g~)~zSs0d{-oKyX{H2_uuy)NB$W zOlQGXU<<$mZL!OpB+X*mDNe#g)o=1byl8vW(UsKeAXI(CSM^+G%!+!Uw46d%)KCp` z^2&hit@_1rNi&7D^kFqSVL5re+%QPT%5wAqr-p{{4$G&`-rU7@>N(so_3JV)&<7D0 z57R6fOk%+o@=L$1-U7ZXIB=g<r4jE^X54b8~Sqq3KT zmElo34X~IO!qJ500w1vK2=Cw;~y4OyQ4*fk=fuH>&Sn1r DkQu~@ diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index a69df251..3de67de3 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:27:50 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:33:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 1e5af252..d99d4652 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:18:13 by ariard ### ########.fr */ +/* Updated: 2017/01/24 01:25:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int (*g_lexer[])(t_list **alst, char *str) = { &lexer_default, + &lexer_newline, &lexer_delim, &lexer_sep, &lexer_word, @@ -32,7 +33,7 @@ int (*g_lexer[])(t_list **alst, char *str) = int ft_is_delim(char c) { - return (c == ' ' || c == '\t' || c == '\n'); + return (c == ' ' || c == '\t'); } int ft_tokenize(t_list **alst, char *str, t_lexstate state) diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index 4a35438f..63833382 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/19 23:46:48 by ariard ### ########.fr */ +/* Updated: 2017/01/24 00:55:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,9 @@ t_lexstate get_lexer_state(char *str) { - if (ft_is_delim(*str)) + if (*str == '\n') + return (NEWLINE); + else if (ft_is_delim(*str)) return (DELIM); else if (*str == '$') return (VAR); diff --git a/42sh/src/lexer/lexer_backslash.c b/42sh/src/lexer/lexer_backslash.c index b1a6c908..9c94550d 100644 --- a/42sh/src/lexer/lexer_backslash.c +++ b/42sh/src/lexer/lexer_backslash.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:49 by jhalford #+# #+# */ -/* Updated: 2017/01/19 22:06:43 by ariard ### ########.fr */ +/* Updated: 2017/01/23 23:24:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 2dc52117..4d9d18fc 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/01/19 23:58:36 by ariard ### ########.fr */ +/* Updated: 2017/01/24 01:01:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 7542b57c..62507813 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/01/11 15:45:53 by jhalford ### ########.fr */ +/* Updated: 2017/01/24 00:32:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index d02a183b..81f6a4f2 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:48:49 by jhalford ### ########.fr */ +/* Updated: 2017/01/23 22:51:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index bc3fa958..f618c373 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:27:51 by jhalford ### ########.fr */ +/* Updated: 2017/01/24 00:45:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c new file mode 100644 index 00000000..de8cef47 --- /dev/null +++ b/42sh/src/lexer/lexer_newline.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_newline.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ +/* Updated: 2017/01/24 01:25:21 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_newline(t_list **alst, char *str) +{ + t_token *token; + + if (*alst) + { + token = (*alst)->content; + if (*token->data) + return (lexer_newline(&(*alst)->next, str)); + } + else + { + token = token_init(); + *alst = ft_lstnew(token, sizeof(*token)); + } + token = (*alst)->content; + token->type = TK_NEWLINE; + return (ft_tokenize(&(*alst)->next, str + 1, DEFAULT)); +} diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index b5cffe2d..2309f084 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:29:46 by jhalford ### ########.fr */ +/* Updated: 2017/01/23 22:54:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 54f7c20e..2a96e303 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:39:52 by jhalford ### ########.fr */ +/* Updated: 2017/01/24 01:25:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 53ed4746..38e50350 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/11 15:38:03 by jhalford ### ########.fr */ +/* Updated: 2017/01/24 01:02:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/reduce_bquotes.c b/42sh/src/lexer/reduce_bquotes.c index cb70ee1c..4247ceb0 100644 --- a/42sh/src/lexer/reduce_bquotes.c +++ b/42sh/src/lexer/reduce_bquotes.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:46:27 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:26:06 by ariard ### ########.fr */ +/* Updated: 2017/01/22 23:33:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 250574e3..8623f760 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/01/19 23:01:05 by ariard ### ########.fr */ +/* Updated: 2017/01/24 00:30:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_init.c b/42sh/src/lexer/token_init.c index 7f55464f..fcd796c5 100644 --- a/42sh/src/lexer/token_init.c +++ b/42sh/src/lexer/token_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 15:30:25 by jhalford #+# #+# */ -/* Updated: 2017/01/19 23:58:47 by ariard ### ########.fr */ +/* Updated: 2017/01/24 01:07:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index 9453a0cd..285c77a7 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/01/19 23:44:34 by ariard ### ########.fr */ +/* Updated: 2017/01/24 01:25:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/.main.c.swo b/42sh/src/main/.main.c.swo deleted file mode 100644 index 5c8f87b25381102a358216a0fb7d91735868ed10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O-vkR7{^~s+A=C?YOv9Gcv&nA3+(JH2y{^@-=bR}1++=4<1jnBJ21>_W(EYw z)}-2t@zAqL9iy)&DzRy8~OmN=%x(Lw?Nr`G21I&+`%p zyPAD#?g|~w3=mw;5OS~o_O-A7c%JOvY$2*+s7{eh9DV5n&PX*UX9jbbl5@n;n}MLT z=-6wz=DE^f&aFtUqe&a8Vfo)O+7bKt6nB6-@Q@B{dZqr6HZqWtvrM5g)j^*eOwJHQ>_4sZv!1Ka`b0C#{p@F+UqRa?l1Nc^!d`RVZ9a^N0z`Hefk9pDad2e<>= z0qy{IfIGk);0|yHxC7jQN6-Nk|KG2jCFF~9NFM+HkN*C@|1=@*f;O=C6d~*21@LVf zA={uE{PZLtx539?1DIeEi~|{@KnFMv&Vaw3AY>oxfji(9*aT&88OWd=5b(?6g!~A; z1SS{(FM;PkJ7@)G!5OeG5b`Uig6kjydcohVg!~D92S0%C!CmkP_y`oh7#Iav&<8Gn zR`4DC_y+8O`+)iLIk*e%fLp)8NB1@zi;CHvQ6iuZnv6ECsvVe5bRXOa<>P=d3n&;RD!LWj zG!q*~6TL(yIdz2S$#*4J1}-ow8XwxXCLT#nCVS!jXmkBBn=MO@C3<)d2l{dN_+7;# z^(elXifdS9Q&%*5V?(uyVo~+faLltUv8R8`G%P)1Sk+Chrw6a0iBQQ?99=E4g(6$C zD-hxRiec(hl+i_Q@g_eXLHPHfSq12(tFsKk-I`-mJu$A0!GkPCLAkOp zHLWa7UY%Q9W+@WCp2Ex(H_%eIuFLPRCpesP(~N_`vhFGB77LH3N1mbfG5IVkE-xvC zNdya249oCDRqLbb789A86;r#0wN=|)wawaY+0kpRr#c?BOVr=6tJ_+QuGy=2b(ZJY zCN*4o(M|QylLUTaVPcYArm2Pb6wTu{Gm}EpU1C_CAh3^FifB=mj#g0}noc7t{05k; z^oIB9R~0*3JdLA&nQjH z5=~1)2=`#FSapy`NnBcSy?an zMr#tw#6TSu2WQVeUQtH=L17tn1koNK7==8j)kmkMXU10w%S^OhOB-srR<^w;BJIBD zcB5jV1RB$>ClJjN0T$9%>HJEefR%pexQo8xyDp@$icKq~;d(;aUlx~E(_<8rSR96Q z8kS~m7Im81z^U-JWGX2_P#5V_yI7?`@D#5|aHWb9s2B4zmz9U5tSsenG&hjXUdj&+ z(A6Cpe7w0KaA#*Hdid^N_;7SM7YR<{r)wlQB*{4`J4EG?{9rc!@(2@LtEgtlc8Yb$ z&R(WS!&^Ka3C05_Y4k!R{K9gy8a73O6Fd2O7O$+S+WKpnqgrmpcFJQ7>%*om(wmQz z8Z;xp!+VYyVQO_ng7nkXN@ zc=crBSwDbZz{IP@c=zVXiw7@0vwv!72mvJ~B=3-?v+vG3&pY$m_CR)4ic8mT@QFg1 zp`B*zm$|+C>c=4aew;BoaP6R`2KH{E98CIVsW5I9>cJkVk7GmQR?xa992pwpX1HpE zfnzjn*E7OZ(P&gdCvbgPaQ5(_AtFEo4oILa>tmAxtZbHwYGyVw#Lu3o9MFW)i2xBG z0z`la5CI}U1c(3;ILZX1-^ZR{1ILn0@ueI_gkT?M)%!EA_F(W*ttx^$wGIe>T!ip?zEas+pDQk9U2iE zHESrY$TX19WYg!DI6lXwJ+Us;Haas((XNt0>2f+XqB%~>lfsjHl+Rw9yHZ(LR3$f= z_Hfm02(BYX?KY}Wv!z`PUGHu~$d;$)#-@|Qw)fkjEl?O3v6P#Yg#`prxlV|<+Hgau z<>949tI;#j@|Y8a$)Msp#Woq9l%{o`=+$#Lbm)3cqg@j`({w#I8ZE457&G!be`t;8 z4P|(UEj6t8ASh}UH;bhSqgXOblbdC$Y+B|7U)kXC@#e0=*=!aOKBI=i(aBh9cr_5a z85S>C+VIQuZ<+#0dsyyPP8Qp0^&^d?zWYKbe=knm52 Ry#-Vp8y?yZ1wT52{RSf%de{H} diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 2b77bc85..8ca93754 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/01/22 17:20:04 by ariard ### ########.fr */ +/* Updated: 2017/01/23 22:37:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 6aceeb75..1833a11f 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:09:43 by ariard ### ########.fr */ +/* Updated: 2017/01/23 23:51:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,7 +37,6 @@ int shell_single_command(char *command) /* /1* btree_apply_infix(ast, &ft_putast2); *1/ */ if (ft_exec(&ast)) return (1); - return (0); } @@ -50,12 +49,9 @@ int main(int ac, char **av) shell_single_command(shell_get_avdata()); return (0); } - if (ft_read_script(av[1])) - { - if (data_singleton()->opts & SHELL_MODE_SCRIPT) - shell_script(); - else - shell_single_command(data_singleton()->line.input); + if (data_singleton()->opts & SHELL_MODE_SCRIPT) + { + shell_script(); return (0); } while (1) diff --git a/42sh/src/read-script/ft_read_script.c b/42sh/src/main/read_script.c similarity index 80% rename from 42sh/src/read-script/ft_read_script.c rename to 42sh/src/main/read_script.c index 6e1a9e8f..4341b747 100644 --- a/42sh/src/read-script/ft_read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/22 23:11:59 by ariard ### ########.fr */ +/* Updated: 2017/01/24 00:20:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,15 +16,22 @@ static int rs_loop(char *file, t_script *script) { int fd; - script->queue = ft_memalloc(sizeof(t_list)); - fd = open(file, O_RDONLY); + if ((fd = open(file, O_RDONLY)) == -1) + return (0); while (get_next_line(fd, &script->buffer) > 0) { ft_lsteadd(&script->queue, ft_lstnew(script->buffer, ft_strlen(script->buffer))); ft_strdel(&script->buffer); + ft_lsteadd(&script->queue, ft_lstnew(ft_strdup("\n"), 1)); + script->q_size += 2; } close(fd); + if (script->q_size > 0) + { + data_singleton()->opts &= ~SHELL_MODE_MASK; + data_singleton()->opts |= SHELL_MODE_SCRIPT; + } return (0); } @@ -32,12 +39,12 @@ static int rs_setup(t_script *script) { ft_bzero(script, sizeof(script)); script->buffer = NULL; - script->b_size = 0; script->q_size = 0; + script->queue = NULL; return (0); } -int ft_read_script(char *file) +int read_script(char *file) { t_script *script; @@ -48,8 +55,6 @@ int ft_read_script(char *file) return (-1); if (rs_loop(file, script) < 0) return (-1); - if (rs_shebang_check(file, script) < 0) - return (-1); script->buffer = NULL; DG("{inv}{bol}{gre}read of script{eoc} script detected"); return (1); diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 9096ee5e..b953af05 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:18:56 by ariard ### ########.fr */ +/* Updated: 2017/01/23 23:36:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index c6f549e0..14066b58 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/01/22 21:58:53 by ariard ### ########.fr */ +/* Updated: 2017/01/23 22:35:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,5 +41,6 @@ void shell_init(int ac, char **av) tcsetpgrp(STDIN, *shell_pgid); tcgetattr(STDIN, &data_singleton()->jobc.shell_tmodes); } + read_script(av[1]); shell_get_opts(ac, av); } diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 6b680e90..f0e9dd4a 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/22 23:32:27 by ariard ### ########.fr */ +/* Updated: 2017/01/24 01:25:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,24 +15,29 @@ int shell_script() { t_list *token; + t_list *head; t_btree *ast; t_list *tmp; token = NULL; + head = NULL; ast = NULL; tmp = data_singleton()->script.queue; while (tmp) { if (ft_tokenize(&token, tmp->content , DEFAULT)) return (1); + if (!token) + return (0); + if (ft_post_tokenize(&token, tmp->content)) + return (1); tmp = tmp->next; + ft_lst_merge(&head, token); + token = NULL; } - if (!token) - return (0); -// if (ft_post_tokenize(&token, command)) -// return (1); DG("after post_tokenize"); - token_print(token); + token_print(head); + return (0); if (ft_parse(&ast, &token)) return (1); btree_print(STDBUG, ast, &ft_putast); diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 805fbfe6..cfd0faf7 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:37:29 by ariard ### ########.fr */ +/* Updated: 2017/01/23 23:15:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 7f00ee86..65a506d2 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:24:51 by ariard ### ########.fr */ +/* Updated: 2017/01/23 23:17:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/read-script/rs_shebang.c b/42sh/src/read-script/rs_shebang.c deleted file mode 100644 index bc1550f8..00000000 --- a/42sh/src/read-script/rs_shebang.c +++ /dev/null @@ -1,78 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* rs_shebang.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/22 21:42:27 by ariard #+# #+# */ -/* Updated: 2017/01/22 23:11:57 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static char *rs_shebang_parse_interpreter(char *shebang) -{ - int i; - - i = ft_strlen(shebang) - 1; - while (shebang[i]) - { - if (shebang[i] == '/') - return (&shebang[++i]); - i--; - } - return (NULL); -} - -static int rs_valid_interpreter(char *interpreter) -{ - if (ft_strncmp(interpreter, "bash", ft_strlen("bash")) == 0) - return (1); - if (ft_strncmp(interpreter, "csh", ft_strlen("csh")) == 0) - return (1); - if (ft_strncmp(interpreter, "ksh", ft_strlen("bash")) == 0) - return (1); - if (ft_strncmp(interpreter, "sh", ft_strlen("bash")) == 0) - return (1); - if (ft_strncmp(interpreter, "tcsh", ft_strlen("bash")) == 0) - return (1); - if (ft_strncmp(interpreter, "tcsh", ft_strlen("bash")) == 0) - return (1); - if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) == 0) - return (1); - return (0); -} - -static void rs_set_line_input(char *interpreter, char *file) -{ - char *buffer; - - buffer = ft_strnew(1024); - ft_strncpy(buffer, interpreter, ft_strlen(interpreter)); - ft_strncat(buffer, " ", 1); - ft_strncat(buffer, file, ft_strlen(file)); - data_singleton()->line.input = buffer; - data_singleton()->opts &= ~SHELL_MODE_MASK; - data_singleton()->opts |= SHELL_MODE_INPUT; -} - -int rs_shebang_check(char *file, t_script *script) -{ - char *interpreter; - - if (!script || !script->queue || !script->queue->next) - return (0); - interpreter = rs_shebang_parse_interpreter(script->queue->next->content); - if (interpreter == NULL || rs_valid_interpreter(interpreter) == 0) - rs_set_line_input("sh", file); - else if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) != 0) - rs_set_line_input(interpreter, file); - else if (ft_strncmp(interpreter, "minishell", ft_strlen("minishell")) == 0) - { - data_singleton()->opts &= ~SHELL_MODE_MASK; - data_singleton()->opts |= SHELL_MODE_SCRIPT; - } - return (0); -} From 63eff832dd5437e4695d501fdd546594e06f36e1 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 24 Jan 2017 01:49:35 +0100 Subject: [PATCH 007/206] test clean binary --- 42sh/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/42sh/.gitignore b/42sh/.gitignore index 23a58579..352fd995 100644 --- a/42sh/.gitignore +++ b/42sh/.gitignore @@ -4,3 +4,4 @@ minishell out debug *.dSYM +.script.sh.swp From c79789b43a8850bf2e30bba2c572373ce22acfe1 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 24 Jan 2017 01:53:21 +0100 Subject: [PATCH 008/206] test .gitignore --- 42sh/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/42sh/.gitignore b/42sh/.gitignore index 352fd995..9f1a7f9b 100644 --- a/42sh/.gitignore +++ b/42sh/.gitignore @@ -5,3 +5,4 @@ out debug *.dSYM .script.sh.swp +*.swp From ca8fb52d3457352ff29023ba29c2f4fba98d895a Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 24 Jan 2017 18:08:32 +0100 Subject: [PATCH 009/206] add lst_find_until + exec script multilines ok --- 42sh/.gitignore | 2 ++ 42sh/file1 | 1 + 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 2 +- 42sh/includes/parser.h | 3 ++- 42sh/includes/types.h | 2 +- 42sh/sample/2lines.sh | 5 ++-- 42sh/sample/condition.sh | 6 +++++ 42sh/sample/exitzero.sh | 2 ++ 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_cmp_type.c | 2 +- 42sh/src/main/shell_script.c | 42 +++++++++++++++++++++---------- 42sh/src/parser/ft_parse.c | 6 +++-- 42sh/src/parser/parse_great.c | 2 +- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_word.c | 2 +- 18 files changed, 59 insertions(+), 28 deletions(-) create mode 100644 42sh/file1 create mode 100644 42sh/sample/condition.sh create mode 100644 42sh/sample/exitzero.sh diff --git a/42sh/.gitignore b/42sh/.gitignore index 9f1a7f9b..2c239b7d 100644 --- a/42sh/.gitignore +++ b/42sh/.gitignore @@ -6,3 +6,5 @@ debug *.dSYM .script.sh.swp *.swp +*.swo +*.o diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..108ac6c1 --- /dev/null +++ b/42sh/file1 @@ -0,0 +1 @@ + 11 diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 3263c231..71f65dc3 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/24 00:45:06 by ariard ### ########.fr */ +/* Updated: 2017/01/24 16:21:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index d211ec07..c331f5a7 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/23 23:31:30 by ariard ### ########.fr */ +/* Updated: 2017/01/24 16:35:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 9b7025b9..c138504a 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/20 18:26:51 by ariard ### ########.fr */ +/* Updated: 2017/01/24 16:46:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,5 +66,6 @@ int parse_lessand(t_btree **ast, t_list **start, t_list **lst); int parse_greatand(t_btree **ast, t_list **start, t_list **lst); int parse_word(t_btree **ast, t_list **start, t_list **lst); int parse_subshell(t_btree **ast, t_list **start, t_list **lst); +int parse_newline(t_btree **ast, t_list **start, t_list **lst); #endif diff --git a/42sh/includes/types.h b/42sh/includes/types.h index e5168947..eaf9b3d9 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/01/19 21:52:47 by ariard ### ########.fr */ +/* Updated: 2017/01/24 16:01:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index 7ef6d678..8665b070 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1,2 +1,3 @@ -ls pwd -yolo +ls | wc -l > file1 +cd ; ls +pwd ; echo "hello world" diff --git a/42sh/sample/condition.sh b/42sh/sample/condition.sh new file mode 100644 index 00000000..906b4a27 --- /dev/null +++ b/42sh/sample/condition.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +if [ sh exitzero.sh ] +then + echo "hello world" +fi diff --git a/42sh/sample/exitzero.sh b/42sh/sample/exitzero.sh new file mode 100644 index 00000000..691c85b1 --- /dev/null +++ b/42sh/sample/exitzero.sh @@ -0,0 +1,2 @@ +ls +exit (0) diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index d99d4652..6bf1475b 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/24 01:25:40 by ariard ### ########.fr */ +/* Updated: 2017/01/24 17:54:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index de8cef47..3e362cd4 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/01/24 01:25:21 by ariard ### ########.fr */ +/* Updated: 2017/01/24 17:54:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 38e50350..5d52d1ee 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/24 01:02:50 by ariard ### ########.fr */ +/* Updated: 2017/01/24 17:33:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_cmp_type.c b/42sh/src/lexer/token_cmp_type.c index 69c90510..23ad5562 100644 --- a/42sh/src/lexer/token_cmp_type.c +++ b/42sh/src/lexer/token_cmp_type.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:08:55 by jhalford #+# #+# */ -/* Updated: 2017/01/19 23:12:09 by ariard ### ########.fr */ +/* Updated: 2017/01/24 16:02:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index f0e9dd4a..e2daa8b1 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/24 01:25:38 by ariard ### ########.fr */ +/* Updated: 2017/01/24 18:06:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,31 +17,47 @@ int shell_script() t_list *token; t_list *head; t_btree *ast; - t_list *tmp; + t_list *list_tmp; + t_list *tmp2; token = NULL; head = NULL; ast = NULL; - tmp = data_singleton()->script.queue; - while (tmp) + list_tmp = data_singleton()->script.queue; + while (list_tmp) { - if (ft_tokenize(&token, tmp->content , DEFAULT)) + if (ft_tokenize(&token, list_tmp->content , DEFAULT)) return (1); if (!token) return (0); - if (ft_post_tokenize(&token, tmp->content)) + if (ft_post_tokenize(&token, list_tmp->content)) return (1); - tmp = tmp->next; + list_tmp = list_tmp->next; ft_lst_merge(&head, token); token = NULL; } DG("after post_tokenize"); token_print(head); - return (0); - if (ft_parse(&ast, &token)) - return (1); - btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); + while (head) + { + if (ft_parse(&ast, &head)) + return (1); + ft_lsteadd(&list_tmp, ft_lstnew(ast, sizeof (*ast))); + ast = NULL; + ft_lst_delif(&head, head->content, &ft_addrcmp, &token_free); + } + tmp2 = list_tmp; + while (tmp2) + { + btree_print(STDBUG, tmp2->content, &ft_putast); + tmp2 = tmp2->next; + } + while (list_tmp) + { + ast = list_tmp->content; + if (ft_exec(&ast)) + return (1); + list_tmp = list_tmp->next; + } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index cfd0faf7..ca3e19d8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/23 23:15:05 by ariard ### ########.fr */ +/* Updated: 2017/01/24 18:06:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ t_parser g_parser[] = {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, {TK_WORD, &parse_word}, + {TK_NEWLINE, NULL}, {0, 0}, }; @@ -45,7 +46,8 @@ int ft_parse(t_btree **ast, t_list **start) } while (g_parser[i].type) { - if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) + if ((lst = ft_lst_find_until(*start, &g_parser[i].type, + &g_parser[12].type, &token_cmp_type))) { if (g_parser[i].f) (*g_parser[i].f)(ast, start, &lst); diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index 6350fd9f..5155b189 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:23:53 by ariard ### ########.fr */ +/* Updated: 2017/01/24 16:06:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 65a506d2..3213006c 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/23 23:17:04 by ariard ### ########.fr */ +/* Updated: 2017/01/24 17:54:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 28ccb098..de8cd8da 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 00:07:56 by ariard ### ########.fr */ +/* Updated: 2017/01/24 17:54:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From c1c3d73b177c3b41e4e3917f6b515a7d509841bf Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 24 Jan 2017 18:09:13 +0100 Subject: [PATCH 010/206] lst_find_until + exec script multilines ok --- 42sh/file1 | 1 - 1 file changed, 1 deletion(-) delete mode 100644 42sh/file1 diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index 108ac6c1..00000000 --- a/42sh/file1 +++ /dev/null @@ -1 +0,0 @@ - 11 From a011f94bcbaf38fb762cba7866c3381f2b066bc7 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 24 Jan 2017 20:17:46 +0100 Subject: [PATCH 011/206] comment same bug that with a space in input execution, tree empty cause bug execution --- 42sh/file1 | 1 + 42sh/includes/exec.h | 2 +- 42sh/includes/lexer.h | 4 +++- 42sh/includes/minishell.h | 2 +- 42sh/includes/parser.h | 2 +- 42sh/sample/2lines.sh | 3 +-- 42sh/sample/4lines.sh | 4 ++++ 42sh/sample/comment.sh | 2 ++ 42sh/sample/condition.sh | 6 ------ 42sh/sample/exitzero.sh | 2 -- 42sh/sample/file1 | 1 + 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 3 ++- 42sh/src/lexer/get_lexer_state.c | 2 +- 42sh/src/lexer/lexer_comment.c | 24 ++++++++++++++++++++++++ 42sh/src/lexer/lexer_default.c | 4 +++- 42sh/src/lexer/lexer_delim.c | 6 ++++-- 42sh/src/lexer/lexer_great.c | 2 +- 42sh/src/lexer/lexer_greatand.c | 2 +- 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/read_script.c | 2 +- 42sh/src/main/shell_script.c | 11 ++++++----- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/parse_separator.c | 2 +- 25 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 42sh/file1 create mode 100644 42sh/sample/4lines.sh create mode 100644 42sh/sample/comment.sh delete mode 100644 42sh/sample/condition.sh delete mode 100644 42sh/sample/exitzero.sh create mode 100644 42sh/sample/file1 create mode 100644 42sh/src/lexer/lexer_comment.c diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..1acf61e2 --- /dev/null +++ b/42sh/file1 @@ -0,0 +1 @@ + 0 diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 279d7450..ed52dfeb 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:42:30 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:01:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 71f65dc3..909a1a8c 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/24 16:21:11 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:13:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,6 +62,7 @@ enum e_lexstate BACKSLASH, VAR, SPECIAL, + COMMENT, }; struct s_token @@ -94,6 +95,7 @@ int ft_is_delim(char c); t_lexstate get_lexer_state(char *str); int lexer_default(t_list **alst, char *str); +int lexer_comment(t_list **alst, char *str); int lexer_newline(t_list **alst, char *str); int lexer_delim(t_list **alst, char *str); int lexer_sep(t_list **alst, char *str); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index c331f5a7..2f50212a 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/24 16:35:43 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:04:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index c138504a..dff89697 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/24 16:46:36 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:08:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index 8665b070..038db839 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1,3 +1,2 @@ -ls | wc -l > file1 -cd ; ls +ls | wc -l > file1 ; cd pwd ; echo "hello world" diff --git a/42sh/sample/4lines.sh b/42sh/sample/4lines.sh new file mode 100644 index 00000000..999b725d --- /dev/null +++ b/42sh/sample/4lines.sh @@ -0,0 +1,4 @@ +ls | wc -l > file1 +cd ; pwd | wc -l ; echo "bonjour" +ls -l > file2 +pwd ; echo "hello world" diff --git a/42sh/sample/comment.sh b/42sh/sample/comment.sh new file mode 100644 index 00000000..2d580555 --- /dev/null +++ b/42sh/sample/comment.sh @@ -0,0 +1,2 @@ +ls #ls +pwd diff --git a/42sh/sample/condition.sh b/42sh/sample/condition.sh deleted file mode 100644 index 906b4a27..00000000 --- a/42sh/sample/condition.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -if [ sh exitzero.sh ] -then - echo "hello world" -fi diff --git a/42sh/sample/exitzero.sh b/42sh/sample/exitzero.sh deleted file mode 100644 index 691c85b1..00000000 --- a/42sh/sample/exitzero.sh +++ /dev/null @@ -1,2 +0,0 @@ -ls -exit (0) diff --git a/42sh/sample/file1 b/42sh/sample/file1 new file mode 100644 index 00000000..1acf61e2 --- /dev/null +++ b/42sh/sample/file1 @@ -0,0 +1 @@ + 0 diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 462674d4..27a8fdff 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:08:22 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:03:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 6bf1475b..5135db09 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/24 17:54:08 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:13:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,7 @@ int (*g_lexer[])(t_list **alst, char *str) = &lexer_backslash, &lexer_var, &lexer_special, + &lexer_comment, }; int ft_is_delim(char c) diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index 63833382..aea725da 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/24 00:55:05 by ariard ### ########.fr */ +/* Updated: 2017/01/24 19:09:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_comment.c b/42sh/src/lexer/lexer_comment.c new file mode 100644 index 00000000..613b9acb --- /dev/null +++ b/42sh/src/lexer/lexer_comment.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_comment.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/24 18:22:35 by ariard #+# #+# */ +/* Updated: 2017/01/24 20:07:14 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_comment(t_list **alst, char *str) +{ + t_token *token; + + (void)str; + token = (*alst)->content; + if (!token->type) + ft_lstdel(alst, &token_free); + return (0); +} diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 4d9d18fc..28bb9821 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/01/24 01:01:43 by ariard ### ########.fr */ +/* Updated: 2017/01/24 19:22:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,8 @@ int lexer_default(t_list **alst, char *str) return (ft_tokenize(alst, str, GREAT)); else if (*str == '<') return (ft_tokenize(alst, str, LESS)); + else if (*str == '#') + return (ft_tokenize(alst, str, COMMENT)); else if (ft_isdigit(*str)) state = NUMBER; else diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 62507813..2ad6374b 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/01/24 00:32:55 by ariard ### ########.fr */ +/* Updated: 2017/01/24 19:48:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,9 @@ int lexer_delim(t_list **alst, char *str) token = (*alst)->content; while (ft_is_delim(*str)) str++; - if (token->type) + if (*(str + 1) == '#') + return (ft_tokenize(alst, str + 1, COMMENT)); + else if (token->type) return (ft_tokenize(&(*alst)->next, str, DEFAULT)); else return (ft_tokenize(alst, str, DEFAULT)); diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 81f6a4f2..18d65b20 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/01/23 22:51:25 by ariard ### ########.fr */ +/* Updated: 2017/01/24 19:06:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c index 7a32ef24..f1f20e8e 100644 --- a/42sh/src/lexer/lexer_greatand.c +++ b/42sh/src/lexer/lexer_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:58 by jhalford #+# #+# */ -/* Updated: 2016/12/03 11:57:09 by jhalford ### ########.fr */ +/* Updated: 2017/01/24 19:02:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index 3e362cd4..69f178f6 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/01/24 17:54:12 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:13:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 5d52d1ee..836f9f0a 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/24 17:33:09 by ariard ### ########.fr */ +/* Updated: 2017/01/24 18:50:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index 4341b747..3b4cad36 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/24 00:20:01 by ariard ### ########.fr */ +/* Updated: 2017/01/24 18:50:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index e2daa8b1..34f5f04d 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/24 18:06:42 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:14:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,7 @@ int shell_script() { if (ft_tokenize(&token, list_tmp->content , DEFAULT)) return (1); - if (!token) + if (!token && !list_tmp->next) return (0); if (ft_post_tokenize(&token, list_tmp->content)) return (1); @@ -38,11 +38,12 @@ int shell_script() } DG("after post_tokenize"); token_print(head); + list_tmp = NULL; while (head) { if (ft_parse(&ast, &head)) return (1); - ft_lsteadd(&list_tmp, ft_lstnew(ast, sizeof (*ast))); + ft_lsteadd(&list_tmp, ft_lstnew(ast, sizeof(*ast))); ast = NULL; ft_lst_delif(&head, head->content, &ft_addrcmp, &token_free); } @@ -51,9 +52,9 @@ int shell_script() { btree_print(STDBUG, tmp2->content, &ft_putast); tmp2 = tmp2->next; - } + } while (list_tmp) - { + { ast = list_tmp->content; if (ft_exec(&ast)) return (1); diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index ca3e19d8..823c9331 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/24 18:06:40 by ariard ### ########.fr */ +/* Updated: 2017/01/24 20:12:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 3213006c..91d3fbc4 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/24 17:54:27 by ariard ### ########.fr */ +/* Updated: 2017/01/24 19:42:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From bcaa2fb9436e4cba5b5e9be91cb5982c7139ce04 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 26 Jan 2017 01:00:03 +0100 Subject: [PATCH 012/206] lexing while_clause, passage en buffer dynamique au readscript todo tomorrow --- 42sh/file1 | 1 - 42sh/includes/builtin.h | 2 +- 42sh/includes/lexer.h | 19 +++++++++++---- 42sh/sample/comment.sh | 4 +-- 42sh/script.sh | 9 ++++++- 42sh/src/lexer/ft_tokenize.c | 10 +++++++- 42sh/src/lexer/get_lexer_state.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 23 +++++++++++++++++ 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_do_group.c | 38 +++++++++++++++++++++++++++++ 42sh/src/lexer/lexer_dquote.c | 2 +- 42sh/src/lexer/lexer_greatand.c | 2 +- 42sh/src/lexer/lexer_list.c | 34 ++++++++++++++++++++++++++ 42sh/src/lexer/lexer_loop.c | 28 +++++++++++++++++++++ 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/lexer/lexer_number.c | 2 +- 42sh/src/lexer/lexer_sep.c | 2 +- 42sh/src/lexer/lexer_special.c | 2 +- 42sh/src/lexer/lexer_word.c | 4 ++- 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_script.c | 3 ++- 42sh/src/parser/parse_separator.c | 2 +- 23 files changed, 173 insertions(+), 24 deletions(-) delete mode 100644 42sh/file1 create mode 100644 42sh/src/lexer/get_reserved_words.c create mode 100644 42sh/src/lexer/lexer_do_group.c create mode 100644 42sh/src/lexer/lexer_list.c create mode 100644 42sh/src/lexer/lexer_loop.c diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index 1acf61e2..00000000 --- a/42sh/file1 +++ /dev/null @@ -1 +0,0 @@ - 0 diff --git a/42sh/includes/builtin.h b/42sh/includes/builtin.h index 4ffb9a44..b1c2c834 100644 --- a/42sh/includes/builtin.h +++ b/42sh/includes/builtin.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:21:56 by jhalford #+# #+# */ -/* Updated: 2017/01/19 20:54:43 by ariard ### ########.fr */ +/* Updated: 2017/01/25 15:49:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 909a1a8c..4d3b7e75 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:13:54 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:57:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,9 +37,10 @@ typedef long long t_type; # define TK_COMMAND (1 << 17) # define TK_SUBSHELL (1 << 18) # define TK_NEWLINE (1 << 19) -# define TK_LOOP (1 << 20) -# define TK_B_LOOP (1 << 21) -# define TK_E_LOOP (1 << 22) +# define TK_WHILE (1 << 20) +# define TK_DO (1 << 21) +# define TK_DONE (1 << 22) +# define TK_LIST (1 << 23) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) @@ -62,6 +63,9 @@ enum e_lexstate BACKSLASH, VAR, SPECIAL, + WHILE, + DO_GROUP, + LIST, COMMENT, }; @@ -92,10 +96,11 @@ int reduce_bquotes(t_list **alst, char **str); char *command_getoutput(char *command); int ft_is_delim(char c); +int ft_is_delim_list(char c); t_lexstate get_lexer_state(char *str); +t_lexstate get_reserved_words(char *str); int lexer_default(t_list **alst, char *str); -int lexer_comment(t_list **alst, char *str); int lexer_newline(t_list **alst, char *str); int lexer_delim(t_list **alst, char *str); int lexer_sep(t_list **alst, char *str); @@ -110,5 +115,9 @@ int lexer_dquote(t_list **alst, char *str); int lexer_backslash(t_list **alst, char *str); int lexer_var(t_list **alst, char *str); int lexer_special(t_list **alst, char *str); +int lexer_while(t_list **alst, char *str); +int lexer_do_group(t_list **alst, char *str); +int lexer_list(t_list **alst, char *str); +int lexer_comment(t_list **alst, char *str); #endif diff --git a/42sh/sample/comment.sh b/42sh/sample/comment.sh index 2d580555..9d021c74 100644 --- a/42sh/sample/comment.sh +++ b/42sh/sample/comment.sh @@ -1,2 +1,2 @@ -ls #ls -pwd +ls | cat +pwd ; cd diff --git a/42sh/script.sh b/42sh/script.sh index deda5282..c195c1d7 100755 --- a/42sh/script.sh +++ b/42sh/script.sh @@ -1,6 +1,13 @@ #!/bin/bash -while [ 1 ]; do +echo "debut script" + +do + +while [ 1 ] ; [ 1 ] +do sleep 1 echo "a" done + +echo "fin script" diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 5135db09..e62331f1 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:13:42 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:56:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,9 @@ int (*g_lexer[])(t_list **alst, char *str) = &lexer_backslash, &lexer_var, &lexer_special, + &lexer_while, + &lexer_do_group, + &lexer_list, &lexer_comment, }; @@ -37,6 +40,11 @@ int ft_is_delim(char c) return (c == ' ' || c == '\t'); } +int ft_is_delim_list(char c) +{ + return (c == ';' || c == '\n' || c == '&'); +} + int ft_tokenize(t_list **alst, char *str, t_lexstate state) { t_token *token; diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index aea725da..08d730bd 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/24 19:09:26 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:31:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c new file mode 100644 index 00000000..ece59508 --- /dev/null +++ b/42sh/src/lexer/get_reserved_words.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_reserved_words.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ +/* Updated: 2017/01/26 00:51:26 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +t_lexstate get_reserved_words(char *str) +{ + if (ft_strncmp(str, "while", 5) == 0) + return (WHILE); + else if (ft_strncmp(str, "done", 4) == 0 + || ft_strncmp(str, "do" , 2) == 0) + return (DO_GROUP); + return (0); +} diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 28bb9821..a34da9ea 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/01/24 19:22:58 by ariard ### ########.fr */ +/* Updated: 2017/01/25 23:01:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 2ad6374b..8f05a9bb 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/01/24 19:48:31 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:08:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_do_group.c b/42sh/src/lexer/lexer_do_group.c new file mode 100644 index 00000000..c3e6c771 --- /dev/null +++ b/42sh/src/lexer/lexer_do_group.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_do_group.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/26 00:48:48 by ariard #+# #+# */ +/* Updated: 2017/01/26 00:59:00 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_do_group(t_list **alst, char *str) +{ + t_token *token; + t_lexstate state; + int type; + + type = (str[0] == 'd' && str[1] == 'o' && str[2] != 'n' ? + 2 : 4); + if (*alst) + { + if (ft_is_delim_list(*(str + type)) || *(str + type) == ' ') + return (lexer_do_group(&(*alst)->next, str)); + return (ft_tokenize(alst, str + 1, LIST)); + } + else + { + token = token_init(); + *alst = ft_lstnew(token, sizeof(*token)); + } + token = (*alst)->content; + token->type = (type == 2 ? TK_DO : TK_DONE); + state = (token->type == TK_DO) ? LIST : DEFAULT; + return (ft_tokenize(&(*alst)->next, str + 1, state)); +} diff --git a/42sh/src/lexer/lexer_dquote.c b/42sh/src/lexer/lexer_dquote.c index 35485a56..492c8924 100644 --- a/42sh/src/lexer/lexer_dquote.c +++ b/42sh/src/lexer/lexer_dquote.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:58 by jhalford #+# #+# */ -/* Updated: 2017/01/19 22:04:11 by ariard ### ########.fr */ +/* Updated: 2017/01/25 22:52:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c index f1f20e8e..6ed64cd7 100644 --- a/42sh/src/lexer/lexer_greatand.c +++ b/42sh/src/lexer/lexer_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:58 by jhalford #+# #+# */ -/* Updated: 2017/01/24 19:02:45 by ariard ### ########.fr */ +/* Updated: 2017/01/25 22:52:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c new file mode 100644 index 00000000..16589c64 --- /dev/null +++ b/42sh/src/lexer/lexer_list.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_list.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ +/* Updated: 2017/01/26 00:58:58 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_list(t_list **alst, char *str) +{ + t_token *token; + + token = (*alst)->content; + token->type = TK_LIST; + while (*str) + { + if (ft_is_delim_list(*str)) + { + while (ft_is_delim(*str) || *str == '\n') + str++; + if (ft_strncmp(str, "done", 4) == 0 + || ft_strncmp(str, "do", 2) == 0) + return (ft_tokenize(alst, str, DO_GROUP)); + } + token_append(token, *str++); + } + return (0); +} diff --git a/42sh/src/lexer/lexer_loop.c b/42sh/src/lexer/lexer_loop.c new file mode 100644 index 00000000..476205af --- /dev/null +++ b/42sh/src/lexer/lexer_loop.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_loop.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ +/* Updated: 2017/01/26 00:58:57 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_while(t_list **alst, char *str) +{ + t_token *token; + + token = (*alst)->content; + if (ft_strncmp(str, "while", 5) == 0) + token->type = TK_WHILE; + else if (ft_isalnum(*str)) + { + token_append(token, *str); + return (ft_tokenize(alst, str + 1, WORD)); + } + return (ft_tokenize(&(*alst)->next, str + 6, LIST)); +} diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index 69f178f6..0a98df66 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/01/24 20:13:45 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:41:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 2309f084..31aebba2 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/01/23 22:54:33 by ariard ### ########.fr */ +/* Updated: 2017/01/25 23:05:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 2a96e303..3e3c6ef3 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/01/24 01:25:42 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:48:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_special.c b/42sh/src/lexer/lexer_special.c index 7d3d7800..53f35075 100644 --- a/42sh/src/lexer/lexer_special.c +++ b/42sh/src/lexer/lexer_special.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 15:35:38 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:36:10 by jhalford ### ########.fr */ +/* Updated: 2017/01/25 22:53:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 836f9f0a..9ccd4f04 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/24 18:50:42 by ariard ### ########.fr */ +/* Updated: 2017/01/26 00:58:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,8 @@ int lexer_word(t_list **alst, char *str) return (ft_tokenize(&(*alst)->next, str, GREAT)); else if (*str == '<') return (ft_tokenize(&(*alst)->next, str, LESS)); + else if ((state = get_reserved_words(str))) + return (ft_tokenize(alst, str, state)); token_append(token, *str); return (ft_tokenize(alst, str + 1, WORD)); } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 1833a11f..90b776d7 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/23 23:51:35 by ariard ### ########.fr */ +/* Updated: 2017/01/25 16:25:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 34f5f04d..327a19b1 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/24 20:14:52 by ariard ### ########.fr */ +/* Updated: 2017/01/25 22:54:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,6 +39,7 @@ int shell_script() DG("after post_tokenize"); token_print(head); list_tmp = NULL; + return (0); while (head) { if (ft_parse(&ast, &head)) diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 91d3fbc4..24c84777 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/24 19:42:12 by ariard ### ########.fr */ +/* Updated: 2017/01/25 16:35:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 91ac48516991db03a9fa26992b6910e4ff50d093 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 26 Jan 2017 01:01:09 +0100 Subject: [PATCH 013/206] lexing while_clause, passage en buffer dynamique au readscript todo tomorrow --- 42sh/src/lexer/lexer_while.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 42sh/src/lexer/lexer_while.c diff --git a/42sh/src/lexer/lexer_while.c b/42sh/src/lexer/lexer_while.c new file mode 100644 index 00000000..476205af --- /dev/null +++ b/42sh/src/lexer/lexer_while.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_loop.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ +/* Updated: 2017/01/26 00:58:57 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_while(t_list **alst, char *str) +{ + t_token *token; + + token = (*alst)->content; + if (ft_strncmp(str, "while", 5) == 0) + token->type = TK_WHILE; + else if (ft_isalnum(*str)) + { + token_append(token, *str); + return (ft_tokenize(alst, str + 1, WORD)); + } + return (ft_tokenize(&(*alst)->next, str + 6, LIST)); +} From 47a2fdd6833d8c676b700b7af94a0abf3ea94bef Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 26 Jan 2017 22:43:47 +0100 Subject: [PATCH 014/206] doing, parsing newline et generation liste chaine d arbre binaire --- 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 5 +- 42sh/includes/parser.h | 39 +++++++++----- 42sh/sample/2lines.sh | 4 +- 42sh/script.sh | 6 +-- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/lexer/lexer_default.c | 5 +- 42sh/src/lexer/lexer_do_group.c | 8 +-- 42sh/src/lexer/lexer_less.c | 2 +- 42sh/src/lexer/lexer_list.c | 3 +- 42sh/src/lexer/lexer_while.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/lexer/token_free.c | 2 +- 42sh/src/main/main.c | 7 +-- 42sh/src/main/read_script.c | 21 ++++---- 42sh/src/main/shell_script.c | 51 +++++++------------ 42sh/src/parser/ft_parse.c | 13 ++--- 42sh/src/parser/parse_dgreat.c | 7 +-- 42sh/src/parser/parse_dless.c | 7 +-- 42sh/src/parser/parse_great.c | 7 +-- 42sh/src/parser/parse_greatand.c | 7 +-- 42sh/src/parser/parse_less.c | 7 +-- 42sh/src/parser/parse_lessand.c | 7 +-- .../lexer_loop.c => parser/parse_newline.c} | 31 +++++------ 42sh/src/parser/parse_separator.c | 9 ++-- 42sh/src/parser/parse_subshell.c | 7 +-- 42sh/src/parser/parse_word.c | 9 ++-- 42sh/test | 1 + 30 files changed, 143 insertions(+), 134 deletions(-) rename 42sh/src/{lexer/lexer_loop.c => parser/parse_newline.c} (56%) create mode 100644 42sh/test diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 4d3b7e75..b29e1000 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/26 00:57:09 by ariard ### ########.fr */ +/* Updated: 2017/01/26 21:29:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 2f50212a..33b25941 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:04:55 by ariard ### ########.fr */ +/* Updated: 2017/01/26 20:57:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,8 +50,7 @@ struct s_comp struct s_script { char *buffer; - int q_size; - t_list *queue; + int size; }; typedef struct s_script t_script; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index dff89697..5896d348 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:08:01 by ariard ### ########.fr */ +/* Updated: 2017/01/26 20:57:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,8 @@ typedef long long t_type; struct s_parser { t_type type; - int (*f)(t_btree **ast, t_list **start, t_list **token); + int (*f)(t_list **list_ast, t_btree **ast, + t_list **start, t_list **token); }; union u_word @@ -56,16 +57,28 @@ struct s_astnode extern t_parser g_parser[]; -int ft_parse(t_btree **ast, t_list **token); -int parse_separator(t_btree **ast, t_list **start, t_list **lst); -int parse_less(t_btree **ast, t_list **start, t_list **lst); -int parse_great(t_btree **ast, t_list **start, t_list **lst); -int parse_dless(t_btree **ast, t_list **start, t_list **lst); -int parse_dgreat(t_btree **ast, t_list **start, t_list **lst); -int parse_lessand(t_btree **ast, t_list **start, t_list **lst); -int parse_greatand(t_btree **ast, t_list **start, t_list **lst); -int parse_word(t_btree **ast, t_list **start, t_list **lst); -int parse_subshell(t_btree **ast, t_list **start, t_list **lst); -int parse_newline(t_btree **ast, t_list **start, t_list **lst); +int ft_parse(t_list **list_ast, t_btree **ast, t_list **token); +int parse_newline(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_separator(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_less(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_great(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_dless(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_dgreat(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_lessand(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_greatand(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_word(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_subshell(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_newline(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); #endif diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index 038db839..f598a168 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1,2 +1,2 @@ -ls | wc -l > file1 ; cd -pwd ; echo "hello world" +ls | cat +pwd | cat diff --git a/42sh/script.sh b/42sh/script.sh index c195c1d7..9e99f221 100755 --- a/42sh/script.sh +++ b/42sh/script.sh @@ -1,11 +1,9 @@ -#!/bin/bash - echo "debut script" do -while [ 1 ] ; [ 1 ] -do +while [ 1 ] +do sleep 1 echo "a" done diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index e62331f1..c34db1e3 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/26 00:56:23 by ariard ### ########.fr */ +/* Updated: 2017/01/26 22:27:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index ece59508..f317f792 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/01/26 00:51:26 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:47:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index a34da9ea..98303077 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/01/25 23:01:37 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:16:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,6 @@ int lexer_default(t_list **alst, char *str) else state = WORD; token = (*alst)->content; - token_append(token, *str); token->type = TK_N_WORD; - return (ft_tokenize(alst, str + 1, state)); + return (ft_tokenize(alst, str, state)); } diff --git a/42sh/src/lexer/lexer_do_group.c b/42sh/src/lexer/lexer_do_group.c index c3e6c771..56681183 100644 --- a/42sh/src/lexer/lexer_do_group.c +++ b/42sh/src/lexer/lexer_do_group.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:48:48 by ariard #+# #+# */ -/* Updated: 2017/01/26 00:59:00 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:49:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,13 +16,13 @@ int lexer_do_group(t_list **alst, char *str) { t_token *token; t_lexstate state; - int type; + int type; type = (str[0] == 'd' && str[1] == 'o' && str[2] != 'n' ? 2 : 4); if (*alst) { - if (ft_is_delim_list(*(str + type)) || *(str + type) == ' ') + if (ft_is_delim_list(*(str + type)) || *(str + type) == ' ') return (lexer_do_group(&(*alst)->next, str)); return (ft_tokenize(alst, str + 1, LIST)); } @@ -34,5 +34,5 @@ int lexer_do_group(t_list **alst, char *str) token = (*alst)->content; token->type = (type == 2 ? TK_DO : TK_DONE); state = (token->type == TK_DO) ? LIST : DEFAULT; - return (ft_tokenize(&(*alst)->next, str + 1, state)); + return (ft_tokenize(&(*alst)->next, str + type, state)); } diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index f618c373..dd4fee4d 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/01/24 00:45:30 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:26:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index 16589c64..33754baa 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/01/26 00:58:58 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:24:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ int lexer_list(t_list **alst, char *str) { if (ft_is_delim_list(*str)) { + str++; while (ft_is_delim(*str) || *str == '\n') str++; if (ft_strncmp(str, "done", 4) == 0 diff --git a/42sh/src/lexer/lexer_while.c b/42sh/src/lexer/lexer_while.c index 476205af..e03bcff1 100644 --- a/42sh/src/lexer/lexer_while.c +++ b/42sh/src/lexer/lexer_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ -/* Updated: 2017/01/26 00:58:57 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:09:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 9ccd4f04..44ab926c 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/26 00:58:55 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:25:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 8623f760..2aabc4c5 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/01/24 00:30:33 by ariard ### ########.fr */ +/* Updated: 2017/01/26 18:07:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_free.c b/42sh/src/lexer/token_free.c index 50ef0d0f..b0b9b190 100644 --- a/42sh/src/lexer/token_free.c +++ b/42sh/src/lexer/token_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:30 by jhalford #+# #+# */ -/* Updated: 2017/01/12 13:18:46 by jhalford ### ########.fr */ +/* Updated: 2017/01/26 22:25:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 90b776d7..47590803 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/25 16:25:43 by ariard ### ########.fr */ +/* Updated: 2017/01/26 21:08:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,8 +30,9 @@ int shell_single_command(char *command) return (1); DG("after post_tokenize"); token_print(token); - if (ft_parse(&ast, &token)) - return (1); + return (0); +// if (ft_parse(&ast, &token)) +// return (1); btree_print(STDBUG, ast, &ft_putast); /* /1* ft_dprintf(STDBUG, "\n--- INFIX BREAKDOWN ---\n"); *1/ */ /* /1* btree_apply_infix(ast, &ft_putast2); *1/ */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index 3b4cad36..8b8c8230 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/24 18:50:55 by ariard ### ########.fr */ +/* Updated: 2017/01/26 17:52:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,19 +15,20 @@ static int rs_loop(char *file, t_script *script) { int fd; + char *line; + line = NULL; if ((fd = open(file, O_RDONLY)) == -1) return (0); - while (get_next_line(fd, &script->buffer) > 0) + while (get_next_line(fd, &line) > 0) { - ft_lsteadd(&script->queue, - ft_lstnew(script->buffer, ft_strlen(script->buffer))); - ft_strdel(&script->buffer); - ft_lsteadd(&script->queue, ft_lstnew(ft_strdup("\n"), 1)); - script->q_size += 2; + ft_strappend(&script->buffer, line); + ft_strappend(&script->buffer, "\n"); + ft_strdel(&line); + script->size += ft_strlen(script->buffer); } close(fd); - if (script->q_size > 0) + if (script->size > 0) { data_singleton()->opts &= ~SHELL_MODE_MASK; data_singleton()->opts |= SHELL_MODE_SCRIPT; @@ -39,8 +40,7 @@ static int rs_setup(t_script *script) { ft_bzero(script, sizeof(script)); script->buffer = NULL; - script->q_size = 0; - script->queue = NULL; + script->size = 0; return (0); } @@ -55,7 +55,6 @@ int read_script(char *file) return (-1); if (rs_loop(file, script) < 0) return (-1); - script->buffer = NULL; DG("{inv}{bol}{gre}read of script{eoc} script detected"); return (1); } diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 327a19b1..35627524 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/25 22:54:03 by ariard ### ########.fr */ +/* Updated: 2017/01/26 22:42:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,51 +15,36 @@ int shell_script() { t_list *token; - t_list *head; t_btree *ast; - t_list *list_tmp; + t_list *list_ast; t_list *tmp2; token = NULL; - head = NULL; ast = NULL; - list_tmp = data_singleton()->script.queue; - while (list_tmp) - { - if (ft_tokenize(&token, list_tmp->content , DEFAULT)) - return (1); - if (!token && !list_tmp->next) - return (0); - if (ft_post_tokenize(&token, list_tmp->content)) - return (1); - list_tmp = list_tmp->next; - ft_lst_merge(&head, token); - token = NULL; - } + list_ast = NULL; + if (ft_tokenize(&token, data_singleton()->script.buffer , DEFAULT)) + return (1); + if (!token) + return (0); + if (ft_post_tokenize(&token, data_singleton()->script.buffer)) + return (1); DG("after post_tokenize"); - token_print(head); - list_tmp = NULL; - return (0); - while (head) - { - if (ft_parse(&ast, &head)) - return (1); - ft_lsteadd(&list_tmp, ft_lstnew(ast, sizeof(*ast))); - ast = NULL; - ft_lst_delif(&head, head->content, &ft_addrcmp, &token_free); - } - tmp2 = list_tmp; + token_print(token); + if (ft_parse(&list_ast, &ast, &token)) + return (1); + tmp2 = list_ast; while (tmp2) - { + { btree_print(STDBUG, tmp2->content, &ft_putast); tmp2 = tmp2->next; } - while (list_tmp) + return (0); + while (list_ast) { - ast = list_tmp->content; + ast = list_ast->content; if (ft_exec(&ast)) return (1); - list_tmp = list_tmp->next; + list_ast = list_ast->next; } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 823c9331..ece898bd 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:12:50 by ariard ### ########.fr */ +/* Updated: 2017/01/26 22:42:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ t_parser g_parser[] = { + {TK_NEWLINE, &parse_newline}, {TK_SEMI, &parse_separator}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, @@ -26,11 +27,10 @@ t_parser g_parser[] = {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, {TK_WORD, &parse_word}, - {TK_NEWLINE, NULL}, {0, 0}, }; -int ft_parse(t_btree **ast, t_list **start) +int ft_parse(t_list **list_ast, t_btree **ast, t_list **start) { t_list *lst; t_astnode item; @@ -44,13 +44,14 @@ int ft_parse(t_btree **ast, t_list **start) *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.sstr = NULL; } +// if (!*list_ast) +// ft_lsteadd(list_ast, ft_lstnew(ast, sizeof(*ast))); while (g_parser[i].type) { - if ((lst = ft_lst_find_until(*start, &g_parser[i].type, - &g_parser[12].type, &token_cmp_type))) + if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) { if (g_parser[i].f) - (*g_parser[i].f)(ast, start, &lst); + (*g_parser[i].f)(list_ast, ast, start, &lst); return (0); } i++; diff --git a/42sh/src/parser/parse_dgreat.c b/42sh/src/parser/parse_dgreat.c index 8cd643fd..2091d89e 100644 --- a/42sh/src/parser/parse_dgreat.c +++ b/42sh/src/parser/parse_dgreat.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:23:07 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:56:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_dgreat(t_btree **ast, t_list **start, t_list **lst) +int parse_dgreat(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -30,6 +31,6 @@ int parse_dgreat(t_btree **ast, t_list **start, t_list **lst) node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_dless.c b/42sh/src/parser/parse_dless.c index f0a4ba45..7e8b39ce 100644 --- a/42sh/src/parser/parse_dless.c +++ b/42sh/src/parser/parse_dless.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 13:31:40 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:23:17 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:53:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_dless(t_btree **ast, t_list **start, t_list **lst) +int parse_dless(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -29,6 +30,6 @@ int parse_dless(t_btree **ast, t_list **start, t_list **lst) node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index 5155b189..23f0ea15 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/24 16:06:00 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:51:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_great(t_btree **ast, t_list **start, t_list **lst) +int parse_great(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -30,6 +31,6 @@ int parse_great(t_btree **ast, t_list **start, t_list **lst) node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_greatand.c b/42sh/src/parser/parse_greatand.c index b607415d..b4125436 100644 --- a/42sh/src/parser/parse_greatand.c +++ b/42sh/src/parser/parse_greatand.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:24:04 by ariard ### ########.fr */ +/* Updated: 2017/01/26 20:39:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_greatand(t_btree **ast, t_list **start, t_list **lst) +int parse_greatand(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -26,6 +27,6 @@ int parse_greatand(t_btree **ast, t_list **start, t_list **lst) node->data.redir.close = tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_less.c b/42sh/src/parser/parse_less.c index 9f97c55a..fa935218 100644 --- a/42sh/src/parser/parse_less.c +++ b/42sh/src/parser/parse_less.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:24:11 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:49:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_less(t_btree **ast, t_list **start, t_list **lst) +int parse_less(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -30,6 +31,6 @@ int parse_less(t_btree **ast, t_list **start, t_list **lst) node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_lessand.c b/42sh/src/parser/parse_lessand.c index 3aa80e6c..5e1e0311 100644 --- a/42sh/src/parser/parse_lessand.c +++ b/42sh/src/parser/parse_lessand.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:24:37 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:55:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_lessand(t_btree **ast, t_list **start, t_list **lst) +int parse_lessand(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -26,6 +27,6 @@ int parse_lessand(t_btree **ast, t_list **start, t_list **lst) node->data.redir.close = tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/lexer/lexer_loop.c b/42sh/src/parser/parse_newline.c similarity index 56% rename from 42sh/src/lexer/lexer_loop.c rename to 42sh/src/parser/parse_newline.c index 476205af..c4ed9ff2 100644 --- a/42sh/src/lexer/lexer_loop.c +++ b/42sh/src/parser/parse_newline.c @@ -1,28 +1,29 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* lexer_loop.c :+: :+: :+: */ +/* parse_newline.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ -/* Updated: 2017/01/26 00:58:57 by ariard ### ########.fr */ +/* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ +/* Updated: 2017/01/26 22:39:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "parser.h" -int lexer_while(t_list **alst, char *str) +int parse_newline(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { - t_token *token; + t_list *temp; - token = (*alst)->content; - if (ft_strncmp(str, "while", 5) == 0) - token->type = TK_WHILE; - else if (ft_isalnum(*str)) - { - token_append(token, *str); - return (ft_tokenize(alst, str + 1, WORD)); - } - return (ft_tokenize(&(*alst)->next, str + 6, LIST)); + ft_putstr("newline"); + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + *lst = NULL; + ft_parse(list_ast, ast, start); + *ast = NULL; + ft_parse(list_ast, ast, &temp); + return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 24c84777..3737f4b5 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/25 16:35:50 by ariard ### ########.fr */ +/* Updated: 2017/01/26 22:42:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_separator(t_btree **ast, t_list **start, t_list **lst) +int parse_separator(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_token *token; t_astnode *node; @@ -20,8 +21,8 @@ int parse_separator(t_btree **ast, t_list **start, t_list **lst) token = (*lst)->content; node = (*ast)->item; node->type = token->type; - ft_parse(&(*ast)->right, &(*lst)->next); + ft_parse(list_ast, &(*ast)->right, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(list_ast, &(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_subshell.c b/42sh/src/parser/parse_subshell.c index 9f6137eb..ee2a5027 100644 --- a/42sh/src/parser/parse_subshell.c +++ b/42sh/src/parser/parse_subshell.c @@ -6,13 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:52:44 by jhalford #+# #+# */ -/* Updated: 2017/01/20 16:25:08 by ariard ### ########.fr */ +/* Updated: 2017/01/26 19:59:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_subshell(t_btree **ast, t_list **start, t_list **lst) +int parse_subshell(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -26,7 +27,7 @@ int parse_subshell(t_btree **ast, t_list **start, t_list **lst) node->data.sstr[1] = ft_strdup("-c"); node->data.sstr[2] = ft_strdup(token->data); node->data.sstr[3] = NULL; - ft_parse(ast, &(*lst)->next); + ft_parse(list_ast, ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index de8cd8da..fe49f4c2 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,23 +6,26 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/24 17:54:40 by ariard ### ########.fr */ +/* Updated: 2017/01/26 22:37:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_word(t_btree **ast, t_list **start, t_list **lst) +int parse_word(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) { t_astnode *node; t_token *token; + ft_putstr("word"); (void)start; + (void)list_ast; token = (*lst)->content; node = (*ast)->item; node->type = TK_COMMAND; node->data.sstr = ft_sstradd(node->data.sstr, token->data); - ft_parse(ast, &(*lst)->next); + ft_parse(list_ast, ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/test b/42sh/test new file mode 100644 index 00000000..108ac6c1 --- /dev/null +++ b/42sh/test @@ -0,0 +1 @@ + 11 From 42bd66af424bbc6eb993bf996f80505d5b07e483 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sat, 28 Jan 2017 23:39:59 +0100 Subject: [PATCH 015/206] generation liste chainee d'ast de multi commande ok, to-do : ast de while --- 42sh/file1 | 1 + 42sh/file2 | 1 + 42sh/includes/lexer.h | 2 +- 42sh/sample/2lines.sh | 5 +++-- 42sh/src/builtin/builtin_cd.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_lexer_state.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_init.c | 3 ++- 42sh/src/main/shell_script.c | 12 ++++++------ 42sh/src/parser/.ft_parse.c.swn | Bin 0 -> 12288 bytes 42sh/src/parser/ft_parse.c | 6 +++--- 42sh/src/parser/parse_newline.c | 9 ++++----- 42sh/src/parser/parse_separator.c | 3 ++- 42sh/src/parser/parse_word.c | 3 +-- 17 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 42sh/file1 create mode 100644 42sh/file2 create mode 100644 42sh/src/parser/.ft_parse.c.swn diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..ce09b016 --- /dev/null +++ b/42sh/file1 @@ -0,0 +1 @@ +/Users/ariard/Projects/42sh diff --git a/42sh/file2 b/42sh/file2 new file mode 100644 index 00000000..ce09b016 --- /dev/null +++ b/42sh/file2 @@ -0,0 +1 @@ +/Users/ariard/Projects/42sh diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index b29e1000..46500e7c 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/26 21:29:07 by ariard ### ########.fr */ +/* Updated: 2017/01/27 12:49:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index f598a168..b6efb7f2 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1,2 +1,3 @@ -ls | cat -pwd | cat +ls ; echo ; pwd | cat > file2 +ls | cat +pwd > file1 diff --git a/42sh/src/builtin/builtin_cd.c b/42sh/src/builtin/builtin_cd.c index 6c84c1db..7be11cca 100644 --- a/42sh/src/builtin/builtin_cd.c +++ b/42sh/src/builtin/builtin_cd.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:57:53 by jhalford #+# #+# */ -/* Updated: 2017/01/20 00:10:52 by ariard ### ########.fr */ +/* Updated: 2017/01/27 15:12:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index c34db1e3..cff6e516 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/26 22:27:16 by ariard ### ########.fr */ +/* Updated: 2017/01/27 12:50:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index 08d730bd..3fceeeb0 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/26 00:31:25 by ariard ### ########.fr */ +/* Updated: 2017/01/27 12:49:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 8f05a9bb..74947d16 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/01/26 00:08:33 by ariard ### ########.fr */ +/* Updated: 2017/01/26 23:37:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index 0a98df66..dc3b830f 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/01/26 00:41:18 by ariard ### ########.fr */ +/* Updated: 2017/01/27 12:51:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 44ab926c..9f2fab64 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/26 18:25:53 by ariard ### ########.fr */ +/* Updated: 2017/01/27 12:51:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_init.c b/42sh/src/lexer/token_init.c index fcd796c5..1cae40d0 100644 --- a/42sh/src/lexer/token_init.c +++ b/42sh/src/lexer/token_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 15:30:25 by jhalford #+# #+# */ -/* Updated: 2017/01/24 01:07:41 by ariard ### ########.fr */ +/* Updated: 2017/01/26 23:36:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,7 @@ t_token *token_init(void) t_token *token; token = (t_token *)malloc(sizeof(t_token)); +//non protege token->type = 0; token->size = 10; token->data = ft_strnew(token->size); diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 35627524..7cf6cddd 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/26 22:42:07 by ariard ### ########.fr */ +/* Updated: 2017/01/28 23:38:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int shell_script() { t_list *token; t_btree *ast; + t_btree **ast2; t_list *list_ast; t_list *tmp2; @@ -34,15 +35,14 @@ int shell_script() return (1); tmp2 = list_ast; while (tmp2) - { - btree_print(STDBUG, tmp2->content, &ft_putast); + { + ast2 = tmp2->content; + btree_print(STDBUG, *ast2, &ft_putast); tmp2 = tmp2->next; } - return (0); while (list_ast) { - ast = list_ast->content; - if (ft_exec(&ast)) + if (ft_exec((t_btree **)list_ast->content)) return (1); list_ast = list_ast->next; } diff --git a/42sh/src/parser/.ft_parse.c.swn b/42sh/src/parser/.ft_parse.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..3c43bc8b8cfe879af878c810182b567d11ca700e GIT binary patch literal 12288 zcmeI2Pj4GV7{;eusDS_~5{Gb^#Hd~WsdsIMCT!Y>lo)E^xKW%C5DLr29><%wYio9* zkcLo-;K+q55(05V2o6XbsDz5d0S+8EaNz@Rgb%=hXLfhiHl;2Rxm22|e%W{To%fk{ z9(yBInJw$(>N1@zlnKV;g#0%7!7Jz9eTsZqB*f*O%Ud!rey}pX&@WkqnNp$6$4q@Y z5;RwMZ-+HSV9u0+jv4T#*>`!sxY-s?7!{ghRCG!^pdC221AC%subSc~$+3n~AA%D%=EVMI5*9(N>1|mfjFpV{`s=H(npY0n_ zquzDaYa7DZ5}Yxb&B%6TPg6+|PJ4_C=;53oCjTNo*?jrG#AxL zb15kpK9IYXn-9c1IV9m!b?_5=ky)BecA2M%2eNT_8_$RrB}cMHD^IPXJc6~CoQPjV13mA6miXK;ri_0rxlJzC0`T~86 z!mO*S2=6|%QCY6uJzKAA)T;GC8~FNmJ)fb8LlPh5<*DRN*`$|n?$Gm_-93C)r=v5! zh0Zh~W)`3LNe!AcrQit;CAi+l`@~u{Em_4`(<+*!Ia(^)rCGcDEZsVw(edV?h12OY z?(j1lI2;}4l;HE>+ZPF5FpEXAY|-MZU7WF>nUjJ$9k<)Y7kD6<&PhcYUy|oaFnRD_ zf*e%hf0&MFs7MK3KClN}T-j#A%-(DD+ABUkx&Q?l8no97_ntMEvY6C^| z8LKNn^{b=Myob;rZRhOhCJv&D5**AsMr7Mc5|JFJ{a=Frwss_VQtwF?FP%yL2FLXs AEC2ui literal 0 HcmV?d00001 diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index ece898bd..a9e6bc0a 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/26 22:42:09 by ariard ### ########.fr */ +/* Updated: 2017/01/28 23:27:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,8 +44,8 @@ int ft_parse(t_list **list_ast, t_btree **ast, t_list **start) *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.sstr = NULL; } -// if (!*list_ast) -// ft_lsteadd(list_ast, ft_lstnew(ast, sizeof(*ast))); + if (!*list_ast) + *list_ast = ft_lstnew(ast, sizeof(t_btree *)); while (g_parser[i].type) { if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index c4ed9ff2..84b48aa5 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/01/26 22:39:50 by ariard ### ########.fr */ +/* Updated: 2017/01/28 23:24:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,14 +16,13 @@ int parse_newline(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst) { t_list *temp; - - ft_putstr("newline"); + + DG("parsing newline"); temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - *lst = NULL; ft_parse(list_ast, ast, start); *ast = NULL; - ft_parse(list_ast, ast, &temp); + ft_parse(&(*list_ast)->next, ast, &temp); return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 3737f4b5..783c974c 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/26 22:42:17 by ariard ### ########.fr */ +/* Updated: 2017/01/28 23:01:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ int parse_separator(t_list **list_ast, t_btree **ast, t_token *token; t_astnode *node; + DG("parsing separator"); token = (*lst)->content; node = (*ast)->item; node->type = token->type; diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index fe49f4c2..84dffdb2 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 22:37:26 by ariard ### ########.fr */ +/* Updated: 2017/01/27 13:52:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,6 @@ int parse_word(t_list **list_ast, t_btree **ast, t_astnode *node; t_token *token; - ft_putstr("word"); (void)start; (void)list_ast; token = (*lst)->content; From 2212c927f8c38ca8263532a0f5a001b71af9ba81 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 30 Jan 2017 17:23:55 +0100 Subject: [PATCH 016/206] ast with while ok next:execution while --- 42sh/file1 | 1 - 42sh/file2 | 1 - 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 11 +++++++++-- 42sh/sample/2lines.sh | 2 +- 42sh/sample/while.sh | 3 +++ 42sh/script.sh | 12 ++++++++---- 42sh/src/lexer/lexer_comment.c | 2 +- 42sh/src/main/ft_putast.c | 6 +++++- 42sh/src/main/shell_script.c | 3 ++- 42sh/src/parser/.ft_parse.c.swn | Bin 12288 -> 12288 bytes 42sh/src/parser/ft_parse.c | 6 +++++- 42sh/src/parser/parse_do.c | 27 +++++++++++++++++++++++++++ 42sh/src/parser/parse_done.c | 27 +++++++++++++++++++++++++++ 42sh/src/parser/parse_list.c | 28 ++++++++++++++++++++++++++++ 42sh/src/parser/parse_newline.c | 2 +- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_while.c | 28 ++++++++++++++++++++++++++++ 42sh/src/parser/parse_word.c | 4 +--- 42sh/test | 1 - 20 files changed, 148 insertions(+), 20 deletions(-) delete mode 100644 42sh/file1 delete mode 100644 42sh/file2 create mode 100644 42sh/sample/while.sh create mode 100644 42sh/src/parser/parse_do.c create mode 100644 42sh/src/parser/parse_done.c create mode 100644 42sh/src/parser/parse_list.c create mode 100644 42sh/src/parser/parse_while.c delete mode 100644 42sh/test diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index ce09b016..00000000 --- a/42sh/file1 +++ /dev/null @@ -1 +0,0 @@ -/Users/ariard/Projects/42sh diff --git a/42sh/file2 b/42sh/file2 deleted file mode 100644 index ce09b016..00000000 --- a/42sh/file2 +++ /dev/null @@ -1 +0,0 @@ -/Users/ariard/Projects/42sh diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 46500e7c..1e172f76 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/27 12:49:53 by ariard ### ########.fr */ +/* Updated: 2017/01/30 16:32:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 5896d348..9a9a7012 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/26 20:57:12 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:14:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -80,5 +80,12 @@ int parse_subshell(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst); int parse_newline(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst); - +int parse_while(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_do(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_done(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); +int parse_list(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst); #endif diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index b6efb7f2..654889de 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1,3 +1,3 @@ ls ; echo ; pwd | cat > file2 ls | cat -pwd > file1 +pwd ; echo hello diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh new file mode 100644 index 00000000..0a69155f --- /dev/null +++ b/42sh/sample/while.sh @@ -0,0 +1,3 @@ +ls ; while [ 1 ]; do + echo hello +done > file1 ; pwd diff --git a/42sh/script.sh b/42sh/script.sh index 9e99f221..a09fa173 100755 --- a/42sh/script.sh +++ b/42sh/script.sh @@ -1,11 +1,15 @@ +#!/bin/bash + echo "debut script" -do - -while [ 1 ] +VALUE=3 +while [ $VALUE -gt 1 ] do sleep 1 + ((VALUE--)) echo "a" -done +done > file1 | cat ; ls + +ls -l > file2 | cat echo "fin script" diff --git a/42sh/src/lexer/lexer_comment.c b/42sh/src/lexer/lexer_comment.c index 613b9acb..844bf507 100644 --- a/42sh/src/lexer/lexer_comment.c +++ b/42sh/src/lexer/lexer_comment.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/24 18:22:35 by ariard #+# #+# */ -/* Updated: 2017/01/24 20:07:14 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:22:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 89e9f60d..3394bb3e 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/01/10 14:18:53 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 17:21:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,6 +32,10 @@ char *ft_putast(void *nodein) return (" | "); else if (node->type == TK_COMMAND) return (" COM "); + else if (node->type == TK_WHILE) + return (" WHILE "); + else if (node->type == TK_LIST) + return (" LIST "); else if (node->type == TK_GREAT) return (" > "); else if (node->type == TK_LESS) diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 7cf6cddd..c13c1b66 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/28 23:38:10 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:15:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,7 @@ int shell_script() btree_print(STDBUG, *ast2, &ft_putast); tmp2 = tmp2->next; } + return (0); while (list_ast) { if (ft_exec((t_btree **)list_ast->content)) diff --git a/42sh/src/parser/.ft_parse.c.swn b/42sh/src/parser/.ft_parse.c.swn index 3c43bc8b8cfe879af878c810182b567d11ca700e..4839274b14e0dd31e7c4f55d02c4ddda8ab99077 100644 GIT binary patch delta 348 zcmZojXh@JsG6?hZRWR2xW&i>K28QUg{)kp~83yZ}6Q%Uo4fRZn^wNqZE|l4rvxJ|~ zVY8sXXMSDy^=G&k7`6lPJRoib;v67O2I2%Djt63SAeIGUJ|Oz_m_5@-HApQrm?Kco_0pblnJPU|3fH)F} zLpd0P8T^0@Zy>eK28P>Gy%Fk7(hLg?Crasa7#Zl980n=IZ4BJc&uFt* zP~bB^?<95xhIt$i)i#p_70T<+aWOC)1>!?Md=Q8mfw&%s3xGHth(m!m1c-fr*bayd zfLH~H6@mBzCj-NNAl?JStAV%*h!cP~7Kp`wSO|#!0Bt)3#JhobI}mRG; +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/28 23:27:39 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:14:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,10 @@ t_parser g_parser[] = {TK_LESSAND, &parse_lessand}, {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, + {TK_WHILE, &parse_while}, + {TK_DO, &parse_do}, + {TK_DONE, &parse_done}, + {TK_LIST, &parse_list}, {TK_WORD, &parse_word}, {0, 0}, }; diff --git a/42sh/src/parser/parse_do.c b/42sh/src/parser/parse_do.c new file mode 100644 index 00000000..c66e47c2 --- /dev/null +++ b/42sh/src/parser/parse_do.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_do.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 16:28:41 by ariard #+# #+# */ +/* Updated: 2017/01/30 17:15:40 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int parse_do(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + node->type = TK_DO; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(list_ast, ast, start); + return (0); +} diff --git a/42sh/src/parser/parse_done.c b/42sh/src/parser/parse_done.c new file mode 100644 index 00000000..349c6a78 --- /dev/null +++ b/42sh/src/parser/parse_done.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_done.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 16:36:28 by ariard #+# #+# */ +/* Updated: 2017/01/30 17:15:00 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int parse_done(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + node->type = TK_DONE; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(list_ast, ast, start); + return (0); +} diff --git a/42sh/src/parser/parse_list.c b/42sh/src/parser/parse_list.c new file mode 100644 index 00000000..6b216e5a --- /dev/null +++ b/42sh/src/parser/parse_list.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_list.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ +/* Updated: 2017/01/30 17:22:54 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int parse_list(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) +{ + t_astnode *node; + t_token *token; + + (void)list_ast; + token = (*lst)->content; + node = (*ast)->item; + node->type = TK_LIST; + node->data.sstr = ft_sstradd(node->data.sstr, token->data); + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + return (0); +} diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index 84b48aa5..0cf3888d 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/01/28 23:24:40 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:14:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 783c974c..4453a4ff 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/28 23:01:44 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:11:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c new file mode 100644 index 00000000..58af9101 --- /dev/null +++ b/42sh/src/parser/parse_while.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_while.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ +/* Updated: 2017/01/30 17:22:36 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int parse_while(t_list **list_ast, t_btree **ast, + t_list **start, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + node->type = TK_WHILE; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(list_ast, &(*ast)->left, start); + ft_parse(list_ast, &(*ast)->right, start); + return (0); +} diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 84dffdb2..2de64573 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/27 13:52:59 by ariard ### ########.fr */ +/* Updated: 2017/01/30 16:45:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,8 +18,6 @@ int parse_word(t_list **list_ast, t_btree **ast, t_astnode *node; t_token *token; - (void)start; - (void)list_ast; token = (*lst)->content; node = (*ast)->item; node->type = TK_COMMAND; diff --git a/42sh/test b/42sh/test deleted file mode 100644 index 108ac6c1..00000000 --- a/42sh/test +++ /dev/null @@ -1 +0,0 @@ - 11 From 000ae4116a629d25474009e39a176e4cca631527 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 30 Jan 2017 19:31:34 +0100 Subject: [PATCH 017/206] generation subtree test_commands + consequent_commands --- 42sh/includes/exec.h | 7 +++++- 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 4 +++- 42sh/includes/parser.h | 2 +- 42sh/includes/types.h | 2 +- 42sh/sample/while.sh | 6 ++--- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/exec_pipe.c | 2 +- 42sh/src/exec/exec_semi.c | 2 +- 42sh/src/exec/exec_while.c | 38 +++++++++++++++++++++++++++++++ 42sh/src/exec/ft_exec.c | 3 ++- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/process_setexec.c | 2 +- 42sh/src/main/ft_print_all_ast.c | 27 ++++++++++++++++++++++ 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_get_ast.c | 36 +++++++++++++++++++++++++++++ 42sh/src/main/shell_get_opts.c | 2 +- 42sh/src/main/shell_script.c | 3 +-- 42sh/src/parser/.ft_parse.c.swn | Bin 12288 -> 0 bytes 42sh/src/parser/parse_list.c | 4 ++-- 42sh/src/parser/parse_word.c | 2 +- 21 files changed, 129 insertions(+), 21 deletions(-) create mode 100644 42sh/src/exec/exec_while.c create mode 100644 42sh/src/main/ft_print_all_ast.c create mode 100644 42sh/src/main/shell_get_ast.c delete mode 100644 42sh/src/parser/.ft_parse.c.swn diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index ed52dfeb..fda62039 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:01:46 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:57:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,8 @@ # define IS_PIPESTART(a) (a & PROCESS_PIPESTART) # define IS_PIPEEND(a) (a & PROCESS_PIPEEND) +# define SCRIPT_LOOP (1 << 0) + # include "libft.h" # include "types.h" # include "job_control.h" @@ -48,6 +50,7 @@ struct s_process int fdout; int status; t_flag attributes; + t_flag script; }; struct s_exec @@ -81,6 +84,8 @@ int exec_great(t_btree **ast); int exec_dgreat(t_btree **ast); int exec_command(t_btree **ast); +int exec_while(t_btree **ast); + int launch_process(t_process *p); int process_setexec(t_type type, t_process *p); int process_setgroup(t_process *p); diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 1e172f76..f1928bfa 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/30 16:32:37 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:05:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 33b25941..3dc119e6 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/26 20:57:21 by ariard ### ########.fr */ +/* Updated: 2017/01/30 19:23:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -81,11 +81,13 @@ int shell_single_command(char *command); int read_script(char *file); int shell_script(void); +t_list *shell_get_ast(char *command); void ft_expand_dollar(char **av, char **env); char *ft_findexec(char *path, char *file); char *ft_putast(void *node); void ft_putast2(void *node); +void ft_print_all_ast(t_list *lst_ast); #endif diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 9a9a7012..d9271c02 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:14:02 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:52:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index eaf9b3d9..7f87c28a 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/01/24 16:01:58 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:11:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 0a69155f..8a88a4d1 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,3 +1,3 @@ -ls ; while [ 1 ]; do - echo hello -done > file1 ; pwd +while echo bonjour toi > file1 ; do + echo hello world > file2 +done diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 17da9096..344bded5 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:16:06 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:29:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index 6d9899f6..ffb3e2fd 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 21:13:23 by jhalford #+# #+# */ -/* Updated: 2017/01/20 00:17:05 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:32:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 335ac2ac..dfc164f9 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2016/12/12 18:00:21 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 17:34:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c new file mode 100644 index 00000000..2bfb44b6 --- /dev/null +++ b/42sh/src/exec/exec_while.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_while.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ +/* Updated: 2017/01/30 19:30:16 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_while(t_btree **ast) +{ + t_list *test_commands; + t_list *consequent_commands; + t_astnode *node; + t_process *p; + + node = ((*ast)->left)->item; + DG("test command data '%s'", node->data.str); + test_commands = shell_get_ast(node->data.str); + node = ((*ast)->right)->item; + DG("consequent command data '%s'", node->data.str); + consequent_commands = shell_get_ast(node->data.str); + + p = &data_singleton()->exec.process; + p->script &= ~SCRIPT_LOOP; + +// while (ft_test(test_commands)) +// ft_exec(consequent_commands) +// del tree (test_commands); +// del tree (test_commands); + btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 27a8fdff..ba452953 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/01/24 20:03:01 by ariard ### ########.fr */ +/* Updated: 2017/01/30 17:33:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ t_execmap g_execmap[] = {TK_LESS, &exec_less}, {TK_GREAT, &exec_great}, {TK_DGREAT, &exec_dgreat}, + {TK_WHILE, &exec_while}, {TK_COMMAND | TK_SUBSHELL, &exec_command}, {0, 0}, }; diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index ca0b0bbe..172a37ab 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:11:35 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:30:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index db7afc51..6093aec2 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:16:52 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:29:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_print_all_ast.c b/42sh/src/main/ft_print_all_ast.c new file mode 100644 index 00000000..b07ea34f --- /dev/null +++ b/42sh/src/main/ft_print_all_ast.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_all_ast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 19:23:49 by ariard #+# #+# */ +/* Updated: 2017/01/30 19:26:42 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void ft_print_all_ast(t_list *lst_ast) +{ + t_list *tmp; + t_btree **ast; + + tmp = lst_ast; + while (tmp) + { + ast = tmp->content; + btree_print(STDBUG, *ast, &ft_putast); + tmp = tmp->next; + } +} diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 47590803..445aaece 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/26 21:08:49 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:59:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_get_ast.c b/42sh/src/main/shell_get_ast.c new file mode 100644 index 00000000..40784a5f --- /dev/null +++ b/42sh/src/main/shell_get_ast.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* shell_set_ast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 18:19:13 by ariard #+# #+# */ +/* Updated: 2017/01/30 19:28:19 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +t_list *shell_get_ast(char *command) +{ + t_list *token; + t_btree *ast; + t_list *list_ast; + + token = NULL; + ast = NULL; + list_ast = NULL; + if (ft_tokenize(&token, command, DEFAULT)) + return (NULL); + if (!token) + return (NULL); + if (ft_post_tokenize(&token, command)) + return (NULL); + DG("after post_tokenize"); + token_print(token); + if (ft_parse(&list_ast, &ast, &token)) + return (NULL); +// ft_print_all_ast(list_ast); + return (list_ast); +} diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index b953af05..d1e370ba 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/01/23 23:36:11 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:11:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index c13c1b66..8b3631eb 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:15:37 by ariard ### ########.fr */ +/* Updated: 2017/01/30 19:00:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,6 @@ int shell_script() btree_print(STDBUG, *ast2, &ft_putast); tmp2 = tmp2->next; } - return (0); while (list_ast) { if (ft_exec((t_btree **)list_ast->content)) diff --git a/42sh/src/parser/.ft_parse.c.swn b/42sh/src/parser/.ft_parse.c.swn deleted file mode 100644 index 4839274b14e0dd31e7c4f55d02c4ddda8ab99077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&2Jk;7{;euS_3HvE>#6$8cSvUQLmkZCfIG16dPjIaiTaTlqxKn^*G+dU0bso zg%AQ9$QAA&@h`xk5<)^k;)aAc^uUQb5*H+TL?E8o-Pv6eni7#qrP=7`eRtk@pP6~q zlZ$7g_B)>W=6{aQ%U4C58_X9zF znGd#@<+=LQgxk|yZs|jlyNv5y&+wyyb)1aKDF>7TCv{-Q>t2}|Ba;)Qq9{#|U!u=G z(>|$+>aQG74k!nd1IhvAfO0@Npd3&RJi-om!!zUq%>S`)4RhiB%s=koqq->vlmp5E z<$!WPIiMU+4k!nd1IhvAfO0@N@CZ6!;`e=emXK@bFnRp`KNqgyi>C;A3ygtp&J(f? zE`smJ2zdv*2!48!kVEhh7=i(~1=hd}xCnlGf{=UQF8B<52pCuZ8E_8#@;D(sfUm&k z;1KkI1>Ob*cmX^Q&VxTwgxm+egI~eV;79Ns_!fK&*1?;g4laPdu)aUQUGOFN6!gF? z&<0I#6U+kPMFpr!IiMU+4k!nd1ImFT4jdei6ldNJcc@m(R7eWXDLa=#{ zj+T`Q$s%uW$RO$swwYsCcZP;&$Ye4^DDC#_J{ujxPh*U%oLw}C!*;b`qV~IN(A7L+ z!{dz6Y(`91%;{281bJbHhE6DP1|88&%OcKPnYBH32e*#tnFZJNI7Vo;8x65$(F2dZ zuwij#ddv{j+GSCcr*1H`uOLRn8iIj^GU`WONRaVOLC%J5u|g0yo-h~H(d1G>&~Ff{ z7K?Yi3fU)qS9vTGYY|zRjaHebkq2Vp;xX(I4oVKh9E*8cJjf$hy=km1tyJ+k{Bxeh z?tph>qET&x*nT?Ri*Z@{JE{Ni#n)X`+KYSdq)?@_#tr4@t^?%Jv?)*qa0*47&J#LK}3>D&JM z*(c#qUY?5f;yS&KbBDHL^>?rv#)C7zh2A(JdKTZQ)4FI@7lNmFNx}9IJC=3IbfQ?A z){7;5vPetQ< +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:22:54 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:48:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ int parse_list(t_list **list_ast, t_btree **ast, token = (*lst)->content; node = (*ast)->item; node->type = TK_LIST; - node->data.sstr = ft_sstradd(node->data.sstr, token->data); + node->data.str = ft_strdup(token->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 2de64573..f8f537d7 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/30 16:45:53 by ariard ### ########.fr */ +/* Updated: 2017/01/30 18:37:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 0dc029406f82269d9e90f753c473a15bde676d01 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 30 Jan 2017 23:47:05 +0100 Subject: [PATCH 018/206] exec while ok nxt: resoudre bug empty tree --- 42sh/file2 | 1 + 42sh/file3 | 0 42sh/includes/exec.h | 5 ++++- 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 4 ++-- 42sh/sample/while.sh | 8 +++++--- 42sh/src/exec/exec_ampersand.c | 9 +++++++-- 42sh/src/exec/exec_and_if.c | 10 +++++++--- 42sh/src/exec/exec_command.c | 6 ++++-- 42sh/src/exec/exec_dgreat.c | 8 ++++++-- 42sh/src/exec/exec_great.c | 8 ++++++-- 42sh/src/exec/exec_less.c | 8 ++++++-- 42sh/src/exec/exec_list.c | 23 +++++++++++++++++++++++ 42sh/src/exec/exec_or_if.c | 8 ++++++-- 42sh/src/exec/exec_pipe.c | 6 ++++-- 42sh/src/exec/exec_semi.c | 9 +++++++-- 42sh/src/exec/exec_while.c | 24 ++++++++++++++++-------- 42sh/src/exec/ft_exec.c | 5 ++++- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/loop_exec.c | 27 +++++++++++++++++++++++++++ 42sh/src/exec/set_exitstatus.c | 2 +- 42sh/src/lexer/lexer_list.c | 7 +++++-- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/ft_print_all_ast.c | 2 +- 42sh/src/main/main.c | 2 +- 42sh/src/main/read_script.c | 2 +- 42sh/src/main/shell_get_ast.c | 13 ++++++------- 42sh/src/main/shell_get_opts.c | 2 +- 42sh/src/main/shell_script.c | 5 +++-- 42sh/src/parser/parse_list.c | 4 ++-- 42sh/src/parser/parse_newline.c | 3 +-- 42sh/src/parser/parse_separator.c | 3 +-- 42sh/src/parser/parse_while.c | 2 +- 33 files changed, 162 insertions(+), 60 deletions(-) create mode 100644 42sh/file2 create mode 100644 42sh/file3 create mode 100644 42sh/src/exec/exec_list.c create mode 100644 42sh/src/exec/loop_exec.c diff --git a/42sh/file2 b/42sh/file2 new file mode 100644 index 00000000..ce09b016 --- /dev/null +++ b/42sh/file2 @@ -0,0 +1 @@ +/Users/ariard/Projects/42sh diff --git a/42sh/file3 b/42sh/file3 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index fda62039..3791999c 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:57:16 by ariard ### ########.fr */ +/* Updated: 2017/01/30 22:32:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -85,6 +85,7 @@ int exec_dgreat(t_btree **ast); int exec_command(t_btree **ast); int exec_while(t_btree **ast); +int exec_list(t_btree **ast); int launch_process(t_process *p); int process_setexec(t_type type, t_process *p); @@ -102,4 +103,6 @@ void set_exitstatus(int status); void ast_free(void *data, size_t content_size); +int loop_exec(t_list *list_ast); + #endif diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index f1928bfa..eb3ba0e9 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:05:43 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:41:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 3dc119e6..bd86829c 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/30 19:23:44 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:10:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -81,7 +81,7 @@ int shell_single_command(char *command); int read_script(char *file); int shell_script(void); -t_list *shell_get_ast(char *command); +t_list **shell_get_ast(char *command); void ft_expand_dollar(char **av, char **env); char *ft_findexec(char *path, char *file); diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 8a88a4d1..84f20c5e 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,3 +1,5 @@ -while echo bonjour toi > file1 ; do - echo hello world > file2 -done +echo "begin script" +while [ 1 ] +do sleep 1 ; echo "hello 42sh" +done +echo "end script" diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index a3ab0fa9..0a0c7a0b 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/01/22 22:08:34 by ariard ### ########.fr */ +/* Updated: 2017/01/30 21:11:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,17 @@ int exec_ampersand(t_btree **ast) { + t_process *p; + if (SHELL_HAS_JOBC(data_singleton()->opts)) data_singleton()->exec.job.attributes |= JOB_BG; ft_exec(&(*ast)->left); if (SHELL_HAS_JOBC(data_singleton()->opts)) data_singleton()->exec.job.attributes &= ~JOB_BG; ft_exec(&(*ast)->right); - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_and_if.c b/42sh/src/exec/exec_and_if.c index 0728310d..4b26c5d4 100644 --- a/42sh/src/exec/exec_and_if.c +++ b/42sh/src/exec/exec_and_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:28 by jhalford #+# #+# */ -/* Updated: 2016/12/12 18:01:06 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 20:53:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,8 @@ int exec_and_if(t_btree **ast) { - t_data *data; + t_data *data; + t_process *p; data = data_singleton(); if (data->exec.aol_status == NULL @@ -32,6 +33,9 @@ int exec_and_if(t_btree **ast) ft_exec(&(*ast)->right); data->exec.aol_status = NULL; data->exec.aol_search = 0; - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 344bded5..5a47ff90 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:29:22 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:25:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,6 +37,8 @@ int exec_command(t_btree **ast) p->av = NULL; p->pid = 0; p->attributes = PROCESS_PIPESTART | PROCESS_PIPEEND; - btree_delone(ast, &ast_free); + + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_dgreat.c b/42sh/src/exec/exec_dgreat.c index 9897f54d..ad73e6b6 100644 --- a/42sh/src/exec/exec_dgreat.c +++ b/42sh/src/exec/exec_dgreat.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:15:13 by jhalford #+# #+# */ -/* Updated: 2016/12/13 17:13:58 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 20:55:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int exec_dgreat(t_btree **ast) { t_astnode *node; + t_process *p; int fd; node = (*ast)->item; @@ -22,6 +23,9 @@ int exec_dgreat(t_btree **ast) data_singleton()->exec.process.fdout = fd; ft_exec(&(*ast)->left); data_singleton()->exec.process.fdout = STDOUT; - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_great.c b/42sh/src/exec/exec_great.c index 6b410e7b..f4399234 100644 --- a/42sh/src/exec/exec_great.c +++ b/42sh/src/exec/exec_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:51 by jhalford #+# #+# */ -/* Updated: 2016/12/13 17:14:19 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 21:09:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int exec_great(t_btree **ast) { t_astnode *node; + t_process *p; int fd; node = (*ast)->item; @@ -22,6 +23,9 @@ int exec_great(t_btree **ast) data_singleton()->exec.process.fdout = fd; ft_exec(&(*ast)->left); data_singleton()->exec.process.fdout = STDOUT; - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_less.c b/42sh/src/exec/exec_less.c index f27be538..4c0d226d 100644 --- a/42sh/src/exec/exec_less.c +++ b/42sh/src/exec/exec_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:08 by jhalford #+# #+# */ -/* Updated: 2016/12/13 17:14:46 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 20:56:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int exec_less(t_btree **ast) { t_astnode *node; + t_process *p; int fd; node = (*ast)->item; @@ -25,6 +26,9 @@ int exec_less(t_btree **ast) ft_exec(&(*ast)->left); data_singleton()->exec.process.fdin = STDIN; /* data->exec.process.command = NULL; */ - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_list.c b/42sh/src/exec/exec_list.c new file mode 100644 index 00000000..aab8b1ce --- /dev/null +++ b/42sh/src/exec/exec_list.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_list.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 20:19:29 by ariard #+# #+# */ +/* Updated: 2017/01/30 20:57:51 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_list(t_btree **ast) +{ + t_process *p; + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/exec_or_if.c b/42sh/src/exec/exec_or_if.c index 6b18060c..c7abb167 100644 --- a/42sh/src/exec/exec_or_if.c +++ b/42sh/src/exec/exec_or_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 21:06:17 by jhalford #+# #+# */ -/* Updated: 2017/01/02 18:10:21 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 21:09:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int exec_or_if(t_btree **ast) { t_data *data; + t_process *p; data = data_singleton(); if (data->exec.aol_status == NULL @@ -32,6 +33,9 @@ int exec_or_if(t_btree **ast) ft_exec(&(*ast)->right); data->exec.aol_status = NULL; data->exec.aol_search = 0; - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index ffb3e2fd..d11fc8f1 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 21:13:23 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:32:39 by ariard ### ########.fr */ +/* Updated: 2017/01/30 21:01:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,6 +41,8 @@ int exec_pipe(t_btree **ast) close(fds[PIPE_READ]); p->fdin = STDIN; - btree_delone(ast, &ast_free); + + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index dfc164f9..2ab2b3d2 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:34:07 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:25:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,13 @@ int exec_semi(t_btree **ast) { + t_process *p; + ft_exec(&(*ast)->left); ft_exec(&(*ast)->right); - btree_delone(ast, &ast_free); + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 2bfb44b6..d6aa3e24 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/01/30 19:30:16 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:41:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,25 +14,33 @@ int exec_while(t_btree **ast) { - t_list *test_commands; - t_list *consequent_commands; + t_list **test_commands; + t_list **consequent_commands; t_astnode *node; t_process *p; + int test; node = ((*ast)->left)->item; DG("test command data '%s'", node->data.str); test_commands = shell_get_ast(node->data.str); +// ft_print_all_ast(*test_commands); node = ((*ast)->right)->item; + DG("consequent command data '%s'", node->data.str); consequent_commands = shell_get_ast(node->data.str); - + p = &data_singleton()->exec.process; - p->script &= ~SCRIPT_LOOP; + p->script |= SCRIPT_LOOP; -// while (ft_test(test_commands)) -// ft_exec(consequent_commands) +// ft_print_all_ast(consequent_commands); + + test = 10; + while (test--) + loop_exec(*consequent_commands); // del tree (test_commands); // del tree (test_commands); - btree_delone(ast, &ast_free); + p->script &= 0; + + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index ba452953..16bd6e16 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:33:34 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:15:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,7 @@ t_execmap g_execmap[] = {TK_GREAT, &exec_great}, {TK_DGREAT, &exec_dgreat}, {TK_WHILE, &exec_while}, + {TK_LIST, &exec_list}, {TK_COMMAND | TK_SUBSHELL, &exec_command}, {0, 0}, }; @@ -39,8 +40,10 @@ int ft_exec(t_btree **ast) while (g_execmap[i].type) { if (item->type & g_execmap[i].type) + { /* return ((*g_execmap[i].f)(ast)); */ (*g_execmap[i].f)(ast); + } i++; } return (0); diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 172a37ab..5fd4472d 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:30:31 by ariard ### ########.fr */ +/* Updated: 2017/01/30 19:36:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/loop_exec.c b/42sh/src/exec/loop_exec.c new file mode 100644 index 00000000..c33f48be --- /dev/null +++ b/42sh/src/exec/loop_exec.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* loop_exec.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 21:02:10 by ariard #+# #+# */ +/* Updated: 2017/01/30 23:17:24 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int loop_exec(t_list *list_ast) +{ + +// DG("begin exec loop"); +// ft_print_all_ast(*list_ast); + while (list_ast) + { + if (ft_exec((t_btree **)list_ast->content)) + return (1); + list_ast = list_ast->next; + } + return (0); +} diff --git a/42sh/src/exec/set_exitstatus.c b/42sh/src/exec/set_exitstatus.c index 584abdcc..0a82731d 100644 --- a/42sh/src/exec/set_exitstatus.c +++ b/42sh/src/exec/set_exitstatus.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */ -/* Updated: 2017/01/08 15:58:20 by jhalford ### ########.fr */ +/* Updated: 2017/01/30 21:05:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index 33754baa..3fe84e51 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/01/26 19:24:50 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:14:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int lexer_list(t_list **alst, char *str) { t_token *token; + char lim; token = (*alst)->content; token->type = TK_LIST; @@ -22,12 +23,14 @@ int lexer_list(t_list **alst, char *str) { if (ft_is_delim_list(*str)) { - str++; + lim = *str++; while (ft_is_delim(*str) || *str == '\n') str++; if (ft_strncmp(str, "done", 4) == 0 || ft_strncmp(str, "do", 2) == 0) return (ft_tokenize(alst, str, DO_GROUP)); + else + token_append(token, lim); } token_append(token, *str++); } diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 9f2fab64..3221534b 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/27 12:51:00 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:17:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_print_all_ast.c b/42sh/src/main/ft_print_all_ast.c index b07ea34f..84d2ada8 100644 --- a/42sh/src/main/ft_print_all_ast.c +++ b/42sh/src/main/ft_print_all_ast.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 19:23:49 by ariard #+# #+# */ -/* Updated: 2017/01/30 19:26:42 by ariard ### ########.fr */ +/* Updated: 2017/01/30 22:11:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 445aaece..7cbf39ee 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:59:13 by ariard ### ########.fr */ +/* Updated: 2017/01/30 20:45:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index 8b8c8230..04f03a1a 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/26 17:52:25 by ariard ### ########.fr */ +/* Updated: 2017/01/30 20:32:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_get_ast.c b/42sh/src/main/shell_get_ast.c index 40784a5f..7005119a 100644 --- a/42sh/src/main/shell_get_ast.c +++ b/42sh/src/main/shell_get_ast.c @@ -6,21 +6,21 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 18:19:13 by ariard #+# #+# */ -/* Updated: 2017/01/30 19:28:19 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:14:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -t_list *shell_get_ast(char *command) +t_list **shell_get_ast(char *command) { t_list *token; t_btree *ast; - t_list *list_ast; + t_list **list_ast; token = NULL; ast = NULL; - list_ast = NULL; + list_ast = ft_memalloc(sizeof(*list_ast)); if (ft_tokenize(&token, command, DEFAULT)) return (NULL); if (!token) @@ -29,8 +29,7 @@ t_list *shell_get_ast(char *command) return (NULL); DG("after post_tokenize"); token_print(token); - if (ft_parse(&list_ast, &ast, &token)) - return (NULL); -// ft_print_all_ast(list_ast); + if (ft_parse(list_ast, &ast, &token)) + return (NULL); return (list_ast); } diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index d1e370ba..cd56439a 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:11:18 by ariard ### ########.fr */ +/* Updated: 2017/01/30 20:29:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 8b3631eb..e525e758 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/30 19:00:50 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:13:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,11 +40,12 @@ int shell_script() btree_print(STDBUG, *ast2, &ft_putast); tmp2 = tmp2->next; } - while (list_ast) +/* while (list_ast) { if (ft_exec((t_btree **)list_ast->content)) return (1); list_ast = list_ast->next; } +*/ loop_exec(list_ast); return (0); } diff --git a/42sh/src/parser/parse_list.c b/42sh/src/parser/parse_list.c index d9f861bb..f55d8336 100644 --- a/42sh/src/parser/parse_list.c +++ b/42sh/src/parser/parse_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ -/* Updated: 2017/01/30 18:48:24 by ariard ### ########.fr */ +/* Updated: 2017/01/30 23:38:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ int parse_list(t_list **list_ast, t_btree **ast, token = (*lst)->content; node = (*ast)->item; node->type = TK_LIST; - node->data.str = ft_strdup(token->data); + node->data.str = ft_strdup(token->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index 0cf3888d..f4129f9e 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:14:05 by ariard ### ########.fr */ +/* Updated: 2017/01/30 20:02:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ int parse_newline(t_list **list_ast, t_btree **ast, { t_list *temp; - DG("parsing newline"); temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 4453a4ff..cf7c911b 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:11:05 by ariard ### ########.fr */ +/* Updated: 2017/01/30 20:25:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,6 @@ int parse_separator(t_list **list_ast, t_btree **ast, t_token *token; t_astnode *node; - DG("parsing separator"); token = (*lst)->content; node = (*ast)->item; node->type = token->type; diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 58af9101..da3e5f6b 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:22:36 by ariard ### ########.fr */ +/* Updated: 2017/01/30 19:52:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 73b4cc306001358e26585271fb98ba41b3b8bb46 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 31 Jan 2017 22:12:49 +0100 Subject: [PATCH 019/206] resolution empty tree + nested loop + while error lexing --- 42sh/includes/exec.h | 4 +- 42sh/includes/lexer.h | 15 +++++-- 42sh/includes/minishell.h | 3 +- 42sh/includes/parser.h | 4 +- 42sh/sample/4lines.sh | 6 +-- 42sh/sample/while.sh | 21 ++++++++-- 42sh/src/exec/ast_free.c | 2 +- 42sh/src/exec/exec_default.c | 23 +++++++++++ 42sh/src/exec/exec_semi.c | 2 +- 42sh/src/exec/exec_while.c | 2 +- 42sh/src/exec/ft_exec.c | 3 +- 42sh/src/exec/loop_exec.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 5 ++- 42sh/src/lexer/get_reserved_words.c | 9 +++-- .../lexer/{lexer_do_group.c => lexer_do.c} | 23 +++++------ 42sh/src/lexer/lexer_done.c | 39 +++++++++++++++++++ 42sh/src/lexer/lexer_list.c | 16 ++++---- 42sh/src/lexer/token_free.c | 2 +- 42sh/src/main/data_init.c | 4 +- 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_init.c | 2 +- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/parse_done.c | 2 +- 42sh/src/parser/parse_list.c | 2 +- 42sh/src/parser/parse_newline.c | 9 ++++- 26 files changed, 153 insertions(+), 53 deletions(-) create mode 100644 42sh/src/exec/exec_default.c rename 42sh/src/lexer/{lexer_do_group.c => lexer_do.c} (66%) create mode 100644 42sh/src/lexer/lexer_done.c diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 3791999c..00305b5d 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/30 22:32:57 by ariard ### ########.fr */ +/* Updated: 2017/01/31 19:34:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -73,6 +73,8 @@ extern t_execmap g_execmap[]; int ft_exec(t_btree **ast); +int exec_default(t_btree **ast); + int exec_semi(t_btree **ast); int exec_ampersand(t_btree **ast); int exec_or_if(t_btree **ast); diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index eb3ba0e9..2872c1f1 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,13 +6,20 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/30 23:41:17 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:55:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef LEXER_H # define LEXER_H +struct s_nest +{ + long long do_group; +}; + +typedef struct s_nest t_nest; + # include "minishell.h" typedef long long t_type; @@ -64,7 +71,8 @@ enum e_lexstate VAR, SPECIAL, WHILE, - DO_GROUP, + DO, + DONE, LIST, COMMENT, }; @@ -116,7 +124,8 @@ int lexer_backslash(t_list **alst, char *str); int lexer_var(t_list **alst, char *str); int lexer_special(t_list **alst, char *str); int lexer_while(t_list **alst, char *str); -int lexer_do_group(t_list **alst, char *str); +int lexer_do(t_list **alst, char *str); +int lexer_done(t_list **alst, char *str); int lexer_list(t_list **alst, char *str); int lexer_comment(t_list **alst, char *str); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index bd86829c..5f3ebf1d 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/30 23:10:05 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:59:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,6 +66,7 @@ struct s_data t_exec exec; t_jobc jobc; t_script script; + t_nest nest; }; extern t_stof g_builtins[]; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index d9271c02..72c2046d 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/01/30 18:52:54 by ariard ### ########.fr */ +/* Updated: 2017/01/31 19:31:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,6 +58,7 @@ struct s_astnode extern t_parser g_parser[]; int ft_parse(t_list **list_ast, t_btree **ast, t_list **token); + int parse_newline(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst); int parse_separator(t_list **list_ast, t_btree **ast, @@ -88,4 +89,5 @@ int parse_done(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst); int parse_list(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst); + #endif diff --git a/42sh/sample/4lines.sh b/42sh/sample/4lines.sh index 999b725d..2ef2d5ba 100644 --- a/42sh/sample/4lines.sh +++ b/42sh/sample/4lines.sh @@ -1,4 +1,2 @@ -ls | wc -l > file1 -cd ; pwd | wc -l ; echo "bonjour" -ls -l > file2 -pwd ; echo "hello world" +ls | cat + diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 84f20c5e..8c6fb2e9 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,5 +1,20 @@ -echo "begin script" +echo "begin loop" while [ 1 ] -do sleep 1 ; echo "hello 42sh" +do + echo "inner loop1" + while [ 1 ] + do + echo "love 42" + done + echo "inner loop2" + while [ 1 ] + do + echo "inner loop2-1" + while [ 1 ] + do + echo "hello world" + done + echo "salut monde" + done done -echo "end script" +echo "end loop" diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index b0b3f592..12e06dba 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:50:03 by jhalford ### ########.fr */ +/* Updated: 2017/01/31 18:49:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_default.c b/42sh/src/exec/exec_default.c new file mode 100644 index 00000000..57489149 --- /dev/null +++ b/42sh/src/exec/exec_default.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_default.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/31 19:29:59 by ariard #+# #+# */ +/* Updated: 2017/01/31 19:57:44 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_default(t_btree **ast) +{ + t_process *p; + + p = &data_singleton()->exec.process; + if (!(p->script & SCRIPT_LOOP)) + btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 2ab2b3d2..9cabc19f 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/01/30 23:25:33 by ariard ### ########.fr */ +/* Updated: 2017/01/31 19:31:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index d6aa3e24..75285598 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/01/30 23:41:55 by ariard ### ########.fr */ +/* Updated: 2017/01/31 20:45:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 16bd6e16..8251c16e 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/01/30 23:15:15 by ariard ### ########.fr */ +/* Updated: 2017/01/31 20:00:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ t_execmap g_execmap[] = { + {TK_NEWLINE, &exec_default}, {TK_AND_IF, &exec_and_if}, {TK_OR_IF, &exec_or_if}, {TK_SEMI, &exec_semi}, diff --git a/42sh/src/exec/loop_exec.c b/42sh/src/exec/loop_exec.c index c33f48be..cf285ee4 100644 --- a/42sh/src/exec/loop_exec.c +++ b/42sh/src/exec/loop_exec.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 21:02:10 by ariard #+# #+# */ -/* Updated: 2017/01/30 23:17:24 by ariard ### ########.fr */ +/* Updated: 2017/01/31 19:27:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index cff6e516..4e09ed79 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/27 12:50:21 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:08:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,8 @@ int (*g_lexer[])(t_list **alst, char *str) = &lexer_var, &lexer_special, &lexer_while, - &lexer_do_group, + &lexer_do, + &lexer_done, &lexer_list, &lexer_comment, }; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index f317f792..ea064d56 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/01/26 18:47:52 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:11:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,8 +16,9 @@ t_lexstate get_reserved_words(char *str) { if (ft_strncmp(str, "while", 5) == 0) return (WHILE); - else if (ft_strncmp(str, "done", 4) == 0 - || ft_strncmp(str, "do" , 2) == 0) - return (DO_GROUP); + else if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) + return (DONE); + else if (ft_strncmp(str, "do" , 2) == 0 && ft_isalpha(*(str + 2)) == 0) + return (DO); return (0); } diff --git a/42sh/src/lexer/lexer_do_group.c b/42sh/src/lexer/lexer_do.c similarity index 66% rename from 42sh/src/lexer/lexer_do_group.c rename to 42sh/src/lexer/lexer_do.c index 56681183..f6c20aeb 100644 --- a/42sh/src/lexer/lexer_do_group.c +++ b/42sh/src/lexer/lexer_do.c @@ -6,25 +6,25 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:48:48 by ariard #+# #+# */ -/* Updated: 2017/01/26 18:49:32 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:57:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" -int lexer_do_group(t_list **alst, char *str) +int lexer_do(t_list **alst, char *str) { t_token *token; t_lexstate state; - int type; + t_nest *nest; - type = (str[0] == 'd' && str[1] == 'o' && str[2] != 'n' ? - 2 : 4); + nest = &data_singleton()->nest; if (*alst) { - if (ft_is_delim_list(*(str + type)) || *(str + type) == ' ') - return (lexer_do_group(&(*alst)->next, str)); - return (ft_tokenize(alst, str + 1, LIST)); + nest->do_group++; + if (nest->do_group == 1) + return (lexer_do(&(*alst)->next, str)); + return (ft_tokenize(alst, str, LIST)); } else { @@ -32,7 +32,8 @@ int lexer_do_group(t_list **alst, char *str) *alst = ft_lstnew(token, sizeof(*token)); } token = (*alst)->content; - token->type = (type == 2 ? TK_DO : TK_DONE); - state = (token->type == TK_DO) ? LIST : DEFAULT; - return (ft_tokenize(&(*alst)->next, str + type, state)); + token->type = TK_DO; + state = LIST; +// data_singleton()->scope |= (token->type == TK_DO) ? IN_LIST : OUT_LIST; + return (ft_tokenize(&(*alst)->next, str + 2, state)); } diff --git a/42sh/src/lexer/lexer_done.c b/42sh/src/lexer/lexer_done.c new file mode 100644 index 00000000..19705849 --- /dev/null +++ b/42sh/src/lexer/lexer_done.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_done.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/31 20:49:09 by ariard #+# #+# */ +/* Updated: 2017/01/31 21:57:46 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_done(t_list **alst, char *str) +{ + t_token *token; + t_lexstate state; + t_nest *nest; + + nest = &data_singleton()->nest; + if (*alst) + { + nest->do_group--; + if (nest->do_group == 0) + return (lexer_done(&(*alst)->next, str)); + return (ft_tokenize(alst, str, LIST)); + } + else + { + token = token_init(); + *alst = ft_lstnew(token, sizeof(*token)); + } + token = (*alst)->content; + token->type = TK_DONE; + state = DEFAULT; +// data_singleton()->scope |= (token->type == TK_DO) ? IN_LIST : OUT_LIST; + return (ft_tokenize(&(*alst)->next, str + 4, state)); +} diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index 3fe84e51..0ff80acd 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/01/30 23:14:45 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:05:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int lexer_list(t_list **alst, char *str) { t_token *token; - char lim; token = (*alst)->content; token->type = TK_LIST; @@ -23,14 +22,15 @@ int lexer_list(t_list **alst, char *str) { if (ft_is_delim_list(*str)) { - lim = *str++; + token_append(token, *str++); while (ft_is_delim(*str) || *str == '\n') str++; - if (ft_strncmp(str, "done", 4) == 0 - || ft_strncmp(str, "do", 2) == 0) - return (ft_tokenize(alst, str, DO_GROUP)); - else - token_append(token, lim); + if (ft_strncmp(str, "done", 4) == 0 && (ft_is_delim_list(*(str + 4)) + || *(str + 4) == ' ')) + return (ft_tokenize(alst, str, DONE)); + else if (ft_strncmp(str, "do", 2) == 0 && (ft_is_delim_list(*(str + 2)) + || *(str + 2) == ' ')) + return (ft_tokenize(alst, str, DO)); } token_append(token, *str++); } diff --git a/42sh/src/lexer/token_free.c b/42sh/src/lexer/token_free.c index b0b9b190..88287de8 100644 --- a/42sh/src/lexer/token_free.c +++ b/42sh/src/lexer/token_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:30 by jhalford #+# #+# */ -/* Updated: 2017/01/26 22:25:08 by ariard ### ########.fr */ +/* Updated: 2017/01/31 18:41:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 8ca93754..c69faea1 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/01/23 22:37:43 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:50:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,8 @@ int data_init(void) data->env = ft_sstrdup(environ); data->opts = SHELL_OPTS_JOBC; + data->nest.do_group = 0; + data->exec.process.path = NULL; data->exec.process.av = NULL; data->exec.process.fdin = STDIN; diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 7cbf39ee..5a7ecd69 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/01/30 20:45:01 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:25:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index 14066b58..d2051cbb 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/01/23 22:35:46 by ariard ### ########.fr */ +/* Updated: 2017/01/31 20:02:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index e525e758..2ec9a76c 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/30 23:13:44 by ariard ### ########.fr */ +/* Updated: 2017/01/31 21:55:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index d9da288d..3d795414 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:14:19 by ariard ### ########.fr */ +/* Updated: 2017/01/31 18:38:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_done.c b/42sh/src/parser/parse_done.c index 349c6a78..83a5f6f1 100644 --- a/42sh/src/parser/parse_done.c +++ b/42sh/src/parser/parse_done.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:36:28 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:15:00 by ariard ### ########.fr */ +/* Updated: 2017/01/31 19:36:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_list.c b/42sh/src/parser/parse_list.c index f55d8336..965fed17 100644 --- a/42sh/src/parser/parse_list.c +++ b/42sh/src/parser/parse_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ -/* Updated: 2017/01/30 23:38:15 by ariard ### ########.fr */ +/* Updated: 2017/01/31 20:20:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index f4129f9e..cf636e26 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/01/30 20:02:09 by ariard ### ########.fr */ +/* Updated: 2017/01/31 19:35:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,12 @@ int parse_newline(t_list **list_ast, t_btree **ast, t_list **start, t_list **lst) { t_list *temp; - + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + node->type = TK_NEWLINE; temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); From b0dececf1fdb59a6d332e0e0460c3fd7dd8b5297 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 31 Jan 2017 22:52:36 +0100 Subject: [PATCH 020/206] loop_del --- 42sh/file2 | 1 - 42sh/file3 | 0 42sh/includes/exec.h | 3 ++- 42sh/includes/lexer.h | 2 +- 42sh/src/exec/ast_free.c | 2 +- 42sh/src/exec/exec_while.c | 11 ++++------- 42sh/src/exec/loop_del.c | 27 +++++++++++++++++++++++++++ 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/lexer_do.c | 2 +- 42sh/src/lexer/lexer_done.c | 2 +- 42sh/src/lexer/lexer_list.c | 2 +- 42sh/src/main/ft_print_all_ast.c | 9 ++++++--- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/.ft_parse.c.swn | Bin 0 -> 12288 bytes 42sh/src/parser/ft_parse.c | 2 +- 15 files changed, 47 insertions(+), 20 deletions(-) delete mode 100644 42sh/file2 delete mode 100644 42sh/file3 create mode 100644 42sh/src/exec/loop_del.c create mode 100644 42sh/src/parser/.ft_parse.c.swn diff --git a/42sh/file2 b/42sh/file2 deleted file mode 100644 index ce09b016..00000000 --- a/42sh/file2 +++ /dev/null @@ -1 +0,0 @@ -/Users/ariard/Projects/42sh diff --git a/42sh/file3 b/42sh/file3 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 00305b5d..f6b22c1e 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/31 19:34:10 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:38:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -106,5 +106,6 @@ void set_exitstatus(int status); void ast_free(void *data, size_t content_size); int loop_exec(t_list *list_ast); +int loop_del(t_list *list_ast); #endif diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 2872c1f1..bd6c40ea 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/31 21:55:48 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:14:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 12e06dba..29a7f0e1 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/01/31 18:49:37 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:35:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 75285598..0892a0d9 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/01/31 20:45:41 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:52:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,6 @@ int exec_while(t_btree **ast) node = ((*ast)->left)->item; DG("test command data '%s'", node->data.str); test_commands = shell_get_ast(node->data.str); -// ft_print_all_ast(*test_commands); node = ((*ast)->right)->item; DG("consequent command data '%s'", node->data.str); @@ -32,15 +31,13 @@ int exec_while(t_btree **ast) p = &data_singleton()->exec.process; p->script |= SCRIPT_LOOP; -// ft_print_all_ast(consequent_commands); + test = 10; while (test--) loop_exec(*consequent_commands); -// del tree (test_commands); -// del tree (test_commands); - p->script &= 0; - + loop_del(*consequent_commands); + p->script &= 0; btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/loop_del.c b/42sh/src/exec/loop_del.c new file mode 100644 index 00000000..dc9614d7 --- /dev/null +++ b/42sh/src/exec/loop_del.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* loop_del.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/31 22:39:20 by ariard #+# #+# */ +/* Updated: 2017/01/31 22:51:56 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int loop_del(t_list *list_ast) +{ + t_list *temp; + + while (list_ast) + { + btree_del((t_btree **)list_ast->content, &ast_free); + temp = list_ast; + list_ast = list_ast->next; + ft_lstdelone(&temp, NULL); + } + return (0); +} diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 4e09ed79..51ef8fc6 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/31 21:08:54 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:52:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_do.c b/42sh/src/lexer/lexer_do.c index f6c20aeb..ce34feca 100644 --- a/42sh/src/lexer/lexer_do.c +++ b/42sh/src/lexer/lexer_do.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:48:48 by ariard #+# #+# */ -/* Updated: 2017/01/31 21:57:33 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:14:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_done.c b/42sh/src/lexer/lexer_done.c index 19705849..daa57f81 100644 --- a/42sh/src/lexer/lexer_done.c +++ b/42sh/src/lexer/lexer_done.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 20:49:09 by ariard #+# #+# */ -/* Updated: 2017/01/31 21:57:46 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:14:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index 0ff80acd..4012135f 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:05:36 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:14:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_print_all_ast.c b/42sh/src/main/ft_print_all_ast.c index 84d2ada8..55003400 100644 --- a/42sh/src/main/ft_print_all_ast.c +++ b/42sh/src/main/ft_print_all_ast.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 19:23:49 by ariard #+# #+# */ -/* Updated: 2017/01/30 22:11:21 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:52:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,8 +20,11 @@ void ft_print_all_ast(t_list *lst_ast) tmp = lst_ast; while (tmp) { - ast = tmp->content; - btree_print(STDBUG, *ast, &ft_putast); + if (tmp->content) + { + ast = tmp->content; + btree_print(STDBUG, *ast, &ft_putast); + } tmp = tmp->next; } } diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 2ec9a76c..3c5971b4 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/31 21:55:11 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:21:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.ft_parse.c.swn b/42sh/src/parser/.ft_parse.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..1b104c55853f350931c778f1c199294dcf8d8268 GIT binary patch literal 12288 zcmeI2!Ef7C9LL|dumBwhE@%Sr)=0xix;V~SR@|*>M*@wOrd88W1}esNoW`x^M9;2D zDFqJf3Y7pB{cML)Mnx}^o~uv%^ZUKu_r3RZ zUN3nYm6scfbh=z2xE>?q!@D27^4Y;t40=VIv^d84oC;21JVKMfOOzKbil;#`}9FVE}zEa@%#T=yoS#oCFFH52EIB& z$Tm0&z8fRtP4F!E=@CM1g7?7?48V1;2ByJT@aw~b{0MG=Pr!S?1`D77PJ>?_BIJAU zCHNHF1TL_^8^8e1fTzJ3@Mn&Y-@$L-HuxF*0KNs^fDgbrcoj6jli)7a_XoHIz5pMC zKDZ7#parghS-`!R0rHX#NC%_?(gEp!bl|W92PDVrV262BsT5{N4$nEKR6-Pnqsd$@ zrxZ7%^L^|!XT97jD6ZoNhUo_rH2m-blOaCu`T>`NSdS{BC1~B}qadN68@)ntW)OkV zbG)un6bjj*U~gzcG#G5#o?+b>8oZ%UC=jl++jm@hbdWHOF^Xb#$snG+t3(rZ-m(Wh zB``JuX4|w_;M3)EI+qkdp4*|I6H2^6mv>W&hzl2Hoxr|h&rTDWX3@B|&}gRJ!}lvv?atNqLcQ5cs{EY| zzi+#)=|nszIdntQZxwNw%FjMasp_~%r%?je+>^^zVv#6ffuf@!~FM7k~{ X5%CMP|4Z +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/31 18:38:01 by ariard ### ########.fr */ +/* Updated: 2017/01/31 22:15:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From f33d2be52645ed5761dd8ccff477f3a1ca043a2a Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 1 Feb 2017 00:00:27 +0100 Subject: [PATCH 021/206] lexing if ok --- 42sh/includes/exec.h | 2 +- 42sh/includes/lexer.h | 13 ++++++++++-- 42sh/includes/minishell.h | 2 +- 42sh/sample/if.sh | 6 ++++++ 42sh/src/exec/exec_while.c | 2 +- 42sh/src/exec/loop_del.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 5 ++++- 42sh/src/lexer/get_reserved_words.c | 8 ++++++- 42sh/src/lexer/lexer_do.c | 7 +++---- 42sh/src/lexer/lexer_done.c | 3 +-- 42sh/src/lexer/lexer_fi.c | 31 ++++++++++++++++++++++++++++ 42sh/src/lexer/lexer_if.c | 28 +++++++++++++++++++++++++ 42sh/src/lexer/lexer_list.c | 8 ++++++- 42sh/src/lexer/lexer_then.c | 31 ++++++++++++++++++++++++++++ 42sh/src/lexer/lexer_while.c | 2 +- 42sh/src/main/shell_script.c | 3 ++- 42sh/src/parser/.ft_parse.c.swn | Bin 12288 -> 0 bytes 42sh/src/parser/ft_parse.c | 2 +- 18 files changed, 137 insertions(+), 18 deletions(-) create mode 100644 42sh/sample/if.sh create mode 100644 42sh/src/lexer/lexer_fi.c create mode 100644 42sh/src/lexer/lexer_if.c create mode 100644 42sh/src/lexer/lexer_then.c delete mode 100644 42sh/src/parser/.ft_parse.c.swn diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index f6b22c1e..e9e37fe4 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/31 22:38:56 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:20:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index bd6c40ea..f7bd6830 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/01/31 22:14:11 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:52:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,7 +47,10 @@ typedef long long t_type; # define TK_WHILE (1 << 20) # define TK_DO (1 << 21) # define TK_DONE (1 << 22) -# define TK_LIST (1 << 23) +# define TK_IF (1 << 23) +# define TK_THEN (1 << 24) +# define TK_FI (1 << 25) +# define TK_LIST (1 << 26) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) @@ -73,6 +76,9 @@ enum e_lexstate WHILE, DO, DONE, + IF, + THEN, + FI, LIST, COMMENT, }; @@ -126,6 +132,9 @@ int lexer_special(t_list **alst, char *str); int lexer_while(t_list **alst, char *str); int lexer_do(t_list **alst, char *str); int lexer_done(t_list **alst, char *str); +int lexer_if(t_list **alst, char *str); +int lexer_then(t_list **alst, char *str); +int lexer_fi(t_list **alst, char *str); int lexer_list(t_list **alst, char *str); int lexer_comment(t_list **alst, char *str); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 5f3ebf1d..944c850c 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/01/31 21:59:25 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:57:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/if.sh b/42sh/sample/if.sh new file mode 100644 index 00000000..bba0efb5 --- /dev/null +++ b/42sh/sample/if.sh @@ -0,0 +1,6 @@ +echo "begin if" +if [ 1 ] +then + echo "hello world" +fi +echo "end if" diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 0892a0d9..c7cd2d58 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:52:11 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:20:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/loop_del.c b/42sh/src/exec/loop_del.c index dc9614d7..1bdda0fd 100644 --- a/42sh/src/exec/loop_del.c +++ b/42sh/src/exec/loop_del.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 22:39:20 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:51:56 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:20:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 51ef8fc6..4da8fbdf 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/31 22:52:22 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:58:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,6 +32,9 @@ int (*g_lexer[])(t_list **alst, char *str) = &lexer_while, &lexer_do, &lexer_done, + &lexer_if, + &lexer_then, + &lexer_fi, &lexer_list, &lexer_comment, }; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index ea064d56..79dc8b62 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/01/31 21:11:47 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:51:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,5 +20,11 @@ t_lexstate get_reserved_words(char *str) return (DONE); else if (ft_strncmp(str, "do" , 2) == 0 && ft_isalpha(*(str + 2)) == 0) return (DO); + else if (ft_strncmp(str, "if", 2) == 0 && ft_isalpha(*(str + 2)) == 0) + return (IF); + else if (ft_strncmp(str, "then", 4) == 0 && ft_isalpha(*(str + 4)) == 0) + return (THEN); + else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) + return (FI); return (0); } diff --git a/42sh/src/lexer/lexer_do.c b/42sh/src/lexer/lexer_do.c index ce34feca..60d401ff 100644 --- a/42sh/src/lexer/lexer_do.c +++ b/42sh/src/lexer/lexer_do.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* lexer_do_group.c :+: :+: :+: */ +/* lexer_do.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/26 00:48:48 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:14:26 by ariard ### ########.fr */ +/* Created: 2017/01/31 23:29:09 by ariard #+# #+# */ +/* Updated: 2017/01/31 23:32:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,5 @@ int lexer_do(t_list **alst, char *str) token = (*alst)->content; token->type = TK_DO; state = LIST; -// data_singleton()->scope |= (token->type == TK_DO) ? IN_LIST : OUT_LIST; return (ft_tokenize(&(*alst)->next, str + 2, state)); } diff --git a/42sh/src/lexer/lexer_done.c b/42sh/src/lexer/lexer_done.c index daa57f81..6af42378 100644 --- a/42sh/src/lexer/lexer_done.c +++ b/42sh/src/lexer/lexer_done.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 20:49:09 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:14:28 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:33:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,5 @@ int lexer_done(t_list **alst, char *str) token = (*alst)->content; token->type = TK_DONE; state = DEFAULT; -// data_singleton()->scope |= (token->type == TK_DO) ? IN_LIST : OUT_LIST; return (ft_tokenize(&(*alst)->next, str + 4, state)); } diff --git a/42sh/src/lexer/lexer_fi.c b/42sh/src/lexer/lexer_fi.c new file mode 100644 index 00000000..f6e4d4c0 --- /dev/null +++ b/42sh/src/lexer/lexer_fi.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_fi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/31 23:35:08 by ariard #+# #+# */ +/* Updated: 2017/01/31 23:59:50 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_fi(t_list **alst, char *str) +{ + t_token *token; + t_lexstate state; + + if (*alst) + return (lexer_fi(&(*alst)->next, str)); + else + { + token = token_init(); + *alst = ft_lstnew(token, sizeof(*token)); + } + token = (*alst)->content; + token->type = TK_FI; + state = DEFAULT; + return (ft_tokenize(&(*alst)->next, str + 2, state)); +} diff --git a/42sh/src/lexer/lexer_if.c b/42sh/src/lexer/lexer_if.c new file mode 100644 index 00000000..e22002ff --- /dev/null +++ b/42sh/src/lexer/lexer_if.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/31 23:25:47 by ariard #+# #+# */ +/* Updated: 2017/01/31 23:28:52 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_if(t_list **alst, char *str) +{ + t_token *token; + + token = (*alst)->content; + if (ft_strncmp(str, "if", 2) == 0) + token->type = TK_IF; + else if (ft_isalnum(*str)) + { + token_append(token, *str); + return (ft_tokenize(alst, str + 1, WORD)); + } + return (ft_tokenize(&(*alst)->next, str + 3, LIST)); +} diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index 4012135f..fc2b30d7 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:14:23 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:58:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,12 @@ int lexer_list(t_list **alst, char *str) else if (ft_strncmp(str, "do", 2) == 0 && (ft_is_delim_list(*(str + 2)) || *(str + 2) == ' ')) return (ft_tokenize(alst, str, DO)); + else if (ft_strncmp(str, "then", 4) == 0 && (ft_is_delim_list(*(str + 4)) + || *(str + 4) == ' ')) + return (ft_tokenize(alst, str, THEN)); + else if (ft_strncmp(str, "fi", 2) == 0 && (ft_is_delim_list(*(str + 2)) + || *(str + 2) == ' ')) + return (ft_tokenize(alst, str, FI)); } token_append(token, *str++); } diff --git a/42sh/src/lexer/lexer_then.c b/42sh/src/lexer/lexer_then.c new file mode 100644 index 00000000..ad4f937b --- /dev/null +++ b/42sh/src/lexer/lexer_then.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_then.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/31 23:29:49 by ariard #+# #+# */ +/* Updated: 2017/01/31 23:59:37 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_then(t_list **alst, char *str) +{ + t_token *token; + t_lexstate state; + + if (*alst) + return (lexer_then(&(*alst)->next, str)); + else + { + token = token_init(); + *alst = ft_lstnew(token, sizeof(*token)); + } + token = (*alst)->content; + token->type = TK_THEN; + state = LIST; + return (ft_tokenize(&(*alst)->next, str + 4, state)); +} diff --git a/42sh/src/lexer/lexer_while.c b/42sh/src/lexer/lexer_while.c index e03bcff1..ec150596 100644 --- a/42sh/src/lexer/lexer_while.c +++ b/42sh/src/lexer/lexer_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ -/* Updated: 2017/01/26 18:09:46 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:28:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 3c5971b4..43b19555 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/31 22:21:14 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:56:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ int shell_script() return (1); DG("after post_tokenize"); token_print(token); + return (0); if (ft_parse(&list_ast, &ast, &token)) return (1); tmp2 = list_ast; diff --git a/42sh/src/parser/.ft_parse.c.swn b/42sh/src/parser/.ft_parse.c.swn deleted file mode 100644 index 1b104c55853f350931c778f1c199294dcf8d8268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2!Ef7C9LL|dumBwhE@%Sr)=0xix;V~SR@|*>M*@wOrd88W1}esNoW`x^M9;2D zDFqJf3Y7pB{cML)Mnx}^o~uv%^ZUKu_r3RZ zUN3nYm6scfbh=z2xE>?q!@D27^4Y;t40=VIv^d84oC;21JVKMfOOzKbil;#`}9FVE}zEa@%#T=yoS#oCFFH52EIB& z$Tm0&z8fRtP4F!E=@CM1g7?7?48V1;2ByJT@aw~b{0MG=Pr!S?1`D77PJ>?_BIJAU zCHNHF1TL_^8^8e1fTzJ3@Mn&Y-@$L-HuxF*0KNs^fDgbrcoj6jli)7a_XoHIz5pMC zKDZ7#parghS-`!R0rHX#NC%_?(gEp!bl|W92PDVrV262BsT5{N4$nEKR6-Pnqsd$@ zrxZ7%^L^|!XT97jD6ZoNhUo_rH2m-blOaCu`T>`NSdS{BC1~B}qadN68@)ntW)OkV zbG)un6bjj*U~gzcG#G5#o?+b>8oZ%UC=jl++jm@hbdWHOF^Xb#$snG+t3(rZ-m(Wh zB``JuX4|w_;M3)EI+qkdp4*|I6H2^6mv>W&hzl2Hoxr|h&rTDWX3@B|&}gRJ!}lvv?atNqLcQ5cs{EY| zzi+#)=|nszIdntQZxwNw%FjMasp_~%r%?je+>^^zVv#6ffuf@!~FM7k~{ X5%CMP|4Z +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/01/31 22:15:59 by ariard ### ########.fr */ +/* Updated: 2017/01/31 23:20:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 36dcd432a47c12a62eea190bcd466444d0406722 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 2 Feb 2017 17:56:40 +0100 Subject: [PATCH 022/206] before rebase --- 42sh/sample/while.sh | 21 +++++----------- 42sh/src/exec/exec_command.c | 5 ++-- 42sh/src/exec/exec_default.c | 10 +++----- 42sh/src/exec/exec_list.c | 9 +++---- 42sh/src/exec/exec_while.c | 21 ++++++---------- 42sh/src/lexer/ft_post_tokenize.c | 3 ++- 42sh/src/lexer/ft_tokenize.c | 9 +------ 42sh/src/lexer/get_reserved_words.c | 38 ++++++++++++++++++----------- 42sh/src/lexer/lexer_list.c | 8 +++--- 42sh/src/lexer/lexer_sep.c | 2 +- 42sh/src/lexer/lexer_word.c | 4 +-- 42sh/src/lexer/reduce_bquotes.c | 2 +- 42sh/src/main/shell_script.c | 7 +++--- 42sh/src/parser/parse_done.c | 2 +- 42sh/src/parser/parse_while.c | 2 +- 15 files changed, 61 insertions(+), 82 deletions(-) diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 8c6fb2e9..bb41f8ed 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,20 +1,11 @@ echo "begin loop" -while [ 1 ] -do - echo "inner loop1" +while [ 1 ] +do + echo "begin inner loop" while [ 1 ] do - echo "love 42" + echo "end scd loop" done - echo "inner loop2" - while [ 1 ] - do - echo "inner loop2-1" - while [ 1 ] - do - echo "hello world" - done - echo "salut monde" - done -done + echo "end inner loop" +done echo "end loop" diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 5a47ff90..80176ee5 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/01/30 23:25:44 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:25:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,6 @@ int exec_command(t_btree **ast) p->pid = 0; p->attributes = PROCESS_PIPESTART | PROCESS_PIPEEND; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_default.c b/42sh/src/exec/exec_default.c index 57489149..c37f3d73 100644 --- a/42sh/src/exec/exec_default.c +++ b/42sh/src/exec/exec_default.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 19:29:59 by ariard #+# #+# */ -/* Updated: 2017/01/31 19:57:44 by ariard ### ########.fr */ +/* Updated: 2017/02/02 15:54:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,8 @@ int exec_default(t_btree **ast) { - t_process *p; - - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); + + (void)ast; +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_list.c b/42sh/src/exec/exec_list.c index aab8b1ce..061c4291 100644 --- a/42sh/src/exec/exec_list.c +++ b/42sh/src/exec/exec_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 20:19:29 by ariard #+# #+# */ -/* Updated: 2017/01/30 20:57:51 by ariard ### ########.fr */ +/* Updated: 2017/02/02 16:00:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,7 @@ int exec_list(t_btree **ast) { - t_process *p; - - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); + (void)ast; +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index c7cd2d58..40ce2599 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:20:33 by ariard ### ########.fr */ +/* Updated: 2017/02/02 16:30:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,30 +14,23 @@ int exec_while(t_btree **ast) { - t_list **test_commands; t_list **consequent_commands; t_astnode *node; - t_process *p; int test; - node = ((*ast)->left)->item; - DG("test command data '%s'", node->data.str); - test_commands = shell_get_ast(node->data.str); node = ((*ast)->right)->item; - DG("consequent command data '%s'", node->data.str); consequent_commands = shell_get_ast(node->data.str); - - p = &data_singleton()->exec.process; - p->script |= SCRIPT_LOOP; - test = 10; while (test--) + { loop_exec(*consequent_commands); - loop_del(*consequent_commands); - p->script &= 0; - btree_delone(ast, &ast_free); + DG("end loop : '%d'", test); + } + +// loop_del(*consequent_commands); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index 3de67de3..881b03fe 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:33:04 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:50:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int ft_post_tokenize(t_list **alst, char *str) { int ret; +// get_reserverd_words(alst, str); while ((ret = reduce_parens(alst, str))) if (ret == -1) return (-1); diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 4da8fbdf..6e9aaea2 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/01/31 23:58:41 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:50:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,13 +29,6 @@ int (*g_lexer[])(t_list **alst, char *str) = &lexer_backslash, &lexer_var, &lexer_special, - &lexer_while, - &lexer_do, - &lexer_done, - &lexer_if, - &lexer_then, - &lexer_fi, - &lexer_list, &lexer_comment, }; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 79dc8b62..996ce9b1 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,25 +6,35 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:51:56 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:50:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" -t_lexstate get_reserved_words(char *str) +int get_reserved_words(t_list **alst) { - if (ft_strncmp(str, "while", 5) == 0) - return (WHILE); - else if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) - return (DONE); - else if (ft_strncmp(str, "do" , 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (DO); - else if (ft_strncmp(str, "if", 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (IF); - else if (ft_strncmp(str, "then", 4) == 0 && ft_isalpha(*(str + 4)) == 0) - return (THEN); - else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (FI); + t_token token; + + while (*alst) + { + token = (*alst)->content; + if (token->type = TK_WORD); + { + if (ft_strncmp(str, "while", 5) == 0 && ft_isalpha(*(str + 5)) == 0) + lexer_while( + else if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) + return (DONE); + else if (ft_strncmp(str, "do" , 2) == 0 && ft_isalpha(*(str + 2)) == 0) + return (DO); +// else if (ft_strncmp(str, "if", 2) == 0 && ft_isalpha(*(str + 2)) == 0) +// return (IF); +// else if (ft_strncmp(str, "then", 4) == 0 && ft_isalpha(*(str + 4)) == 0) +// return (THEN); +// else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) +// return (FI); + } + (*alst) = (*alst)->next; + } return (0); } diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index fc2b30d7..31e470b9 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:58:50 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:31:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,8 +25,7 @@ int lexer_list(t_list **alst, char *str) token_append(token, *str++); while (ft_is_delim(*str) || *str == '\n') str++; - if (ft_strncmp(str, "done", 4) == 0 && (ft_is_delim_list(*(str + 4)) - || *(str + 4) == ' ')) + if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) return (ft_tokenize(alst, str, DONE)); else if (ft_strncmp(str, "do", 2) == 0 && (ft_is_delim_list(*(str + 2)) || *(str + 2) == ' ')) @@ -34,8 +33,7 @@ int lexer_list(t_list **alst, char *str) else if (ft_strncmp(str, "then", 4) == 0 && (ft_is_delim_list(*(str + 4)) || *(str + 4) == ' ')) return (ft_tokenize(alst, str, THEN)); - else if (ft_strncmp(str, "fi", 2) == 0 && (ft_is_delim_list(*(str + 2)) - || *(str + 2) == ' ')) + else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) return (ft_tokenize(alst, str, FI)); } token_append(token, *str++); diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 3e3c6ef3..7c686546 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/01/26 00:48:08 by ariard ### ########.fr */ +/* Updated: 2017/02/02 16:30:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 3221534b..6dca613a 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/01/30 23:17:43 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:50:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,8 +25,6 @@ int lexer_word(t_list **alst, char *str) return (ft_tokenize(&(*alst)->next, str, GREAT)); else if (*str == '<') return (ft_tokenize(&(*alst)->next, str, LESS)); - else if ((state = get_reserved_words(str))) - return (ft_tokenize(alst, str, state)); token_append(token, *str); return (ft_tokenize(alst, str + 1, WORD)); } diff --git a/42sh/src/lexer/reduce_bquotes.c b/42sh/src/lexer/reduce_bquotes.c index 4247ceb0..fbe1022b 100644 --- a/42sh/src/lexer/reduce_bquotes.c +++ b/42sh/src/lexer/reduce_bquotes.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:46:27 by jhalford #+# #+# */ -/* Updated: 2017/01/22 23:33:08 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:40:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 43b19555..87b5fff4 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:56:53 by ariard ### ########.fr */ +/* Updated: 2017/02/02 17:50:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,6 @@ int shell_script() return (1); DG("after post_tokenize"); token_print(token); - return (0); if (ft_parse(&list_ast, &ast, &token)) return (1); tmp2 = list_ast; @@ -47,6 +46,8 @@ int shell_script() return (1); list_ast = list_ast->next; } -*/ loop_exec(list_ast); + +*/ + loop_exec(list_ast); return (0); } diff --git a/42sh/src/parser/parse_done.c b/42sh/src/parser/parse_done.c index 83a5f6f1..3e4ef836 100644 --- a/42sh/src/parser/parse_done.c +++ b/42sh/src/parser/parse_done.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:36:28 by ariard #+# #+# */ -/* Updated: 2017/01/31 19:36:49 by ariard ### ########.fr */ +/* Updated: 2017/02/02 16:44:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index da3e5f6b..f8b01c55 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/01/30 19:52:17 by ariard ### ########.fr */ +/* Updated: 2017/02/02 16:30:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From fcea6dda9b6b9cbf8f380aa97b8213aad84c2d42 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 3 Feb 2017 15:41:14 +0100 Subject: [PATCH 023/206] scripting stable before new lexing and parsing(merged with master) --- 42sh/Makefile | 53 ++++--- 42sh/ffile2 | 0 42sh/file2 | 1 + 42sh/includes/exec.h | 4 +- 42sh/includes/ft_input.h | 2 +- 42sh/includes/ft_readline.h | 4 +- 42sh/includes/lexer.h | 4 +- 42sh/src/builtin/is_builtin.c | 3 +- 42sh/src/exec/exec_default.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/lexer/command_getoutput.c | 6 +- 42sh/src/lexer/ft_lexer.c | 6 +- 42sh/src/lexer/ft_post_tokenize.c | 11 +- 42sh/src/lexer/ft_tokenize.c | 6 +- 42sh/src/lexer/get_reserved_words.c | 8 +- 42sh/src/lexer/lexer_backslash.c | 6 +- 42sh/src/lexer/lexer_default.c | 10 +- 42sh/src/lexer/lexer_delim.c | 6 +- 42sh/src/lexer/lexer_dquote.c | 6 +- 42sh/src/lexer/lexer_great.c | 6 +- 42sh/src/lexer/lexer_greatand.c | 6 +- 42sh/src/lexer/lexer_if.c | 4 +- 42sh/src/lexer/lexer_less.c | 6 +- 42sh/src/lexer/lexer_list.c | 6 +- 42sh/src/lexer/lexer_number.c | 6 +- 42sh/src/lexer/lexer_while.c | 4 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/line-editing/builtin_history.c | 38 ----- 42sh/src/line-editing/check_backslash.c | 35 ----- 42sh/src/line-editing/control_c_and_d.c | 49 ------- 42sh/src/line-editing/copy_cut_paste.c | 106 -------------- 42sh/src/line-editing/curs_ask.c | 57 -------- 42sh/src/line-editing/curs_move.c | 45 ------ 42sh/src/line-editing/curs_setup.c | 82 ----------- 42sh/src/line-editing/curs_term_setup.c | 62 --------- 42sh/src/line-editing/curs_write.c | 63 --------- 42sh/src/line-editing/ft_readline.c | 106 -------------- 42sh/src/line-editing/ft_split_whitespaces.c | 79 ----------- 42sh/src/line-editing/get_touch.c | 69 ---------- 42sh/src/line-editing/get_touch_toolz.c | 113 --------------- 42sh/src/line-editing/get_touch_toolz_2.c | 130 ------------------ 42sh/src/line-editing/heredoc.c | 77 ----------- 42sh/src/line-editing/history.c | 87 ------------ 42sh/src/line-editing/history_parsing.c | 90 ------------ 42sh/src/line-editing/history_parsing_toolz.c | 94 ------------- .../line-editing/history_parsing_toolz_2.c | 64 --------- 42sh/src/line-editing/list_toolz.c | 51 ------- 42sh/src/line-editing/move_to_line.c | 106 -------------- 42sh/src/line-editing/print_and_del.c | 112 --------------- 42sh/src/line-editing/prompt.c | 65 --------- 42sh/src/line-editing/quotes_gest.c | 88 ------------ 42sh/src/line-editing/reader.c | 66 --------- 42sh/src/line-editing/readline.c | 99 ------------- 42sh/src/line-editing/surch_in_history.c | 87 ------------ 42sh/src/line-editing/tool_line.c | 61 -------- 42sh/src/line-editing/tool_line_2.c | 94 ------------- 42sh/src/line-editing/toolz.c | 66 --------- 42sh/src/line-editing/toolz2.c | 67 --------- 42sh/src/line-editing/toolz_parseur.c | 51 ------- 42sh/src/line-editing/toolz_termcaps.c | 45 ------ 42sh/src/main/main.c | 8 +- 42sh/src/main/shell_get_ast.c | 4 +- 42sh/src/main/shell_script.c | 8 +- 42sh/src/parser/parse_word.c | 5 +- 65 files changed, 77 insertions(+), 2634 deletions(-) create mode 100644 42sh/ffile2 create mode 100644 42sh/file2 delete mode 100644 42sh/src/line-editing/builtin_history.c delete mode 100644 42sh/src/line-editing/check_backslash.c delete mode 100644 42sh/src/line-editing/control_c_and_d.c delete mode 100644 42sh/src/line-editing/copy_cut_paste.c delete mode 100644 42sh/src/line-editing/curs_ask.c delete mode 100644 42sh/src/line-editing/curs_move.c delete mode 100644 42sh/src/line-editing/curs_setup.c delete mode 100644 42sh/src/line-editing/curs_term_setup.c delete mode 100644 42sh/src/line-editing/curs_write.c delete mode 100644 42sh/src/line-editing/ft_readline.c delete mode 100644 42sh/src/line-editing/ft_split_whitespaces.c delete mode 100644 42sh/src/line-editing/get_touch.c delete mode 100644 42sh/src/line-editing/get_touch_toolz.c delete mode 100644 42sh/src/line-editing/get_touch_toolz_2.c delete mode 100644 42sh/src/line-editing/heredoc.c delete mode 100644 42sh/src/line-editing/history.c delete mode 100644 42sh/src/line-editing/history_parsing.c delete mode 100644 42sh/src/line-editing/history_parsing_toolz.c delete mode 100644 42sh/src/line-editing/history_parsing_toolz_2.c delete mode 100644 42sh/src/line-editing/list_toolz.c delete mode 100644 42sh/src/line-editing/move_to_line.c delete mode 100644 42sh/src/line-editing/print_and_del.c delete mode 100644 42sh/src/line-editing/prompt.c delete mode 100644 42sh/src/line-editing/quotes_gest.c delete mode 100644 42sh/src/line-editing/reader.c delete mode 100644 42sh/src/line-editing/readline.c delete mode 100644 42sh/src/line-editing/surch_in_history.c delete mode 100644 42sh/src/line-editing/tool_line.c delete mode 100644 42sh/src/line-editing/tool_line_2.c delete mode 100644 42sh/src/line-editing/toolz.c delete mode 100644 42sh/src/line-editing/toolz2.c delete mode 100644 42sh/src/line-editing/toolz_parseur.c delete mode 100644 42sh/src/line-editing/toolz_termcaps.c diff --git a/42sh/Makefile b/42sh/Makefile index e240d66b..344b95ff 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -14,7 +14,7 @@ NAME = 42sh CC = gcc FLAGS = -Wall -Wextra -Werror -D_FLAGS = -g +D_FLAGS = -g DELTA = $$(echo "$$(tput cols)-47"|bc) @@ -44,15 +44,20 @@ exec/ast_free.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ exec/exec_command.c\ +exec/exec_default.c\ exec/exec_dgreat.c\ exec/exec_great.c\ exec/exec_less.c\ +exec/exec_list.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ exec/exec_semi.c\ +exec/exec_while.c\ exec/ft_exec.c\ exec/ft_findexec.c\ exec/launch_process.c\ +exec/loop_del.c\ +exec/loop_exec.c\ exec/process_redirect.c\ exec/process_reset.c\ exec/process_setexec.c\ @@ -120,19 +125,29 @@ lexer/ft_lexer.c\ lexer/ft_post_tokenize.c\ lexer/ft_tokenize.c\ lexer/get_lexer_state.c\ +lexer/get_reserved_words.c\ lexer/lexer_backslash.c\ +lexer/lexer_comment.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ +lexer/lexer_do.c\ +lexer/lexer_done.c\ lexer/lexer_dquote.c\ +lexer/lexer_fi.c\ lexer/lexer_great.c\ lexer/lexer_greatand.c\ +lexer/lexer_if.c\ lexer/lexer_less.c\ lexer/lexer_lessand.c\ +lexer/lexer_list.c\ +lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ lexer/lexer_special.c\ +lexer/lexer_then.c\ lexer/lexer_var.c\ +lexer/lexer_while.c\ lexer/lexer_word.c\ lexer/reduce_bquotes.c\ lexer/reduce_parens.c\ @@ -142,55 +157,37 @@ lexer/token_expand_var.c\ lexer/token_free.c\ lexer/token_init.c\ lexer/token_print.c\ -line-editing/builtin_history.c\ -line-editing/check_backslash.c\ -line-editing/control_c_and_d.c\ -line-editing/copy_cut_paste.c\ -line-editing/ft_split_whitespaces.c\ -line-editing/get_touch.c\ -line-editing/get_touch_toolz.c\ -line-editing/get_touch_toolz_2.c\ -line-editing/heredoc.c\ -line-editing/history.c\ -line-editing/history_parsing.c\ -line-editing/history_parsing_toolz.c\ -line-editing/history_parsing_toolz_2.c\ -line-editing/list_toolz.c\ -line-editing/move_to_line.c\ -line-editing/print_and_del.c\ -line-editing/prompt.c\ -line-editing/quotes_gest.c\ -line-editing/reader.c\ -line-editing/readline.c\ -line-editing/surch_in_history.c\ -line-editing/tool_line.c\ -line-editing/tool_line_2.c\ -line-editing/toolz.c\ -line-editing/toolz2.c\ -line-editing/toolz_parseur.c\ -line-editing/toolz_termcaps.c\ main/data_exit.c\ main/data_init.c\ main/data_singleton.c\ main/ft_cleanup.c\ +main/ft_print_all_ast.c\ main/ft_putast.c\ main/ft_putast2.c\ main/lib_expansion.c\ main/main.c\ +main/read_script.c\ main/shell_exit.c\ +main/shell_get_ast.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ +main/shell_script.c\ main/sig_handler.c\ parser/ft_parse.c\ parser/parse_dgreat.c\ parser/parse_dless.c\ +parser/parse_do.c\ +parser/parse_done.c\ parser/parse_great.c\ parser/parse_greatand.c\ parser/parse_less.c\ parser/parse_lessand.c\ +parser/parse_list.c\ +parser/parse_newline.c\ parser/parse_separator.c\ parser/parse_subshell.c\ +parser/parse_while.c\ parser/parse_word.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) diff --git a/42sh/ffile2 b/42sh/ffile2 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/file2 b/42sh/file2 new file mode 100644 index 00000000..32524ff3 --- /dev/null +++ b/42sh/file2 @@ -0,0 +1 @@ +/Users/ariard/Projects/42sh-2 diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 9e753070..f15c74f8 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/01/31 23:20:42 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:09:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,6 +90,8 @@ int exec_command(t_btree **ast); int exec_while(t_btree **ast); int exec_list(t_btree **ast); +int exec_default(t_btree **ast); + int launch_process(t_process *p); int process_setexec(t_type type, t_process *p); diff --git a/42sh/includes/ft_input.h b/42sh/includes/ft_input.h index b7820668..a7e44e03 100644 --- a/42sh/includes/ft_input.h +++ b/42sh/includes/ft_input.h @@ -6,7 +6,7 @@ /* By: sbenning +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/09 02:05:22 by sbenning #+# #+# */ -/* Updated: 2017/01/23 21:45:15 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:18:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/ft_readline.h b/42sh/includes/ft_readline.h index 323f7eb0..1c7cd31b 100644 --- a/42sh/includes/ft_readline.h +++ b/42sh/includes/ft_readline.h @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */ -/* Updated: 2017/02/03 14:43:56 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:25:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,8 @@ # include # include +# include "ft_input.h" + # define FLECHE_HAUT 4283163 # define FLECHE_BAS 4348699 # define FLECHE_GAUCHE 4479771 diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 58fbdd49..8ada16e5 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:43:12 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:31:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -116,7 +116,7 @@ int ft_is_delim(char c); int ft_is_delim_list(char c); t_lexstate get_lexer_state(char *str); -t_lexstate get_reserved_words(char *str); +int get_reserved_words(t_list **alst); int lexer_default(t_list **alst, char *str); int lexer_newline(t_list **alst, char *str); int lexer_delim(t_list **alst, char *str); diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index eba6e445..b44063b7 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/01/26 14:58:02 by gwojda ### ########.fr */ +/* Updated: 2017/02/03 15:31:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,6 @@ t_stof g_builtin[] = {"jobs", &builtin_jobs}, {"fg", &builtin_fg}, {"bg", &builtin_bg}, - {"history", &builtin_history}, {"read", &builtin_read}, {NULL, NULL}, }; diff --git a/42sh/src/exec/exec_default.c b/42sh/src/exec/exec_default.c index c37f3d73..5b02f375 100644 --- a/42sh/src/exec/exec_default.c +++ b/42sh/src/exec/exec_default.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 19:29:59 by ariard #+# #+# */ -/* Updated: 2017/02/02 15:54:31 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:31:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 117bf317..831d7500 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:40:05 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:31:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/command_getoutput.c b/42sh/src/lexer/command_getoutput.c index 56becc79..8982d96f 100644 --- a/42sh/src/lexer/command_getoutput.c +++ b/42sh/src/lexer/command_getoutput.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 14:01:59 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/20 00:31:42 by ariard ### ########.fr */ -======= -/* Updated: 2017/02/02 15:16:25 by jhalford ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:46:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index a0abdd90..8d4939b5 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/02 15:42:24 by jhalford ### ########.fr */ +/* Updated: 2017/02/03 15:36:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ int ft_lexer(t_list **alst, char **command) ret = 1; else if (ft_tokenize(alst, *command, DEFAULT)) ret = 1; - else if (ft_post_tokenize(alst, command)) - ret = 1; +// else if (ft_post_tokenize(alst, command)) +// ret = 1; ft_strdel(command); return (ret); } diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index e1a1856f..8d7b1056 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/02/02 17:50:45 by ariard ### ########.fr */ -======= -/* Updated: 2017/02/02 15:29:57 by jhalford ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:47:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,12 +17,9 @@ int ft_post_tokenize(t_list **alst, char **str) int ret; t_flag tk; -<<<<<<< HEAD + // get_reserverd_words(alst, str); - while ((ret = reduce_parens(alst, str))) -======= while ((ret = reduce_parens(alst, *str))) ->>>>>>> master if (ret == -1) { ft_dprintf(2, "{red}%s: parse error near '('{eoc}\n", SHELL_NAME); diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 8e2bf6d4..8f12b94f 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/02/02 17:50:28 by ariard ### ########.fr */ -======= -/* Updated: 2017/02/02 15:34:45 by jhalford ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:47:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 8c8d4b99..bd679000 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/03 14:27:09 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:31:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,10 @@ int get_reserved_words(t_list **alst) { - t_token token; +// t_token token; + (void)alst; +/* while (*alst) { token = (*alst)->content; @@ -36,5 +38,5 @@ int get_reserved_words(t_list **alst) } (*alst) = (*alst)->next; } - return (0); +*/ return (0); } diff --git a/42sh/src/lexer/lexer_backslash.c b/42sh/src/lexer/lexer_backslash.c index 374f5090..a2b5b004 100644 --- a/42sh/src/lexer/lexer_backslash.c +++ b/42sh/src/lexer/lexer_backslash.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:49 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/23 23:24:40 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/30 13:07:52 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:47:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index ae3371f3..886f6d96 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/26 18:16:02 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/27 15:53:10 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 15:39:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,10 +30,6 @@ int lexer_default(t_list **alst, char *str) else state = WORD; token = (*alst)->content; -<<<<<<< HEAD -======= - token_append(token, *str, 0); ->>>>>>> master token->type = TK_N_WORD; return (ft_tokenize(alst, str, state)); } diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index d655aca5..c7e260d6 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/26 23:37:49 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/26 16:30:43 by jhalford ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:48:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_dquote.c b/42sh/src/lexer/lexer_dquote.c index 929d48e2..ddc4abae 100644 --- a/42sh/src/lexer/lexer_dquote.c +++ b/42sh/src/lexer/lexer_dquote.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:58 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/25 22:52:47 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/27 15:53:31 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:49:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 69589914..8457ef2b 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/24 19:06:00 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/27 15:54:53 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:49:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c index 75c78d4a..a0268048 100644 --- a/42sh/src/lexer/lexer_greatand.c +++ b/42sh/src/lexer/lexer_greatand.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:58 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/25 22:52:39 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/27 15:55:04 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:49:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_if.c b/42sh/src/lexer/lexer_if.c index e22002ff..0c15d9c7 100644 --- a/42sh/src/lexer/lexer_if.c +++ b/42sh/src/lexer/lexer_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 23:25:47 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:28:52 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:12:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ int lexer_if(t_list **alst, char *str) token->type = TK_IF; else if (ft_isalnum(*str)) { - token_append(token, *str); + token_append(token, *str, 0); return (ft_tokenize(alst, str + 1, WORD)); } return (ft_tokenize(&(*alst)->next, str + 3, LIST)); diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 910cb3af..0b00c6a1 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/26 18:26:28 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/27 15:55:16 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:50:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c index 31e470b9..78edf1eb 100644 --- a/42sh/src/lexer/lexer_list.c +++ b/42sh/src/lexer/lexer_list.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/02/02 17:31:07 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:12:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ int lexer_list(t_list **alst, char *str) { if (ft_is_delim_list(*str)) { - token_append(token, *str++); + token_append(token, *str++, 0); while (ft_is_delim(*str) || *str == '\n') str++; if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) @@ -36,7 +36,7 @@ int lexer_list(t_list **alst, char *str) else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) return (ft_tokenize(alst, str, FI)); } - token_append(token, *str++); + token_append(token, *str++, 0); } return (0); } diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 5ed39325..5406bead 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,11 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -<<<<<<< HEAD -/* Updated: 2017/01/25 23:05:08 by ariard ### ########.fr */ -======= -/* Updated: 2017/01/30 13:08:05 by wescande ### ########.fr */ ->>>>>>> master +/* Updated: 2017/02/03 14:50:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_while.c b/42sh/src/lexer/lexer_while.c index ec150596..46a24567 100644 --- a/42sh/src/lexer/lexer_while.c +++ b/42sh/src/lexer/lexer_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:28:54 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:14:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ int lexer_while(t_list **alst, char *str) token->type = TK_WHILE; else if (ft_isalnum(*str)) { - token_append(token, *str); + token_append(token, *str, 0); return (ft_tokenize(alst, str + 1, WORD)); } return (ft_tokenize(&(*alst)->next, str + 6, LIST)); diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index ea9e7bb8..265ad499 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:37:13 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:40:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index c02d1488..e49e5b56 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:36:09 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:12:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/builtin_history.c b/42sh/src/line-editing/builtin_history.c deleted file mode 100644 index 019af98e..00000000 --- a/42sh/src/line-editing/builtin_history.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* builtin_history.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/24 14:54:53 by gwojda #+# #+# */ -/* Updated: 2017/01/26 14:58:41 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int builtin_history(const char *path, char *const av[], char *const envp[]) -{ - size_t len; - t_list_history *head; - - (void)path; - (void)av; - (void)envp; - head = data_singleton()->line.list_end; - len = 1; - if (!head) - return (0); - if (head && !head->str) - head = head->next; - while (head && head->str) - { - ft_putnc(' ', ft_nbr_len(data_singleton()->line.list_size) - - ft_nbr_len(len)); - ft_printf("%zu %s\n", len, head->str); - ++len; - head = head->next; - } - return (0); -} diff --git a/42sh/src/line-editing/check_backslash.c b/42sh/src/line-editing/check_backslash.c deleted file mode 100644 index 1ab0256e..00000000 --- a/42sh/src/line-editing/check_backslash.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* check_backslash.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/26 13:32:52 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:01:25 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_check_backslash(char **str) -{ - char *tmp1; - char *tmp2; - - if (!*str || !**str) - return ; - if ((*str)[ft_strlen(*str) - 1] == '\\') - { - ft_putstr("> "); - data_singleton()->line.prompt_size = 2; - tmp1 = *str; - tmp2 = ft_strjoin(tmp1, "\n"); - free(tmp1); - tmp1 = ft_read_stdin(); - *str = ft_strjoin(tmp2, tmp1); - free(tmp1); - free(tmp2); - ft_putchar('\n'); - } -} diff --git a/42sh/src/line-editing/control_c_and_d.c b/42sh/src/line-editing/control_c_and_d.c deleted file mode 100644 index a194e7a0..00000000 --- a/42sh/src/line-editing/control_c_and_d.c +++ /dev/null @@ -1,49 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* control_c_and_d.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/02 15:17:28 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:43:15 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_buff_f6(void) -{ - int ret; - - ret = 0; - read(0, &ret, sizeof(int)); -} - -void ft_control_d(void) -{ - char **str; - size_t *pos; - - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!(*str) || (*str)[0] == '\0') - builtin_exit(NULL, (char*[]){"exit", NULL}, NULL); - else if (*pos < ft_strlen(*str)) - ft_del(); - else - ft_puttermcaps("bl"); -} - -void ft_control_c(void) -{ - char **str; - size_t *pos; - - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - ft_putchar('\n'); - ft_prompt(); - ft_strdel(str); - *pos = 0; -} diff --git a/42sh/src/line-editing/copy_cut_paste.c b/42sh/src/line-editing/copy_cut_paste.c deleted file mode 100644 index 587469bb..00000000 --- a/42sh/src/line-editing/copy_cut_paste.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* copy_cut_paste.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/19 12:45:06 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:10:51 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static char *ft_strdupi_space(char const *s) -{ - int i; - char *str; - - i = 0; - while (s[i] && s[i] != '\n') - ++i; - if (s[i] == '\n') - ++i; - str = (char *)malloc(sizeof(char) * (i + 1)); - if (str) - { - str[i] = '\0'; - --i; - while (i >= 0) - { - str[i] = s[i]; - --i; - } - } - return (str); -} - -void ft_v(void) -{ - size_t tmp_pos; - int i; - char *tmp; - char **str; - size_t *pos; - - tmp = data_singleton()->line.copy_tmp; - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - i = 0; - tmp_pos = *pos; - if (!*str || !tmp) - return ; - while (tmp[i]) - { - *str = ft_realloc_imput(*str, tmp[i], *pos + i); - ++i; - } - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(*str, pos); - } - ft_current_str(*str, *pos); - ft_get_next_str(*str, pos); - ft_putnc('\b', *pos - tmp_pos); - (*pos) = tmp_pos; -} - -void ft_x(void) -{ - int i; - char **tmp; - char **str; - size_t *pos; - - tmp = &data_singleton()->line.copy_tmp; - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!*str) - return ; - if (*tmp) - ft_strdel(tmp); - *tmp = ft_strdupi_space(&(*str)[(*pos)]); - i = ft_strlen(*tmp); - while (i >= 0) - { - *str = ft_remove_imput(*str, *pos + i); - --i; - } - ft_puttermcaps("cd"); -} - -void ft_c(void) -{ - char *tmp; - char **str; - size_t *pos; - - tmp = data_singleton()->line.copy_tmp; - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (tmp) - ft_strdel(&tmp); - tmp = ft_strdupi_space((*str) + (*pos)); -} diff --git a/42sh/src/line-editing/curs_ask.c b/42sh/src/line-editing/curs_ask.c deleted file mode 100644 index 62634544..00000000 --- a/42sh/src/line-editing/curs_ask.c +++ /dev/null @@ -1,57 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* curs_ask.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: sbenning +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/08 17:03:49 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:22:36 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_curs.h" - -/* - * Read the line number for cursor's coordonate -*/ - -int curs_li_ask(void) -{ - char buff; - int li; - - li = 0; - buff = 0; - while (buff != ';') - { - buff = 0; - if (read(0, &buff, 1) < 0) - return (-1); - if (ft_isdigit(buff)) - li = li * 10 + (buff - '0'); - } - return (li); -} - -/* - * Read the colomn number for cursor's coordonate -*/ - -int curs_co_ask(void) -{ - char buff; - int co; - - co = 0; - buff = 0; - while (buff != 'R') - { - buff = 0; - if (read(0, &buff, 1) < 0) - return (-1); - if (ft_isdigit(buff)) - co = co * 10 + (buff - '0'); - } - return (co); -} diff --git a/42sh/src/line-editing/curs_move.c b/42sh/src/line-editing/curs_move.c deleted file mode 100644 index 18373634..00000000 --- a/42sh/src/line-editing/curs_move.c +++ /dev/null @@ -1,45 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* curs_forward.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: sbenning +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/08 17:21:08 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:23:09 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_curs.h" - -/* - * Move the cursor forward (right/down) -*/ - -void curs_forward(t_curs *curs, int offset) -{ - int size; - int div; - int mod; - - size = (curs->li * curs->win_co + curs->co) + offset; - div = size / curs->win_co; - mod = size % curs->win_co; - curs_goto(curs, div, mod); -} - -/* - * Move the cursor backward (left/up) -*/ - -void curs_backward(t_curs *curs, int offset) -{ - int size; - int div; - int mod; - - size = (curs->li * curs->win_co + curs->co) - offset; - div = size / curs->win_co; - mod = size % curs->win_co; - curs_goto(curs, div, mod); -} diff --git a/42sh/src/line-editing/curs_setup.c b/42sh/src/line-editing/curs_setup.c deleted file mode 100644 index 5c43b795..00000000 --- a/42sh/src/line-editing/curs_setup.c +++ /dev/null @@ -1,82 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* curs_setup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: sbenning +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/08 16:36:43 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:23:21 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_curs.h" - -/* - * Set coordonate cursor data - * "\033[6n" ask for terminal to write on standard entry the cursor's coordonate -*/ - -int curs_coo_setup(t_curs *curs) -{ - ft_putstr("\033[6n"); - curs->li = curs_li_ask() - 1; - curs->co = curs_co_ask() - 1; - return ((curs->li < 0 || curs->co < 0 ? -1 : 0)); -} - -/* - * Set windows cursor data -*/ - -void curs_win_setup(t_curs *curs) -{ - struct winsize ws; - - ioctl(0, TIOCGWINSZ, &ws); - curs->win_li = ws.ws_row; - curs->win_co = ws.ws_col; -} - -/* - * Reset saved cursor data -*/ - -void curs_reset(int sig) -{ - t_curs *curs; - - curs = curs_single(NULL, 0); - curs_win_setup(curs); - curs_coo_setup(curs); - return ; - (void)sig; -} - -/* - * Save the cursor reference, init termcap and set cursor data -*/ - -int curs_setup(t_curs *curs) -{ - curs_single(curs, 1); - signal(SIGWINCH, curs_reset); - if (tgetent(NULL, "xterm") != 1) - return (-1); - if (curs_term_setup() < 0) - return (-1); - curs_win_setup(curs); - if (curs_coo_setup(curs) < 0) - return (-1); - return (0); -} - -/* - * Erase cursor data and reset terminal -*/ - -int curs_cleanup(t_curs *curs) -{ - ft_bzero(curs, sizeof(t_curs)); - return (curs_term_cleanup()); -} diff --git a/42sh/src/line-editing/curs_term_setup.c b/42sh/src/line-editing/curs_term_setup.c deleted file mode 100644 index 8bd5eeaa..00000000 --- a/42sh/src/line-editing/curs_term_setup.c +++ /dev/null @@ -1,62 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* curs_term_setup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: sbenning +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/08 16:50:26 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:23:38 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_curs.h" - -/* - * Return a static termios structure reference -*/ - -static struct termios *curs_term(void) -{ - static struct termios term; - - return (&term); -} - -/* - * Save the current termios state and set termios to RAW -*/ - -int curs_term_setup(void) -{ - struct termios *single; - struct termios term; - - single = curs_term(); - if (tcgetattr(0, single) < 0) - return (-1); - term = *single; - term.c_lflag &= ~(ECHO | ICANON | ISIG); - term.c_cc[VTIME] = 0; - term.c_cc[VMIN] = 1; - if (tcsetattr(0, TCSADRAIN, &term) < 0) - return (-1); - return (0); -} - -/* - * Set termios to the saved state -*/ - -int curs_term_cleanup(void) -{ - struct termios *single; - struct termios term; - - single = curs_term(); - term = *single; - term.c_lflag |= ECHO | ICANON | ISIG; - if (tcsetattr(0, TCSADRAIN, single) < 0) - return (-1); - return (0); -} diff --git a/42sh/src/line-editing/curs_write.c b/42sh/src/line-editing/curs_write.c deleted file mode 100644 index c9e4297a..00000000 --- a/42sh/src/line-editing/curs_write.c +++ /dev/null @@ -1,63 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* curs_write.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: sbenning +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/08 17:52:20 by sbenning #+# #+# */ -/* Updated: 2017/01/21 22:25:56 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_curs.h" - -/* - * Write some buffer to stdout and recalc coordonate (go to next line and scroll if necessary) -*/ - -void curs_write(t_curs *curs, char *str, size_t len) -{ - int size; - int div; - int mod; - - size = (curs->li * curs->win_co + curs->co) + len; - div = size / curs->win_co; - mod = size % curs->win_co; - write(1, str, len); - curs_goto(curs, div, mod); -} - -/* - * curs_write in video mode -*/ - -void curs_video_write(t_curs *curs, char *str, size_t len) -{ - ft_putstr(tgetstr("so", NULL)); - curs_write(curs, str, len); - ft_putstr(tgetstr("me", NULL)); -} - -/* - * curs_write in video mode without moving the cursor -*/ - -void curs_video_write_static(t_curs *curs, char *str, size_t len) -{ - ft_putstr(tgetstr("so", NULL)); - curs_write(curs, str, len); - ft_putstr(tgetstr("me", NULL)); - curs_backward(curs, len); -} - -/* - * curs_write without moving the cursor -*/ - -void curs_write_static(t_curs *curs, char *str, size_t len) -{ - curs_write(curs, str, len); - curs_backward(curs, len); -} diff --git a/42sh/src/line-editing/ft_readline.c b/42sh/src/line-editing/ft_readline.c deleted file mode 100644 index 2570d0f3..00000000 --- a/42sh/src/line-editing/ft_readline.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_readline.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: sbenning +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/08 18:03:48 by sbenning #+# #+# */ -/* Updated: 2017/01/22 23:15:27 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_readline.h" - -static t_input g_input[] = {\ - {RL_NL_CODE, rl_nl_function},\ - {RL_COMP_CODE, rl_comp_function},\ - {RL_INSERT_CODE, rl_insert_function},\ - {RL_CLEAR_CODE, rl_clear_function},\ - {RL_RETARR_CODE, rl_retarr_function},\ - {RL_SUPPR_CODE, rl_suppr_function},\ - {RL_ESC_CODE, rl_esc_function},\ - {RL_QUOTE_CODE, rl_quote_function},\ - {RL_DQUOTE_CODE, rl_dquote_function},\ - {RL_LEFT_CODE, rl_left_function},\ - {RL_SELECT_LEFT_CODE, rl_select_left_function},\ - {RL_RIGHT_CODE, rl_right_function},\ - {RL_SELECT_RIGHT_CODE, rl_select_right_function},\ - {RL_WLEFT_CODE, rl_wleft_function},\ - {RL_SELECT_WLEFT_CODE, rl_select_wleft_function},\ - {RL_WRIGHT_CODE, rl_wright_function},\ - {RL_SELECT_WRIGHT_CODE, rl_select_wright_function},\ - {RL_HOME_CODE, rl_home_function},\ - {RL_SELECT_HOME_CODE, rl_select_home_function},\ - {RL_END_CODE, rl_end_function},\ - {RL_SELECT_END_CODE, rl_select_end_function},\ - {RL_PAGEUP_CODE, rl_pageup_function},\ - {RL_SELECT_PAGEUP_CODE, rl_select_pageup_function},\ - {RL_PAGEDOWN_CODE, rl_pagedown_function},\ - {RL_SELECT_PAGEDOWN_CODE, rl_select_pagedown_function},\ - {RL_COPY_CODE, rl_copy_function},\ - {RL_CUT_CODE, rl_cut_function},\ - {RL_PASTE_CODE, rl_paste_function},\ - {0x0, rl_default_function}\ -}; - -static t_input_function rl_get_function(long int input) -{ - int i; - - i = -1; - while (g_input[++i].code) - { - if (input == g_input[i].code) - break ; - } - return (g_input[i].function); -} - -static long int rl_read(void) -{ - long int input; - - ft_bzero(&input, sizeof(long int)); - if (read(0, &input, sizeof(long int)) < 0) - return (0); - return (input); -} - -static int rl_loop(t_line *line) -{ - long int input; - int ret; - - rl_put_prompt(line); - while (42) - { - input = rl_read(); - if (input == 0) - continue ; - rl_toogle_bitset(line, 0); - if (rl_get_function(input)(line, input) < 0) - return (-1); - if ((ret = rl_finish(line))) - break ; - rl_toogle_bitset(line, 1); - } - return ((ret < 0 ? -1 : 0)); -} - -int ft_readline() -{ - t_line *line; - - line = &data_singleton()->line; - if (rl_setup(line) < 0) - return (-1); - if (rl_loop(line) < 0) - { - rl_teardown(line); - return (-1); - } - if (rl_cleanup(line) < 0) - return (-1); - return (0); -} diff --git a/42sh/src/line-editing/ft_split_whitespaces.c b/42sh/src/line-editing/ft_split_whitespaces.c deleted file mode 100644 index 05506cfb..00000000 --- a/42sh/src/line-editing/ft_split_whitespaces.c +++ /dev/null @@ -1,79 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split_whitespaces.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/02 17:52:52 by gwojda #+# #+# */ -/* Updated: 2017/01/25 15:49:21 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -char *ft_strdupi_w(char const *s) -{ - int i; - char *str; - - i = 0; - while (s[i] && s[i] != ' ' && s[i] != '\t') - i++; - str = (char *)malloc(sizeof(char) * (i + 1)); - if (str) - { - str[i--] = '\0'; - while (i >= 0) - { - str[i] = s[i]; - i--; - } - } - return (str); -} - -static int ft_len_words(char const *s) -{ - int i; - int len; - - i = 0; - len = 0; - while (s[i]) - { - if ((i == 0 && s[i] != ' ' && s[i] != '\t') || ((s[i] != ' ' - && s[i] != '\t') && (s[i - 1] == ' ' || s[i - 1] == '\t'))) - len++; - i++; - } - return (len); -} - -char **ft_split_whitespaces(char const *s) -{ - int i; - char **str; - int j; - - str = NULL; - if (!(s)) - return (str); - str = (char **)malloc(sizeof(char *) * (ft_len_words(s) + 1)); - i = 0; - j = 0; - if (!(str)) - return (str); - while (s[i]) - { - if ((i == 0 && s[i] != ' ' && s[i] != '\t') || ((s[i] != ' ' - && s[i] != '\t') && (s[i - 1] == ' ' || s[i - 1] == '\t'))) - { - str[j] = ft_strdupi_w((s + i)); - j++; - } - i++; - } - str[j] = NULL; - return (str); -} diff --git a/42sh/src/line-editing/get_touch.c b/42sh/src/line-editing/get_touch.c deleted file mode 100644 index 2ecde44c..00000000 --- a/42sh/src/line-editing/get_touch.c +++ /dev/null @@ -1,69 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_touch.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/19 16:28:49 by gwojda #+# #+# */ -/* Updated: 2017/02/02 18:27:07 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -t_key g_key[] = -{ - {FLECHE_HAUT , &ft_history_up }, - {FLECHE_BAS , &ft_history_down }, - {FLECHE_GAUCHE , &ft_move_left }, - {FLECHE_DROITE , &ft_move_right }, - {TOUCHE_DELETE , &ft_del }, - {TOUCHE_CTRL_C , &ft_control_c }, - {TOUCHE_CTRL_D , &ft_control_d }, - {TOUCHE_CTRL_R , &ft_history_parsing }, - {TOUCHE_SUPPR , &ft_suppr }, - {TOUCHE_HOME , &ft_home }, - {TOUCHE_END , &ft_end }, - {TOUCHE_OPT_UP , &ft_up }, - {TOUCHE_OPT_DOWN , &ft_down }, - {TOUCHE_OPT_LEFT , &ft_found_prev_word }, - {TOUCHE_OPT_RIGHT , &ft_found_next_word }, - {TOUCHE_OPT_C , &ft_c }, - {TOUCHE_OPT_V , &ft_v }, - {TOUCHE_OPT_X , &ft_x }, - {TOUCHE_F5 , &ft_printall }, - {TOUCHE_F6 , &ft_buff_f6 }, - {0 , 0 }, -}; - -char *ft_read_stdin(void) -{ - int ret; - int j; - - if (data_singleton()->line.input) - { - ft_current_str(data_singleton()->line.input, data_singleton()->line.pos); - ft_get_next_str(data_singleton()->line.input, &data_singleton()->line.pos); - if (data_singleton()->line.input[data_singleton()->line.pos]) - ++(data_singleton()->line.pos); - } - while (42) - { - ret = 0; - j = 0; - read(0, &ret, sizeof(int)); - while (g_key[j].value && g_key[j].value != ret) - ++j; - if (g_key[j].value) - g_key[j].f(); - else if (ft_isprint(ret)) - ft_print(ret); - else if (ret == 10) - return (data_singleton()->line.input); - else if (ft_isascii(ret) == 0) - ft_read_it(ret, &data_singleton()->line.pos, - &data_singleton()->line.input); - } -} diff --git a/42sh/src/line-editing/get_touch_toolz.c b/42sh/src/line-editing/get_touch_toolz.c deleted file mode 100644 index e5937fac..00000000 --- a/42sh/src/line-editing/get_touch_toolz.c +++ /dev/null @@ -1,113 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_touch_toolz.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/19 16:42:54 by gwojda #+# #+# */ -/* Updated: 2017/02/02 15:22:35 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_found_prev_word(void) -{ - int i; - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - i = 0; - if (!*pos) - return ; - if (str[*pos - 1] != '\n' && !(str[*pos] == '\n' || str[*pos] == ' ')) - { - ft_puttermcaps("le"); - --(*pos); - } - while ((int)*pos - i - 1 > 0 && str[*pos - i - 1] == ' ') - { - ft_puttermcaps("le"); - ++i; - } - (*pos) = (i && str[*pos - i] == '\n') ? *pos - i + 1 : *pos - i; - i = 0; - if (*pos >= 1 && str[*pos - 1] == '\n') - { - ft_puttermcaps("cd"); - if (*pos >= 2) - (*pos) -= 2; - ft_get_beggin(str, pos); - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - ++(*pos); - } - else - { - if (*pos && !(str[*pos] == '\n' || str[*pos] == ' ')) - { - ft_puttermcaps("le"); - --(*pos); - } - while (*pos - i && (str[*pos - i] == '\n' || str[*pos - i] == ' ')) - { - ft_puttermcaps("le"); - ++i; - } - while (*pos - i && str[*pos - i] != '\n' && str[*pos - i] != ' ') - { - ft_puttermcaps("le"); - ++i; - } - if (str[*pos - i] == '\n' || str[*pos - i] == ' ') - { - ft_puttermcaps("nd"); - ++(*pos); - } - (*pos) -= i; - } -} - -void ft_found_next_word(void) -{ - int i; - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - i = 0; - while (str[i + *pos] && str[i + *pos] == ' ') - { - ft_putchar(str[i + *pos]); - ++i; - } - if (str[*pos] == '\n') - { - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(str, pos); - } - ft_puttermcaps("cd"); - ft_get_next_str(str, pos); - (*pos) += (*pos) ? 2 : 1; - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - if (!str[*pos]) - --(*pos); - ft_get_beggin_with_curs(str, pos); - } - else - { - while (str[i + *pos] && str[i + *pos] != '\n' && str[i + *pos] != ' ') - { - ft_putchar(str[i + *pos]); - ++i; - } - *pos += i; - } -} diff --git a/42sh/src/line-editing/get_touch_toolz_2.c b/42sh/src/line-editing/get_touch_toolz_2.c deleted file mode 100644 index 05805aa2..00000000 --- a/42sh/src/line-editing/get_touch_toolz_2.c +++ /dev/null @@ -1,130 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_touch_toolz_2.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/19 16:43:58 by gwojda #+# #+# */ -/* Updated: 2017/02/02 17:54:27 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int ft_put(int nb) -{ - write(1, &nb, 1); - return (1); -} - -void ft_end(void) -{ - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!str) - return ; - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(str, pos); - } - ft_puttermcaps("cd"); - while (str[*pos]) - ++(*pos); - ft_get_beggin(str, pos); - ft_current_str(str, *pos); - ft_get_next_str(str, pos); -} - -void ft_home(void) -{ - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!str) - return ; - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(str, pos); - if (str[*pos + 1] == '\n') - ft_puttermcaps("nd"); - } - ft_puttermcaps("cd"); - *pos = 0; - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - ft_check_end_of_line(str, *pos); - if (!str[*pos]) - --(*pos); - ft_get_beggin_with_curs(str, pos); -} - -void ft_move_right(void) -{ - size_t tmp; - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (ft_strlen(str) <= *pos) - return ; - if (str[*pos] == '\n') - { - if (*pos) - { - tmp = *pos - 1; - ft_get_beggin_with_curs(str, &tmp); - } - ft_puttermcaps("cd"); - ++(*pos); - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - if (!str[*pos]) - --(*pos); - ft_get_beggin_with_curs(str, pos); - } - else - { - ft_putchar(str[*pos]); - ++(*pos); - } -} - -void ft_move_left(void) -{ - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!*pos) - return ; - if (str[*pos - 1] == '\n') - { - if (*pos - 1 == 0) - { - ft_puttermcaps("cd"); - --(*pos); - return ; - } - ft_puttermcaps("cd"); - (*pos) -= 2; - ft_get_beggin(str, pos); - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - ++(*pos); - } - else - { - ft_puttermcaps("le"); - --(*pos); - } -} diff --git a/42sh/src/line-editing/heredoc.c b/42sh/src/line-editing/heredoc.c deleted file mode 100644 index 7637dcbd..00000000 --- a/42sh/src/line-editing/heredoc.c +++ /dev/null @@ -1,77 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* heredoc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/24 15:52:34 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:09:42 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -char *ft_get_next_word(char *str) -{ - int j; - int k; - - j = 0; - k = 0; - while (str[j] && str[j] == ' ') - ++j; - while (str[j + k] && str[j + k] != ' ') - ++k; - return (ft_strndup(str + j, k)); -} - -static void ft_check_heredoc_2(char **str, char *end) -{ - char boolean; - char *tmp; - char *tmp2; - - boolean = 0; - while (!boolean) - { - ft_putstr("heredoc> "); - data_singleton()->line.prompt_size = 9; - tmp = *str; - *str = ft_strjoin(*str, "\n"); - free(tmp); - tmp = *str; - tmp2 = ft_read_stdin(); - if (!ft_strcmp(end, tmp2)) - boolean = 1; - *str = ft_strjoin(tmp, tmp2); - free(tmp); - free(tmp2); - ft_putchar('\n'); - } -} - -void ft_check_heredoc(char **str) -{ - int i; - char *end; - - i = 0; - end = NULL; - if (!*str) - return ; - while ((*str)[i]) - { - if ((*str)[i] == '<' && !ft_strncmp(*str + i, "<<", 2)) - { - if ((*str)[i + 1] == '<' && (*str)[i + 2]) - end = ft_get_next_word(*str + i + 2); - else - return ; - } - ++i; - } - if (!end) - return ; - ft_check_heredoc_2(str, end); -} diff --git a/42sh/src/line-editing/history.c b/42sh/src/line-editing/history.c deleted file mode 100644 index 295af73e..00000000 --- a/42sh/src/line-editing/history.c +++ /dev/null @@ -1,87 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* history.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/02 15:22:19 by gwojda #+# #+# */ -/* Updated: 2017/02/02 18:04:16 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_history_down(void) -{ - t_list_history *head; - char **str; - size_t *pos; - - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - head = data_singleton()->line.list_cur; - if (!head || !*str) - return ; - if (*str) - { - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(*str, pos); - } - ft_puttermcaps("cd"); - *pos = 0; - ft_strdel(str); - } - if (head->next) - head = head->next; - if (!head->str) - *str = NULL; - else - *str = ft_strdup(head->str); - if (*str) - ft_current_str(*str, *pos); - if (*str) - *pos = ft_strlen_next(*str, *pos); - else - *pos = 0; - data_singleton()->line.list_cur = head; -} - -void ft_history_up(void) -{ - t_list_history *head; - char **str; - size_t *pos; - - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - head = data_singleton()->line.list_cur; - if (!head) - return ; - if (*str) - { - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(*str, pos); - } - ft_puttermcaps("cd"); - *pos = 0; - ft_strdel(str); - } - if (head->prev) - head = head->prev; - if (!head->str) - *str = NULL; - else - *str = ft_strdup(head->str); - if (*str) - ft_current_str(*str, *pos); - if (*str) - *pos = ft_strlen_next(*str, *pos); - else - *pos = 0; - data_singleton()->line.list_cur = head; -} diff --git a/42sh/src/line-editing/history_parsing.c b/42sh/src/line-editing/history_parsing.c deleted file mode 100644 index bd3f67d4..00000000 --- a/42sh/src/line-editing/history_parsing.c +++ /dev/null @@ -1,90 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* history_parsing.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/25 11:39:47 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:20:26 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static int ft_history_parsing_4(char *str, int *i) -{ - if (!ft_strncmp("!!", str + *i, 2)) - { - ft_realloc_str_history(&(data_singleton()->line.input), *i, 0, 2); - ++(*i); - return (1); - } - else if (ft_isdigit(str[(*i) + 1])) - { - ft_realloc_str_history(&(data_singleton()->line.input), *i, - ft_atoi(str + (*i) + 1), ft_nbr_len(ft_atoi(str + *i + 1)) + 1); - (*i) += ft_nbr_len(ft_atoi(str + *i + 1)); - return (1); - } - return (0); -} - -static int ft_history_parsing_3(char *str, int *i) -{ - if (ft_history_parsing_4(str, i)) - return (1); - else if (str[*i + 1] == '-') - { - ft_realloc_str_history(&(data_singleton()->line.input), *i, - data_singleton()->line.list_size - ft_atoi(str + *i + 2), - ft_nbr_len(ft_atoi(str + *i + 2)) + 2); - (*i) += ft_nbr_len(ft_atoi(str + *i + 2) + 1); - } - else if (str[*i + 1] == '?') - ft_realloc_str_history_3(&(data_singleton()->line.input), *i, - ft_strdupi_w(str + *i + 2)); - else if (str[*i + 1] != ' ') - ft_realloc_str_history_2(&(data_singleton()->line.input), *i, - ft_strdupi_w(str + *i + 1)); - else - return (0); - return (1); -} - -static void ft_history_parsing_2(void) -{ - data_singleton()->line.opt = data_singleton()->line.opt | HIST; - ft_prompt(); - data_singleton()->line.input = ft_read_stdin(); - ft_putchar('\n'); - data_singleton()->line.opt = data_singleton()->line.opt | ~HIST; - ft_check_quotes(&data_singleton()->line.input); - ft_check_heredoc(&data_singleton()->line.input); - ft_history_parsing(); -} - -void ft_history_parsing(void) -{ - char *str; - int i; - char boolean; - - i = 0; - boolean = 0; - str = data_singleton()->line.input; - if (!str) - return ; - while (str[i]) - { - if (str[i] == '!') - { - boolean = 1; - if (!ft_history_parsing_3(str, &i)) - boolean = 0; - } - ++i; - } - if (boolean) - ft_history_parsing_2(); -} diff --git a/42sh/src/line-editing/history_parsing_toolz.c b/42sh/src/line-editing/history_parsing_toolz.c deleted file mode 100644 index 31a4b818..00000000 --- a/42sh/src/line-editing/history_parsing_toolz.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* history_parsing_toolz.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/25 14:09:39 by gwojda #+# #+# */ -/* Updated: 2017/01/25 14:41:29 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static char *ft_nget_histo(size_t nb_his) -{ - t_list_history *list; - size_t i; - - i = 0; - list = data_singleton()->line.list_beg; - if (!list) - return (NULL); - if (!list->str) - list = list->prev; - while (i < nb_his && list->str) - { - list = list->prev; - ++i; - } - return (list->str); -} - -void ft_realloc_str_history(char **str, size_t pos, int nb_his, int len) -{ - char *new_str; - char *new_str2; - char *new_str3; - - if (!*str) - return ; - new_str = ft_strndup(*str, pos); - ft_printf("\n\npos = %d\n\n", len); - new_str3 = ft_nget_histo(nb_his); - if (new_str3) - { - new_str2 = ft_strjoin(new_str, new_str3); - free(new_str); - new_str3 = ft_strjoin(new_str2, (*str) + pos + len); - free(new_str2); - } - else - new_str3 = ft_strjoin(new_str, (*str) + pos + len); - free(*str); - *str = new_str3; -} - -static char *ft_strget_histo(char *str) -{ - t_list_history *list; - - list = data_singleton()->line.list_beg; - if (!list) - return (NULL); - if (!list->str) - list = list->prev; - while (list->str && ft_strncmp(list->str, str, ft_strlen(str))) - list = list->prev; - return (list->str); -} - -void ft_realloc_str_history_2(char **str, size_t pos, char *s) -{ - char *new_str; - char *new_str2; - char *new_str3; - - if (!*str) - return ; - new_str = ft_strndup(*str, pos); - new_str3 = ft_strget_histo(s); - if (new_str3) - { - new_str2 = ft_strjoin(new_str, new_str3); - free(new_str); - new_str3 = ft_strjoin(new_str2, (*str) + pos + ft_strlen(s) + 1); - free(new_str2); - } - else - new_str3 = ft_strjoin(new_str, (*str) + pos + ft_strlen(s) + 1); - free(s); - free(*str); - *str = new_str3; -} diff --git a/42sh/src/line-editing/history_parsing_toolz_2.c b/42sh/src/line-editing/history_parsing_toolz_2.c deleted file mode 100644 index 23ce77ae..00000000 --- a/42sh/src/line-editing/history_parsing_toolz_2.c +++ /dev/null @@ -1,64 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* history_parsing_toolz_2.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/25 20:04:16 by gwojda #+# #+# */ -/* Updated: 2017/01/26 11:33:22 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -char *ft_strget_history(char *str) -{ - t_list_history *list; - size_t i; - char *tmp; - - list = data_singleton()->line.list_beg; - if (!list) - return (NULL); - if (!list->str) - list = list->prev; - while (list->str) - { - tmp = list->str; - i = 0; - while (tmp[i]) - { - if (ft_strlen(tmp + i) >= ft_strlen(str) - && !ft_strncmp(tmp + i, str, ft_strlen(str))) - return (tmp); - ++i; - } - list = list->prev; - } - return (list->str); -} - -void ft_realloc_str_history_3(char **str, size_t pos, char *s) -{ - char *new_str; - char *new_str2; - char *new_str3; - - if (!*str) - return ; - new_str = ft_strndup(*str, pos); - new_str3 = ft_strget_history(s); - if (new_str3) - { - new_str2 = ft_strjoin(new_str, new_str3); - free(new_str); - new_str3 = ft_strjoin(new_str2, (*str) + pos + ft_strlen(s) + 2); - free(new_str2); - } - else - new_str3 = ft_strjoin(new_str, (*str) + pos + ft_strlen(s) + 2); - free(s); - free(*str); - *str = new_str3; -} diff --git a/42sh/src/line-editing/list_toolz.c b/42sh/src/line-editing/list_toolz.c deleted file mode 100644 index 51bde359..00000000 --- a/42sh/src/line-editing/list_toolz.c +++ /dev/null @@ -1,51 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* list_toolz.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/17 11:37:47 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:08:01 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -t_list_history *ft_create_history_list(char *str) -{ - t_list_history *list; - - list = (t_list_history *)malloc(sizeof(t_list_history)); - if (!list) - return (NULL); - if (!str) - list->str = NULL; - else - list->str = ft_strdup(str); - list->prev = NULL; - list->next = NULL; - return (list); -} - -void ft_push_back_history(t_list_history **head, t_list_history *new) -{ - ++(data_singleton()->line.list_size); - if (!*head) - { - *head = new; - (*head)->prev = ft_create_history_list(NULL); - (*head)->prev->next = (*head); - (*head)->next = ft_create_history_list(NULL); - (*head)->next->prev = (*head); - (*head) = (*head)->next; - (data_singleton())->line.list_end = new; - return ; - } - while ((*head)->next) - (*head) = (*head)->next; - new->prev = (*head)->prev; - (*head)->prev->next = new; - new->next = (*head); - (*head)->prev = new; -} diff --git a/42sh/src/line-editing/move_to_line.c b/42sh/src/line-editing/move_to_line.c deleted file mode 100644 index c8161cfb..00000000 --- a/42sh/src/line-editing/move_to_line.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* move_to_line.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/09 13:21:40 by gwojda #+# #+# */ -/* Updated: 2017/02/02 15:07:08 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static void ft_up_2(size_t *pos, char *str) -{ - int len; - int i; - - i = 0; - len = ft_size_term(); - if (str[*pos - i] == '\n') - { - --len; - ft_puttermcaps("le"); - ++i; - } - while (*pos - i && str[*pos - i] != '\n' && --len + 1) - { - ft_puttermcaps("le"); - ++i; - } - if (str[*pos - i] == '\n') - { - ft_puttermcaps("nd"); - ++(*pos); - } - (*pos) -= i; -} - -void ft_up(void) -{ - int i; - char *str; - size_t *pos; - - i = 0; - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!str) - return ; - if (str[*pos - 1] == '\n') - { - ft_puttermcaps("cd"); - (*pos) -= 2; - ft_get_beggin(str, pos); - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - ++(*pos); - } - else - ft_up_2(pos, str); -} - -static void ft_down_2(size_t *pos, char *str) -{ - if (*pos) - { - --(*pos); - ft_get_beggin_with_curs(str, pos); - } - ft_puttermcaps("cd"); - ft_get_next_str(str, pos); - (*pos) += 2; - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - if (!(str[*pos])) - --(*pos); - ft_get_beggin_with_curs(str, pos); -} - -void ft_down(void) -{ - int i; - int len; - char *str; - size_t *pos; - - i = 0; - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - if (!str) - return ; - if (str[*pos] == '\n') - ft_down_2(pos, str); - else - { - len = ft_size_term(); - while (str[i + *pos] && str[i + *pos] != '\n' && --len + 1) - { - ft_putchar(str[i + *pos]); - ++i; - } - *pos += i; - } -} diff --git a/42sh/src/line-editing/print_and_del.c b/42sh/src/line-editing/print_and_del.c deleted file mode 100644 index ac352ae1..00000000 --- a/42sh/src/line-editing/print_and_del.c +++ /dev/null @@ -1,112 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* print_and_del.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/05 16:02:43 by gwojda #+# #+# */ -/* Updated: 2017/02/02 15:10:50 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int ft_found_next_char(char *str, size_t i) -{ - while (str[i]) - { - if (str[i] == '\n') - return (1); - ++i; - } - return (0); -} - -void ft_print(int ret) -{ - int j; - char **str; - size_t *i; - - j = 0; - str = &data_singleton()->line.input; - i = &data_singleton()->line.pos; - *str = ft_realloc_imput(*str, ret, *i); - while (*((*str) + *i + j) && *((*str) + *i + j) != '\n') - { - ft_putchar(*((*str) + *i + j)); - ++j; - } - ft_check_end_of_line(*str, *i + j); - ft_putnc('\b', j - 1); - ++(*i); -} - -void ft_suppr_2(char **str, size_t *i, size_t tmp) -{ - ft_puttermcaps("cd"); - ft_current_str(*str, *i); - ft_get_next_str(*str, i); - if (*i && (*str)[*i] && ft_found_next_char(*str, *i)) - ++(*i); - ft_putnc('\b', *i - tmp); - (*i) = tmp; - if (ft_strlen(*str) == 0) - ft_strdel(str); -} - -void ft_suppr(void) -{ - size_t tmp; - char boolean; - char **str; - size_t *i; - - str = &data_singleton()->line.input; - i = &data_singleton()->line.pos; - boolean = 0; - if (*i <= 0) - return ; - if ((*str)[*i - 1] != '\n') - boolean = 1; - --(*i); - tmp = *i; - if (boolean) - { - ft_get_beggin_with_curs(*str, i); - *str = ft_remove_imput((*str), tmp); - } - else - { - *str = ft_remove_imput((*str), tmp); - ft_get_beggin(*str, i); - } - ft_suppr_2(str, i, tmp); -} - -void ft_del(void) -{ - size_t tmp; - char **str; - size_t *i; - - str = &data_singleton()->line.input; - i = &data_singleton()->line.pos; - tmp = *i; - *str = ft_remove_imput((*str), tmp); - if (!((*str) && (*i) < ft_strlen((*str)))) - return ; - if (*i) - { - --(*i); - ft_get_beggin_with_curs(*str, i); - } - ft_puttermcaps("cd"); - ft_current_str(*str, *i); - ft_get_next_str(*str, i); - if ((*str)[*i]) - ++(*i); - ft_putnc('\b', *i - tmp); - (*i) = tmp; -} diff --git a/42sh/src/line-editing/prompt.c b/42sh/src/line-editing/prompt.c deleted file mode 100644 index 94482a27..00000000 --- a/42sh/src/line-editing/prompt.c +++ /dev/null @@ -1,65 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* prompt.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/13 13:51:33 by gwojda #+# #+# */ -/* Updated: 2017/01/25 16:31:24 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -/* -**ft_printf de la lib bug avec unicode -*/ - -static void ft_get_date(void) -{ - time_t t; - struct tm tm; - - t = time(NULL); - tm = *localtime(&t); - ft_putstr("\033[22;32m"); - printf("%.2d:%.2d:%.2d ", tm.tm_hour, tm.tm_min, tm.tm_sec); - fflush(NULL); - if (tm.tm_hour >= 8 && tm.tm_hour < 20) - printf("\033[22;33m%C ", L'☀'); - else - printf("\033[22;33m%C ", L'★'); - fflush(NULL); -} - -static int ft_currend_dir(void) -{ - int i; - int j; - char **env; - - i = 0; - env = data_singleton()->env; - while (ft_strncmp(env[i], "PWD=", 4)) - ++i; - j = ft_strlen(env[i]); - while (j && env[i][j] != '/') - --j; - ft_putstr(env[i] + j + 1); - return (ft_strlen(env[i] + j + 1)); -} - -void ft_prompt(void) -{ - int ret; - - ft_get_date(); - ft_putstr("\033[22;36m"); - ret = ft_currend_dir(); - ft_putstr("\033[22;33m"); - printf(" %C", L'›'); - fflush(NULL); - ft_putstr("\033[22;37m"); - data_singleton()->line.prompt_size = ret + 12; -} diff --git a/42sh/src/line-editing/quotes_gest.c b/42sh/src/line-editing/quotes_gest.c deleted file mode 100644 index c4be15f9..00000000 --- a/42sh/src/line-editing/quotes_gest.c +++ /dev/null @@ -1,88 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* quotes_gest.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/05 12:20:19 by gwojda #+# #+# */ -/* Updated: 2017/02/02 17:53:41 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int ft_check_quotes_num(char *s) -{ - int i; - char simp; - char doub; - - i = 0; - simp = 0; - doub = 0; - while (s[i]) - { - if (s[i] == '\'' && ((i && s[i - 1] != '\\') || !i)) - { - simp = 1; - ++i; - while (s[i] && !(s[i] == '\'' && ((i && s[i - 1] != '\\') || !i))) - ++i; - if (s[i] == '\'' && ((i && s[i - 1] != '\\') || !i)) - simp = 0; - } - else if (s[i] == '"' && ((i && s[i - 1] != '\\') || !i)) - { - doub = 1; - ++i; - while (s[i] && !(s[i] == '"' && ((i && s[i - 1] != '\\') || !i))) - ++i; - if (s[i] == '"' && ((i && s[i - 1] != '\\') || !i)) - doub = 0; - } - if (s[i]) - ++i; - } - if (doub) - return (2); - else if (simp) - return (1); - return (0); -} - -void ft_check_quotes(char **s) -{ - int ret; - char *tmp; - char *tmp2; - int prompt_size_mem; - t_list_history *head; - - head = data_singleton()->line.list_beg; - if (!*s) - return ; - while ((ret = (ft_check_quotes_num(*s)))) - { - if (ret == 1) - ft_putstr("squote> "); - else if (ret == 2) - ft_putstr("dquote> "); - tmp = *s; - *s = ft_strjoin(*s, "\n"); - ft_strdel(&tmp); - tmp = *s; - prompt_size_mem = data_singleton()->line.prompt_size; - data_singleton()->line.input = NULL; - data_singleton()->line.pos = 0; - tmp2 = ft_read_stdin(); - data_singleton()->line.prompt_size = prompt_size_mem; - ft_putchar('\n'); - if (!tmp2) - continue ; - *s = ft_strjoin(tmp, tmp2); - data_singleton()->line.input = *s; - ft_strdel(&tmp); - ft_strdel(&tmp2); - } -} diff --git a/42sh/src/line-editing/reader.c b/42sh/src/line-editing/reader.c deleted file mode 100644 index 4a3e17d3..00000000 --- a/42sh/src/line-editing/reader.c +++ /dev/null @@ -1,66 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* reader.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/19 16:52:57 by gwojda #+# #+# */ -/* Updated: 2017/01/25 19:07:39 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static void ft_read_it_3(char **str, char t[5], size_t *pos, int *j) -{ - int i; - - i = 0; - while (i < 4 && t[i] == '\0') - ++i; - while (i < 4) - { - if (t[i] && ft_isprint(t[i])) - { - *str = ft_realloc_imput(*str, t[i], *pos); - ++(*pos); - ++(*j); - } - ++i; - } -} - -static void ft_read_it_2(int input, char t[5]) -{ - t[3] = (input / ft_pow(256, 3)) ? (input / ft_pow(256, 3)) : '\0'; - if (t[3]) - input = input % ft_pow(256, 3); - t[2] = (input / ft_pow(256, 2)) ? (input / ft_pow(256, 2)) : '\0'; - if (t[2]) - input = input % ft_pow(256, 2); - t[1] = (input / ft_pow(256, 1)) ? (input / ft_pow(256, 1)) : '\0'; - if (t[1]) - input = input % ft_pow(256, 1); - t[0] = (input / ft_pow(256, 0)) ? (input / ft_pow(256, 0)) : '\0'; - if (t[0]) - input = input % ft_pow(256, 0); - t[4] = '\0'; -} - -void ft_read_it(int input, size_t *pos, char **str) -{ - int j; - char t[5]; - - j = 0; - if (input == TOUCHE_DELETE || input < 0 || input == 892427035 || - input == 126 || input == 993090331 || input == 925981467 || - input == 21298 || input == 892427035 || input == 8270395 || - input == 942758683 || input == 993090331 || input == 18489 || input == 17977) - return ; - ft_read_it_2(input, t); - ft_read_it_3(str, t, pos, &j); - ft_putstr((*str) + (*pos) - j); - ft_putnc('\b', ft_strlen((*str)) - ((*pos))); -} diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c deleted file mode 100644 index f48668b4..00000000 --- a/42sh/src/line-editing/readline.c +++ /dev/null @@ -1,99 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* readline.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/02/02 18:03:23 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_init_line(void) -{ - data_singleton()->line.input = NULL; - data_singleton()->line.copy_tmp = NULL; - data_singleton()->line.pos = 0; - data_singleton()->line.prompt_size = 0; - data_singleton()->line.list_size = 0; - data_singleton()->line.list_end = NULL; - data_singleton()->line.list_beg = NULL; - data_singleton()->line.opt = 0; -} - -void ft_init_history(void) -{ - int fd; - char *str; - - fd = open(".42sh_history", O_RDONLY); - if (fd == -1) - return ; - while (get_next_line(fd, &str) > 0) - { - ft_push_back_history(&data_singleton()->line.list_beg, - ft_create_history_list(str)); - free(str); - } - free(str); - close(fd); -} - -struct termios *ft_save_stats_term(void) -{ - static struct termios *term_save = NULL; - - if (!term_save) - { - term_save = (struct termios *)malloc(sizeof(struct termios)); - tcgetattr(0, term_save); - } - return (term_save); -} - -struct termios *ft_stats_term_termcaps(void) -{ - static struct termios *term = NULL; - - if (!term) - { - ft_init_line(); - ft_init_history(); - term = (struct termios *)malloc(sizeof(struct termios)); - tcgetattr(0, term); - (*term).c_lflag &= ~(ECHO | ICANON | ISIG); - (*term).c_cc[VMIN] = 1; - (*term).c_cc[VTIME] = 0; - } - return (term); -} - -int ft_readline(void) -{ - ft_save_stats_term(); - if (tcsetattr(0, TCSANOW, ft_stats_term_termcaps()) == -1) - return (-1); - if (data_singleton()->line.input) - ft_strdel(&data_singleton()->line.input); - data_singleton()->line.list_cur = data_singleton()->line.list_beg; - data_singleton()->line.pos = 0; - ft_prompt(); - data_singleton()->line.input = ft_read_stdin(); - ft_putchar('\n'); - ft_check_quotes(&data_singleton()->line.input); - ft_check_heredoc(&data_singleton()->line.input); - ft_check_backslash(&data_singleton()->line.input); - ft_history_parsing(); - if (data_singleton()->line.input) - { - ft_push_back_history(&data_singleton()->line.list_beg, - ft_create_history_list(data_singleton()->line.input)); - ft_add_in_history_file(data_singleton()->line.input); - } - if (tcsetattr(0, TCSANOW, ft_save_stats_term()) == -1) - return (-1); - return (0); -} diff --git a/42sh/src/line-editing/surch_in_history.c b/42sh/src/line-editing/surch_in_history.c deleted file mode 100644 index 424dc5d2..00000000 --- a/42sh/src/line-editing/surch_in_history.c +++ /dev/null @@ -1,87 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* surch_in_history.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/26 10:43:16 by gwojda #+# #+# */ -/* Updated: 2017/02/02 15:16:42 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_clear_prompt(char *str, size_t *pos, size_t srch_pos) -{ - if (str) - ft_get_beggin_with_curs(str, pos); - else if (*pos) - { - ft_putnc('\b', *pos); - (*pos) = 0; - } - ft_putnc('\b', data_singleton()->line.prompt_size + srch_pos + 1); - ft_puttermcaps("cd"); -} - -void ft_surch_and_realloc(char **str, char **str_srch, int ret, size_t *srch_pos) -{ - *str_srch = ft_realloc_imput(*str_srch, ret, *srch_pos); - ++(*srch_pos); - *str = ft_strget_history(*str_srch); -} - -void ft_surch_in_history(void) -{ - char *str_srch; - int ret; - size_t srch_pos; - char **str; - size_t *pos; - - str = &data_singleton()->line.input; - pos = &data_singleton()->line.pos; - srch_pos = 0; - str_srch = NULL; - if (*str) - ft_strdel(str); - while (42) - { - ft_clear_prompt(*str, pos, srch_pos); - data_singleton()->line.prompt_size = 21; - if (str_srch) - ft_printf("\033[35m(reverse-i-search)`\033[32m%s\033[35m': \033[37m", str_srch); - else - ft_putstr("\033[35m(reverse-i-search)`': \033[37m"); - if (*str) - { - ft_current_str(*str, *pos); - ft_get_next_str(*str, pos); - } - ret = 0; - read(0, &ret, sizeof(int)); - if (ft_isprint(ret)) - ft_surch_and_realloc(str, &str_srch, ret, &srch_pos); - else if (ret == 127) - { - if (srch_pos) - { - --srch_pos; - str_srch = ft_remove_imput(str_srch, srch_pos); - ft_puttermcaps("le"); - } - } - else - break ; - } - ft_clear_prompt(*str, pos, srch_pos); - ft_prompt(); - if (*str) - { - *str = ft_strdup(*str); - ft_current_str(*str, *pos); - ft_get_next_str(*str, pos); - } - free(str_srch); -} diff --git a/42sh/src/line-editing/tool_line.c b/42sh/src/line-editing/tool_line.c deleted file mode 100644 index 0745579b..00000000 --- a/42sh/src/line-editing/tool_line.c +++ /dev/null @@ -1,61 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* tool_line.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/20 18:20:23 by gwojda #+# #+# */ -/* Updated: 2017/02/01 15:27:31 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_get_beggin(char *str, size_t *pos) -{ - while ((*pos) && str[(*pos)] != '\n') - --(*pos); - if (*pos && str[(*pos)] == '\n') - ++(*pos); -} - -void ft_get_next_str(char *str, size_t *pos) -{ - while (str[(*pos)] && str[(*pos)] != '\n') - ++(*pos); - if (*pos && str[(*pos)] == '\n') - --(*pos); -} - -void ft_putall_current_str(char *str, size_t *pos) -{ - int len; - - len = 0; - ft_get_beggin(str, pos); - while (str[(*pos) + len] && str[(*pos) + len] != '\n') - ++len; - write(1, str + *pos, len); -} - -void ft_current_str(char *str, size_t pos) -{ - int len; - - len = 0; - while (str[pos + len] && str[pos + len] != '\n') - ++len; - write(1, str + pos, len); - ft_check_end_of_line(str, pos + len); -} - -int ft_strlen_next(char *str, size_t pos) -{ - int len; - - len = 0; - while (str[pos + len] && str[pos + len] != '\n') - ++len; - return (len); -} diff --git a/42sh/src/line-editing/tool_line_2.c b/42sh/src/line-editing/tool_line_2.c deleted file mode 100644 index c5c9dd8e..00000000 --- a/42sh/src/line-editing/tool_line_2.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* tool_line_2.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/20 19:07:52 by gwojda #+# #+# */ -/* Updated: 2017/02/02 14:16:24 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static void ft_clear_window() -{ - pid_t soon_pid; - char *tab_str[2] = {(char *){"/usr/bin/clear"}, NULL}; - - soon_pid = fork(); - if (soon_pid != 0) - wait(NULL); - else - execve("/usr/bin/clear", tab_str, data_singleton()->env); -} - -void ft_printall(void) -{ - size_t pos_tmp; - int ret; - char *str; - size_t *pos; - - str = data_singleton()->line.input; - pos = &data_singleton()->line.pos; - ret = 0; - if (read(0, &ret, sizeof(int)) == -1 || ret != 126 || !str) - return ; - ft_clear_window(); - ft_prompt(); - pos_tmp = *pos; - ft_putstr("\033[31m"); - ft_puttermcaps("cd"); - ft_puttermcaps("sc"); - ft_putstr(str); - while (42) - { - ret = 0; - read(0, &ret, sizeof(int)); - if (ret == TOUCHE_F6) - { - ret = 0; - if (read(0, &ret, sizeof(int)) && ret == 126) - break ; - } - } - ft_puttermcaps("rc"); - ft_puttermcaps("cd"); - ft_putstr("\033[37m"); - if (*pos) - --(*pos); - ft_get_beggin(str, pos); - ft_current_str(str, *pos); - ft_get_next_str(str, pos); - if (*pos && !str[*pos]) - --(*pos); - if (*pos) - ft_putnc('\b', *pos - pos_tmp + 1); - *pos = pos_tmp; -} - -void ft_check_end_of_line(char *str, size_t pos) -{ - if (!str) - return ; - if (ft_nb_last_line(str, pos) == 0) - { - ft_putchar(' '); - ft_puttermcaps("le"); - } -} - -void ft_get_beggin_with_curs(char *str, size_t *pos) -{ - while ((*pos) && str[(*pos)] != '\n') - { - --(*pos); - ft_puttermcaps("le"); - } - if (!*pos && str[(*pos)] != '\n') - ft_puttermcaps("le"); - if (str[(*pos)] == '\n') - ++(*pos); -} diff --git a/42sh/src/line-editing/toolz.c b/42sh/src/line-editing/toolz.c deleted file mode 100644 index 1051442e..00000000 --- a/42sh/src/line-editing/toolz.c +++ /dev/null @@ -1,66 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* toolz.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/16 17:06:30 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:22:47 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_putnc(char c, int n) -{ - int i; - - i = 0; - while (i < n) - { - write(1, &c, 1); - ++i; - } -} - -char *ft_strndup(char const *s, int n) -{ - int i; - char *str; - - i = 0; - str = (char *)malloc(sizeof(char) * (n + 1)); - if (str) - { - while (i < n) - { - str[i] = s[i]; - i++; - } - str[i] = '\0'; - } - return (str); -} - -char *ft_strdupi(char const *s) -{ - int i; - char *str; - - i = 0; - while (s[i] && s[i] != ';' && s[i] != '>' && s[i] != '<' - && ft_strncmp(s + i, "||", 2)) - i++; - str = (char *)malloc(sizeof(char) * (i + 1)); - if (str) - { - str[i--] = '\0'; - while (i >= 0) - { - str[i] = s[i]; - i--; - } - } - return (str); -} diff --git a/42sh/src/line-editing/toolz2.c b/42sh/src/line-editing/toolz2.c deleted file mode 100644 index ce1c62f6..00000000 --- a/42sh/src/line-editing/toolz2.c +++ /dev/null @@ -1,67 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* toolz2.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/07 11:00:28 by gwojda #+# #+# */ -/* Updated: 2017/02/02 16:04:55 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_add_in_history_file(char *str) -{ - int fd; - - fd = open(".42sh_history", O_CREAT | O_WRONLY | O_APPEND, S_IWUSR | S_IRUSR); - if (fd == -1) - return ; - write(fd, str, ft_strlen(str)); - write(fd, "\n", 1); - close(fd); -} - -int ft_nbr_len(int nbr) -{ - if (nbr % 10 != nbr) - return (ft_nbr_len(nbr / 10) + 1); - else - return (1); -} - -void ft_puttermcaps(char *str) -{ - char *res; - char *env; - - env = getenv("TERM"); - if ((res = tgetstr(str, &env)) == NULL) - return ; - tputs(res, 0, ft_put); -} - -int ft_size_term(void) -{ - struct winsize w; - - ioctl(0, TIOCGWINSZ, &w); - return (w.ws_col); -} - -long long ft_pow(int nbr, int power) -{ - int i; - long long ret; - - i = 0; - ret = 1; - while (i < power) - { - ret *= nbr; - i++; - } - return (ret); -} diff --git a/42sh/src/line-editing/toolz_parseur.c b/42sh/src/line-editing/toolz_parseur.c deleted file mode 100644 index a0781e12..00000000 --- a/42sh/src/line-editing/toolz_parseur.c +++ /dev/null @@ -1,51 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* toolz_parseur.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/16 16:14:46 by gwojda #+# #+# */ -/* Updated: 2017/02/02 14:29:34 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -char *ft_realloc_imput(char *str, int a, size_t pos) -{ - int i; - char tmp[2]; - char *str_tmp; - char *new_str; - - i = 0; - tmp[0] = (char)a; - tmp[1] = '\0'; - if (!str) - { - new_str = ft_strdup(tmp); - return (new_str); - } - str_tmp = ft_strndup(str, pos); - new_str = ft_strjoin(str_tmp, tmp); - free(str_tmp); - str_tmp = ft_strjoin(new_str, str + pos); - free(new_str); - free(str); - return (str_tmp); -} - -char *ft_remove_imput(char *str, size_t pos) -{ - char *new_str; - char *new_str2; - - if (!str) - return (str); - new_str = ft_strndup(str, pos); - new_str2 = ft_strjoin(new_str, &str[pos + 1]); - free(str); - free(new_str); - return (new_str2); -} diff --git a/42sh/src/line-editing/toolz_termcaps.c b/42sh/src/line-editing/toolz_termcaps.c deleted file mode 100644 index 901b026e..00000000 --- a/42sh/src/line-editing/toolz_termcaps.c +++ /dev/null @@ -1,45 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* toolz_termcaps.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gwojda +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/08 12:35:11 by gwojda #+# #+# */ -/* Updated: 2017/01/24 11:19:34 by gwojda ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int ft_get_ind_prev(char *str, size_t pos) -{ - while (pos && str[pos] != '\n') - --pos; - return (pos); -} - -int ft_get_size_prev(char *str, size_t pos) -{ - size_t len; - - len = 0; - while (pos && str[pos] != '\n') - { - --pos; - ++len; - } - return (len); -} - -int ft_nb_last_line(char *str, size_t pos) -{ - int len; - - len = 1; - if (pos && str[pos] == '\n') - --pos; - len += data_singleton()->line.prompt_size; - len += ft_get_size_prev(str, pos); - return ((len) ? len % ft_size_term() : -1); -} diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index ed06bf53..bb4682cd 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:31:46 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:40:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,8 +24,8 @@ int shell_single_command(char *command) if (ft_lexer(&token, &command) || !token) return (1); token_print(token); - if (ft_parse(&ast, &token)) - return (1); +// if (ft_parse(&ast, &token)) +// return (1); btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); @@ -49,8 +49,6 @@ int main(int ac, char **av) } while (1) { - if (ft_readline()) - return (1); if (shell_single_command(ft_strdup(data_singleton()->line.input)) < 0) return (1); } diff --git a/42sh/src/main/shell_get_ast.c b/42sh/src/main/shell_get_ast.c index 7005119a..36809962 100644 --- a/42sh/src/main/shell_get_ast.c +++ b/42sh/src/main/shell_get_ast.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 18:19:13 by ariard #+# #+# */ -/* Updated: 2017/01/30 23:14:32 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:29:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ t_list **shell_get_ast(char *command) return (NULL); if (!token) return (NULL); - if (ft_post_tokenize(&token, command)) + if (ft_post_tokenize(&token, &command)) return (NULL); DG("after post_tokenize"); token_print(token); diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 87b5fff4..6667c5de 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/02 17:50:21 by ariard ### ########.fr */ +/* Updated: 2017/02/03 15:37:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,11 +23,7 @@ int shell_script() token = NULL; ast = NULL; list_ast = NULL; - if (ft_tokenize(&token, data_singleton()->script.buffer , DEFAULT)) - return (1); - if (!token) - return (0); - if (ft_post_tokenize(&token, data_singleton()->script.buffer)) + if (ft_lexer(&token, &data_singleton()->script.buffer) || !token) return (1); DG("after post_tokenize"); token_print(token); diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 6f7126b3..951678d0 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:30:10 by ariard ### ########.fr */ +/* Updated: 2017/02/03 14:52:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,7 @@ int parse_word(t_list **list_ast, t_btree **ast, t_token *token; char **my_tab; + (void)list_ast; (void)start; my_tab = NULL; token = (*lst)->content; @@ -27,7 +28,7 @@ int parse_word(t_list **list_ast, t_btree **ast, my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); ft_ld_pushback(&node->data.token, my_tab); - ft_parse(ast, &(*lst)->next); +// ft_parse(ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } From 0a5143bd69cf2990e428aecdea32d268827761b4 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 3 Feb 2017 20:03:54 +0100 Subject: [PATCH 024/206] multi loop ok, to-do : do as a separator(lexing), in case of multisep after do delete all (parsing), before while inspect after done (parsing) --- 42sh/Makefile | 6 +-- 42sh/{ffile2 => file1} | 0 42sh/file2 | 10 +++- 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 53 +++++++------------ 42sh/sample/test.sh | 6 +++ 42sh/sample/test2.sh | 1 + 42sh/sample/while.sh | 23 +++++--- 42sh/src/exec/exec_while.c | 4 +- 42sh/src/lexer/ft_lexer.c | 6 +-- 42sh/src/lexer/ft_post_tokenize.c | 5 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_lexer_state.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 50 +++++++++-------- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_do.c | 38 ------------- 42sh/src/lexer/lexer_done.c | 38 ------------- 42sh/src/lexer/lexer_list.c | 42 --------------- 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/lexer/lexer_sep.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/ft_putast.c | 4 +- 42sh/src/main/main.c | 2 +- 42sh/src/main/read_script.c | 5 +- 42sh/src/main/shell_get_ast.c | 35 ------------ 42sh/src/main/shell_script.c | 29 ++++------ 42sh/src/parser/ft_parse.c | 13 ++--- .../get_instruction.c} | 25 ++++----- 42sh/src/parser/parse_dgreat.c | 7 ++- 42sh/src/parser/parse_dless.c | 7 ++- 42sh/src/parser/parse_do.c | 7 ++- 42sh/src/parser/parse_done.c | 7 ++- 42sh/src/parser/parse_great.c | 7 ++- 42sh/src/parser/parse_greatand.c | 7 ++- 42sh/src/parser/parse_less.c | 7 ++- 42sh/src/parser/parse_lessand.c | 7 ++- 42sh/src/parser/parse_list.c | 6 +-- 42sh/src/parser/parse_newline.c | 10 ++-- 42sh/src/parser/parse_separator.c | 9 ++-- 42sh/src/parser/parse_subshell.c | 7 ++- 42sh/src/parser/parse_while.c | 41 +++++++++++--- 42sh/src/parser/parse_word.c | 9 ++-- 43 files changed, 203 insertions(+), 346 deletions(-) rename 42sh/{ffile2 => file1} (100%) create mode 100644 42sh/sample/test.sh create mode 100644 42sh/sample/test2.sh delete mode 100644 42sh/src/lexer/lexer_do.c delete mode 100644 42sh/src/lexer/lexer_done.c delete mode 100644 42sh/src/lexer/lexer_list.c delete mode 100644 42sh/src/main/shell_get_ast.c rename 42sh/src/{lexer/lexer_while.c => parser/get_instruction.c} (58%) diff --git a/42sh/Makefile b/42sh/Makefile index 344b95ff..1f9b5d6f 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -130,8 +130,6 @@ lexer/lexer_backslash.c\ lexer/lexer_comment.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ -lexer/lexer_do.c\ -lexer/lexer_done.c\ lexer/lexer_dquote.c\ lexer/lexer_fi.c\ lexer/lexer_great.c\ @@ -139,7 +137,6 @@ lexer/lexer_greatand.c\ lexer/lexer_if.c\ lexer/lexer_less.c\ lexer/lexer_lessand.c\ -lexer/lexer_list.c\ lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_quote.c\ @@ -147,7 +144,6 @@ lexer/lexer_sep.c\ lexer/lexer_special.c\ lexer/lexer_then.c\ lexer/lexer_var.c\ -lexer/lexer_while.c\ lexer/lexer_word.c\ lexer/reduce_bquotes.c\ lexer/reduce_parens.c\ @@ -168,13 +164,13 @@ main/lib_expansion.c\ main/main.c\ main/read_script.c\ main/shell_exit.c\ -main/shell_get_ast.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ main/shell_script.c\ main/sig_handler.c\ parser/ft_parse.c\ +parser/get_instruction.c \ parser/parse_dgreat.c\ parser/parse_dless.c\ parser/parse_do.c\ diff --git a/42sh/ffile2 b/42sh/file1 similarity index 100% rename from 42sh/ffile2 rename to 42sh/file1 diff --git a/42sh/file2 b/42sh/file2 index 32524ff3..cfa36b69 100644 --- a/42sh/file2 +++ b/42sh/file2 @@ -1 +1,9 @@ -/Users/ariard/Projects/42sh-2 +hello +hello +hello +hello +hello +hello +hello +hello +hello diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 8ada16e5..6705e201 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:31:45 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:47:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 5145897a..67731f84 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:42:21 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:02:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ typedef long long t_type; struct s_parser { t_type type; - int (*f)(t_list **list_ast, t_btree **ast, + int (*f)(t_btree **ast, t_list **start, t_list **token); }; @@ -59,37 +59,24 @@ struct s_astnode extern t_parser g_parser[]; -int ft_parse(t_list **list_ast, t_btree **ast, t_list **token); +int ft_parse(t_btree **ast, t_list **token); -int parse_newline(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_separator(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_less(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_great(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_dless(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_dgreat(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_lessand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_greatand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_word(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_subshell(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_newline(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_while(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_do(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_done(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_list(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); +int get_instruction(t_btree **ast, t_list **start, t_list **lst); + +int parse_newline(t_btree **ast, t_list **start, t_list **lst); +int parse_separator(t_btree **ast, t_list **start, t_list **lst); +int parse_less(t_btree **ast, t_list **start, t_list **lst); +int parse_great(t_btree **ast, t_list **start, t_list **lst); +int parse_dless(t_btree **ast, t_list **start, t_list **lst); +int parse_dgreat(t_btree **ast, t_list **start, t_list **lst); +int parse_lessand(t_btree **ast, t_list **start, t_list **lst); +int parse_greatand(t_btree **ast, t_list **start, t_list **lst); +int parse_word(t_btree **ast, t_list **start, t_list **lst); +int parse_subshell(t_btree **ast, t_list **start, t_list **lst); +int parse_newline(t_btree **ast, t_list **start, t_list **lst); +int parse_while(t_btree **ast, t_list **start, t_list **lst); +int parse_do(t_btree **ast, t_list **start, t_list **lst); +int parse_done(t_btree **ast, t_list **start, t_list **lst); +int parse_list(t_btree **ast, t_list **start, t_list **lst); #endif diff --git a/42sh/sample/test.sh b/42sh/sample/test.sh new file mode 100644 index 00000000..ad942dcb --- /dev/null +++ b/42sh/sample/test.sh @@ -0,0 +1,6 @@ +test=10 +while [ $test -gt 1 ] +do + echo hello + ((test--)) +done > file1 > file2 diff --git a/42sh/sample/test2.sh b/42sh/sample/test2.sh new file mode 100644 index 00000000..ecbddfc1 --- /dev/null +++ b/42sh/sample/test2.sh @@ -0,0 +1 @@ +ewf wefwe wf diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index bb41f8ed..5b4bdabd 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,11 +1,20 @@ -echo "begin loop" while [ 1 ] do - echo "begin inner loop" - while [ 1 ] + while pwd do - echo "end scd loop" + while pwd + do + while pwd + do + echo "hello" + done + done done - echo "end inner loop" -done -echo "end loop" + while pwd + do + while pwd + do + echo "bonjour" + done + done +done diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 40ce2599..7b4e8f5e 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:30:05 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:58:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ int exec_while(t_btree **ast) node = ((*ast)->right)->item; DG("consequent command data '%s'", node->data.str); - consequent_commands = shell_get_ast(node->data.str); + consequent_commands = NULL; test = 10; diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 8d4939b5..f10f97ca 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:36:56 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:40:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ int ft_lexer(t_list **alst, char **command) ret = 1; else if (ft_tokenize(alst, *command, DEFAULT)) ret = 1; -// else if (ft_post_tokenize(alst, command)) -// ret = 1; + else if (ft_post_tokenize(alst, command)) + ret = 1; ft_strdel(command); return (ret); } diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index 8d7b1056..9727cf02 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:47:09 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:54:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,8 +17,7 @@ int ft_post_tokenize(t_list **alst, char **str) int ret; t_flag tk; - -// get_reserverd_words(alst, str); + get_reserved_words(alst); while ((ret = reduce_parens(alst, *str))) if (ret == -1) { diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 8f12b94f..ae862e23 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:47:30 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:40:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index 3fceeeb0..7bc728f2 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/27 12:49:24 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index bd679000..d6f6ea6d 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:31:41 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:39:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,29 +14,37 @@ int get_reserved_words(t_list **alst) { -// t_token token; + t_token *token; + t_list *temp; + int i; - (void)alst; -/* - while (*alst) + temp = *alst; + i = 0; + while (temp) { - token = (*alst)->content; - if (token->type = TK_WORD); + token = temp->content; + if (i == 0) + if (token->type == TK_N_WORD) + if (ft_strncmp(token->data, "while", 5) == 0) + token->type = TK_WHILE; + if ((token->type & (TK_NEWLINE | TK_AMP | TK_SEMI))) { - if (ft_strncmp(str, "while", 5) == 0 && ft_isalpha(*(str + 5)) == 0) - lexer_while( - else if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) - return (DONE); - else if (ft_strncmp(str, "do" , 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (DO); -// else if (ft_strncmp(str, "if", 2) == 0 && ft_isalpha(*(str + 2)) == 0) -// return (IF); -// else if (ft_strncmp(str, "then", 4) == 0 && ft_isalpha(*(str + 4)) == 0) -// return (THEN); -// else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) -// return (FI); + if ((temp = temp->next)) + token = temp->content; + else + break; + if (token->type == TK_N_WORD) + { + if (ft_strncmp(token->data, "while", 5) == 0) + token->type = TK_WHILE; + else if (ft_strncmp(token->data, "done", 4) == 0) + token->type = TK_DONE; + else if (ft_strncmp(token->data, "do" , 2) == 0) + token->type = TK_DO; + } } - (*alst) = (*alst)->next; + temp = temp->next; + i++; } -*/ return (0); + return (0); } diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 886f6d96..dbc44be1 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:39:45 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index c7e260d6..f068458f 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:48:41 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_do.c b/42sh/src/lexer/lexer_do.c deleted file mode 100644 index 60d401ff..00000000 --- a/42sh/src/lexer/lexer_do.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_do.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 23:29:09 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:32:45 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_do(t_list **alst, char *str) -{ - t_token *token; - t_lexstate state; - t_nest *nest; - - nest = &data_singleton()->nest; - if (*alst) - { - nest->do_group++; - if (nest->do_group == 1) - return (lexer_do(&(*alst)->next, str)); - return (ft_tokenize(alst, str, LIST)); - } - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_DO; - state = LIST; - return (ft_tokenize(&(*alst)->next, str + 2, state)); -} diff --git a/42sh/src/lexer/lexer_done.c b/42sh/src/lexer/lexer_done.c deleted file mode 100644 index 6af42378..00000000 --- a/42sh/src/lexer/lexer_done.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_done.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 20:49:09 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:33:03 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_done(t_list **alst, char *str) -{ - t_token *token; - t_lexstate state; - t_nest *nest; - - nest = &data_singleton()->nest; - if (*alst) - { - nest->do_group--; - if (nest->do_group == 0) - return (lexer_done(&(*alst)->next, str)); - return (ft_tokenize(alst, str, LIST)); - } - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_DONE; - state = DEFAULT; - return (ft_tokenize(&(*alst)->next, str + 4, state)); -} diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c deleted file mode 100644 index 78edf1eb..00000000 --- a/42sh/src/lexer/lexer_list.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_list.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:12:49 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_list(t_list **alst, char *str) -{ - t_token *token; - - token = (*alst)->content; - token->type = TK_LIST; - while (*str) - { - if (ft_is_delim_list(*str)) - { - token_append(token, *str++, 0); - while (ft_is_delim(*str) || *str == '\n') - str++; - if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) - return (ft_tokenize(alst, str, DONE)); - else if (ft_strncmp(str, "do", 2) == 0 && (ft_is_delim_list(*(str + 2)) - || *(str + 2) == ' ')) - return (ft_tokenize(alst, str, DO)); - else if (ft_strncmp(str, "then", 4) == 0 && (ft_is_delim_list(*(str + 4)) - || *(str + 4) == ' ')) - return (ft_tokenize(alst, str, THEN)); - else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (ft_tokenize(alst, str, FI)); - } - token_append(token, *str++, 0); - } - return (0); -} diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index dc3b830f..c18ac827 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/01/27 12:51:12 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 7c686546..fd1e1341 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/02/02 16:30:03 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 265ad499..08ca6489 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:40:21 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:52:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 3394bb3e..e17643eb 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:21:06 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:35:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,8 @@ char *ft_putast(void *nodein) return (" COM "); else if (node->type == TK_WHILE) return (" WHILE "); + else if (node->type == TK_NEWLINE) + return ("NEW"); else if (node->type == TK_LIST) return (" LIST "); else if (node->type == TK_GREAT) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index bb4682cd..0f363b1f 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:40:10 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:33:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index 04f03a1a..a8f05050 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/30 20:32:24 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:55:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,13 +20,14 @@ static int rs_loop(char *file, t_script *script) line = NULL; if ((fd = open(file, O_RDONLY)) == -1) return (0); - while (get_next_line(fd, &line) > 0) + while ((get_next_line(fd, &line)) > 0) { ft_strappend(&script->buffer, line); ft_strappend(&script->buffer, "\n"); ft_strdel(&line); script->size += ft_strlen(script->buffer); } + script->buffer[ft_strlen(script->buffer) - 1] = 0; close(fd); if (script->size > 0) { diff --git a/42sh/src/main/shell_get_ast.c b/42sh/src/main/shell_get_ast.c deleted file mode 100644 index 36809962..00000000 --- a/42sh/src/main/shell_get_ast.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* shell_set_ast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 18:19:13 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:29:43 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -t_list **shell_get_ast(char *command) -{ - t_list *token; - t_btree *ast; - t_list **list_ast; - - token = NULL; - ast = NULL; - list_ast = ft_memalloc(sizeof(*list_ast)); - if (ft_tokenize(&token, command, DEFAULT)) - return (NULL); - if (!token) - return (NULL); - if (ft_post_tokenize(&token, &command)) - return (NULL); - DG("after post_tokenize"); - token_print(token); - if (ft_parse(list_ast, &ast, &token)) - return (NULL); - return (list_ast); -} diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 6667c5de..caef3e8b 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:37:58 by ariard ### ########.fr */ +/* Updated: 2017/02/03 18:16:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,9 +16,7 @@ int shell_script() { t_list *token; t_btree *ast; - t_btree **ast2; t_list *list_ast; - t_list *tmp2; token = NULL; ast = NULL; @@ -27,23 +25,14 @@ int shell_script() return (1); DG("after post_tokenize"); token_print(token); - if (ft_parse(&list_ast, &ast, &token)) - return (1); - tmp2 = list_ast; - while (tmp2) - { - ast2 = tmp2->content; - btree_print(STDBUG, *ast2, &ft_putast); - tmp2 = tmp2->next; - } -/* while (list_ast) - { - if (ft_exec((t_btree **)list_ast->content)) - return (1); - list_ast = list_ast->next; - } -*/ - loop_exec(list_ast); + while (token) + { + if (ft_parse(&ast, &token)) + return (1); + btree_print(STDBUG, ast, &ft_putast); + // if (ft_exec(&ast)) + // return (1); + } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index e1d4ed8b..93430d33 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:31:06 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:37:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_parser g_parser[] = { - {TK_NEWLINE, &parse_newline}, + {TK_NEWLINE | TK_WHILE, &get_instruction}, {TK_SEMI, &parse_separator}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, @@ -27,14 +27,11 @@ t_parser g_parser[] = {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, {TK_WHILE, &parse_while}, - {TK_DO, &parse_do}, - {TK_DONE, &parse_done}, - {TK_LIST, &parse_list}, {TK_WORD, &parse_word}, {0, 0}, }; -int ft_parse(t_list **list_ast, t_btree **ast, t_list **start) +int ft_parse(t_btree **ast, t_list **start) { t_list *lst; t_astnode item; @@ -48,14 +45,12 @@ int ft_parse(t_list **list_ast, t_btree **ast, t_list **start) *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; } - if (!*list_ast) - *list_ast = ft_lstnew(ast, sizeof(t_btree *)); while (g_parser[i].type) { if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) { if (g_parser[i].f) - (*g_parser[i].f)(list_ast, ast, start, &lst); + (*g_parser[i].f)(ast, start, &lst); return (0); } i++; diff --git a/42sh/src/lexer/lexer_while.c b/42sh/src/parser/get_instruction.c similarity index 58% rename from 42sh/src/lexer/lexer_while.c rename to 42sh/src/parser/get_instruction.c index 46a24567..02f44d6a 100644 --- a/42sh/src/lexer/lexer_while.c +++ b/42sh/src/parser/get_instruction.c @@ -1,28 +1,25 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* lexer_loop.c :+: :+: :+: */ +/* get_instruction.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:14:06 by ariard ### ########.fr */ +/* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ +/* Updated: 2017/02/03 17:16:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "parser.h" -int lexer_while(t_list **alst, char *str) +int get_instruction(t_btree **ast, t_list **start, t_list **lst) { t_token *token; - token = (*alst)->content; - if (ft_strncmp(str, "while", 5) == 0) - token->type = TK_WHILE; - else if (ft_isalnum(*str)) - { - token_append(token, *str, 0); - return (ft_tokenize(alst, str + 1, WORD)); - } - return (ft_tokenize(&(*alst)->next, str + 6, LIST)); + token = (*lst)->content; + if (token->type == TK_NEWLINE) + return (parse_newline(ast, start, lst)); + else if (token->type == TK_WHILE) + return (parse_while(ast, start, lst)); + return (0); } diff --git a/42sh/src/parser/parse_dgreat.c b/42sh/src/parser/parse_dgreat.c index 2091d89e..885ac93a 100644 --- a/42sh/src/parser/parse_dgreat.c +++ b/42sh/src/parser/parse_dgreat.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:56:38 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:35:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_dgreat(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_dgreat(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -31,6 +30,6 @@ int parse_dgreat(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_dless.c b/42sh/src/parser/parse_dless.c index 7e8b39ce..d9526c69 100644 --- a/42sh/src/parser/parse_dless.c +++ b/42sh/src/parser/parse_dless.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 13:31:40 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:53:00 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:43:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_dless(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_dless(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -30,6 +29,6 @@ int parse_dless(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_do.c b/42sh/src/parser/parse_do.c index c66e47c2..e4d8ba80 100644 --- a/42sh/src/parser/parse_do.c +++ b/42sh/src/parser/parse_do.c @@ -6,14 +6,13 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:28:41 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:15:40 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:46:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_do(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_do(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -22,6 +21,6 @@ int parse_do(t_list **list_ast, t_btree **ast, node = (*ast)->item; node->type = TK_DO; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, ast, start); + ft_parse(ast, start); return (0); } diff --git a/42sh/src/parser/parse_done.c b/42sh/src/parser/parse_done.c index 3e4ef836..93301b12 100644 --- a/42sh/src/parser/parse_done.c +++ b/42sh/src/parser/parse_done.c @@ -6,14 +6,13 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:36:28 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:44:47 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:47:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_done(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_done(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -22,6 +21,6 @@ int parse_done(t_list **list_ast, t_btree **ast, node = (*ast)->item; node->type = TK_DONE; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, ast, start); + ft_parse(ast, start); return (0); } diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index 23f0ea15..6369f303 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:51:06 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:42:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_great(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_great(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -31,6 +30,6 @@ int parse_great(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_greatand.c b/42sh/src/parser/parse_greatand.c index b4125436..6dbbb7d8 100644 --- a/42sh/src/parser/parse_greatand.c +++ b/42sh/src/parser/parse_greatand.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 20:39:51 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:44:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_greatand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_greatand(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -27,6 +26,6 @@ int parse_greatand(t_list **list_ast, t_btree **ast, node->data.redir.close = tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_less.c b/42sh/src/parser/parse_less.c index fa935218..5faf5020 100644 --- a/42sh/src/parser/parse_less.c +++ b/42sh/src/parser/parse_less.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:49:18 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:39:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_less(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_less(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -31,6 +30,6 @@ int parse_less(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_lessand.c b/42sh/src/parser/parse_lessand.c index 5e1e0311..e180d418 100644 --- a/42sh/src/parser/parse_lessand.c +++ b/42sh/src/parser/parse_lessand.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:55:51 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:44:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_lessand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_lessand(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -27,6 +26,6 @@ int parse_lessand(t_list **list_ast, t_btree **ast, node->data.redir.close = tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_list.c b/42sh/src/parser/parse_list.c index 965fed17..2acf1c61 100644 --- a/42sh/src/parser/parse_list.c +++ b/42sh/src/parser/parse_list.c @@ -6,19 +6,17 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ -/* Updated: 2017/01/31 20:20:13 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:51:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_list(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_list(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; - (void)list_ast; token = (*lst)->content; node = (*ast)->item; node->type = TK_LIST; diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index cf636e26..e7386b9d 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,14 +6,13 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/01/31 19:35:54 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:16:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_newline(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_newline(t_btree **ast, t_list **start, t_list **lst) { t_list *temp; t_astnode *node; @@ -25,8 +24,7 @@ int parse_newline(t_list **list_ast, t_btree **ast, temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, ast, start); - *ast = NULL; - ft_parse(&(*list_ast)->next, ast, &temp); + ft_parse(ast, start); + *start = temp; return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index cf7c911b..8a9ea9de 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/30 20:25:22 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:29:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_separator(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_separator(t_btree **ast, t_list **start, t_list **lst) { t_token *token; t_astnode *node; @@ -21,8 +20,8 @@ int parse_separator(t_list **list_ast, t_btree **ast, token = (*lst)->content; node = (*ast)->item; node->type = token->type; - ft_parse(list_ast, &(*ast)->right, &(*lst)->next); + ft_parse(&(*ast)->right, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_subshell.c b/42sh/src/parser/parse_subshell.c index 8d19414e..a6255173 100644 --- a/42sh/src/parser/parse_subshell.c +++ b/42sh/src/parser/parse_subshell.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:52:44 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:30:42 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:45:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_subshell(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_subshell(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -27,7 +26,7 @@ int parse_subshell(t_list **list_ast, t_btree **ast, node->data.sstr[1] = ft_strdup("-c"); node->data.sstr[2] = ft_strdup(token->data); node->data.sstr[3] = NULL; - ft_parse(list_ast, ast, &(*lst)->next); + ft_parse(ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index f8b01c55..1fdc14f4 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,23 +6,52 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:30:35 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:48:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_while(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_while(t_btree **ast, t_list **start, t_list **lst) { + t_list *temp; t_astnode *node; t_token *token; + int nest; token = (*lst)->content; node = (*ast)->item; node->type = TK_WHILE; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); - ft_parse(list_ast, &(*ast)->right, start); - return (0); + while (((*lst) = (*lst)->next)) + if ((token = (*lst)->content)->type & TK_DO) + break; + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(&(*ast)->left, start); + + (*lst) = temp; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + temp = temp->next; + (*lst) = temp; + *start = temp; + nest = 1; + while (((*lst) = (*lst)->next)) + { + token = (*lst)->content; + if (token->type & TK_DO) + nest++; + else if (token->type & TK_DONE) + nest--; + if (nest == 0) + break; + DG("nest : '%d'", nest); + } + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(&(*ast)->right, start); + *start = temp; + return (0); } diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 951678d0..e265a6a0 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,21 +6,18 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:52:09 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:37:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_word(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_word(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; char **my_tab; - (void)list_ast; - (void)start; my_tab = NULL; token = (*lst)->content; node = (*ast)->item; @@ -28,7 +25,7 @@ int parse_word(t_list **list_ast, t_btree **ast, my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); ft_ld_pushback(&node->data.token, my_tab); -// ft_parse(ast, &(*lst)->next); + ft_parse(ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } From 9bbd6d74035e731204465be240d63c57e95482c2 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sat, 4 Feb 2017 15:52:07 +0100 Subject: [PATCH 025/206] do as a sep + multiple newline --- 42sh/file1 | 0 42sh/file2 | 9 --------- 42sh/includes/lexer.h | 3 ++- 42sh/sample/while.sh | 19 ++++--------------- 42sh/src/lexer/ft_lexer.c | 2 +- 42sh/src/lexer/ft_post_tokenize.c | 3 ++- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 20 ++++++-------------- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/parse_newline.c | 2 +- 42sh/src/parser/parse_while.c | 24 +++++++++++++++++++----- 11 files changed, 37 insertions(+), 49 deletions(-) delete mode 100644 42sh/file1 delete mode 100644 42sh/file2 diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/file2 b/42sh/file2 deleted file mode 100644 index cfa36b69..00000000 --- a/42sh/file2 +++ /dev/null @@ -1,9 +0,0 @@ -hello -hello -hello -hello -hello -hello -hello -hello -hello diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 6705e201..bbe528b3 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:47:09 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:05:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,6 +55,7 @@ typedef long long t_type; # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) # define TK_NON_FREEABLE (TK_PAREN_OPEN | TK_PAREN_CLOSE | TK_BQUOTE) +# define SHELL_SEP (TK_NEWLINE | TK_AMP | TK_SEMI | TK_DO) enum e_lexstate { diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 5b4bdabd..88d0b181 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,20 +1,9 @@ while [ 1 ] -do - while pwd - do - while pwd +do while pwd + do + while ls do - while pwd - do - echo "hello" - done - done - done - while pwd - do - while pwd - do - echo "bonjour" + echo hello done done done diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index f10f97ca..237127f8 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:40:31 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:12:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index 9727cf02..1f806fe1 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:54:10 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:33:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,7 @@ int ft_post_tokenize(t_list **alst, char **str) int ret; t_flag tk; +// token_print(*alst); get_reserved_words(alst); while ((ret = reduce_parens(alst, *str))) if (ret == -1) diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index ae862e23..eabed451 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:40:50 by ariard ### ########.fr */ +/* Updated: 2017/02/03 20:04:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index d6f6ea6d..f02c9e0d 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/03 19:39:01 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:27:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,26 +15,18 @@ int get_reserved_words(t_list **alst) { t_token *token; + t_token *previous_token; t_list *temp; - int i; temp = *alst; - i = 0; + previous_token = NULL; while (temp) { token = temp->content; - if (i == 0) - if (token->type == TK_N_WORD) - if (ft_strncmp(token->data, "while", 5) == 0) - token->type = TK_WHILE; - if ((token->type & (TK_NEWLINE | TK_AMP | TK_SEMI))) + if (!previous_token || (previous_token->type & SHELL_SEP)) { - if ((temp = temp->next)) - token = temp->content; - else - break; if (token->type == TK_N_WORD) - { + { if (ft_strncmp(token->data, "while", 5) == 0) token->type = TK_WHILE; else if (ft_strncmp(token->data, "done", 4) == 0) @@ -43,8 +35,8 @@ int get_reserved_words(t_list **alst) token->type = TK_DO; } } + previous_token = token; temp = temp->next; - i++; } return (0); } diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index caef3e8b..9e038f8f 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/03 18:16:01 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:30:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index e7386b9d..f3faa810 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/02/03 17:16:47 by ariard ### ########.fr */ +/* Updated: 2017/02/03 20:04:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 1fdc14f4..f3c53869 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,12 +6,28 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/02/03 19:48:36 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:51:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" +static int delete_all_newline(t_list **start, t_list **lst) +{ + t_token *token; + + while ((*lst)) + { + token = (*lst)->content; + if (token->type & TK_NEWLINE) + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + else + break; + (*lst) = (*lst)->next; + } + return (0); +} + int parse_while(t_btree **ast, t_list **start, t_list **lst) { t_list *temp; @@ -31,9 +47,8 @@ int parse_while(t_btree **ast, t_list **start, t_list **lst) ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_parse(&(*ast)->left, start); - (*lst) = temp; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - temp = temp->next; + delete_all_newline(start, &temp); + (*lst) = temp; *start = temp; nest = 1; @@ -46,7 +61,6 @@ int parse_while(t_btree **ast, t_list **start, t_list **lst) nest--; if (nest == 0) break; - DG("nest : '%d'", nest); } temp = (*lst)->next; (*lst)->next = NULL; From cd2019c0fde9ac69c414fcf66cc6bb910b84f97d Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 5 Feb 2017 00:15:12 +0100 Subject: [PATCH 026/206] fucking newline to parse --- 42sh/Makefile | 2 + 42sh/file1 | 26 +++++++++++ 42sh/includes/parser.h | 8 ++-- 42sh/sample/2lines.sh | 4 +- 42sh/sample/while.sh | 16 +++---- 42sh/src/lexer/ft_post_tokenize.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/lexer/lexer_great.c | 2 +- 42sh/src/main/shell_script.c | 15 ++++--- 42sh/src/parser/ft_parse.c | 5 +-- 42sh/src/parser/get_instruction.c | 68 +++++++++++++++++++++++++---- 42sh/src/parser/get_instruction2.c | 25 +++++++++++ 42sh/src/parser/parse.c | 25 +++++++++++ 42sh/src/parser/parse_great.c | 2 +- 42sh/src/parser/parse_newline.c | 2 +- 42sh/src/parser/parse_separator.c | 3 +- 42sh/src/parser/parse_while.c | 64 ++++++++++++++++----------- 17 files changed, 207 insertions(+), 64 deletions(-) create mode 100644 42sh/file1 create mode 100644 42sh/src/parser/get_instruction2.c create mode 100644 42sh/src/parser/parse.c diff --git a/42sh/Makefile b/42sh/Makefile index 1f9b5d6f..c6721347 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -169,8 +169,10 @@ main/shell_get_opts.c\ main/shell_init.c\ main/shell_script.c\ main/sig_handler.c\ +parser/parse.c\ parser/ft_parse.c\ parser/get_instruction.c \ +parser/get_instruction2.c \ parser/parse_dgreat.c\ parser/parse_dless.c\ parser/parse_do.c\ diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..92953fdf --- /dev/null +++ b/42sh/file1 @@ -0,0 +1,26 @@ +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +/Users/ariard/Projects/42sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +monde diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 67731f84..68047eb3 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/03 17:02:27 by ariard ### ########.fr */ +/* Updated: 2017/02/04 19:17:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,9 +59,11 @@ struct s_astnode extern t_parser g_parser[]; -int ft_parse(t_btree **ast, t_list **token); +int parse(t_btree **ast, t_list **token); -int get_instruction(t_btree **ast, t_list **start, t_list **lst); +int ft_parse(t_btree **ast, t_list **token); +int get_instruction(t_list **lst); +int get_instruction2(t_btree **ast, t_list **start, t_list **lst); int parse_newline(t_btree **ast, t_list **start, t_list **lst); int parse_separator(t_btree **ast, t_list **start, t_list **lst); diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index 654889de..cf36d0bf 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1,3 +1 @@ -ls ; echo ; pwd | cat > file2 -ls | cat -pwd ; echo hello +ls ; pwd > file1 ; ls | cat diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 88d0b181..5c8513f7 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,9 +1,7 @@ -while [ 1 ] -do while pwd - do - while ls - do - echo hello - done - done -done +while ls | cat ; pwd +do + while ls | cat + do + echo monde ; cat + done +done > file1 diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index 1f806fe1..f951fe2b 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/02/04 15:33:04 by ariard ### ########.fr */ +/* Updated: 2017/02/04 15:54:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index f02c9e0d..b81df18d 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/04 15:27:49 by ariard ### ########.fr */ +/* Updated: 2017/02/04 17:15:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 8457ef2b..84da01ab 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:49:11 by ariard ### ########.fr */ +/* Updated: 2017/02/04 21:27:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 9e038f8f..8c9042a1 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/04 15:30:00 by ariard ### ########.fr */ +/* Updated: 2017/02/04 22:16:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,13 +26,14 @@ int shell_script() DG("after post_tokenize"); token_print(token); - while (token) - { - if (ft_parse(&ast, &token)) +// while (token) +// { + if (parse(&ast, &token)) return (1); btree_print(STDBUG, ast, &ft_putast); - // if (ft_exec(&ast)) - // return (1); - } +// if (ft_exec(&ast)) +// return (1); + ast = NULL; +// } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 93430d33..3f2d2659 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:37:05 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:14:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_parser g_parser[] = { - {TK_NEWLINE | TK_WHILE, &get_instruction}, + {TK_WHILE, &parse_while}, {TK_SEMI, &parse_separator}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, @@ -26,7 +26,6 @@ t_parser g_parser[] = {TK_LESSAND, &parse_lessand}, {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, - {TK_WHILE, &parse_while}, {TK_WORD, &parse_word}, {0, 0}, }; diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c index 02f44d6a..8495ae39 100644 --- a/42sh/src/parser/get_instruction.c +++ b/42sh/src/parser/get_instruction.c @@ -6,20 +6,72 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/03 17:16:53 by ariard ### ########.fr */ +/* Updated: 2017/02/04 22:20:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int get_instruction(t_btree **ast, t_list **start, t_list **lst) +static int get_simple_instruction(t_list **start, t_list **lst) { - t_token *token; + t_list *temp; - token = (*lst)->content; - if (token->type == TK_NEWLINE) - return (parse_newline(ast, start, lst)); - else if (token->type == TK_WHILE) - return (parse_while(ast, start, lst)); + DG("simple instruction"); + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + (*lst) = temp; + return (0); +} + +static int get_compound_instruction(t_list **start, t_list **lst) +{ + t_list *temp; + t_token *token; + int nest; + + DG("compound instruction"); + nest = 0; + while (((*lst) = (*lst)->next)) + { + token = (*lst)->content; + if (token->type & TK_DO) + nest++; + else if (token->type & TK_DONE) + nest--; + if (nest == 0 && token->type & TK_DONE) + break; + } + while (((*lst) = (*lst)->next)) + { + token = (*lst)->content; + if (token->type & (TK_NEWLINE | TK_SEMI)) + break; + } + if ((*lst)) + { + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + *lst = temp; + } + return (0); +} + +int get_instruction(t_list **lst) +{ + t_token *token; + t_list *start; + + start = *lst; + while ((*lst)) + { + token = (*lst)->content; + if (token->type & TK_NEWLINE) + return (get_simple_instruction(&start, lst)); + else if (token->type & TK_WHILE) + return (get_compound_instruction(&start, lst)); + (*lst) = (*lst)->next; + } return (0); } diff --git a/42sh/src/parser/get_instruction2.c b/42sh/src/parser/get_instruction2.c new file mode 100644 index 00000000..02f0ee90 --- /dev/null +++ b/42sh/src/parser/get_instruction2.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_instruction2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/04 18:20:53 by ariard #+# #+# */ +/* Updated: 2017/02/04 19:00:55 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int get_instruction2(t_btree **ast, t_list **start, t_list **lst) +{ + t_token *token; + + token = (*lst)->content; + if (token->type == TK_NEWLINE) + return (parse_newline(ast, start, lst)); + else if (token->type == TK_WHILE) + return (parse_while(ast, start, lst)); + return (0); +} diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parse.c new file mode 100644 index 00000000..3e881779 --- /dev/null +++ b/42sh/src/parser/parse.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ +/* Updated: 2017/02/04 20:43:45 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int parse(t_btree **ast, t_list **token) +{ + t_list *start; + + start = *token; + if (get_instruction(token)) + return (1); + if (ft_parse(ast, &start)) + return (1); + return (0); +} diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index 6369f303..fd15c29d 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 16:42:45 by ariard ### ########.fr */ +/* Updated: 2017/02/04 23:44:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index f3faa810..3078fe2f 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/02/03 20:04:40 by ariard ### ########.fr */ +/* Updated: 2017/02/04 20:22:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 8a9ea9de..a51f5dfe 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/03 17:29:32 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:03:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,7 @@ int parse_separator(t_btree **ast, t_list **start, t_list **lst) t_token *token; t_astnode *node; + DG("newline"); token = (*lst)->content; node = (*ast)->item; node->type = token->type; diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index f3c53869..14262d84 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,21 +6,23 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/02/04 15:51:24 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:14:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -static int delete_all_newline(t_list **start, t_list **lst) +static int delete_all_newline(t_list **lst) { t_token *token; + t_list *start; while ((*lst)) { token = (*lst)->content; + start = *lst; if (token->type & TK_NEWLINE) - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_lst_delif(&start, (*lst)->content, &ft_addrcmp, &token_free); else break; (*lst) = (*lst)->next; @@ -31,41 +33,53 @@ static int delete_all_newline(t_list **start, t_list **lst) int parse_while(t_btree **ast, t_list **start, t_list **lst) { t_list *temp; + t_list *temp4; + t_btree *temp2; + t_btree *temp3; t_astnode *node; + t_astnode item; t_token *token; int nest; - token = (*lst)->content; - node = (*ast)->item; + temp = (*lst); + nest = 0; + while ((temp = temp->next)) + { + token = temp->content; + if (token->type & TK_DO) + nest++; + else if (token->type & TK_DONE) + nest--; + if (nest == 0 && (token->type & TK_DONE)) + break; + } + temp4 = temp; + temp = temp->next; + temp4->next = NULL; + ft_lst_delif(start, temp4->content, &ft_addrcmp, &token_free); + if (temp) + ft_parse(ast, &temp); + temp2 = *ast; + while (temp2->left) + temp2 = temp2->left; + temp3 = btree_create_node(&item, sizeof(item)); + ((t_astnode *)(*ast)->item)->data.token = NULL; + temp2->left = temp3; + + node = temp3->item; node->type = TK_WHILE; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + while (((*lst) = (*lst)->next)) if ((token = (*lst)->content)->type & TK_DO) break; temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); + ft_parse(&(temp3)->left, start); - delete_all_newline(start, &temp); + delete_all_newline(&temp); + ft_parse(&(temp3)->right, &temp); - (*lst) = temp; - *start = temp; - nest = 1; - while (((*lst) = (*lst)->next)) - { - token = (*lst)->content; - if (token->type & TK_DO) - nest++; - else if (token->type & TK_DONE) - nest--; - if (nest == 0) - break; - } - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->right, start); - *start = temp; return (0); } From 65b6658978c6afe94a5a47ec80065086f394e3e5 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 5 Feb 2017 00:41:00 +0100 Subject: [PATCH 027/206] parse newline --- 42sh/sample/while.sh | 9 +++++---- 42sh/src/main/ft_putast.c | 6 +++++- 42sh/src/parser/ft_parse.c | 3 ++- 42sh/src/parser/parse_newline.c | 12 +++++------- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_while.c | 8 +++++--- 6 files changed, 23 insertions(+), 17 deletions(-) diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 5c8513f7..229a5274 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,7 +1,8 @@ -while ls | cat ; pwd +while ls | cat ; do - while ls | cat + echo hello + while ls do - echo monde ; cat - done + echo ; cat + done done > file1 diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index e17643eb..cf95aa07 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:35:03 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:32:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,10 @@ char *ft_putast(void *nodein) return (" COM "); else if (node->type == TK_WHILE) return (" WHILE "); + else if (node->type == TK_DO) + return ("DO"); + else if (node->type == TK_DONE) + return ("DONE"); else if (node->type == TK_NEWLINE) return ("NEW"); else if (node->type == TK_LIST) diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 3f2d2659..99f18c30 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/05 00:14:17 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:39:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ t_parser g_parser[] = { {TK_WHILE, &parse_while}, {TK_SEMI, &parse_separator}, +// {TK_NEWLINE, &parse_newline}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index 3078fe2f..5cd65c4b 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/02/04 20:22:57 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:40:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,17 +14,15 @@ int parse_newline(t_btree **ast, t_list **start, t_list **lst) { - t_list *temp; t_astnode *node; t_token *token; + (void)start; token = (*lst)->content; node = (*ast)->item; node->type = TK_NEWLINE; - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(ast, start); - *start = temp; + ft_parse(&(*ast)->right, &(*lst)->next); + ft_lstdelone(lst, &token_free); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index a51f5dfe..34a09c65 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/05 00:03:10 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:24:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 14262d84..abb53505 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/02/05 00:14:32 by ariard ### ########.fr */ +/* Updated: 2017/02/05 00:40:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,11 +21,11 @@ static int delete_all_newline(t_list **lst) { token = (*lst)->content; start = *lst; + (*lst) = (*lst)->next; if (token->type & TK_NEWLINE) - ft_lst_delif(&start, (*lst)->content, &ft_addrcmp, &token_free); + ft_lstdelone(&start, &token_free); else break; - (*lst) = (*lst)->next; } return (0); } @@ -78,6 +78,8 @@ int parse_while(t_btree **ast, t_list **start, t_list **lst) ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_parse(&(temp3)->left, start); + return (0); + delete_all_newline(&temp); ft_parse(&(temp3)->right, &temp); From 63b25532b392e81753405d918c2c8e53aedcf66b Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 5 Feb 2017 19:38:46 +0100 Subject: [PATCH 028/206] parsing loop presque --- 42sh/file1 | 15516 +++++++++++++++++++++++++++++- 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 2 +- 42sh/sample/while.sh | 16 +- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/ft_parse.c | 6 +- 42sh/src/parser/parse_newline.c | 3 +- 42sh/src/parser/parse_while.c | 137 +- 8 files changed, 15637 insertions(+), 47 deletions(-) diff --git a/42sh/file1 b/42sh/file1 index 92953fdf..b8307af2 100644 --- a/42sh/file1 +++ b/42sh/file1 @@ -10,7 +10,7 @@ sample script.sh src update_makefile.sh -/Users/ariard/Projects/42sh +hello 42sh Makefile debug @@ -23,4 +23,15516 @@ sample script.sh src update_makefile.sh -monde +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +42sh +Makefile +debug +file1 +includes +libft +objs +pdf +sample +script.sh +src +update_makefile.sh +hello diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index bbe528b3..5491555e 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/04 15:05:41 by ariard ### ########.fr */ +/* Updated: 2017/02/05 18:12:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 68047eb3..84eab220 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/04 19:17:26 by ariard ### ########.fr */ +/* Updated: 2017/02/05 17:59:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 229a5274..29163c66 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,8 +1,12 @@ -while ls | cat ; +while + + ls | cat do - echo hello - while ls + while [ 1 ] do - echo ; cat - done -done > file1 + while [ 1 ] + do + echo + done + done +done > file1 > file2 diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 8c9042a1..5a7c525f 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/04 22:16:49 by ariard ### ########.fr */ +/* Updated: 2017/02/05 19:36:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 99f18c30..e66f5ab9 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/05 00:39:31 by ariard ### ########.fr */ +/* Updated: 2017/02/05 18:54:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,7 @@ t_parser g_parser[] = { {TK_WHILE, &parse_while}, - {TK_SEMI, &parse_separator}, -// {TK_NEWLINE, &parse_newline}, + {TK_SEMI | TK_NEWLINE, &parse_separator}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, @@ -44,6 +43,7 @@ int ft_parse(t_btree **ast, t_list **start) { *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; + ((t_astnode *)(*ast)->item)->type = 0; } while (g_parser[i].type) { diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index 5cd65c4b..f007d56d 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/02/05 00:40:14 by ariard ### ########.fr */ +/* Updated: 2017/02/05 17:17:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ int parse_newline(t_btree **ast, t_list **start, t_list **lst) t_astnode *node; t_token *token; - (void)start; token = (*lst)->content; node = (*ast)->item; node->type = TK_NEWLINE; diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index abb53505..1ba7cbc9 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,40 +6,36 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/02/05 00:40:21 by ariard ### ########.fr */ +/* UpdatGed: 2017/02/05 18:28:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -static int delete_all_newline(t_list **lst) +static int delete_newline(t_list **start, t_list **lst) { t_token *token; - t_list *start; + t_list *del; while ((*lst)) { token = (*lst)->content; - start = *lst; - (*lst) = (*lst)->next; + del = *lst; if (token->type & TK_NEWLINE) - ft_lstdelone(&start, &token_free); + ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); else break; + *lst = (*lst)->next; } return (0); } -int parse_while(t_btree **ast, t_list **start, t_list **lst) +static int parse_after_loop(t_btree **ast, t_list **start, t_list **lst) { - t_list *temp; - t_list *temp4; - t_btree *temp2; - t_btree *temp3; - t_astnode *node; - t_astnode item; - t_token *token; - int nest; + t_list *temp; + t_list *del; + t_token *token; + int nest; temp = (*lst); nest = 0; @@ -53,35 +49,114 @@ int parse_while(t_btree **ast, t_list **start, t_list **lst) if (nest == 0 && (token->type & TK_DONE)) break; } - temp4 = temp; + del = temp; temp = temp->next; - temp4->next = NULL; - ft_lst_delif(start, temp4->content, &ft_addrcmp, &token_free); + del->next = NULL; + ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); if (temp) ft_parse(ast, &temp); - temp2 = *ast; - while (temp2->left) - temp2 = temp2->left; - temp3 = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*ast)->item)->data.token = NULL; - temp2->left = temp3; + return (0); +} - node = temp3->item; - node->type = TK_WHILE; +static int parse_head(t_btree **ast, + t_btree **new_ast, t_list **start, t_list **lst) +{ + t_btree *father; + t_token *token; + t_astnode *node; + t_astnode item; + + father = *ast; + while (father->left) + father = father->left; + *new_ast = btree_create_node(&item, sizeof(item)); + ((t_astnode *)(*new_ast)->item)->data.token = NULL; + node = (*ast)->item; + if (node->type > 0) + father->left = *new_ast; + else + *new_ast = *ast; + + token = (*lst)->content; + node = (*new_ast)->item; + node->type = token->type; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + *lst = (*lst)->next; + return (0); +} - while (((*lst) = (*lst)->next)) - if ((token = (*lst)->content)->type & TK_DO) +/*static int parse_condition(t_btree **ast, t_list **start, t_list **lst) +{ + t_token *token; + int nest; + + delete_newline(start, lst); + nest = 0; + while ((*lst)) + { + token = (*lst)->content; + if (token->type & TK_DO) + nest++; + else if (token->type & TK_DONE) + nest--; + if (nest == 1 && (token->type & TK_DO)) break; - temp = (*lst)->next; + *lst = (*lst)->next; + } (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(temp3)->left, start); + DG("new token"); + token_print(*start); + ft_parse(&(*ast)->left, start); + return (0); +}*/ +static int parse_execution(t_btree **ast, t_list **start, t_list **lst) +{ + t_token *token; + t_list *temp; + int nest; + + (void)ast; + nest = 0; + while ((*lst)->next) + *lst = (*lst)->next; + ft_lst_reverse(start); + temp = *lst; + while ((*lst)) + { + token = (*lst)->content; + if (token->type & TK_DO) + nest++; + else if (token->type & TK_DONE) + nest--; + if (nest == 1 && (token->type & TK_DO)) + break; + *lst = (*lst)->next; + } + + ft_lst_reverse(&temp); + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + *lst = (*lst)->next; + delete_newline(start, lst); + ft_parse(&(*ast)->right, lst); + return (0); +} + +int parse_while(t_btree **ast, t_list **start, t_list **lst) +{ + t_btree *new_ast; + + parse_after_loop(ast, start, lst); + parse_head(ast, &new_ast, start, lst); + parse_execution(&new_ast, start, lst); return (0); - delete_all_newline(&temp); +/* + temp = temp->next; ft_parse(&(temp3)->right, &temp); return (0); + delete_all_newline(&temp); +*/ } From ffb0542c425991503b8439f359917ab4ef274bf5 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 5 Feb 2017 21:13:55 +0100 Subject: [PATCH 029/206] parsing loop stable --- 42sh/Makefile | 1 - 42sh/sample/while.sh | 19 +++++------ 42sh/src/main/shell_script.c | 8 ++--- 42sh/src/parser/ft_parse.c | 6 ++-- 42sh/src/parser/get_instruction.c | 6 ++-- 42sh/src/parser/get_instruction2.c | 4 +-- 42sh/src/parser/parse.c | 3 +- 42sh/src/parser/parse_newline.c | 27 --------------- 42sh/src/parser/parse_separator.c | 4 +-- 42sh/src/parser/parse_while.c | 53 +++++++----------------------- 10 files changed, 35 insertions(+), 96 deletions(-) delete mode 100644 42sh/src/parser/parse_newline.c diff --git a/42sh/Makefile b/42sh/Makefile index c6721347..1795c690 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -182,7 +182,6 @@ parser/parse_greatand.c\ parser/parse_less.c\ parser/parse_lessand.c\ parser/parse_list.c\ -parser/parse_newline.c\ parser/parse_separator.c\ parser/parse_subshell.c\ parser/parse_while.c\ diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 29163c66..5adc86a6 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,12 +1,11 @@ -while - - ls | cat +while ls do - while [ 1 ] + while ls do - while [ 1 ] - do - echo - done - done -done > file1 > file2 + pwd + done + while ls + do + cd + done +done diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 5a7c525f..d91f4579 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/05 19:36:56 by ariard ### ########.fr */ +/* Updated: 2017/02/05 21:12:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,14 +26,14 @@ int shell_script() DG("after post_tokenize"); token_print(token); -// while (token) -// { + while (token) + { if (parse(&ast, &token)) return (1); btree_print(STDBUG, ast, &ft_putast); // if (ft_exec(&ast)) // return (1); ast = NULL; -// } + } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index e66f5ab9..9ba1ff15 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/05 18:54:19 by ariard ### ########.fr */ +/* Updated: 2017/02/05 21:10:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,8 @@ t_parser g_parser[] = { - {TK_WHILE, &parse_while}, - {TK_SEMI | TK_NEWLINE, &parse_separator}, + {TK_WHILE | TK_NEWLINE, &get_instruction2}, + {TK_SEMI, &parse_separator}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c index 8495ae39..2d6891b3 100644 --- a/42sh/src/parser/get_instruction.c +++ b/42sh/src/parser/get_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/04 22:20:59 by ariard ### ########.fr */ +/* Updated: 2017/02/05 20:52:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ static int get_simple_instruction(t_list **start, t_list **lst) { t_list *temp; - DG("simple instruction"); temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); @@ -30,7 +29,6 @@ static int get_compound_instruction(t_list **start, t_list **lst) t_token *token; int nest; - DG("compound instruction"); nest = 0; while (((*lst) = (*lst)->next)) { @@ -57,7 +55,7 @@ static int get_compound_instruction(t_list **start, t_list **lst) } return (0); } - + int get_instruction(t_list **lst) { t_token *token; diff --git a/42sh/src/parser/get_instruction2.c b/42sh/src/parser/get_instruction2.c index 02f0ee90..4d20972c 100644 --- a/42sh/src/parser/get_instruction2.c +++ b/42sh/src/parser/get_instruction2.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/04 18:20:53 by ariard #+# #+# */ -/* Updated: 2017/02/04 19:00:55 by ariard ### ########.fr */ +/* Updated: 2017/02/05 20:24:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int get_instruction2(t_btree **ast, t_list **start, t_list **lst) token = (*lst)->content; if (token->type == TK_NEWLINE) - return (parse_newline(ast, start, lst)); + return (parse_separator(ast, start, lst)); else if (token->type == TK_WHILE) return (parse_while(ast, start, lst)); return (0); diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parse.c index 3e881779..f7a24358 100644 --- a/42sh/src/parser/parse.c +++ b/42sh/src/parser/parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ -/* Updated: 2017/02/04 20:43:45 by ariard ### ########.fr */ +/* Updated: 2017/02/05 20:53:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int parse(t_btree **ast, t_list **token) { t_list *start; + (void)ast; start = *token; if (get_instruction(token)) return (1); diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c deleted file mode 100644 index f007d56d..00000000 --- a/42sh/src/parser/parse_newline.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_newline.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/02/05 17:17:00 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_newline(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *token; - - token = (*lst)->content; - node = (*ast)->item; - node->type = TK_NEWLINE; - ft_parse(&(*ast)->right, &(*lst)->next); - ft_lstdelone(lst, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 34a09c65..8e754cde 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/05 00:24:54 by ariard ### ########.fr */ +/* Updated: 2017/02/05 21:11:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,11 @@ int parse_separator(t_btree **ast, t_list **start, t_list **lst) t_token *token; t_astnode *node; - DG("newline"); token = (*lst)->content; node = (*ast)->item; node->type = token->type; ft_parse(&(*ast)->right, &(*lst)->next); + (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_parse(&(*ast)->left, start); return (0); diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 1ba7cbc9..9ef48617 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -82,45 +82,21 @@ static int parse_head(t_btree **ast, node->type = token->type; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); *lst = (*lst)->next; + delete_newline(start, lst); return (0); } -/*static int parse_condition(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *token; - int nest; - - delete_newline(start, lst); - nest = 0; - while ((*lst)) - { - token = (*lst)->content; - if (token->type & TK_DO) - nest++; - else if (token->type & TK_DONE) - nest--; - if (nest == 1 && (token->type & TK_DO)) - break; - *lst = (*lst)->next; - } - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - DG("new token"); - token_print(*start); - ft_parse(&(*ast)->left, start); - return (0); -}*/ - -static int parse_execution(t_btree **ast, t_list **start, t_list **lst) +static int parse_loop(t_btree **ast, t_list **start, t_list **lst) { t_token *token; t_list *temp; + t_list *new_start; int nest; - (void)ast; nest = 0; while ((*lst)->next) *lst = (*lst)->next; + new_start = *start; ft_lst_reverse(start); temp = *lst; while ((*lst)) @@ -134,12 +110,13 @@ static int parse_execution(t_btree **ast, t_list **start, t_list **lst) break; *lst = (*lst)->next; } - ft_lst_reverse(&temp); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - *lst = (*lst)->next; - delete_newline(start, lst); - ft_parse(&(*ast)->right, lst); + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(&new_start, (*lst)->content, &ft_addrcmp, &token_free); + delete_newline(start, &temp); + ft_parse(&(*ast)->right, &temp); + ft_parse(&(*ast)->left, &new_start); return (0); } @@ -149,14 +126,6 @@ int parse_while(t_btree **ast, t_list **start, t_list **lst) parse_after_loop(ast, start, lst); parse_head(ast, &new_ast, start, lst); - parse_execution(&new_ast, start, lst); + parse_loop(&new_ast, start, lst); return (0); - -/* - temp = temp->next; - ft_parse(&(temp3)->right, &temp); - - return (0); - delete_all_newline(&temp); -*/ } From 9bb45abb3d1bf5441548900891e5caab796a708e Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 6 Feb 2017 00:05:32 +0100 Subject: [PATCH 030/206] currently parsing if, to-do:syntax error, clean code& interactive shell --- 42sh/Makefile | 7 +- 42sh/includes/lexer.h | 3 +- 42sh/includes/parser.h | 7 +- 42sh/sample/if.sh | 13 +- 42sh/sample/while.sh | 25 +++- 42sh/sample/while2.sh | 16 +++ 42sh/src/exec/exec_ampersand.c | 8 +- 42sh/src/exec/exec_and_if.c | 7 +- 42sh/src/exec/exec_command.c | 4 +- 42sh/src/exec/exec_default.c | 2 +- 42sh/src/exec/exec_dgreat.c | 7 +- 42sh/src/exec/exec_great.c | 7 +- 42sh/src/exec/exec_less.c | 7 +- 42sh/src/exec/exec_list.c | 20 --- 42sh/src/exec/exec_or_if.c | 7 +- 42sh/src/exec/exec_pipe.c | 7 +- 42sh/src/exec/exec_semi.c | 8 +- 42sh/src/exec/exec_while.c | 15 +-- 42sh/src/exec/ft_exec.c | 6 +- 42sh/src/lexer/get_reserved_words.c | 8 +- 42sh/src/main/ft_putast.c | 10 +- 42sh/src/main/ft_putast2.c | 2 +- 42sh/src/main/shell_script.c | 12 +- 42sh/src/parser/ft_parse.c | 5 +- 42sh/src/parser/get_instruction.c | 41 ++++++- ...t_instruction2.c => get_sub_instruction.c} | 10 +- 42sh/src/parser/parse.c | 3 +- 42sh/src/parser/parse_if.c | 116 ++++++++++++++++++ 42sh/src/parser/parse_list.c | 26 ---- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_while.c | 6 +- 31 files changed, 266 insertions(+), 151 deletions(-) create mode 100644 42sh/sample/while2.sh delete mode 100644 42sh/src/exec/exec_list.c rename 42sh/src/parser/{get_instruction2.c => get_sub_instruction.c} (74%) create mode 100644 42sh/src/parser/parse_if.c delete mode 100644 42sh/src/parser/parse_list.c diff --git a/42sh/Makefile b/42sh/Makefile index 1795c690..85c18d92 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -48,7 +48,6 @@ exec/exec_default.c\ exec/exec_dgreat.c\ exec/exec_great.c\ exec/exec_less.c\ -exec/exec_list.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ exec/exec_semi.c\ @@ -171,8 +170,8 @@ main/shell_script.c\ main/sig_handler.c\ parser/parse.c\ parser/ft_parse.c\ -parser/get_instruction.c \ -parser/get_instruction2.c \ +parser/get_instruction.c\ +parser/get_sub_instruction.c\ parser/parse_dgreat.c\ parser/parse_dless.c\ parser/parse_do.c\ @@ -181,10 +180,10 @@ parser/parse_great.c\ parser/parse_greatand.c\ parser/parse_less.c\ parser/parse_lessand.c\ -parser/parse_list.c\ parser/parse_separator.c\ parser/parse_subshell.c\ parser/parse_while.c\ +parser/parse_if.c\ parser/parse_word.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 5491555e..5ffe84d8 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/05 18:12:04 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:45:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,6 @@ typedef long long t_type; # define TK_IF (1 << 23) # define TK_THEN (1 << 24) # define TK_FI (1 << 25) -# define TK_LIST (1 << 26) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 84eab220..55d46ec2 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/05 17:59:47 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:44:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,7 +63,7 @@ int parse(t_btree **ast, t_list **token); int ft_parse(t_btree **ast, t_list **token); int get_instruction(t_list **lst); -int get_instruction2(t_btree **ast, t_list **start, t_list **lst); +int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst); int parse_newline(t_btree **ast, t_list **start, t_list **lst); int parse_separator(t_btree **ast, t_list **start, t_list **lst); @@ -77,8 +77,11 @@ int parse_word(t_btree **ast, t_list **start, t_list **lst); int parse_subshell(t_btree **ast, t_list **start, t_list **lst); int parse_newline(t_btree **ast, t_list **start, t_list **lst); int parse_while(t_btree **ast, t_list **start, t_list **lst); +int parse_if(t_btree **ast, t_list **start, t_list **lst); int parse_do(t_btree **ast, t_list **start, t_list **lst); int parse_done(t_btree **ast, t_list **start, t_list **lst); int parse_list(t_btree **ast, t_list **start, t_list **lst); +int delete_newline(t_list **start, t_list **lst); + #endif diff --git a/42sh/sample/if.sh b/42sh/sample/if.sh index bba0efb5..5cf17ebb 100644 --- a/42sh/sample/if.sh +++ b/42sh/sample/if.sh @@ -1,6 +1,11 @@ -echo "begin if" if [ 1 ] then - echo "hello world" -fi -echo "end if" + if [ 1 ] + then + echo "hello world" + fi + if [ 1 ] + then + echo "salut monde" + fi +fi > file1 diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 5adc86a6..4dd61c2f 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -2,10 +2,27 @@ while ls do while ls do - pwd - done + while ls + do + while ls + do + while ls + do + while ls + do + echo hello + done + done + done + done + done + ls while ls do - cd - done + while ls + do + echo world + done + done + pwd done diff --git a/42sh/sample/while2.sh b/42sh/sample/while2.sh new file mode 100644 index 00000000..d3d0f5e4 --- /dev/null +++ b/42sh/sample/while2.sh @@ -0,0 +1,16 @@ +ONE=11 +while [ $ONE -gt 1 ] +do + TWO=11 + while [ $TWO -gt 1 ] + do + THREE=11 + while [ $THREE -gt 1 ] + do + echo hello + ((THREE--)) + done + ((TWO--)) + done + ((ONE--)) +done diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index 0a0c7a0b..55da0220 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/01/30 21:11:38 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:10:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,6 @@ int exec_ampersand(t_btree **ast) { - t_process *p; - if (SHELL_HAS_JOBC(data_singleton()->opts)) data_singleton()->exec.job.attributes |= JOB_BG; ft_exec(&(*ast)->left); @@ -23,8 +21,6 @@ int exec_ampersand(t_btree **ast) data_singleton()->exec.job.attributes &= ~JOB_BG; ft_exec(&(*ast)->right); - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_and_if.c b/42sh/src/exec/exec_and_if.c index 4b26c5d4..794cfdb9 100644 --- a/42sh/src/exec/exec_and_if.c +++ b/42sh/src/exec/exec_and_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:28 by jhalford #+# #+# */ -/* Updated: 2017/01/30 20:53:56 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:10:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int exec_and_if(t_btree **ast) { t_data *data; - t_process *p; data = data_singleton(); if (data->exec.aol_status == NULL @@ -34,8 +33,6 @@ int exec_and_if(t_btree **ast) data->exec.aol_status = NULL; data->exec.aol_search = 0; - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 6697b4a5..dace8040 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:40:45 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:09:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,6 +66,6 @@ int exec_command(t_btree **ast) p->av = NULL; p->pid = 0; p->attributes &= ~(PROCESS_STATE_MASK | PROCESS_TYPE_MASK); - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_default.c b/42sh/src/exec/exec_default.c index 5b02f375..287cc995 100644 --- a/42sh/src/exec/exec_default.c +++ b/42sh/src/exec/exec_default.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 19:29:59 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:31:39 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:18:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_dgreat.c b/42sh/src/exec/exec_dgreat.c index ad73e6b6..e045ee8c 100644 --- a/42sh/src/exec/exec_dgreat.c +++ b/42sh/src/exec/exec_dgreat.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:15:13 by jhalford #+# #+# */ -/* Updated: 2017/01/30 20:55:31 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:10:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int exec_dgreat(t_btree **ast) { t_astnode *node; - t_process *p; int fd; node = (*ast)->item; @@ -24,8 +23,6 @@ int exec_dgreat(t_btree **ast) ft_exec(&(*ast)->left); data_singleton()->exec.process.fdout = STDOUT; - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_great.c b/42sh/src/exec/exec_great.c index f4399234..8190f929 100644 --- a/42sh/src/exec/exec_great.c +++ b/42sh/src/exec/exec_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:51 by jhalford #+# #+# */ -/* Updated: 2017/01/30 21:09:36 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:11:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int exec_great(t_btree **ast) { t_astnode *node; - t_process *p; int fd; node = (*ast)->item; @@ -24,8 +23,6 @@ int exec_great(t_btree **ast) ft_exec(&(*ast)->left); data_singleton()->exec.process.fdout = STDOUT; - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_less.c b/42sh/src/exec/exec_less.c index 4c0d226d..3629ff65 100644 --- a/42sh/src/exec/exec_less.c +++ b/42sh/src/exec/exec_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:08 by jhalford #+# #+# */ -/* Updated: 2017/01/30 20:56:55 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:12:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int exec_less(t_btree **ast) { t_astnode *node; - t_process *p; int fd; node = (*ast)->item; @@ -27,8 +26,6 @@ int exec_less(t_btree **ast) data_singleton()->exec.process.fdin = STDIN; /* data->exec.process.command = NULL; */ - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_list.c b/42sh/src/exec/exec_list.c deleted file mode 100644 index 061c4291..00000000 --- a/42sh/src/exec/exec_list.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_list.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 20:19:29 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:00:40 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "exec.h" - -int exec_list(t_btree **ast) -{ - (void)ast; -// btree_delone(ast, &ast_free); - return (0); -} diff --git a/42sh/src/exec/exec_or_if.c b/42sh/src/exec/exec_or_if.c index c7abb167..63995843 100644 --- a/42sh/src/exec/exec_or_if.c +++ b/42sh/src/exec/exec_or_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 21:06:17 by jhalford #+# #+# */ -/* Updated: 2017/01/30 21:09:55 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:12:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int exec_or_if(t_btree **ast) { t_data *data; - t_process *p; data = data_singleton(); if (data->exec.aol_status == NULL @@ -34,8 +33,6 @@ int exec_or_if(t_btree **ast) data->exec.aol_status = NULL; data->exec.aol_search = 0; - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index d876dd9e..1ba905b0 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 21:13:23 by jhalford #+# #+# */ -/* Updated: 2017/01/30 21:01:33 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:14:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,8 +43,7 @@ int exec_pipe(t_btree **ast) close(fds[PIPE_READ]); p->fdin = STDIN; - - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); + + btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 9cabc19f..83084619 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/01/31 19:31:59 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:19:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,13 +14,9 @@ int exec_semi(t_btree **ast) { - t_process *p; - ft_exec(&(*ast)->left); ft_exec(&(*ast)->right); - p = &data_singleton()->exec.process; - if (!(p->script & SCRIPT_LOOP)) - btree_delone(ast, &ast_free); +// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 7b4e8f5e..5cd3deb4 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/03 16:58:02 by ariard ### ########.fr */ +/* Updated: 2017/02/05 22:38:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,23 +14,12 @@ int exec_while(t_btree **ast) { - t_list **consequent_commands; - t_astnode *node; int test; - node = ((*ast)->right)->item; - DG("consequent command data '%s'", node->data.str); - consequent_commands = NULL; - - test = 10; while (test--) - { - loop_exec(*consequent_commands); - DG("end loop : '%d'", test); - } + ft_exec(&(*ast)->right); -// loop_del(*consequent_commands); // btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 831d7500..62ded660 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:31:42 by ariard ### ########.fr */ +/* Updated: 2017/02/06 00:04:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_execmap g_execmap[] = { - {TK_NEWLINE, &exec_default}, + {TK_NEWLINE, &exec_semi}, {TK_AND_IF, &exec_and_if}, {TK_OR_IF, &exec_or_if}, {TK_SEMI, &exec_semi}, @@ -24,7 +24,7 @@ t_execmap g_execmap[] = {TK_GREAT, &exec_great}, {TK_DGREAT, &exec_dgreat}, {TK_WHILE, &exec_while}, - {TK_LIST, &exec_list}, + {TK_IF, &exec_if}, {TK_COMMAND | TK_SUBSHELL, &exec_command}, {0, 0}, }; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index b81df18d..4d91d79b 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/04 17:15:59 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:15:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,12 @@ int get_reserved_words(t_list **alst) token->type = TK_DONE; else if (ft_strncmp(token->data, "do" , 2) == 0) token->type = TK_DO; + else if (ft_strncmp(token->data, "if", 2) == 0) + token->type = TK_IF; + else if (ft_strncmp(token->data, "then", 4) == 0) + token->type = TK_THEN; + else if(ft_strncmp(token->data, "fi", 4) == 0) + token->type = TK_FI; } } previous_token = token; diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index cf95aa07..cee5f84d 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/05 00:32:21 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:50:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,14 +34,10 @@ char *ft_putast(void *nodein) return (" COM "); else if (node->type == TK_WHILE) return (" WHILE "); - else if (node->type == TK_DO) - return ("DO"); - else if (node->type == TK_DONE) - return ("DONE"); + else if (node->type == TK_IF) + return ("IF"); else if (node->type == TK_NEWLINE) return ("NEW"); - else if (node->type == TK_LIST) - return (" LIST "); else if (node->type == TK_GREAT) return (" > "); else if (node->type == TK_LESS) diff --git a/42sh/src/main/ft_putast2.c b/42sh/src/main/ft_putast2.c index 5947a315..35668b46 100644 --- a/42sh/src/main/ft_putast2.c +++ b/42sh/src/main/ft_putast2.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2016/12/05 13:17:50 by jhalford ### ########.fr */ +/* Updated: 2017/02/05 22:48:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index d91f4579..0461ac8e 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/05 21:12:36 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:40:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,14 +26,14 @@ int shell_script() DG("after post_tokenize"); token_print(token); - while (token) - { +// while (token) +// { if (parse(&ast, &token)) return (1); btree_print(STDBUG, ast, &ft_putast); -// if (ft_exec(&ast)) -// return (1); + // if (ft_exec(&ast)) + // return (1); ast = NULL; - } +// } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 9ba1ff15..268ff4ba 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/05 21:10:03 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:38:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,7 @@ t_parser g_parser[] = { - {TK_WHILE | TK_NEWLINE, &get_instruction2}, - {TK_SEMI, &parse_separator}, + {TK_WHILE | TK_IF | TK_NEWLINE | TK_SEMI, &get_sub_instruction}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c index 2d6891b3..66deb843 100644 --- a/42sh/src/parser/get_instruction.c +++ b/42sh/src/parser/get_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/05 20:52:30 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:45:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ static int get_simple_instruction(t_list **start, t_list **lst) return (0); } -static int get_compound_instruction(t_list **start, t_list **lst) +static int get_loop_instruction(t_list **start, t_list **lst) { t_list *temp; t_token *token; @@ -56,6 +56,39 @@ static int get_compound_instruction(t_list **start, t_list **lst) return (0); } +static int get_condition_instruction(t_list **start, t_list **lst) +{ + t_list *temp; + t_token *token; + int nest; + + nest = 0; + while (((*lst) = (*lst)->next)) + { + token = (*lst)->content; + if (token->type & TK_THEN) + nest++; + else if (token->type & TK_FI) + nest--; + if (nest == 0 && token->type & TK_FI) + break; + } + while (((*lst) = (*lst)->next)) + { + token = (*lst)->content; + if (token->type & (TK_NEWLINE | TK_SEMI)) + break; + } + if ((*lst)) + { + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + *lst = temp; + } + return (0); +} + int get_instruction(t_list **lst) { t_token *token; @@ -68,7 +101,9 @@ int get_instruction(t_list **lst) if (token->type & TK_NEWLINE) return (get_simple_instruction(&start, lst)); else if (token->type & TK_WHILE) - return (get_compound_instruction(&start, lst)); + return (get_loop_instruction(&start, lst)); + else if (token->type & TK_IF) + return (get_condition_instruction(&start, lst)); (*lst) = (*lst)->next; } return (0); diff --git a/42sh/src/parser/get_instruction2.c b/42sh/src/parser/get_sub_instruction.c similarity index 74% rename from 42sh/src/parser/get_instruction2.c rename to 42sh/src/parser/get_sub_instruction.c index 4d20972c..7b3ef9fa 100644 --- a/42sh/src/parser/get_instruction2.c +++ b/42sh/src/parser/get_sub_instruction.c @@ -5,14 +5,14 @@ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/04 18:20:53 by ariard #+# #+# */ -/* Updated: 2017/02/05 20:24:57 by ariard ### ########.fr */ +/* Created: 2017/02/05 22:05:26 by ariard #+# #+# */ +/* Updated: 2017/02/05 23:15:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int get_instruction2(t_btree **ast, t_list **start, t_list **lst) +int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst) { t_token *token; @@ -21,5 +21,9 @@ int get_instruction2(t_btree **ast, t_list **start, t_list **lst) return (parse_separator(ast, start, lst)); else if (token->type == TK_WHILE) return (parse_while(ast, start, lst)); + else if (token->type == TK_IF) + return (parse_if(ast, start, lst)); + else if (token->type == TK_SEMI) + return (parse_separator(ast, start, lst)); return (0); } diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parse.c index f7a24358..2158663d 100644 --- a/42sh/src/parser/parse.c +++ b/42sh/src/parser/parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ -/* Updated: 2017/02/05 20:53:58 by ariard ### ########.fr */ +/* Updated: 2017/02/05 23:46:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ int parse(t_btree **ast, t_list **token) { t_list *start; - (void)ast; start = *token; if (get_instruction(token)) return (1); diff --git a/42sh/src/parser/parse_if.c b/42sh/src/parser/parse_if.c new file mode 100644 index 00000000..7679a70f --- /dev/null +++ b/42sh/src/parser/parse_if.c @@ -0,0 +1,116 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/05 23:15:23 by ariard #+# #+# */ +/* Updated: 2017/02/05 23:57:18 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +static int parse_after_condition(t_btree **ast, t_list **start, t_list **lst) +{ + t_list *temp; + t_list *del; + t_token *token; + int nest; + + + temp = (*lst); + nest = 0; + while ((temp = temp->next)) + { + token = temp->content; + if (token->type & TK_THEN) + nest++; + else if (token->type & TK_FI) + nest--; + if (nest == 0 && (token->type & TK_FI)) + break; + } + del = temp; + temp = temp->next; + del->next = NULL; + ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); + if (temp) + ft_parse(ast, &temp); + return (0); +} + +static int parse_head(t_btree **ast, + t_btree **new_ast, t_list **start, t_list **lst) +{ + t_btree *father; + t_token *token; + t_list *del; + t_astnode *node; + t_astnode item; + + father = *ast; + while (father->left) + father = father->left; + *new_ast = btree_create_node(&item, sizeof(item)); + ((t_astnode *)(*new_ast)->item)->data.token = NULL; + node = (*ast)->item; + if (node->type > 0) + father->left = *new_ast; + else + *new_ast = *ast; + + token = (*lst)->content; + node = (*new_ast)->item; + node->type = token->type; + del = (*lst); + *lst = (*lst)->next; + ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); + delete_newline(start, lst); + return (0); +} + +static int parse_loop(t_btree **ast, t_list **start, t_list **lst) +{ + t_token *token; + t_list *temp; + t_list *new_start; + int nest; + + nest = 0; + while ((*lst)->next) + *lst = (*lst)->next; + new_start = *start; + ft_lst_reverse(start); + temp = *lst; + while ((*lst)) + { + token = (*lst)->content; + if (token->type & TK_THEN) + nest++; + else if (token->type & TK_FI) + nest--; + if (nest == 1 && (token->type & TK_THEN)) + break; + *lst = (*lst)->next; + } + ft_lst_reverse(&temp); + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(&new_start, (*lst)->content, &ft_addrcmp, &token_free); + delete_newline(start, &temp); + ft_parse(&(*ast)->right, &temp); + ft_parse(&(*ast)->left, &new_start); + return (0); +} + +int parse_if(t_btree **ast, t_list **start, t_list **lst) +{ + t_btree *new_ast; + + parse_after_condition(ast, start, lst); + parse_head(ast, &new_ast, start, lst); + parse_loop(&new_ast, start, lst); + return (0); +} diff --git a/42sh/src/parser/parse_list.c b/42sh/src/parser/parse_list.c deleted file mode 100644 index 2acf1c61..00000000 --- a/42sh/src/parser/parse_list.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_list.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ -/* Updated: 2017/02/03 16:51:39 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_list(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *token; - - token = (*lst)->content; - node = (*ast)->item; - node->type = TK_LIST; - node->data.str = ft_strdup(token->data); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - return (0); -} diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 8e754cde..9de5b390 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/05 21:11:56 by ariard ### ########.fr */ +/* Updated: 2017/02/05 21:54:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 9ef48617..4b4dfd05 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -12,7 +12,7 @@ #include "parser.h" -static int delete_newline(t_list **start, t_list **lst) +int delete_newline(t_list **start, t_list **lst) { t_token *token; t_list *del; @@ -63,6 +63,7 @@ static int parse_head(t_btree **ast, { t_btree *father; t_token *token; + t_list *del; t_astnode *node; t_astnode item; @@ -80,8 +81,9 @@ static int parse_head(t_btree **ast, token = (*lst)->content; node = (*new_ast)->item; node->type = token->type; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + del = (*lst); *lst = (*lst)->next; + ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); delete_newline(start, lst); return (0); } From a211bfd1b0c92c6342b90321d246f118a4d54070 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 6 Feb 2017 17:59:48 +0100 Subject: [PATCH 031/206] parsing if/elsif stable --- 42sh/Makefile | 3 +- 42sh/blind.text | 3 + 42sh/file1 | 15537 ------------------------ 42sh/includes/lexer.h | 7 +- 42sh/includes/parser.h | 5 +- 42sh/sample/if.sh | 16 +- 42sh/src/exec/exec_while.c | 2 +- 42sh/src/exec/ft_exec.c | 3 +- 42sh/src/lexer/get_reserved_words.c | 8 +- 42sh/src/lexer/lexer_fi.c | 31 - 42sh/src/lexer/lexer_if.c | 28 - 42sh/src/main/ft_putast.c | 4 +- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/ft_parse.c | 4 +- 42sh/src/parser/get_instruction.c | 7 +- 42sh/src/parser/get_sub_instruction.c | 4 +- 42sh/src/parser/parse.c | 3 +- 42sh/src/parser/parse_elif.c | 79 + 42sh/src/parser/parse_if.c | 61 +- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_while.c | 5 +- 42sh/test.sh | 9 + 22 files changed, 145 insertions(+), 15678 deletions(-) create mode 100644 42sh/blind.text delete mode 100644 42sh/src/lexer/lexer_fi.c delete mode 100644 42sh/src/lexer/lexer_if.c create mode 100644 42sh/src/parser/parse_elif.c create mode 100644 42sh/test.sh diff --git a/42sh/Makefile b/42sh/Makefile index 85c18d92..41613a82 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -130,10 +130,8 @@ lexer/lexer_comment.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ lexer/lexer_dquote.c\ -lexer/lexer_fi.c\ lexer/lexer_great.c\ lexer/lexer_greatand.c\ -lexer/lexer_if.c\ lexer/lexer_less.c\ lexer/lexer_lessand.c\ lexer/lexer_newline.c\ @@ -184,6 +182,7 @@ parser/parse_separator.c\ parser/parse_subshell.c\ parser/parse_while.c\ parser/parse_if.c\ +parser/parse_elif.c\ parser/parse_word.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) diff --git a/42sh/blind.text b/42sh/blind.text new file mode 100644 index 00000000..643ee9f9 --- /dev/null +++ b/42sh/blind.text @@ -0,0 +1,3 @@ +do en condition, aller a la fin +verifier les delimiters +impleter erreur syntax : EOF, unexpected do, unexpected done, pareil if diff --git a/42sh/file1 b/42sh/file1 index b8307af2..ce013625 100644 --- a/42sh/file1 +++ b/42sh/file1 @@ -1,15538 +1 @@ -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -hello -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh -42sh -Makefile -debug -file1 -includes -libft -objs -pdf -sample -script.sh -src -update_makefile.sh hello diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 5ffe84d8..96e9a93c 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/05 22:45:03 by ariard ### ########.fr */ +/* Updated: 2017/02/06 15:13:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,11 +50,14 @@ typedef long long t_type; # define TK_IF (1 << 23) # define TK_THEN (1 << 24) # define TK_FI (1 << 25) +# define TK_ELIF (1 << 26) +# define TK_ELSE (1 << 27) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) # define TK_NON_FREEABLE (TK_PAREN_OPEN | TK_PAREN_CLOSE | TK_BQUOTE) -# define SHELL_SEP (TK_NEWLINE | TK_AMP | TK_SEMI | TK_DO) +# define RW_SEP (TK_NEWLINE | TK_AMP | TK_SEMI | TK_WHILE | TK_DONE\ + | TK_DO | TK_IF | TK_FI | TK_THEN | TK_ELIF | TK_ELSE) enum e_lexstate { diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 55d46ec2..8e2efa2a 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/05 23:44:43 by ariard ### ########.fr */ +/* Updated: 2017/02/06 15:45:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -80,8 +80,9 @@ int parse_while(t_btree **ast, t_list **start, t_list **lst); int parse_if(t_btree **ast, t_list **start, t_list **lst); int parse_do(t_btree **ast, t_list **start, t_list **lst); int parse_done(t_btree **ast, t_list **start, t_list **lst); -int parse_list(t_btree **ast, t_list **start, t_list **lst); +int parse_elif(t_btree **ast, t_list **start, t_list **lst); int delete_newline(t_list **start, t_list **lst); +int parse_head(t_btree **ast, t_btree **new_ast, t_list **start, t_list **lst); #endif diff --git a/42sh/sample/if.sh b/42sh/sample/if.sh index 5cf17ebb..7a6a1fb4 100644 --- a/42sh/sample/if.sh +++ b/42sh/sample/if.sh @@ -1,11 +1,7 @@ -if [ 1 ] +if ls then - if [ 1 ] - then - echo "hello world" - fi - if [ 1 ] - then - echo "salut monde" - fi -fi > file1 + echo hello +elif ls +then + echo world +fi diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 5cd3deb4..e7baf181 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/05 22:38:03 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:05:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 62ded660..772792d4 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/06 00:04:12 by ariard ### ########.fr */ +/* Updated: 2017/02/06 14:53:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,6 @@ t_execmap g_execmap[] = {TK_GREAT, &exec_great}, {TK_DGREAT, &exec_dgreat}, {TK_WHILE, &exec_while}, - {TK_IF, &exec_if}, {TK_COMMAND | TK_SUBSHELL, &exec_command}, {0, 0}, }; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 4d91d79b..14ed745b 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/05 23:15:12 by ariard ### ########.fr */ +/* Updated: 2017/02/06 15:10:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ int get_reserved_words(t_list **alst) while (temp) { token = temp->content; - if (!previous_token || (previous_token->type & SHELL_SEP)) + if (!previous_token || (previous_token->type & RW_SEP)) { if (token->type == TK_N_WORD) { @@ -39,6 +39,10 @@ int get_reserved_words(t_list **alst) token->type = TK_THEN; else if(ft_strncmp(token->data, "fi", 4) == 0) token->type = TK_FI; + else if (ft_strncmp(token->data, "elif", 4) == 0) + token->type = TK_ELIF; + else if (ft_strncmp(token->data, "else", 4) == 0) + token->type = TK_ELSE; } } previous_token = token; diff --git a/42sh/src/lexer/lexer_fi.c b/42sh/src/lexer/lexer_fi.c deleted file mode 100644 index f6e4d4c0..00000000 --- a/42sh/src/lexer/lexer_fi.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_fi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 23:35:08 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:59:50 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_fi(t_list **alst, char *str) -{ - t_token *token; - t_lexstate state; - - if (*alst) - return (lexer_fi(&(*alst)->next, str)); - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_FI; - state = DEFAULT; - return (ft_tokenize(&(*alst)->next, str + 2, state)); -} diff --git a/42sh/src/lexer/lexer_if.c b/42sh/src/lexer/lexer_if.c deleted file mode 100644 index 0c15d9c7..00000000 --- a/42sh/src/lexer/lexer_if.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_if.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 23:25:47 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:12:24 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_if(t_list **alst, char *str) -{ - t_token *token; - - token = (*alst)->content; - if (ft_strncmp(str, "if", 2) == 0) - token->type = TK_IF; - else if (ft_isalnum(*str)) - { - token_append(token, *str, 0); - return (ft_tokenize(alst, str + 1, WORD)); - } - return (ft_tokenize(&(*alst)->next, str + 3, LIST)); -} diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index cee5f84d..0a2c1b85 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/05 23:50:29 by ariard ### ########.fr */ +/* Updated: 2017/02/06 16:14:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,6 +36,8 @@ char *ft_putast(void *nodein) return (" WHILE "); else if (node->type == TK_IF) return ("IF"); + else if (node->type == TK_ELIF) + return ("ELIF"); else if (node->type == TK_NEWLINE) return ("NEW"); else if (node->type == TK_GREAT) diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 0461ac8e..f48168a4 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/05 23:40:13 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:59:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 268ff4ba..943e8d47 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/05 23:38:31 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:11:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_parser g_parser[] = { - {TK_WHILE | TK_IF | TK_NEWLINE | TK_SEMI, &get_sub_instruction}, + {TK_WHILE | TK_IF | TK_ELIF | TK_NEWLINE | TK_SEMI, &get_sub_instruction}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c index 66deb843..a025bcdb 100644 --- a/42sh/src/parser/get_instruction.c +++ b/42sh/src/parser/get_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/05 23:45:50 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:17:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,15 +63,16 @@ static int get_condition_instruction(t_list **start, t_list **lst) int nest; nest = 0; - while (((*lst) = (*lst)->next)) + while (*lst) { token = (*lst)->content; - if (token->type & TK_THEN) + if (token->type & TK_IF) nest++; else if (token->type & TK_FI) nest--; if (nest == 0 && token->type & TK_FI) break; + *lst = (*lst)->next; } while (((*lst) = (*lst)->next)) { diff --git a/42sh/src/parser/get_sub_instruction.c b/42sh/src/parser/get_sub_instruction.c index 7b3ef9fa..c2c5f48f 100644 --- a/42sh/src/parser/get_sub_instruction.c +++ b/42sh/src/parser/get_sub_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/05 22:05:26 by ariard #+# #+# */ -/* Updated: 2017/02/05 23:15:02 by ariard ### ########.fr */ +/* Updated: 2017/02/06 15:49:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,8 @@ int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst) return (parse_while(ast, start, lst)); else if (token->type == TK_IF) return (parse_if(ast, start, lst)); + else if (token->type == TK_ELIF) + return (parse_elif(ast, start, lst)); else if (token->type == TK_SEMI) return (parse_separator(ast, start, lst)); return (0); diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parse.c index 2158663d..e41d5f8d 100644 --- a/42sh/src/parser/parse.c +++ b/42sh/src/parser/parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ -/* Updated: 2017/02/05 23:46:00 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:42:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int parse(t_btree **ast, t_list **token) { t_list *start; + (void)ast; start = *token; if (get_instruction(token)) return (1); diff --git a/42sh/src/parser/parse_elif.c b/42sh/src/parser/parse_elif.c new file mode 100644 index 00000000..4fdfb249 --- /dev/null +++ b/42sh/src/parser/parse_elif.c @@ -0,0 +1,79 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_elif.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 14:50:54 by ariard #+# #+# */ +/* Updated: 2017/02/06 17:54:22 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static int parse_after_elif(t_btree **ast, t_list **lst) +{ + t_list *temp; + t_list *prev_prev; + t_list *prev; + t_token *token; + int nest; + + temp = (*lst); + nest = 0; + while ((temp = temp->next)) + { + token = temp->content; + if (nest == 0 && (token->type & TK_ELIF)) + break; + else if (token->type & TK_IF) + nest++; + else if (token->type & TK_FI) + nest--; + prev_prev = prev; + prev = temp; + } + prev_prev->next = NULL; + if (prev) + ft_parse(ast, &prev); + return (0); +} + +static int parse_loop(t_btree **ast, t_list **start, t_list **lst) +{ + t_token *token; + t_list *temp; + int nest; + + nest = 0; + while ((*lst)) + { + token = (*lst)->content; + if (token->type & TK_THEN) + nest++; + else if (token->type & TK_ELIF) + nest--; + if (nest == 1 && (token->type & TK_THEN)) + break; + *lst = (*lst)->next; + } + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + delete_newline(start, &temp); + ft_parse(&(*ast)->right, &temp); + ft_parse(&(*ast)->left, start); + return (0); +} + +int parse_elif(t_btree **ast, t_list **start, t_list **lst) +{ + t_btree *new_ast; + + parse_after_elif(ast, lst); + parse_head(ast, &new_ast, start, lst); + *start = *lst; + parse_loop(&new_ast, start, lst); + return (0); +} diff --git a/42sh/src/parser/parse_if.c b/42sh/src/parser/parse_if.c index 7679a70f..4af694c4 100644 --- a/42sh/src/parser/parse_if.c +++ b/42sh/src/parser/parse_if.c @@ -6,31 +6,31 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/05 23:15:23 by ariard #+# #+# */ -/* Updated: 2017/02/05 23:57:18 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:46:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -static int parse_after_condition(t_btree **ast, t_list **start, t_list **lst) +static int parse_after_condition(t_btree **ast, t_list **start, t_list **lst) { t_list *temp; t_list *del; t_token *token; int nest; - temp = (*lst); nest = 0; - while ((temp = temp->next)) + while (temp) { token = temp->content; - if (token->type & TK_THEN) + if (token->type & TK_IF) nest++; else if (token->type & TK_FI) nest--; if (nest == 0 && (token->type & TK_FI)) - break; + break; + temp = temp->next; } del = temp; temp = temp->next; @@ -41,12 +41,11 @@ static int parse_after_condition(t_btree **ast, t_list **start, t_list **lst) return (0); } -static int parse_head(t_btree **ast, - t_btree **new_ast, t_list **start, t_list **lst) +static int parse_head_condition(t_btree **ast, + t_btree **new_ast, t_list **start, t_list **lst) { t_btree *father; t_token *token; - t_list *del; t_astnode *node; t_astnode item; @@ -64,53 +63,17 @@ static int parse_head(t_btree **ast, token = (*lst)->content; node = (*new_ast)->item; node->type = token->type; - del = (*lst); - *lst = (*lst)->next; - ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); - delete_newline(start, lst); + token->type = TK_ELIF; + ft_parse(&(*new_ast)->right, start); return (0); } -static int parse_loop(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *token; - t_list *temp; - t_list *new_start; - int nest; - - nest = 0; - while ((*lst)->next) - *lst = (*lst)->next; - new_start = *start; - ft_lst_reverse(start); - temp = *lst; - while ((*lst)) - { - token = (*lst)->content; - if (token->type & TK_THEN) - nest++; - else if (token->type & TK_FI) - nest--; - if (nest == 1 && (token->type & TK_THEN)) - break; - *lst = (*lst)->next; - } - ft_lst_reverse(&temp); - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(&new_start, (*lst)->content, &ft_addrcmp, &token_free); - delete_newline(start, &temp); - ft_parse(&(*ast)->right, &temp); - ft_parse(&(*ast)->left, &new_start); - return (0); -} int parse_if(t_btree **ast, t_list **start, t_list **lst) { t_btree *new_ast; - + parse_after_condition(ast, start, lst); - parse_head(ast, &new_ast, start, lst); - parse_loop(&new_ast, start, lst); + parse_head_condition(ast, &new_ast, start, lst); return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 9de5b390..27b56c01 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/05 21:54:28 by ariard ### ########.fr */ +/* Updated: 2017/02/06 17:52:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 4b4dfd05..b3c89ccb 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -58,7 +58,7 @@ static int parse_after_loop(t_btree **ast, t_list **start, t_list **lst) return (0); } -static int parse_head(t_btree **ast, +int parse_head(t_btree **ast, t_btree **new_ast, t_list **start, t_list **lst) { t_btree *father; @@ -77,12 +77,13 @@ static int parse_head(t_btree **ast, father->left = *new_ast; else *new_ast = *ast; - token = (*lst)->content; node = (*new_ast)->item; node->type = token->type; del = (*lst); *lst = (*lst)->next; + //check that// + del->next = NULL; ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); delete_newline(start, lst); return (0); diff --git a/42sh/test.sh b/42sh/test.sh new file mode 100644 index 00000000..feb468a8 --- /dev/null +++ b/42sh/test.sh @@ -0,0 +1,9 @@ +if [ 0 -gt 1 ] +then + echo hello +if ls +then + echo world + + echo yolo +fi From 490f81ee2363ba8ecd68e7b14b67368b528f3da8 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 6 Feb 2017 19:48:17 +0100 Subject: [PATCH 032/206] exec if + elif + else ok to-do:syntax error --- 42sh/Makefile | 6 ++-- 42sh/includes/exec.h | 6 ++-- 42sh/includes/minishell.h | 3 +- 42sh/includes/parser.h | 3 +- 42sh/sample/if.sh | 14 ++++++--- 42sh/src/exec/exec_elif.c | 28 ++++++++++++++++++ 42sh/src/exec/exec_else.c | 20 +++++++++++++ 42sh/src/exec/exec_if.c | 21 ++++++++++++++ 42sh/src/exec/exec_semi.c | 2 +- 42sh/src/exec/exec_while.c | 2 +- 42sh/src/exec/ft_exec.c | 5 +++- 42sh/src/main/ft_putast.c | 4 ++- 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_script.c | 14 ++++----- 42sh/src/parser/ft_parse.c | 4 +-- 42sh/src/parser/get_instruction.c | 2 +- 42sh/src/parser/get_sub_instruction.c | 4 ++- 42sh/src/parser/parse.c | 2 +- 42sh/src/parser/parse_elif.c | 6 ++-- 42sh/src/parser/parse_else.c | 42 +++++++++++++++++++++++++++ 42sh/src/parser/parse_if.c | 4 +-- 42sh/src/parser/parse_while.c | 1 - 22 files changed, 162 insertions(+), 33 deletions(-) create mode 100644 42sh/src/exec/exec_elif.c create mode 100644 42sh/src/exec/exec_else.c create mode 100644 42sh/src/exec/exec_if.c create mode 100644 42sh/src/parser/parse_else.c diff --git a/42sh/Makefile b/42sh/Makefile index 41613a82..00263478 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -52,11 +52,12 @@ exec/exec_or_if.c\ exec/exec_pipe.c\ exec/exec_semi.c\ exec/exec_while.c\ +exec/exec_if.c\ +exec/exec_else.c\ +exec/exec_elif.c\ exec/ft_exec.c\ exec/ft_findexec.c\ exec/launch_process.c\ -exec/loop_del.c\ -exec/loop_exec.c\ exec/process_redirect.c\ exec/process_reset.c\ exec/process_setexec.c\ @@ -183,6 +184,7 @@ parser/parse_subshell.c\ parser/parse_while.c\ parser/parse_if.c\ parser/parse_elif.c\ +parser/parse_else.c\ parser/parse_word.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index f15c74f8..4e4279a3 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:09:26 by ariard ### ########.fr */ +/* Updated: 2017/02/06 18:59:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -89,7 +89,9 @@ int exec_dgreat(t_btree **ast); int exec_command(t_btree **ast); int exec_while(t_btree **ast); -int exec_list(t_btree **ast); +int exec_if(t_btree **ast); +int exec_elif(t_btree **ast); +int exec_else(t_btree **ast); int exec_default(t_btree **ast); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 630b5b70..f5831140 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:42:54 by ariard ### ########.fr */ +/* Updated: 2017/02/06 18:33:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,6 +52,7 @@ struct s_script { char *buffer; int size; + int lc; }; typedef struct s_script t_script; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 8e2efa2a..71d07a8d 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/06 15:45:33 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:02:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -81,6 +81,7 @@ int parse_if(t_btree **ast, t_list **start, t_list **lst); int parse_do(t_btree **ast, t_list **start, t_list **lst); int parse_done(t_btree **ast, t_list **start, t_list **lst); int parse_elif(t_btree **ast, t_list **start, t_list **lst); +int parse_else(t_btree **ast, t_list **start, t_list **lst); int delete_newline(t_list **start, t_list **lst); int parse_head(t_btree **ast, t_btree **new_ast, t_list **start, t_list **lst); diff --git a/42sh/sample/if.sh b/42sh/sample/if.sh index 7a6a1fb4..cfbccc74 100644 --- a/42sh/sample/if.sh +++ b/42sh/sample/if.sh @@ -1,7 +1,13 @@ -if ls +while ls +do +if ls then echo hello -elif ls -then - echo world +else + while ls + do + echo hello world + pwd + done fi +done diff --git a/42sh/src/exec/exec_elif.c b/42sh/src/exec/exec_elif.c new file mode 100644 index 00000000..c248e434 --- /dev/null +++ b/42sh/src/exec/exec_elif.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_elif.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 18:08:53 by ariard #+# #+# */ +/* Updated: 2017/02/06 19:26:00 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_elif(t_btree **ast) +{ + int test; + + (void)ast; + test = 1; + if (test && data_singleton()->script.lc == 0) + { + ft_exec(&(*ast)->right); + data_singleton()->script.lc = 1; + } + // btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/exec_else.c b/42sh/src/exec/exec_else.c new file mode 100644 index 00000000..f94735c1 --- /dev/null +++ b/42sh/src/exec/exec_else.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_else.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 18:55:07 by ariard #+# #+# */ +/* Updated: 2017/02/06 19:13:05 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int exec_else(t_btree **ast) +{ + ft_exec(&(*ast)->right); + //btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c new file mode 100644 index 00000000..82c18ec9 --- /dev/null +++ b/42sh/src/exec/exec_if.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ +/* Updated: 2017/02/06 18:55:00 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_if(t_btree **ast) +{ + ft_exec(&(*ast)->right); + data_singleton()->script.lc = 0; +// btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 83084619..33d99589 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/02/05 22:19:21 by ariard ### ########.fr */ +/* Updated: 2017/02/06 18:34:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index e7baf181..68fa713b 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 17:05:21 by ariard ### ########.fr */ +/* Updated: 2017/02/06 18:12:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 772792d4..a7070ea0 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/06 14:53:27 by ariard ### ########.fr */ +/* Updated: 2017/02/06 18:58:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,9 @@ t_execmap g_execmap[] = {TK_GREAT, &exec_great}, {TK_DGREAT, &exec_dgreat}, {TK_WHILE, &exec_while}, + {TK_IF, &exec_if}, + {TK_ELIF, &exec_elif}, + {TK_ELSE, &exec_else}, {TK_COMMAND | TK_SUBSHELL, &exec_command}, {0, 0}, }; diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 0a2c1b85..8ca640d5 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/06 16:14:40 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:16:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,6 +38,8 @@ char *ft_putast(void *nodein) return ("IF"); else if (node->type == TK_ELIF) return ("ELIF"); + else if (node->type == TK_ELSE) + return ("ELSE"); else if (node->type == TK_NEWLINE) return ("NEW"); else if (node->type == TK_GREAT) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 0f363b1f..c2f55c2e 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 16:33:52 by ariard ### ########.fr */ +/* Updated: 2017/02/06 18:54:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index f48168a4..eb2b3d9c 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/06 17:59:20 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:26:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,14 +26,14 @@ int shell_script() DG("after post_tokenize"); token_print(token); -// while (token) -// { + while (token) + { if (parse(&ast, &token)) return (1); - btree_print(STDBUG, ast, &ft_putast); - // if (ft_exec(&ast)) - // return (1); +// btree_print(STDBUG, ast, &ft_putast); + if (ft_exec(&ast)) + return (1); ast = NULL; -// } + } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 943e8d47..de27102c 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/06 17:11:26 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:26:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_parser g_parser[] = { - {TK_WHILE | TK_IF | TK_ELIF | TK_NEWLINE | TK_SEMI, &get_sub_instruction}, + {TK_WHILE | TK_IF | TK_ELIF | TK_NEWLINE | TK_SEMI | TK_ELSE, &get_sub_instruction}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c index a025bcdb..00e7e110 100644 --- a/42sh/src/parser/get_instruction.c +++ b/42sh/src/parser/get_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/06 17:17:59 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:18:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/get_sub_instruction.c b/42sh/src/parser/get_sub_instruction.c index c2c5f48f..59519558 100644 --- a/42sh/src/parser/get_sub_instruction.c +++ b/42sh/src/parser/get_sub_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/05 22:05:26 by ariard #+# #+# */ -/* Updated: 2017/02/06 15:49:31 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:08:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,8 @@ int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst) return (parse_if(ast, start, lst)); else if (token->type == TK_ELIF) return (parse_elif(ast, start, lst)); + else if (token->type == TK_ELSE) + return (parse_else(ast, start, lst)); else if (token->type == TK_SEMI) return (parse_separator(ast, start, lst)); return (0); diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parse.c index e41d5f8d..b96698de 100644 --- a/42sh/src/parser/parse.c +++ b/42sh/src/parser/parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ -/* Updated: 2017/02/06 17:42:08 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:26:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_elif.c b/42sh/src/parser/parse_elif.c index 4fdfb249..4867a3b9 100644 --- a/42sh/src/parser/parse_elif.c +++ b/42sh/src/parser/parse_elif.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 14:50:54 by ariard #+# #+# */ -/* Updated: 2017/02/06 17:54:22 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:22:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ static int parse_after_elif(t_btree **ast, t_list **lst) while ((temp = temp->next)) { token = temp->content; - if (nest == 0 && (token->type & TK_ELIF)) + if (nest == 0 && (token->type & (TK_ELIF | TK_ELSE))) break; else if (token->type & TK_IF) nest++; @@ -52,7 +52,7 @@ static int parse_loop(t_btree **ast, t_list **start, t_list **lst) token = (*lst)->content; if (token->type & TK_THEN) nest++; - else if (token->type & TK_ELIF) + else if (token->type & (TK_ELIF | TK_ELSE)) nest--; if (nest == 1 && (token->type & TK_THEN)) break; diff --git a/42sh/src/parser/parse_else.c b/42sh/src/parser/parse_else.c new file mode 100644 index 00000000..b343eb9b --- /dev/null +++ b/42sh/src/parser/parse_else.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_elif.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 14:50:54 by ariard #+# #+# */ +/* Updated: 2017/02/06 19:22:56 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static int parse_after_else(t_btree **ast, t_list **lst) +{ + t_list *temp; + + temp = (*lst); + while ((temp = temp->next)); + if (temp) + ft_parse(ast, &temp); + return (0); +} + +static int parse_loop(t_btree **ast, t_list **start, t_list **lst) +{ + delete_newline(start, lst); + ft_parse(&(*ast)->right, lst); + return (0); +} + +int parse_else(t_btree **ast, t_list **start, t_list **lst) +{ + t_btree *new_ast; + + parse_after_else(ast, lst); + parse_head(ast, &new_ast, start, lst); + *start = *lst; + parse_loop(&new_ast, start, lst); + return (0); +} diff --git a/42sh/src/parser/parse_if.c b/42sh/src/parser/parse_if.c index 4af694c4..f1e13014 100644 --- a/42sh/src/parser/parse_if.c +++ b/42sh/src/parser/parse_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/05 23:15:23 by ariard #+# #+# */ -/* Updated: 2017/02/06 17:46:01 by ariard ### ########.fr */ +/* Updated: 2017/02/06 19:20:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -72,7 +72,7 @@ static int parse_head_condition(t_btree **ast, int parse_if(t_btree **ast, t_list **start, t_list **lst) { t_btree *new_ast; - + parse_after_condition(ast, start, lst); parse_head_condition(ast, &new_ast, start, lst); return (0); diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index b3c89ccb..23a2038f 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -83,7 +83,6 @@ int parse_head(t_btree **ast, del = (*lst); *lst = (*lst)->next; //check that// - del->next = NULL; ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); delete_newline(start, lst); return (0); From c0977b20ff3d0b329f9974d6f98a6f6b8e6461dc Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 6 Feb 2017 21:02:37 +0100 Subject: [PATCH 033/206] until exec ok --- 42sh/Makefile | 1 + 42sh/file1 | 1 - 42sh/includes/exec.h | 3 ++- 42sh/includes/lexer.h | 3 ++- 42sh/includes/parser.h | 5 ++++- 42sh/sample/4lines.sh | 2 +- 42sh/sample/until.sh | 8 ++++++++ 42sh/sample/until2.sh | 16 ++++++++++++++++ 42sh/sample/while2.sh | 2 +- 42sh/src/exec/exec_if.c | 2 +- 42sh/src/exec/exec_until.c | 25 +++++++++++++++++++++++++ 42sh/src/exec/ft_exec.c | 3 ++- 42sh/src/lexer/ft_lexer.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 4 +++- 42sh/src/main/ft_putast.c | 4 +++- 42sh/src/main/shell_script.c | 4 ++-- 42sh/src/parser/ft_parse.c | 4 ++-- 42sh/src/parser/get_instruction.c | 4 ++-- 42sh/src/parser/get_sub_instruction.c | 14 +++++++------- 19 files changed, 83 insertions(+), 24 deletions(-) create mode 100644 42sh/sample/until.sh create mode 100644 42sh/sample/until2.sh create mode 100644 42sh/src/exec/exec_until.c diff --git a/42sh/Makefile b/42sh/Makefile index 00263478..147fe340 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -55,6 +55,7 @@ exec/exec_while.c\ exec/exec_if.c\ exec/exec_else.c\ exec/exec_elif.c\ +exec/exec_until.c\ exec/ft_exec.c\ exec/ft_findexec.c\ exec/launch_process.c\ diff --git a/42sh/file1 b/42sh/file1 index ce013625..e69de29b 100644 --- a/42sh/file1 +++ b/42sh/file1 @@ -1 +0,0 @@ -hello diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 4e4279a3..6f6158d4 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/02/06 18:59:24 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:41:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -92,6 +92,7 @@ int exec_while(t_btree **ast); int exec_if(t_btree **ast); int exec_elif(t_btree **ast); int exec_else(t_btree **ast); +int exec_until(t_btree **ast); int exec_default(t_btree **ast); diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 96e9a93c..98fd2c83 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/06 15:13:20 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:35:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,6 +52,7 @@ typedef long long t_type; # define TK_FI (1 << 25) # define TK_ELIF (1 << 26) # define TK_ELSE (1 << 27) +# define TK_UNTIL (1 << 28) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 71d07a8d..538825a3 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/06 19:02:48 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:35:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,9 @@ # include "minishell.h" +#define INSTRUCTION (TK_WHILE | TK_IF | TK_ELIF | TK_NEWLINE | TK_SEMI\ + | TK_ELSE | TK_UNTIL) + typedef struct s_parser t_parser; typedef struct s_ld t_ld; typedef struct s_astnode t_astnode; diff --git a/42sh/sample/4lines.sh b/42sh/sample/4lines.sh index 2ef2d5ba..d6610634 100644 --- a/42sh/sample/4lines.sh +++ b/42sh/sample/4lines.sh @@ -1,2 +1,2 @@ ls | cat - +pwd | cat > file1 diff --git a/42sh/sample/until.sh b/42sh/sample/until.sh new file mode 100644 index 00000000..c9394c45 --- /dev/null +++ b/42sh/sample/until.sh @@ -0,0 +1,8 @@ +until [ 1 ] +do + echo LOOP1 + until [ 1 ] + do + echo hello + done +done > file1 diff --git a/42sh/sample/until2.sh b/42sh/sample/until2.sh new file mode 100644 index 00000000..28aeabc8 --- /dev/null +++ b/42sh/sample/until2.sh @@ -0,0 +1,16 @@ +ONE=0 +while [ $ONE -le 10 ] +do + TWO=0 + while [ $TWO -le 10 ] + do + THREE=0 + while [ $THREE -le 10 ] + do + echo world + ((THREE++)) + done + ((TWO++)) + done + ((ONE++)) +done > file1 diff --git a/42sh/sample/while2.sh b/42sh/sample/while2.sh index d3d0f5e4..6549f933 100644 --- a/42sh/sample/while2.sh +++ b/42sh/sample/while2.sh @@ -13,4 +13,4 @@ do ((TWO--)) done ((ONE--)) -done +done > file1 diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index 82c18ec9..43c7aa87 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/02/06 18:55:00 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:39:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_until.c b/42sh/src/exec/exec_until.c new file mode 100644 index 00000000..62b2a567 --- /dev/null +++ b/42sh/src/exec/exec_until.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_until.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ +/* Updated: 2017/02/06 20:42:21 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_until(t_btree **ast) +{ + int test; + + test = 0; + while (test++ != 10) + ft_exec(&(*ast)->right); + +// btree_delone(ast, &ast_free); + return (0); +} diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index a7070ea0..a97029b3 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/06 18:58:09 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:38:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,7 @@ t_execmap g_execmap[] = {TK_IF, &exec_if}, {TK_ELIF, &exec_elif}, {TK_ELSE, &exec_else}, + {TK_UNTIL, &exec_until}, {TK_COMMAND | TK_SUBSHELL, &exec_command}, {0, 0}, }; diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 237127f8..6682e759 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/04 15:12:32 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:27:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 14ed745b..00fd33ca 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/06 15:10:59 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:37:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,6 +43,8 @@ int get_reserved_words(t_list **alst) token->type = TK_ELIF; else if (ft_strncmp(token->data, "else", 4) == 0) token->type = TK_ELSE; + else if (ft_strncmp(token->data, "until", 5) == 0) + token->type = TK_UNTIL; } } previous_token = token; diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 8ca640d5..acc9cfb8 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/06 19:16:59 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:37:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,8 @@ char *ft_putast(void *nodein) return ("ELIF"); else if (node->type == TK_ELSE) return ("ELSE"); + else if (node->type == TK_UNTIL) + return ("UNTIL"); else if (node->type == TK_NEWLINE) return ("NEW"); else if (node->type == TK_GREAT) diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index eb2b3d9c..a04baf04 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:26:06 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:58:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ int shell_script() { if (parse(&ast, &token)) return (1); -// btree_print(STDBUG, ast, &ft_putast); + btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); ast = NULL; diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index de27102c..5631a0a8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/06 19:26:04 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:37:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_parser g_parser[] = { - {TK_WHILE | TK_IF | TK_ELIF | TK_NEWLINE | TK_SEMI | TK_ELSE, &get_sub_instruction}, + {INSTRUCTION, &get_sub_instruction}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c index 00e7e110..09910fd3 100644 --- a/42sh/src/parser/get_instruction.c +++ b/42sh/src/parser/get_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:18:17 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:30:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -101,7 +101,7 @@ int get_instruction(t_list **lst) token = (*lst)->content; if (token->type & TK_NEWLINE) return (get_simple_instruction(&start, lst)); - else if (token->type & TK_WHILE) + else if (token->type & (TK_WHILE | TK_UNTIL)) return (get_loop_instruction(&start, lst)); else if (token->type & TK_IF) return (get_condition_instruction(&start, lst)); diff --git a/42sh/src/parser/get_sub_instruction.c b/42sh/src/parser/get_sub_instruction.c index 59519558..c5935ce3 100644 --- a/42sh/src/parser/get_sub_instruction.c +++ b/42sh/src/parser/get_sub_instruction.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/05 22:05:26 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:08:17 by ariard ### ########.fr */ +/* Updated: 2017/02/06 20:37:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,17 +17,17 @@ int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst) t_token *token; token = (*lst)->content; - if (token->type == TK_NEWLINE) + if (token->type & TK_NEWLINE) return (parse_separator(ast, start, lst)); - else if (token->type == TK_WHILE) + else if (token->type & (TK_WHILE | TK_UNTIL)) return (parse_while(ast, start, lst)); - else if (token->type == TK_IF) + else if (token->type & TK_IF) return (parse_if(ast, start, lst)); - else if (token->type == TK_ELIF) + else if (token->type & TK_ELIF) return (parse_elif(ast, start, lst)); - else if (token->type == TK_ELSE) + else if (token->type & TK_ELSE) return (parse_else(ast, start, lst)); - else if (token->type == TK_SEMI) + else if (token->type & TK_SEMI) return (parse_separator(ast, start, lst)); return (0); } From 46ccf477559ad5eb86d332b2008446af74aba88b Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 6 Feb 2017 22:04:21 +0100 Subject: [PATCH 034/206] loop read again if script modifierd --- 42sh/a.out | Bin 0 -> 8432 bytes 42sh/file1 | 1 + 42sh/includes/minishell.h | 5 +++-- 42sh/infinite.sh | 3 +++ 42sh/sample/2lines.sh | 4 +++- 42sh/sample/infinite.sh | 1 + 42sh/src/exec/exec_while.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/main/read_script.c | 24 +++++++++++++--------- 42sh/src/main/shell_script.c | 38 +++++++++++++++++++++-------------- 42sh/test.c | 12 +++++++++++ 11 files changed, 63 insertions(+), 29 deletions(-) create mode 100755 42sh/a.out create mode 100644 42sh/infinite.sh create mode 100644 42sh/sample/infinite.sh create mode 100644 42sh/test.c diff --git a/42sh/a.out b/42sh/a.out new file mode 100755 index 0000000000000000000000000000000000000000..2dc8cdd28381c33fe07cde3ab6fc6298d5e101cc GIT binary patch literal 8432 zcmeHMJ!lj`6rM|>9vaN15r3kr!H8NU5iD$!oMg!bgC-`51j3k0F5b%CUAWsLxk3m= zAt@s1v=$4?l$HU7fQ?pSX`@6`NMR8~Jil*u=5Ftzb{4`sc>Ctfd-KiAH?y!i^ZNVO zpL>LeH4CxOB!p;#uC)m9K-ee=aR{1(N;#YuaK@c$S6N#xv3mEn9&z3wQOYsr=2(47 z(B7)A6UxWf#4e@GkkU`j`z(dhh}VY+5HF$P^f8^9w1|b8L%gD2N)@YBjd=GI-foql zecd3g@N_)HlbN(Pn=T-!5pPN19aaGJ$$M3HjBl#w7u?)!mC%UyMB%lnIQ^*9VIv@A zDL3clrlp&k$p?P@daNltt~rH%BSshrpIp~XsFeMQF-!TPILw zK}GA{K+kBOb&yk-FWd1wj0*eVJQ(Acg?NkU#cF+{|Iu>MPiMO?bz>ZEDo7G1Vc6d- zJLK=Q^2v`8!+>GHFkl!k3>XFs1BL;^z`thTdUE+ga`B6mT)8lczBZg6>~X`{j=`*n z&0{c&cell|^R4YZe>OH>RVtNbXY1^Ga`B}#@nW^owS?-Sm7`^t#Av0?O+TNwfu(WH}*MLD*sa{Eb~9672nntR7tg;hBX#(}1lWJ@8&J>W8qXL=%>6+z{^^gAB%?$Gc-jX!i>^3&PO= literal 0 HcmV?d00001 diff --git a/42sh/file1 b/42sh/file1 index e69de29b..ce09b016 100644 --- a/42sh/file1 +++ b/42sh/file1 @@ -0,0 +1 @@ +/Users/ariard/Projects/42sh diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index f5831140..8095048c 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/06 18:33:10 by ariard ### ########.fr */ +/* Updated: 2017/02/06 21:23:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,6 +51,7 @@ struct s_comp struct s_script { char *buffer; + int fd; int size; int lc; }; @@ -84,7 +85,7 @@ int shell_single_command(char *command); int read_script(char *file); int shell_script(void); -t_list **shell_get_ast(char *command); +int get_script_content(t_script *script); void ft_expand_dollar(char **av, char **env); char *ft_findexec(char *path, char *file); diff --git a/42sh/infinite.sh b/42sh/infinite.sh new file mode 100644 index 00000000..cac2d64c --- /dev/null +++ b/42sh/infinite.sh @@ -0,0 +1,3 @@ +echo hello >> infinite.sh +hello +hello diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh index cf36d0bf..22372171 100644 --- a/42sh/sample/2lines.sh +++ b/42sh/sample/2lines.sh @@ -1 +1,3 @@ -ls ; pwd > file1 ; ls | cat +ls ; pwd > file1 +ls | cat +echo hello world diff --git a/42sh/sample/infinite.sh b/42sh/sample/infinite.sh new file mode 100644 index 00000000..4e3d731d --- /dev/null +++ b/42sh/sample/infinite.sh @@ -0,0 +1 @@ +echo "echo hello" >> sample/infinite.sh diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 68fa713b..20883c67 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 18:12:10 by ariard ### ########.fr */ +/* Updated: 2017/02/06 22:03:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index a97029b3..9bf82ba0 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/06 20:38:07 by ariard ### ########.fr */ +/* Updated: 2017/02/06 21:03:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index a8f05050..9a45defd 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,29 +6,34 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/02/03 19:55:38 by ariard ### ########.fr */ +/* Updated: 2017/02/06 21:58:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -static int rs_loop(char *file, t_script *script) +int get_script_content(t_script *script) { - int fd; char *line; line = NULL; - if ((fd = open(file, O_RDONLY)) == -1) - return (0); - while ((get_next_line(fd, &line)) > 0) + while (((get_next_line(script->fd, &line))) > 0) { ft_strappend(&script->buffer, line); ft_strappend(&script->buffer, "\n"); ft_strdel(&line); script->size += ft_strlen(script->buffer); } - script->buffer[ft_strlen(script->buffer) - 1] = 0; - close(fd); + if (script->size) + script->buffer[ft_strlen(script->buffer) - 1] = 0; + return (script->size); +} + +static int rs_read(char *file, t_script *script) +{ + if ((script->fd = open(file, O_RDONLY)) == -1) + return (0); + get_script_content(script); if (script->size > 0) { data_singleton()->opts &= ~SHELL_MODE_MASK; @@ -42,6 +47,7 @@ static int rs_setup(t_script *script) ft_bzero(script, sizeof(script)); script->buffer = NULL; script->size = 0; + script->fd = -1; return (0); } @@ -54,7 +60,7 @@ int read_script(char *file) return (0); if (rs_setup(script) < 0) return (-1); - if (rs_loop(file, script) < 0) + if (rs_read(file, script) < 0) return (-1); DG("{inv}{bol}{gre}read of script{eoc} script detected"); return (1); diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index a04baf04..fae45eeb 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:58:54 by ariard ### ########.fr */ +/* Updated: 2017/02/06 22:03:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,26 +14,34 @@ int shell_script() { - t_list *token; - t_btree *ast; - t_list *list_ast; + t_list *token; + t_btree *ast; + t_list *list_ast; + t_script *script; token = NULL; ast = NULL; list_ast = NULL; - if (ft_lexer(&token, &data_singleton()->script.buffer) || !token) - return (1); - DG("after post_tokenize"); - token_print(token); - - while (token) + script = &data_singleton()->script; + while (script->size) { - if (parse(&ast, &token)) + if (ft_lexer(&token, &data_singleton()->script.buffer) || !token) return (1); - btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); - ast = NULL; + DG("after post_tokenize"); + token_print(token); + + while (token) + { + if (parse(&ast, &token)) + return (1); + btree_print(STDBUG, ast, &ft_putast); + if (ft_exec(&ast)) + return (1); + ast = NULL; + } + script->size = 0; + get_script_content(script); } + close(script->fd); return (0); } diff --git a/42sh/test.c b/42sh/test.c new file mode 100644 index 00000000..01d83581 --- /dev/null +++ b/42sh/test.c @@ -0,0 +1,12 @@ +#include + +int main(void) +{ + int loop; + + loop = 1; + printf("hello world"); + if (loop) + main(); + return (0); +} From 5ec1e4c29f005bd2ae45dfe69ced60190013c0ff Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 8 Feb 2017 23:28:18 +0100 Subject: [PATCH 035/206] before test pushdown automata --- 42sh/a.out | Bin 8432 -> 0 bytes 42sh/blind.text | 16 ++++++++++++++++ 42sh/file1 | 1 - 42sh/includes/minishell.h | 2 +- 42sh/infinite.sh | 3 --- 42sh/objs/builtin/bt_read_get.d | 7 +++++++ 42sh/objs/builtin/bt_read_parse.d | 7 +++++++ 42sh/objs/builtin/bt_read_term.d | 7 +++++++ 42sh/objs/builtin/builtin_cd.d | 7 +++++++ 42sh/objs/builtin/builtin_echo.d | 7 +++++++ 42sh/objs/builtin/builtin_env.d | 7 +++++++ 42sh/objs/builtin/builtin_exit.d | 7 +++++++ 42sh/objs/builtin/builtin_read.d | 7 +++++++ 42sh/objs/builtin/builtin_setenv.d | 7 +++++++ 42sh/objs/builtin/builtin_unsetenv.d | 7 +++++++ 42sh/objs/builtin/is_builtin.d | 7 +++++++ 42sh/objs/exec/ast_free.d | 7 +++++++ 42sh/objs/exec/exec_ampersand.d | 7 +++++++ 42sh/objs/exec/exec_and_if.d | 7 +++++++ 42sh/objs/exec/exec_command.d | 7 +++++++ 42sh/objs/exec/exec_default.d | 7 +++++++ 42sh/objs/exec/exec_dgreat.d | 7 +++++++ 42sh/objs/exec/exec_elif.d | 7 +++++++ 42sh/objs/exec/exec_else.d | 7 +++++++ 42sh/objs/exec/exec_great.d | 7 +++++++ 42sh/objs/exec/exec_if.d | 7 +++++++ 42sh/objs/exec/exec_less.d | 7 +++++++ 42sh/objs/exec/exec_or_if.d | 7 +++++++ 42sh/objs/exec/exec_pipe.d | 7 +++++++ 42sh/objs/exec/exec_semi.d | 7 +++++++ 42sh/objs/exec/exec_until.d | 7 +++++++ 42sh/objs/exec/exec_while.d | 7 +++++++ 42sh/objs/exec/ft_exec.d | 7 +++++++ 42sh/objs/exec/ft_findexec.d | 7 +++++++ 42sh/objs/exec/launch_process.d | 7 +++++++ 42sh/objs/exec/process_redirect.d | 7 +++++++ 42sh/objs/exec/process_reset.d | 7 +++++++ 42sh/objs/exec/process_setexec.d | 7 +++++++ 42sh/objs/exec/process_setgroup.d | 7 +++++++ 42sh/objs/exec/process_setsig.d | 7 +++++++ 42sh/objs/exec/set_exitstatus.d | 7 +++++++ 42sh/objs/glob/dir_glob.d | 7 +++++++ 42sh/objs/glob/expand_brace.d | 7 +++++++ 42sh/objs/glob/expand_esc.d | 7 +++++++ 42sh/objs/glob/ft_strsplit_esc.d | 7 +++++++ 42sh/objs/glob/ft_strsplit_spe.d | 7 +++++++ 42sh/objs/glob/glob.d | 6 ++++++ 42sh/objs/glob/is_char_esc.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_back.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_clear.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_del.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_front.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_new.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_order.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_pushback.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_pushfront.d | 8 ++++++++ 42sh/objs/glob/lib_perso/ft_ld_reverse.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_size.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_swap.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_ld_to_tab.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_strjoinf.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_tabdel.d | 7 +++++++ 42sh/objs/glob/lib_perso/ft_tablen.d | 4 ++++ 42sh/objs/glob/match_pattern.d | 7 +++++++ 42sh/objs/job-control/builtin_bg.d | 7 +++++++ 42sh/objs/job-control/builtin_fg.d | 7 +++++++ 42sh/objs/job-control/builtin_jobs.d | 7 +++++++ 42sh/objs/job-control/do_job_notification.d | 8 ++++++++ 42sh/objs/job-control/job_addprocess.d | 7 +++++++ 42sh/objs/job-control/job_cmp_id.d | 7 +++++++ 42sh/objs/job-control/job_format.d | 7 +++++++ 42sh/objs/job-control/job_format_head.d | 7 +++++++ 42sh/objs/job-control/job_free.d | 7 +++++++ 42sh/objs/job-control/job_getprocess.d | 7 +++++++ 42sh/objs/job-control/job_getrank.d | 7 +++++++ 42sh/objs/job-control/job_is_completed.d | 7 +++++++ 42sh/objs/job-control/job_is_stopped.d | 7 +++++++ 42sh/objs/job-control/job_kill_all.d | 7 +++++++ 42sh/objs/job-control/job_notify_change.d | 7 +++++++ 42sh/objs/job-control/job_notify_new.d | 7 +++++++ 42sh/objs/job-control/job_remove.d | 7 +++++++ 42sh/objs/job-control/job_run.d | 7 +++++++ 42sh/objs/job-control/job_update_id.d | 7 +++++++ 42sh/objs/job-control/job_update_status.d | 7 +++++++ 42sh/objs/job-control/job_wait.d | 7 +++++++ 42sh/objs/job-control/mark_job_as_running.d | 8 ++++++++ 42sh/objs/job-control/process_cmp_pid.d | 7 +++++++ 42sh/objs/job-control/process_format.d | 7 +++++++ 42sh/objs/job-control/process_free.d | 7 +++++++ 42sh/objs/job-control/process_mark_status.d | 8 ++++++++ 42sh/objs/job-control/put_job_in_background.d | 8 ++++++++ 42sh/objs/job-control/put_job_in_foreground.d | 8 ++++++++ 42sh/objs/job-control/sigchld_handler.d | 7 +++++++ 42sh/objs/job-control/sigint_handler.d | 7 +++++++ 42sh/objs/job-control/sigtstp_handler.d | 7 +++++++ 42sh/objs/job-control/sigttin_handler.d | 7 +++++++ 42sh/objs/job-control/sigttou_handler.d | 7 +++++++ 42sh/objs/lexer/command_getoutput.d | 7 +++++++ 42sh/objs/lexer/ft_lexer.d | 7 +++++++ 42sh/objs/lexer/ft_post_tokenize.d | 7 +++++++ 42sh/objs/lexer/ft_tokenize.d | 7 +++++++ 42sh/objs/lexer/get_lexer_state.d | 7 +++++++ 42sh/objs/lexer/get_reserved_words.d | 7 +++++++ 42sh/objs/lexer/lexer_backslash.d | 7 +++++++ 42sh/objs/lexer/lexer_comment.d | 7 +++++++ 42sh/objs/lexer/lexer_default.d | 7 +++++++ 42sh/objs/lexer/lexer_delim.d | 7 +++++++ 42sh/objs/lexer/lexer_dquote.d | 7 +++++++ 42sh/objs/lexer/lexer_great.d | 7 +++++++ 42sh/objs/lexer/lexer_greatand.d | 7 +++++++ 42sh/objs/lexer/lexer_less.d | 7 +++++++ 42sh/objs/lexer/lexer_lessand.d | 7 +++++++ 42sh/objs/lexer/lexer_newline.d | 7 +++++++ 42sh/objs/lexer/lexer_number.d | 7 +++++++ 42sh/objs/lexer/lexer_quote.d | 7 +++++++ 42sh/objs/lexer/lexer_sep.d | 7 +++++++ 42sh/objs/lexer/lexer_special.d | 7 +++++++ 42sh/objs/lexer/lexer_then.d | 7 +++++++ 42sh/objs/lexer/lexer_var.d | 7 +++++++ 42sh/objs/lexer/lexer_word.d | 7 +++++++ 42sh/objs/lexer/reduce_bquotes.d | 7 +++++++ 42sh/objs/lexer/reduce_parens.d | 7 +++++++ 42sh/objs/lexer/token_append.d | 7 +++++++ 42sh/objs/lexer/token_cmp_type.d | 7 +++++++ 42sh/objs/lexer/token_expand_var.d | 7 +++++++ 42sh/objs/lexer/token_free.d | 7 +++++++ 42sh/objs/lexer/token_init.d | 7 +++++++ 42sh/objs/lexer/token_print.d | 7 +++++++ 42sh/objs/main/data_exit.d | 7 +++++++ 42sh/objs/main/data_init.d | 7 +++++++ 42sh/objs/main/data_singleton.d | 7 +++++++ 42sh/objs/main/ft_cleanup.d | 7 +++++++ 42sh/objs/main/ft_print_all_ast.d | 7 +++++++ 42sh/objs/main/ft_putast.d | 7 +++++++ 42sh/objs/main/ft_putast2.d | 7 +++++++ 42sh/objs/main/lib_expansion.d | 7 +++++++ 42sh/objs/main/main.d | 7 +++++++ 42sh/objs/main/read_script.d | 7 +++++++ 42sh/objs/main/shell_exit.d | 7 +++++++ 42sh/objs/main/shell_get_avdata.d | 7 +++++++ 42sh/objs/main/shell_get_opts.d | 7 +++++++ 42sh/objs/main/shell_init.d | 7 +++++++ 42sh/objs/main/shell_script.d | 7 +++++++ 42sh/objs/main/sig_handler.d | 7 +++++++ 42sh/objs/parser/ft_parse.d | 7 +++++++ 42sh/objs/parser/get_instruction.d | 7 +++++++ 42sh/objs/parser/get_sub_instruction.d | 7 +++++++ 42sh/objs/parser/parse.d | 7 +++++++ 42sh/objs/parser/parse_dgreat.d | 7 +++++++ 42sh/objs/parser/parse_dless.d | 7 +++++++ 42sh/objs/parser/parse_do.d | 7 +++++++ 42sh/objs/parser/parse_done.d | 7 +++++++ 42sh/objs/parser/parse_elif.d | 7 +++++++ 42sh/objs/parser/parse_else.d | 7 +++++++ 42sh/objs/parser/parse_great.d | 7 +++++++ 42sh/objs/parser/parse_greatand.d | 7 +++++++ 42sh/objs/parser/parse_if.d | 7 +++++++ 42sh/objs/parser/parse_less.d | 7 +++++++ 42sh/objs/parser/parse_lessand.d | 7 +++++++ 42sh/objs/parser/parse_separator.d | 7 +++++++ 42sh/objs/parser/parse_subshell.d | 7 +++++++ 42sh/objs/parser/parse_while.d | 7 +++++++ 42sh/objs/parser/parse_word.d | 7 +++++++ 42sh/sample/while_error.sh | 6 ++++++ 42sh/src/exec/exec_while.c | 2 +- 42sh/src/main/read_script.c | 2 +- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/parse_while.c | 1 - 42sh/test.c | 12 ------------ 42sh/test.sh | 9 --------- 170 files changed, 1134 insertions(+), 30 deletions(-) delete mode 100755 42sh/a.out delete mode 100644 42sh/file1 delete mode 100644 42sh/infinite.sh create mode 100644 42sh/objs/builtin/bt_read_get.d create mode 100644 42sh/objs/builtin/bt_read_parse.d create mode 100644 42sh/objs/builtin/bt_read_term.d create mode 100644 42sh/objs/builtin/builtin_cd.d create mode 100644 42sh/objs/builtin/builtin_echo.d create mode 100644 42sh/objs/builtin/builtin_env.d create mode 100644 42sh/objs/builtin/builtin_exit.d create mode 100644 42sh/objs/builtin/builtin_read.d create mode 100644 42sh/objs/builtin/builtin_setenv.d create mode 100644 42sh/objs/builtin/builtin_unsetenv.d create mode 100644 42sh/objs/builtin/is_builtin.d create mode 100644 42sh/objs/exec/ast_free.d create mode 100644 42sh/objs/exec/exec_ampersand.d create mode 100644 42sh/objs/exec/exec_and_if.d create mode 100644 42sh/objs/exec/exec_command.d create mode 100644 42sh/objs/exec/exec_default.d create mode 100644 42sh/objs/exec/exec_dgreat.d create mode 100644 42sh/objs/exec/exec_elif.d create mode 100644 42sh/objs/exec/exec_else.d create mode 100644 42sh/objs/exec/exec_great.d create mode 100644 42sh/objs/exec/exec_if.d create mode 100644 42sh/objs/exec/exec_less.d create mode 100644 42sh/objs/exec/exec_or_if.d create mode 100644 42sh/objs/exec/exec_pipe.d create mode 100644 42sh/objs/exec/exec_semi.d create mode 100644 42sh/objs/exec/exec_until.d create mode 100644 42sh/objs/exec/exec_while.d create mode 100644 42sh/objs/exec/ft_exec.d create mode 100644 42sh/objs/exec/ft_findexec.d create mode 100644 42sh/objs/exec/launch_process.d create mode 100644 42sh/objs/exec/process_redirect.d create mode 100644 42sh/objs/exec/process_reset.d create mode 100644 42sh/objs/exec/process_setexec.d create mode 100644 42sh/objs/exec/process_setgroup.d create mode 100644 42sh/objs/exec/process_setsig.d create mode 100644 42sh/objs/exec/set_exitstatus.d create mode 100644 42sh/objs/glob/dir_glob.d create mode 100644 42sh/objs/glob/expand_brace.d create mode 100644 42sh/objs/glob/expand_esc.d create mode 100644 42sh/objs/glob/ft_strsplit_esc.d create mode 100644 42sh/objs/glob/ft_strsplit_spe.d create mode 100644 42sh/objs/glob/glob.d create mode 100644 42sh/objs/glob/is_char_esc.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_back.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_clear.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_del.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_front.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_new.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_order.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushback.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushfront.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_reverse.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_size.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_swap.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_to_tab.d create mode 100644 42sh/objs/glob/lib_perso/ft_strjoinf.d create mode 100644 42sh/objs/glob/lib_perso/ft_tabdel.d create mode 100644 42sh/objs/glob/lib_perso/ft_tablen.d create mode 100644 42sh/objs/glob/match_pattern.d create mode 100644 42sh/objs/job-control/builtin_bg.d create mode 100644 42sh/objs/job-control/builtin_fg.d create mode 100644 42sh/objs/job-control/builtin_jobs.d create mode 100644 42sh/objs/job-control/do_job_notification.d create mode 100644 42sh/objs/job-control/job_addprocess.d create mode 100644 42sh/objs/job-control/job_cmp_id.d create mode 100644 42sh/objs/job-control/job_format.d create mode 100644 42sh/objs/job-control/job_format_head.d create mode 100644 42sh/objs/job-control/job_free.d create mode 100644 42sh/objs/job-control/job_getprocess.d create mode 100644 42sh/objs/job-control/job_getrank.d create mode 100644 42sh/objs/job-control/job_is_completed.d create mode 100644 42sh/objs/job-control/job_is_stopped.d create mode 100644 42sh/objs/job-control/job_kill_all.d create mode 100644 42sh/objs/job-control/job_notify_change.d create mode 100644 42sh/objs/job-control/job_notify_new.d create mode 100644 42sh/objs/job-control/job_remove.d create mode 100644 42sh/objs/job-control/job_run.d create mode 100644 42sh/objs/job-control/job_update_id.d create mode 100644 42sh/objs/job-control/job_update_status.d create mode 100644 42sh/objs/job-control/job_wait.d create mode 100644 42sh/objs/job-control/mark_job_as_running.d create mode 100644 42sh/objs/job-control/process_cmp_pid.d create mode 100644 42sh/objs/job-control/process_format.d create mode 100644 42sh/objs/job-control/process_free.d create mode 100644 42sh/objs/job-control/process_mark_status.d create mode 100644 42sh/objs/job-control/put_job_in_background.d create mode 100644 42sh/objs/job-control/put_job_in_foreground.d create mode 100644 42sh/objs/job-control/sigchld_handler.d create mode 100644 42sh/objs/job-control/sigint_handler.d create mode 100644 42sh/objs/job-control/sigtstp_handler.d create mode 100644 42sh/objs/job-control/sigttin_handler.d create mode 100644 42sh/objs/job-control/sigttou_handler.d create mode 100644 42sh/objs/lexer/command_getoutput.d create mode 100644 42sh/objs/lexer/ft_lexer.d create mode 100644 42sh/objs/lexer/ft_post_tokenize.d create mode 100644 42sh/objs/lexer/ft_tokenize.d create mode 100644 42sh/objs/lexer/get_lexer_state.d create mode 100644 42sh/objs/lexer/get_reserved_words.d create mode 100644 42sh/objs/lexer/lexer_backslash.d create mode 100644 42sh/objs/lexer/lexer_comment.d create mode 100644 42sh/objs/lexer/lexer_default.d create mode 100644 42sh/objs/lexer/lexer_delim.d create mode 100644 42sh/objs/lexer/lexer_dquote.d create mode 100644 42sh/objs/lexer/lexer_great.d create mode 100644 42sh/objs/lexer/lexer_greatand.d create mode 100644 42sh/objs/lexer/lexer_less.d create mode 100644 42sh/objs/lexer/lexer_lessand.d create mode 100644 42sh/objs/lexer/lexer_newline.d create mode 100644 42sh/objs/lexer/lexer_number.d create mode 100644 42sh/objs/lexer/lexer_quote.d create mode 100644 42sh/objs/lexer/lexer_sep.d create mode 100644 42sh/objs/lexer/lexer_special.d create mode 100644 42sh/objs/lexer/lexer_then.d create mode 100644 42sh/objs/lexer/lexer_var.d create mode 100644 42sh/objs/lexer/lexer_word.d create mode 100644 42sh/objs/lexer/reduce_bquotes.d create mode 100644 42sh/objs/lexer/reduce_parens.d create mode 100644 42sh/objs/lexer/token_append.d create mode 100644 42sh/objs/lexer/token_cmp_type.d create mode 100644 42sh/objs/lexer/token_expand_var.d create mode 100644 42sh/objs/lexer/token_free.d create mode 100644 42sh/objs/lexer/token_init.d create mode 100644 42sh/objs/lexer/token_print.d create mode 100644 42sh/objs/main/data_exit.d create mode 100644 42sh/objs/main/data_init.d create mode 100644 42sh/objs/main/data_singleton.d create mode 100644 42sh/objs/main/ft_cleanup.d create mode 100644 42sh/objs/main/ft_print_all_ast.d create mode 100644 42sh/objs/main/ft_putast.d create mode 100644 42sh/objs/main/ft_putast2.d create mode 100644 42sh/objs/main/lib_expansion.d create mode 100644 42sh/objs/main/main.d create mode 100644 42sh/objs/main/read_script.d create mode 100644 42sh/objs/main/shell_exit.d create mode 100644 42sh/objs/main/shell_get_avdata.d create mode 100644 42sh/objs/main/shell_get_opts.d create mode 100644 42sh/objs/main/shell_init.d create mode 100644 42sh/objs/main/shell_script.d create mode 100644 42sh/objs/main/sig_handler.d create mode 100644 42sh/objs/parser/ft_parse.d create mode 100644 42sh/objs/parser/get_instruction.d create mode 100644 42sh/objs/parser/get_sub_instruction.d create mode 100644 42sh/objs/parser/parse.d create mode 100644 42sh/objs/parser/parse_dgreat.d create mode 100644 42sh/objs/parser/parse_dless.d create mode 100644 42sh/objs/parser/parse_do.d create mode 100644 42sh/objs/parser/parse_done.d create mode 100644 42sh/objs/parser/parse_elif.d create mode 100644 42sh/objs/parser/parse_else.d create mode 100644 42sh/objs/parser/parse_great.d create mode 100644 42sh/objs/parser/parse_greatand.d create mode 100644 42sh/objs/parser/parse_if.d create mode 100644 42sh/objs/parser/parse_less.d create mode 100644 42sh/objs/parser/parse_lessand.d create mode 100644 42sh/objs/parser/parse_separator.d create mode 100644 42sh/objs/parser/parse_subshell.d create mode 100644 42sh/objs/parser/parse_while.d create mode 100644 42sh/objs/parser/parse_word.d create mode 100644 42sh/sample/while_error.sh delete mode 100644 42sh/test.c delete mode 100644 42sh/test.sh diff --git a/42sh/a.out b/42sh/a.out deleted file mode 100755 index 2dc8cdd28381c33fe07cde3ab6fc6298d5e101cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8432 zcmeHMJ!lj`6rM|>9vaN15r3kr!H8NU5iD$!oMg!bgC-`51j3k0F5b%CUAWsLxk3m= zAt@s1v=$4?l$HU7fQ?pSX`@6`NMR8~Jil*u=5Ftzb{4`sc>Ctfd-KiAH?y!i^ZNVO zpL>LeH4CxOB!p;#uC)m9K-ee=aR{1(N;#YuaK@c$S6N#xv3mEn9&z3wQOYsr=2(47 z(B7)A6UxWf#4e@GkkU`j`z(dhh}VY+5HF$P^f8^9w1|b8L%gD2N)@YBjd=GI-foql zecd3g@N_)HlbN(Pn=T-!5pPN19aaGJ$$M3HjBl#w7u?)!mC%UyMB%lnIQ^*9VIv@A zDL3clrlp&k$p?P@daNltt~rH%BSshrpIp~XsFeMQF-!TPILw zK}GA{K+kBOb&yk-FWd1wj0*eVJQ(Acg?NkU#cF+{|Iu>MPiMO?bz>ZEDo7G1Vc6d- zJLK=Q^2v`8!+>GHFkl!k3>XFs1BL;^z`thTdUE+ga`B6mT)8lczBZg6>~X`{j=`*n z&0{c&cell|^R4YZe>OH>RVtNbXY1^Ga`B}#@nW^owS?-Sm7`^t#Av0?O+TNwfu(WH}*MLD*sa{Eb~9672nntR7tg;hBX#(}1lWJ@8&J>W8qXL=%>6+z{^^gAB%?$Gc-jX!i>^3&PO= diff --git a/42sh/blind.text b/42sh/blind.text index 643ee9f9..c5e49f1b 100644 --- a/42sh/blind.text +++ b/42sh/blind.text @@ -1,3 +1,19 @@ do en condition, aller a la fin verifier les delimiters impleter erreur syntax : EOF, unexpected do, unexpected done, pareil if + +pipe_sequence + +';;' sep +'; ;' sep-newline_list-sep +' ; ' newline-sep +'ls | cat ; ls | cat' line break and_or separator and_or + +';;' sep-sep +';&' sep-sep +'&&' and_or "no_command" +'||' and_or "no_command" + + +while compound_list do compound_list done + linebreak term diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index ce09b016..00000000 --- a/42sh/file1 +++ /dev/null @@ -1 +0,0 @@ -/Users/ariard/Projects/42sh diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 8095048c..d1a944fb 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/06 21:23:44 by ariard ### ########.fr */ +/* Updated: 2017/02/06 23:47:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/infinite.sh b/42sh/infinite.sh deleted file mode 100644 index cac2d64c..00000000 --- a/42sh/infinite.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo hello >> infinite.sh -hello -hello diff --git a/42sh/objs/builtin/bt_read_get.d b/42sh/objs/builtin/bt_read_get.d new file mode 100644 index 00000000..78b00ce7 --- /dev/null +++ b/42sh/objs/builtin/bt_read_get.d @@ -0,0 +1,7 @@ +objs/builtin/bt_read_get.o: src/builtin/bt_read_get.c \ + includes/builtin_read.h includes/types.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/builtin.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/bt_read_parse.d b/42sh/objs/builtin/bt_read_parse.d new file mode 100644 index 00000000..2d3a3ea8 --- /dev/null +++ b/42sh/objs/builtin/bt_read_parse.d @@ -0,0 +1,7 @@ +objs/builtin/bt_read_parse.o: src/builtin/bt_read_parse.c \ + includes/builtin_read.h includes/types.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/builtin.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/bt_read_term.d b/42sh/objs/builtin/bt_read_term.d new file mode 100644 index 00000000..07daba8a --- /dev/null +++ b/42sh/objs/builtin/bt_read_term.d @@ -0,0 +1,7 @@ +objs/builtin/bt_read_term.o: src/builtin/bt_read_term.c \ + includes/builtin.h includes/types.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/builtin_read.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_cd.d b/42sh/objs/builtin/builtin_cd.d new file mode 100644 index 00000000..66bb4b5b --- /dev/null +++ b/42sh/objs/builtin/builtin_cd.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_cd.o: src/builtin/builtin_cd.c includes/builtin.h \ + includes/types.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/builtin_read.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_echo.d b/42sh/objs/builtin/builtin_echo.d new file mode 100644 index 00000000..cad6050e --- /dev/null +++ b/42sh/objs/builtin/builtin_echo.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_echo.o: src/builtin/builtin_echo.c \ + includes/builtin.h includes/types.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/builtin_read.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_env.d b/42sh/objs/builtin/builtin_env.d new file mode 100644 index 00000000..1721460e --- /dev/null +++ b/42sh/objs/builtin/builtin_env.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_env.o: src/builtin/builtin_env.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_exit.d b/42sh/objs/builtin/builtin_exit.d new file mode 100644 index 00000000..beea8dc7 --- /dev/null +++ b/42sh/objs/builtin/builtin_exit.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_exit.o: src/builtin/builtin_exit.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_read.d b/42sh/objs/builtin/builtin_read.d new file mode 100644 index 00000000..bd54b1aa --- /dev/null +++ b/42sh/objs/builtin/builtin_read.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_read.o: src/builtin/builtin_read.c \ + includes/builtin_read.h includes/types.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/builtin.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_setenv.d b/42sh/objs/builtin/builtin_setenv.d new file mode 100644 index 00000000..7132992c --- /dev/null +++ b/42sh/objs/builtin/builtin_setenv.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_setenv.o: src/builtin/builtin_setenv.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_unsetenv.d b/42sh/objs/builtin/builtin_unsetenv.d new file mode 100644 index 00000000..8471e723 --- /dev/null +++ b/42sh/objs/builtin/builtin_unsetenv.d @@ -0,0 +1,7 @@ +objs/builtin/builtin_unsetenv.o: src/builtin/builtin_unsetenv.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d new file mode 100644 index 00000000..ff7d76e5 --- /dev/null +++ b/42sh/objs/builtin/is_builtin.d @@ -0,0 +1,7 @@ +objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d new file mode 100644 index 00000000..b230ba88 --- /dev/null +++ b/42sh/objs/exec/ast_free.d @@ -0,0 +1,7 @@ +objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d new file mode 100644 index 00000000..3f76b13f --- /dev/null +++ b/42sh/objs/exec/exec_ampersand.d @@ -0,0 +1,7 @@ +objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d new file mode 100644 index 00000000..b77ed942 --- /dev/null +++ b/42sh/objs/exec/exec_and_if.d @@ -0,0 +1,7 @@ +objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d new file mode 100644 index 00000000..519b2761 --- /dev/null +++ b/42sh/objs/exec/exec_command.d @@ -0,0 +1,7 @@ +objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d new file mode 100644 index 00000000..e30f36b9 --- /dev/null +++ b/42sh/objs/exec/exec_default.d @@ -0,0 +1,7 @@ +objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_dgreat.d b/42sh/objs/exec/exec_dgreat.d new file mode 100644 index 00000000..2f6c9f37 --- /dev/null +++ b/42sh/objs/exec/exec_dgreat.d @@ -0,0 +1,7 @@ +objs/exec/exec_dgreat.o: src/exec/exec_dgreat.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d new file mode 100644 index 00000000..8bc0cedd --- /dev/null +++ b/42sh/objs/exec/exec_elif.d @@ -0,0 +1,7 @@ +objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d new file mode 100644 index 00000000..70ff1692 --- /dev/null +++ b/42sh/objs/exec/exec_else.d @@ -0,0 +1,7 @@ +objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/exec/exec_great.d b/42sh/objs/exec/exec_great.d new file mode 100644 index 00000000..939f9abb --- /dev/null +++ b/42sh/objs/exec/exec_great.d @@ -0,0 +1,7 @@ +objs/exec/exec_great.o: src/exec/exec_great.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d new file mode 100644 index 00000000..69ca093e --- /dev/null +++ b/42sh/objs/exec/exec_if.d @@ -0,0 +1,7 @@ +objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/job_control.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/exec/exec_less.d b/42sh/objs/exec/exec_less.d new file mode 100644 index 00000000..d6a05514 --- /dev/null +++ b/42sh/objs/exec/exec_less.d @@ -0,0 +1,7 @@ +objs/exec/exec_less.o: src/exec/exec_less.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d new file mode 100644 index 00000000..c8524f9c --- /dev/null +++ b/42sh/objs/exec/exec_or_if.d @@ -0,0 +1,7 @@ +objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d new file mode 100644 index 00000000..fa4cc8c0 --- /dev/null +++ b/42sh/objs/exec/exec_pipe.d @@ -0,0 +1,7 @@ +objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d new file mode 100644 index 00000000..5f926910 --- /dev/null +++ b/42sh/objs/exec/exec_semi.d @@ -0,0 +1,7 @@ +objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d new file mode 100644 index 00000000..1bbada62 --- /dev/null +++ b/42sh/objs/exec/exec_until.d @@ -0,0 +1,7 @@ +objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_while.d b/42sh/objs/exec/exec_while.d new file mode 100644 index 00000000..0f8ee4e8 --- /dev/null +++ b/42sh/objs/exec/exec_while.d @@ -0,0 +1,7 @@ +objs/exec/exec_while.o: src/exec/exec_while.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/ft_exec.d b/42sh/objs/exec/ft_exec.d new file mode 100644 index 00000000..1e838a8e --- /dev/null +++ b/42sh/objs/exec/ft_exec.d @@ -0,0 +1,7 @@ +objs/exec/ft_exec.o: src/exec/ft_exec.c includes/exec.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/job_control.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/exec/ft_findexec.d b/42sh/objs/exec/ft_findexec.d new file mode 100644 index 00000000..17d1f67c --- /dev/null +++ b/42sh/objs/exec/ft_findexec.d @@ -0,0 +1,7 @@ +objs/exec/ft_findexec.o: src/exec/ft_findexec.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/exec/launch_process.d b/42sh/objs/exec/launch_process.d new file mode 100644 index 00000000..24c10872 --- /dev/null +++ b/42sh/objs/exec/launch_process.d @@ -0,0 +1,7 @@ +objs/exec/launch_process.o: src/exec/launch_process.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_redirect.d b/42sh/objs/exec/process_redirect.d new file mode 100644 index 00000000..5c8f53f2 --- /dev/null +++ b/42sh/objs/exec/process_redirect.d @@ -0,0 +1,7 @@ +objs/exec/process_redirect.o: src/exec/process_redirect.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_reset.d b/42sh/objs/exec/process_reset.d new file mode 100644 index 00000000..11c6fb63 --- /dev/null +++ b/42sh/objs/exec/process_reset.d @@ -0,0 +1,7 @@ +objs/exec/process_reset.o: src/exec/process_reset.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_setexec.d b/42sh/objs/exec/process_setexec.d new file mode 100644 index 00000000..06847f89 --- /dev/null +++ b/42sh/objs/exec/process_setexec.d @@ -0,0 +1,7 @@ +objs/exec/process_setexec.o: src/exec/process_setexec.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_setgroup.d b/42sh/objs/exec/process_setgroup.d new file mode 100644 index 00000000..aaa7fd96 --- /dev/null +++ b/42sh/objs/exec/process_setgroup.d @@ -0,0 +1,7 @@ +objs/exec/process_setgroup.o: src/exec/process_setgroup.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_setsig.d b/42sh/objs/exec/process_setsig.d new file mode 100644 index 00000000..7f365b62 --- /dev/null +++ b/42sh/objs/exec/process_setsig.d @@ -0,0 +1,7 @@ +objs/exec/process_setsig.o: src/exec/process_setsig.c includes/exec.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/set_exitstatus.d b/42sh/objs/exec/set_exitstatus.d new file mode 100644 index 00000000..7fc0037d --- /dev/null +++ b/42sh/objs/exec/set_exitstatus.d @@ -0,0 +1,7 @@ +objs/exec/set_exitstatus.o: src/exec/set_exitstatus.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/glob/dir_glob.d b/42sh/objs/glob/dir_glob.d new file mode 100644 index 00000000..ac281bcc --- /dev/null +++ b/42sh/objs/glob/dir_glob.d @@ -0,0 +1,7 @@ +objs/glob/dir_glob.o: src/glob/dir_glob.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/expand_brace.d b/42sh/objs/glob/expand_brace.d new file mode 100644 index 00000000..e8830490 --- /dev/null +++ b/42sh/objs/glob/expand_brace.d @@ -0,0 +1,7 @@ +objs/glob/expand_brace.o: src/glob/expand_brace.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/expand_esc.d b/42sh/objs/glob/expand_esc.d new file mode 100644 index 00000000..a1338a4a --- /dev/null +++ b/42sh/objs/glob/expand_esc.d @@ -0,0 +1,7 @@ +objs/glob/expand_esc.o: src/glob/expand_esc.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/ft_strsplit_esc.d b/42sh/objs/glob/ft_strsplit_esc.d new file mode 100644 index 00000000..a483f37c --- /dev/null +++ b/42sh/objs/glob/ft_strsplit_esc.d @@ -0,0 +1,7 @@ +objs/glob/ft_strsplit_esc.o: src/glob/ft_strsplit_esc.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/ft_strsplit_spe.d b/42sh/objs/glob/ft_strsplit_spe.d new file mode 100644 index 00000000..37de917f --- /dev/null +++ b/42sh/objs/glob/ft_strsplit_spe.d @@ -0,0 +1,7 @@ +objs/glob/ft_strsplit_spe.o: src/glob/ft_strsplit_spe.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/glob.d b/42sh/objs/glob/glob.d new file mode 100644 index 00000000..41901c5b --- /dev/null +++ b/42sh/objs/glob/glob.d @@ -0,0 +1,6 @@ +objs/glob/glob.o: src/glob/glob.c includes/glob.h includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/is_char_esc.d b/42sh/objs/glob/is_char_esc.d new file mode 100644 index 00000000..299cb04f --- /dev/null +++ b/42sh/objs/glob/is_char_esc.d @@ -0,0 +1,7 @@ +objs/glob/is_char_esc.o: src/glob/is_char_esc.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_back.d b/42sh/objs/glob/lib_perso/ft_ld_back.d new file mode 100644 index 00000000..9f5c6251 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_back.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_back.o: src/glob/lib_perso/ft_ld_back.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_clear.d b/42sh/objs/glob/lib_perso/ft_ld_clear.d new file mode 100644 index 00000000..3fed69fe --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_clear.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_clear.o: src/glob/lib_perso/ft_ld_clear.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_del.d b/42sh/objs/glob/lib_perso/ft_ld_del.d new file mode 100644 index 00000000..09f262fb --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_del.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_del.o: src/glob/lib_perso/ft_ld_del.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_front.d b/42sh/objs/glob/lib_perso/ft_ld_front.d new file mode 100644 index 00000000..67b63b03 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_front.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_front.o: src/glob/lib_perso/ft_ld_front.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_new.d b/42sh/objs/glob/lib_perso/ft_ld_new.d new file mode 100644 index 00000000..f4e87e22 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_new.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_new.o: src/glob/lib_perso/ft_ld_new.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_order.d b/42sh/objs/glob/lib_perso/ft_ld_order.d new file mode 100644 index 00000000..e26632d7 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_order.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_order.o: src/glob/lib_perso/ft_ld_order.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushback.d b/42sh/objs/glob/lib_perso/ft_ld_pushback.d new file mode 100644 index 00000000..a722d79a --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_pushback.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_pushback.o: src/glob/lib_perso/ft_ld_pushback.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushfront.d b/42sh/objs/glob/lib_perso/ft_ld_pushfront.d new file mode 100644 index 00000000..f60d2ccf --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_pushfront.d @@ -0,0 +1,8 @@ +objs/glob/lib_perso/ft_ld_pushfront.o: \ + src/glob/lib_perso/ft_ld_pushfront.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_reverse.d b/42sh/objs/glob/lib_perso/ft_ld_reverse.d new file mode 100644 index 00000000..c906ab8f --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_reverse.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_reverse.o: src/glob/lib_perso/ft_ld_reverse.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_size.d b/42sh/objs/glob/lib_perso/ft_ld_size.d new file mode 100644 index 00000000..b2c71930 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_size.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_size.o: src/glob/lib_perso/ft_ld_size.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_swap.d b/42sh/objs/glob/lib_perso/ft_ld_swap.d new file mode 100644 index 00000000..17efa53d --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_swap.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_swap.o: src/glob/lib_perso/ft_ld_swap.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_to_tab.d b/42sh/objs/glob/lib_perso/ft_ld_to_tab.d new file mode 100644 index 00000000..cadf7d0c --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_to_tab.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_ld_to_tab.o: src/glob/lib_perso/ft_ld_to_tab.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_strjoinf.d b/42sh/objs/glob/lib_perso/ft_strjoinf.d new file mode 100644 index 00000000..427d013d --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_strjoinf.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_strjoinf.o: src/glob/lib_perso/ft_strjoinf.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_tabdel.d b/42sh/objs/glob/lib_perso/ft_tabdel.d new file mode 100644 index 00000000..19d3bf6e --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_tabdel.d @@ -0,0 +1,7 @@ +objs/glob/lib_perso/ft_tabdel.o: src/glob/lib_perso/ft_tabdel.c \ + includes/glob.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_tablen.d b/42sh/objs/glob/lib_perso/ft_tablen.d new file mode 100644 index 00000000..f64294f1 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_tablen.d @@ -0,0 +1,4 @@ +objs/glob/lib_perso/ft_tablen.o: src/glob/lib_perso/ft_tablen.c \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h diff --git a/42sh/objs/glob/match_pattern.d b/42sh/objs/glob/match_pattern.d new file mode 100644 index 00000000..56dbd32f --- /dev/null +++ b/42sh/objs/glob/match_pattern.d @@ -0,0 +1,7 @@ +objs/glob/match_pattern.o: src/glob/match_pattern.c includes/glob.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h diff --git a/42sh/objs/job-control/builtin_bg.d b/42sh/objs/job-control/builtin_bg.d new file mode 100644 index 00000000..f21ed2e7 --- /dev/null +++ b/42sh/objs/job-control/builtin_bg.d @@ -0,0 +1,7 @@ +objs/job-control/builtin_bg.o: src/job-control/builtin_bg.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/builtin_fg.d b/42sh/objs/job-control/builtin_fg.d new file mode 100644 index 00000000..c2b7d750 --- /dev/null +++ b/42sh/objs/job-control/builtin_fg.d @@ -0,0 +1,7 @@ +objs/job-control/builtin_fg.o: src/job-control/builtin_fg.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/builtin_jobs.d b/42sh/objs/job-control/builtin_jobs.d new file mode 100644 index 00000000..1d2bf13b --- /dev/null +++ b/42sh/objs/job-control/builtin_jobs.d @@ -0,0 +1,7 @@ +objs/job-control/builtin_jobs.o: src/job-control/builtin_jobs.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/do_job_notification.d b/42sh/objs/job-control/do_job_notification.d new file mode 100644 index 00000000..12976425 --- /dev/null +++ b/42sh/objs/job-control/do_job_notification.d @@ -0,0 +1,8 @@ +objs/job-control/do_job_notification.o: \ + src/job-control/do_job_notification.c includes/job_control.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/exec.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/job-control/job_addprocess.d b/42sh/objs/job-control/job_addprocess.d new file mode 100644 index 00000000..5dabc110 --- /dev/null +++ b/42sh/objs/job-control/job_addprocess.d @@ -0,0 +1,7 @@ +objs/job-control/job_addprocess.o: src/job-control/job_addprocess.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_cmp_id.d b/42sh/objs/job-control/job_cmp_id.d new file mode 100644 index 00000000..914d5c88 --- /dev/null +++ b/42sh/objs/job-control/job_cmp_id.d @@ -0,0 +1,7 @@ +objs/job-control/job_cmp_id.o: src/job-control/job_cmp_id.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_format.d b/42sh/objs/job-control/job_format.d new file mode 100644 index 00000000..15021ee2 --- /dev/null +++ b/42sh/objs/job-control/job_format.d @@ -0,0 +1,7 @@ +objs/job-control/job_format.o: src/job-control/job_format.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_format_head.d b/42sh/objs/job-control/job_format_head.d new file mode 100644 index 00000000..90432408 --- /dev/null +++ b/42sh/objs/job-control/job_format_head.d @@ -0,0 +1,7 @@ +objs/job-control/job_format_head.o: src/job-control/job_format_head.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_free.d b/42sh/objs/job-control/job_free.d new file mode 100644 index 00000000..5c0af190 --- /dev/null +++ b/42sh/objs/job-control/job_free.d @@ -0,0 +1,7 @@ +objs/job-control/job_free.o: src/job-control/job_free.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_getprocess.d b/42sh/objs/job-control/job_getprocess.d new file mode 100644 index 00000000..e449b63c --- /dev/null +++ b/42sh/objs/job-control/job_getprocess.d @@ -0,0 +1,7 @@ +objs/job-control/job_getprocess.o: src/job-control/job_getprocess.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_getrank.d b/42sh/objs/job-control/job_getrank.d new file mode 100644 index 00000000..9017a5f6 --- /dev/null +++ b/42sh/objs/job-control/job_getrank.d @@ -0,0 +1,7 @@ +objs/job-control/job_getrank.o: src/job-control/job_getrank.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_is_completed.d b/42sh/objs/job-control/job_is_completed.d new file mode 100644 index 00000000..509aa0a3 --- /dev/null +++ b/42sh/objs/job-control/job_is_completed.d @@ -0,0 +1,7 @@ +objs/job-control/job_is_completed.o: src/job-control/job_is_completed.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_is_stopped.d b/42sh/objs/job-control/job_is_stopped.d new file mode 100644 index 00000000..c4f314a0 --- /dev/null +++ b/42sh/objs/job-control/job_is_stopped.d @@ -0,0 +1,7 @@ +objs/job-control/job_is_stopped.o: src/job-control/job_is_stopped.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_kill_all.d b/42sh/objs/job-control/job_kill_all.d new file mode 100644 index 00000000..00f571bb --- /dev/null +++ b/42sh/objs/job-control/job_kill_all.d @@ -0,0 +1,7 @@ +objs/job-control/job_kill_all.o: src/job-control/job_kill_all.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_notify_change.d b/42sh/objs/job-control/job_notify_change.d new file mode 100644 index 00000000..d3ddc452 --- /dev/null +++ b/42sh/objs/job-control/job_notify_change.d @@ -0,0 +1,7 @@ +objs/job-control/job_notify_change.o: src/job-control/job_notify_change.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_notify_new.d b/42sh/objs/job-control/job_notify_new.d new file mode 100644 index 00000000..04110f1d --- /dev/null +++ b/42sh/objs/job-control/job_notify_new.d @@ -0,0 +1,7 @@ +objs/job-control/job_notify_new.o: src/job-control/job_notify_new.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_remove.d b/42sh/objs/job-control/job_remove.d new file mode 100644 index 00000000..d07c853c --- /dev/null +++ b/42sh/objs/job-control/job_remove.d @@ -0,0 +1,7 @@ +objs/job-control/job_remove.o: src/job-control/job_remove.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_run.d b/42sh/objs/job-control/job_run.d new file mode 100644 index 00000000..3926c1ee --- /dev/null +++ b/42sh/objs/job-control/job_run.d @@ -0,0 +1,7 @@ +objs/job-control/job_run.o: src/job-control/job_run.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_update_id.d b/42sh/objs/job-control/job_update_id.d new file mode 100644 index 00000000..4773d879 --- /dev/null +++ b/42sh/objs/job-control/job_update_id.d @@ -0,0 +1,7 @@ +objs/job-control/job_update_id.o: src/job-control/job_update_id.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_update_status.d b/42sh/objs/job-control/job_update_status.d new file mode 100644 index 00000000..b222b328 --- /dev/null +++ b/42sh/objs/job-control/job_update_status.d @@ -0,0 +1,7 @@ +objs/job-control/job_update_status.o: src/job-control/job_update_status.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_wait.d b/42sh/objs/job-control/job_wait.d new file mode 100644 index 00000000..35466ce7 --- /dev/null +++ b/42sh/objs/job-control/job_wait.d @@ -0,0 +1,7 @@ +objs/job-control/job_wait.o: src/job-control/job_wait.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/mark_job_as_running.d b/42sh/objs/job-control/mark_job_as_running.d new file mode 100644 index 00000000..56ab3c99 --- /dev/null +++ b/42sh/objs/job-control/mark_job_as_running.d @@ -0,0 +1,8 @@ +objs/job-control/mark_job_as_running.o: \ + src/job-control/mark_job_as_running.c includes/job_control.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/exec.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/job-control/process_cmp_pid.d b/42sh/objs/job-control/process_cmp_pid.d new file mode 100644 index 00000000..35f7ef84 --- /dev/null +++ b/42sh/objs/job-control/process_cmp_pid.d @@ -0,0 +1,7 @@ +objs/job-control/process_cmp_pid.o: src/job-control/process_cmp_pid.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/process_format.d b/42sh/objs/job-control/process_format.d new file mode 100644 index 00000000..4b9ae465 --- /dev/null +++ b/42sh/objs/job-control/process_format.d @@ -0,0 +1,7 @@ +objs/job-control/process_format.o: src/job-control/process_format.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/process_free.d b/42sh/objs/job-control/process_free.d new file mode 100644 index 00000000..6634c396 --- /dev/null +++ b/42sh/objs/job-control/process_free.d @@ -0,0 +1,7 @@ +objs/job-control/process_free.o: src/job-control/process_free.c \ + includes/job_control.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/process_mark_status.d b/42sh/objs/job-control/process_mark_status.d new file mode 100644 index 00000000..3c1da39c --- /dev/null +++ b/42sh/objs/job-control/process_mark_status.d @@ -0,0 +1,8 @@ +objs/job-control/process_mark_status.o: \ + src/job-control/process_mark_status.c includes/job_control.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/exec.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/job-control/put_job_in_background.d b/42sh/objs/job-control/put_job_in_background.d new file mode 100644 index 00000000..95112c17 --- /dev/null +++ b/42sh/objs/job-control/put_job_in_background.d @@ -0,0 +1,8 @@ +objs/job-control/put_job_in_background.o: \ + src/job-control/put_job_in_background.c includes/job_control.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/exec.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/job-control/put_job_in_foreground.d b/42sh/objs/job-control/put_job_in_foreground.d new file mode 100644 index 00000000..db876ff9 --- /dev/null +++ b/42sh/objs/job-control/put_job_in_foreground.d @@ -0,0 +1,8 @@ +objs/job-control/put_job_in_foreground.o: \ + src/job-control/put_job_in_foreground.c includes/job_control.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/exec.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/job-control/sigchld_handler.d b/42sh/objs/job-control/sigchld_handler.d new file mode 100644 index 00000000..7a38880f --- /dev/null +++ b/42sh/objs/job-control/sigchld_handler.d @@ -0,0 +1,7 @@ +objs/job-control/sigchld_handler.o: src/job-control/sigchld_handler.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigint_handler.d b/42sh/objs/job-control/sigint_handler.d new file mode 100644 index 00000000..fca3434c --- /dev/null +++ b/42sh/objs/job-control/sigint_handler.d @@ -0,0 +1,7 @@ +objs/job-control/sigint_handler.o: src/job-control/sigint_handler.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigtstp_handler.d b/42sh/objs/job-control/sigtstp_handler.d new file mode 100644 index 00000000..3f3efe66 --- /dev/null +++ b/42sh/objs/job-control/sigtstp_handler.d @@ -0,0 +1,7 @@ +objs/job-control/sigtstp_handler.o: src/job-control/sigtstp_handler.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigttin_handler.d b/42sh/objs/job-control/sigttin_handler.d new file mode 100644 index 00000000..19df16e0 --- /dev/null +++ b/42sh/objs/job-control/sigttin_handler.d @@ -0,0 +1,7 @@ +objs/job-control/sigttin_handler.o: src/job-control/sigttin_handler.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigttou_handler.d b/42sh/objs/job-control/sigttou_handler.d new file mode 100644 index 00000000..31886c4a --- /dev/null +++ b/42sh/objs/job-control/sigttou_handler.d @@ -0,0 +1,7 @@ +objs/job-control/sigttou_handler.o: src/job-control/sigttou_handler.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/command_getoutput.d b/42sh/objs/lexer/command_getoutput.d new file mode 100644 index 00000000..6b4403b7 --- /dev/null +++ b/42sh/objs/lexer/command_getoutput.d @@ -0,0 +1,7 @@ +objs/lexer/command_getoutput.o: src/lexer/command_getoutput.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/ft_lexer.d b/42sh/objs/lexer/ft_lexer.d new file mode 100644 index 00000000..2775220d --- /dev/null +++ b/42sh/objs/lexer/ft_lexer.d @@ -0,0 +1,7 @@ +objs/lexer/ft_lexer.o: src/lexer/ft_lexer.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/ft_post_tokenize.d b/42sh/objs/lexer/ft_post_tokenize.d new file mode 100644 index 00000000..79fc1d90 --- /dev/null +++ b/42sh/objs/lexer/ft_post_tokenize.d @@ -0,0 +1,7 @@ +objs/lexer/ft_post_tokenize.o: src/lexer/ft_post_tokenize.c \ + includes/lexer.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/ft_tokenize.d b/42sh/objs/lexer/ft_tokenize.d new file mode 100644 index 00000000..7d478980 --- /dev/null +++ b/42sh/objs/lexer/ft_tokenize.d @@ -0,0 +1,7 @@ +objs/lexer/ft_tokenize.o: src/lexer/ft_tokenize.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/get_lexer_state.d b/42sh/objs/lexer/get_lexer_state.d new file mode 100644 index 00000000..82438116 --- /dev/null +++ b/42sh/objs/lexer/get_lexer_state.d @@ -0,0 +1,7 @@ +objs/lexer/get_lexer_state.o: src/lexer/get_lexer_state.c \ + includes/lexer.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/get_reserved_words.d b/42sh/objs/lexer/get_reserved_words.d new file mode 100644 index 00000000..0239c611 --- /dev/null +++ b/42sh/objs/lexer/get_reserved_words.d @@ -0,0 +1,7 @@ +objs/lexer/get_reserved_words.o: src/lexer/get_reserved_words.c \ + includes/lexer.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/lexer_backslash.d b/42sh/objs/lexer/lexer_backslash.d new file mode 100644 index 00000000..b925c74a --- /dev/null +++ b/42sh/objs/lexer/lexer_backslash.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_backslash.o: src/lexer/lexer_backslash.c \ + includes/lexer.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/lexer_comment.d b/42sh/objs/lexer/lexer_comment.d new file mode 100644 index 00000000..04199ff3 --- /dev/null +++ b/42sh/objs/lexer/lexer_comment.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_comment.o: src/lexer/lexer_comment.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_default.d b/42sh/objs/lexer/lexer_default.d new file mode 100644 index 00000000..f8fd3ff0 --- /dev/null +++ b/42sh/objs/lexer/lexer_default.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_default.o: src/lexer/lexer_default.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_delim.d b/42sh/objs/lexer/lexer_delim.d new file mode 100644 index 00000000..a1ce1483 --- /dev/null +++ b/42sh/objs/lexer/lexer_delim.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_delim.o: src/lexer/lexer_delim.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_dquote.d b/42sh/objs/lexer/lexer_dquote.d new file mode 100644 index 00000000..f4d17eb5 --- /dev/null +++ b/42sh/objs/lexer/lexer_dquote.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_dquote.o: src/lexer/lexer_dquote.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_great.d b/42sh/objs/lexer/lexer_great.d new file mode 100644 index 00000000..298ad637 --- /dev/null +++ b/42sh/objs/lexer/lexer_great.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_great.o: src/lexer/lexer_great.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_greatand.d b/42sh/objs/lexer/lexer_greatand.d new file mode 100644 index 00000000..12e896f7 --- /dev/null +++ b/42sh/objs/lexer/lexer_greatand.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_greatand.o: src/lexer/lexer_greatand.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_less.d b/42sh/objs/lexer/lexer_less.d new file mode 100644 index 00000000..b281dae1 --- /dev/null +++ b/42sh/objs/lexer/lexer_less.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_less.o: src/lexer/lexer_less.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_lessand.d b/42sh/objs/lexer/lexer_lessand.d new file mode 100644 index 00000000..9fd03772 --- /dev/null +++ b/42sh/objs/lexer/lexer_lessand.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_lessand.o: src/lexer/lexer_lessand.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_newline.d b/42sh/objs/lexer/lexer_newline.d new file mode 100644 index 00000000..c1aae813 --- /dev/null +++ b/42sh/objs/lexer/lexer_newline.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_newline.o: src/lexer/lexer_newline.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_number.d b/42sh/objs/lexer/lexer_number.d new file mode 100644 index 00000000..27343a23 --- /dev/null +++ b/42sh/objs/lexer/lexer_number.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_number.o: src/lexer/lexer_number.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_quote.d b/42sh/objs/lexer/lexer_quote.d new file mode 100644 index 00000000..4c8742ba --- /dev/null +++ b/42sh/objs/lexer/lexer_quote.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_quote.o: src/lexer/lexer_quote.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_sep.d b/42sh/objs/lexer/lexer_sep.d new file mode 100644 index 00000000..b1535ccf --- /dev/null +++ b/42sh/objs/lexer/lexer_sep.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_sep.o: src/lexer/lexer_sep.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_special.d b/42sh/objs/lexer/lexer_special.d new file mode 100644 index 00000000..0f77a543 --- /dev/null +++ b/42sh/objs/lexer/lexer_special.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_special.o: src/lexer/lexer_special.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_then.d b/42sh/objs/lexer/lexer_then.d new file mode 100644 index 00000000..ca62a452 --- /dev/null +++ b/42sh/objs/lexer/lexer_then.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_then.o: src/lexer/lexer_then.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_var.d b/42sh/objs/lexer/lexer_var.d new file mode 100644 index 00000000..acef2398 --- /dev/null +++ b/42sh/objs/lexer/lexer_var.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_var.o: src/lexer/lexer_var.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/lexer_word.d b/42sh/objs/lexer/lexer_word.d new file mode 100644 index 00000000..495c4eec --- /dev/null +++ b/42sh/objs/lexer/lexer_word.d @@ -0,0 +1,7 @@ +objs/lexer/lexer_word.o: src/lexer/lexer_word.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/reduce_bquotes.d b/42sh/objs/lexer/reduce_bquotes.d new file mode 100644 index 00000000..ad3f082c --- /dev/null +++ b/42sh/objs/lexer/reduce_bquotes.d @@ -0,0 +1,7 @@ +objs/lexer/reduce_bquotes.o: src/lexer/reduce_bquotes.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/reduce_parens.d b/42sh/objs/lexer/reduce_parens.d new file mode 100644 index 00000000..21e19e07 --- /dev/null +++ b/42sh/objs/lexer/reduce_parens.d @@ -0,0 +1,7 @@ +objs/lexer/reduce_parens.o: src/lexer/reduce_parens.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/token_append.d b/42sh/objs/lexer/token_append.d new file mode 100644 index 00000000..df99ed38 --- /dev/null +++ b/42sh/objs/lexer/token_append.d @@ -0,0 +1,7 @@ +objs/lexer/token_append.o: src/lexer/token_append.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/token_cmp_type.d b/42sh/objs/lexer/token_cmp_type.d new file mode 100644 index 00000000..9f6e010d --- /dev/null +++ b/42sh/objs/lexer/token_cmp_type.d @@ -0,0 +1,7 @@ +objs/lexer/token_cmp_type.o: src/lexer/token_cmp_type.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/token_expand_var.d b/42sh/objs/lexer/token_expand_var.d new file mode 100644 index 00000000..82b34a95 --- /dev/null +++ b/42sh/objs/lexer/token_expand_var.d @@ -0,0 +1,7 @@ +objs/lexer/token_expand_var.o: src/lexer/token_expand_var.c \ + includes/lexer.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/token_free.d b/42sh/objs/lexer/token_free.d new file mode 100644 index 00000000..14f53c23 --- /dev/null +++ b/42sh/objs/lexer/token_free.d @@ -0,0 +1,7 @@ +objs/lexer/token_free.o: src/lexer/token_free.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/token_init.d b/42sh/objs/lexer/token_init.d new file mode 100644 index 00000000..2f989946 --- /dev/null +++ b/42sh/objs/lexer/token_init.d @@ -0,0 +1,7 @@ +objs/lexer/token_init.o: src/lexer/token_init.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/lexer/token_print.d b/42sh/objs/lexer/token_print.d new file mode 100644 index 00000000..15cc7beb --- /dev/null +++ b/42sh/objs/lexer/token_print.d @@ -0,0 +1,7 @@ +objs/lexer/token_print.o: src/lexer/token_print.c includes/lexer.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/data_exit.d b/42sh/objs/main/data_exit.d new file mode 100644 index 00000000..8dbd035e --- /dev/null +++ b/42sh/objs/main/data_exit.d @@ -0,0 +1,7 @@ +objs/main/data_exit.o: src/main/data_exit.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/data_init.d b/42sh/objs/main/data_init.d new file mode 100644 index 00000000..6719a330 --- /dev/null +++ b/42sh/objs/main/data_init.d @@ -0,0 +1,7 @@ +objs/main/data_init.o: src/main/data_init.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/data_singleton.d b/42sh/objs/main/data_singleton.d new file mode 100644 index 00000000..0f300428 --- /dev/null +++ b/42sh/objs/main/data_singleton.d @@ -0,0 +1,7 @@ +objs/main/data_singleton.o: src/main/data_singleton.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/ft_cleanup.d b/42sh/objs/main/ft_cleanup.d new file mode 100644 index 00000000..0b477da3 --- /dev/null +++ b/42sh/objs/main/ft_cleanup.d @@ -0,0 +1,7 @@ +objs/main/ft_cleanup.o: src/main/ft_cleanup.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/ft_print_all_ast.d b/42sh/objs/main/ft_print_all_ast.d new file mode 100644 index 00000000..29caf400 --- /dev/null +++ b/42sh/objs/main/ft_print_all_ast.d @@ -0,0 +1,7 @@ +objs/main/ft_print_all_ast.o: src/main/ft_print_all_ast.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/ft_putast.d b/42sh/objs/main/ft_putast.d new file mode 100644 index 00000000..545c6ae3 --- /dev/null +++ b/42sh/objs/main/ft_putast.d @@ -0,0 +1,7 @@ +objs/main/ft_putast.o: src/main/ft_putast.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/ft_putast2.d b/42sh/objs/main/ft_putast2.d new file mode 100644 index 00000000..dac566c6 --- /dev/null +++ b/42sh/objs/main/ft_putast2.d @@ -0,0 +1,7 @@ +objs/main/ft_putast2.o: src/main/ft_putast2.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/lib_expansion.d b/42sh/objs/main/lib_expansion.d new file mode 100644 index 00000000..0d7e1d1d --- /dev/null +++ b/42sh/objs/main/lib_expansion.d @@ -0,0 +1,7 @@ +objs/main/lib_expansion.o: src/main/lib_expansion.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/main.d b/42sh/objs/main/main.d new file mode 100644 index 00000000..aeaa3335 --- /dev/null +++ b/42sh/objs/main/main.d @@ -0,0 +1,7 @@ +objs/main/main.o: src/main/main.c includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/read_script.d b/42sh/objs/main/read_script.d new file mode 100644 index 00000000..b685fbd9 --- /dev/null +++ b/42sh/objs/main/read_script.d @@ -0,0 +1,7 @@ +objs/main/read_script.o: src/main/read_script.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/shell_exit.d b/42sh/objs/main/shell_exit.d new file mode 100644 index 00000000..7c757180 --- /dev/null +++ b/42sh/objs/main/shell_exit.d @@ -0,0 +1,7 @@ +objs/main/shell_exit.o: src/main/shell_exit.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/shell_get_avdata.d b/42sh/objs/main/shell_get_avdata.d new file mode 100644 index 00000000..e3307d34 --- /dev/null +++ b/42sh/objs/main/shell_get_avdata.d @@ -0,0 +1,7 @@ +objs/main/shell_get_avdata.o: src/main/shell_get_avdata.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/shell_get_opts.d b/42sh/objs/main/shell_get_opts.d new file mode 100644 index 00000000..b82e3bdb --- /dev/null +++ b/42sh/objs/main/shell_get_opts.d @@ -0,0 +1,7 @@ +objs/main/shell_get_opts.o: src/main/shell_get_opts.c \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/shell_init.d b/42sh/objs/main/shell_init.d new file mode 100644 index 00000000..44f5a92f --- /dev/null +++ b/42sh/objs/main/shell_init.d @@ -0,0 +1,7 @@ +objs/main/shell_init.o: src/main/shell_init.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/shell_script.d b/42sh/objs/main/shell_script.d new file mode 100644 index 00000000..36f67ca6 --- /dev/null +++ b/42sh/objs/main/shell_script.d @@ -0,0 +1,7 @@ +objs/main/shell_script.o: src/main/shell_script.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/main/sig_handler.d b/42sh/objs/main/sig_handler.d new file mode 100644 index 00000000..6f7bd012 --- /dev/null +++ b/42sh/objs/main/sig_handler.d @@ -0,0 +1,7 @@ +objs/main/sig_handler.o: src/main/sig_handler.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/ft_parse.d b/42sh/objs/parser/ft_parse.d new file mode 100644 index 00000000..7e218704 --- /dev/null +++ b/42sh/objs/parser/ft_parse.d @@ -0,0 +1,7 @@ +objs/parser/ft_parse.o: src/parser/ft_parse.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/get_instruction.d b/42sh/objs/parser/get_instruction.d new file mode 100644 index 00000000..03cab06b --- /dev/null +++ b/42sh/objs/parser/get_instruction.d @@ -0,0 +1,7 @@ +objs/parser/get_instruction.o: src/parser/get_instruction.c \ + includes/parser.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/get_sub_instruction.d b/42sh/objs/parser/get_sub_instruction.d new file mode 100644 index 00000000..7a14d67a --- /dev/null +++ b/42sh/objs/parser/get_sub_instruction.d @@ -0,0 +1,7 @@ +objs/parser/get_sub_instruction.o: src/parser/get_sub_instruction.c \ + includes/parser.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse.d b/42sh/objs/parser/parse.d new file mode 100644 index 00000000..fab3a429 --- /dev/null +++ b/42sh/objs/parser/parse.d @@ -0,0 +1,7 @@ +objs/parser/parse.o: src/parser/parse.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_dgreat.d b/42sh/objs/parser/parse_dgreat.d new file mode 100644 index 00000000..71b48ce5 --- /dev/null +++ b/42sh/objs/parser/parse_dgreat.d @@ -0,0 +1,7 @@ +objs/parser/parse_dgreat.o: src/parser/parse_dgreat.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_dless.d b/42sh/objs/parser/parse_dless.d new file mode 100644 index 00000000..73792f0d --- /dev/null +++ b/42sh/objs/parser/parse_dless.d @@ -0,0 +1,7 @@ +objs/parser/parse_dless.o: src/parser/parse_dless.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_do.d b/42sh/objs/parser/parse_do.d new file mode 100644 index 00000000..8f12c9f2 --- /dev/null +++ b/42sh/objs/parser/parse_do.d @@ -0,0 +1,7 @@ +objs/parser/parse_do.o: src/parser/parse_do.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_done.d b/42sh/objs/parser/parse_done.d new file mode 100644 index 00000000..ccfc3515 --- /dev/null +++ b/42sh/objs/parser/parse_done.d @@ -0,0 +1,7 @@ +objs/parser/parse_done.o: src/parser/parse_done.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_elif.d b/42sh/objs/parser/parse_elif.d new file mode 100644 index 00000000..220e68fe --- /dev/null +++ b/42sh/objs/parser/parse_elif.d @@ -0,0 +1,7 @@ +objs/parser/parse_elif.o: src/parser/parse_elif.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_else.d b/42sh/objs/parser/parse_else.d new file mode 100644 index 00000000..c0ece4a3 --- /dev/null +++ b/42sh/objs/parser/parse_else.d @@ -0,0 +1,7 @@ +objs/parser/parse_else.o: src/parser/parse_else.c includes/minishell.h \ + includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ + includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ + includes/color.h includes/types.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_great.d b/42sh/objs/parser/parse_great.d new file mode 100644 index 00000000..91c1b658 --- /dev/null +++ b/42sh/objs/parser/parse_great.d @@ -0,0 +1,7 @@ +objs/parser/parse_great.o: src/parser/parse_great.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_greatand.d b/42sh/objs/parser/parse_greatand.d new file mode 100644 index 00000000..0b158be7 --- /dev/null +++ b/42sh/objs/parser/parse_greatand.d @@ -0,0 +1,7 @@ +objs/parser/parse_greatand.o: src/parser/parse_greatand.c \ + includes/parser.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse_if.d b/42sh/objs/parser/parse_if.d new file mode 100644 index 00000000..67aab5f3 --- /dev/null +++ b/42sh/objs/parser/parse_if.d @@ -0,0 +1,7 @@ +objs/parser/parse_if.o: src/parser/parse_if.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_less.d b/42sh/objs/parser/parse_less.d new file mode 100644 index 00000000..b715e726 --- /dev/null +++ b/42sh/objs/parser/parse_less.d @@ -0,0 +1,7 @@ +objs/parser/parse_less.o: src/parser/parse_less.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_lessand.d b/42sh/objs/parser/parse_lessand.d new file mode 100644 index 00000000..c9a51421 --- /dev/null +++ b/42sh/objs/parser/parse_lessand.d @@ -0,0 +1,7 @@ +objs/parser/parse_lessand.o: src/parser/parse_lessand.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_separator.d b/42sh/objs/parser/parse_separator.d new file mode 100644 index 00000000..03219dc7 --- /dev/null +++ b/42sh/objs/parser/parse_separator.d @@ -0,0 +1,7 @@ +objs/parser/parse_separator.o: src/parser/parse_separator.c \ + includes/parser.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse_subshell.d b/42sh/objs/parser/parse_subshell.d new file mode 100644 index 00000000..14893805 --- /dev/null +++ b/42sh/objs/parser/parse_subshell.d @@ -0,0 +1,7 @@ +objs/parser/parse_subshell.o: src/parser/parse_subshell.c \ + includes/parser.h includes/minishell.h includes/libft.h \ + includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ + includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ + includes/types.h includes/lexer.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse_while.d b/42sh/objs/parser/parse_while.d new file mode 100644 index 00000000..ef25c352 --- /dev/null +++ b/42sh/objs/parser/parse_while.d @@ -0,0 +1,7 @@ +objs/parser/parse_while.o: src/parser/parse_while.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/objs/parser/parse_word.d b/42sh/objs/parser/parse_word.d new file mode 100644 index 00000000..1423079d --- /dev/null +++ b/42sh/objs/parser/parse_word.d @@ -0,0 +1,7 @@ +objs/parser/parse_word.o: src/parser/parse_word.c includes/parser.h \ + includes/minishell.h includes/libft.h includes/get_next_line.h \ + includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ + includes/btree.h includes/color.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h diff --git a/42sh/sample/while_error.sh b/42sh/sample/while_error.sh new file mode 100644 index 00000000..c8102bb8 --- /dev/null +++ b/42sh/sample/while_error.sh @@ -0,0 +1,6 @@ +echo hello +while || +do + pwd ; +done +ls | cat diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 20883c67..cae778e1 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:03:38 by ariard ### ########.fr */ +/* Updated: 2017/02/06 22:05:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index 9a45defd..71e39750 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/02/06 21:58:44 by ariard ### ########.fr */ +/* Updated: 2017/02/06 22:05:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index fae45eeb..6fb3c788 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:03:30 by ariard ### ########.fr */ +/* Updated: 2017/02/06 22:05:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index 23a2038f..6206e152 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -82,7 +82,6 @@ int parse_head(t_btree **ast, node->type = token->type; del = (*lst); *lst = (*lst)->next; - //check that// ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); delete_newline(start, lst); return (0); diff --git a/42sh/test.c b/42sh/test.c deleted file mode 100644 index 01d83581..00000000 --- a/42sh/test.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -int main(void) -{ - int loop; - - loop = 1; - printf("hello world"); - if (loop) - main(); - return (0); -} diff --git a/42sh/test.sh b/42sh/test.sh deleted file mode 100644 index feb468a8..00000000 --- a/42sh/test.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ 0 -gt 1 ] -then - echo hello -if ls -then - echo world - - echo yolo -fi From 5dc789ebda5e77de1a89d8582cc5db01faea78d2 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 8 Feb 2017 23:29:13 +0100 Subject: [PATCH 036/206] before test pushdown automata --- 42sh/objs/builtin/bt_read_get.d | 7 ------- 42sh/objs/builtin/bt_read_parse.d | 7 ------- 42sh/objs/builtin/bt_read_term.d | 7 ------- 42sh/objs/builtin/builtin_cd.d | 7 ------- 42sh/objs/builtin/builtin_echo.d | 7 ------- 42sh/objs/builtin/builtin_env.d | 7 ------- 42sh/objs/builtin/builtin_exit.d | 7 ------- 42sh/objs/builtin/builtin_read.d | 7 ------- 42sh/objs/builtin/builtin_setenv.d | 7 ------- 42sh/objs/builtin/builtin_unsetenv.d | 7 ------- 42sh/objs/builtin/is_builtin.d | 7 ------- 42sh/objs/exec/ast_free.d | 7 ------- 42sh/objs/exec/exec_ampersand.d | 7 ------- 42sh/objs/exec/exec_and_if.d | 7 ------- 42sh/objs/exec/exec_command.d | 7 ------- 42sh/objs/exec/exec_default.d | 7 ------- 42sh/objs/exec/exec_dgreat.d | 7 ------- 42sh/objs/exec/exec_elif.d | 7 ------- 42sh/objs/exec/exec_else.d | 7 ------- 42sh/objs/exec/exec_great.d | 7 ------- 42sh/objs/exec/exec_if.d | 7 ------- 42sh/objs/exec/exec_less.d | 7 ------- 42sh/objs/exec/exec_or_if.d | 7 ------- 42sh/objs/exec/exec_pipe.d | 7 ------- 42sh/objs/exec/exec_semi.d | 7 ------- 42sh/objs/exec/exec_until.d | 7 ------- 42sh/objs/exec/exec_while.d | 7 ------- 42sh/objs/exec/ft_exec.d | 7 ------- 42sh/objs/exec/ft_findexec.d | 7 ------- 42sh/objs/exec/launch_process.d | 7 ------- 42sh/objs/exec/process_redirect.d | 7 ------- 42sh/objs/exec/process_reset.d | 7 ------- 42sh/objs/exec/process_setexec.d | 7 ------- 42sh/objs/exec/process_setgroup.d | 7 ------- 42sh/objs/exec/process_setsig.d | 7 ------- 42sh/objs/exec/set_exitstatus.d | 7 ------- 42sh/objs/glob/dir_glob.d | 7 ------- 42sh/objs/glob/expand_brace.d | 7 ------- 42sh/objs/glob/expand_esc.d | 7 ------- 42sh/objs/glob/ft_strsplit_esc.d | 7 ------- 42sh/objs/glob/ft_strsplit_spe.d | 7 ------- 42sh/objs/glob/glob.d | 6 ------ 42sh/objs/glob/is_char_esc.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_back.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_clear.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_del.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_front.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_new.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_order.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_pushback.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_pushfront.d | 8 -------- 42sh/objs/glob/lib_perso/ft_ld_reverse.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_size.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_swap.d | 7 ------- 42sh/objs/glob/lib_perso/ft_ld_to_tab.d | 7 ------- 42sh/objs/glob/lib_perso/ft_strjoinf.d | 7 ------- 42sh/objs/glob/lib_perso/ft_tabdel.d | 7 ------- 42sh/objs/glob/lib_perso/ft_tablen.d | 4 ---- 42sh/objs/glob/match_pattern.d | 7 ------- 42sh/objs/job-control/builtin_bg.d | 7 ------- 42sh/objs/job-control/builtin_fg.d | 7 ------- 42sh/objs/job-control/builtin_jobs.d | 7 ------- 42sh/objs/job-control/do_job_notification.d | 8 -------- 42sh/objs/job-control/job_addprocess.d | 7 ------- 42sh/objs/job-control/job_cmp_id.d | 7 ------- 42sh/objs/job-control/job_format.d | 7 ------- 42sh/objs/job-control/job_format_head.d | 7 ------- 42sh/objs/job-control/job_free.d | 7 ------- 42sh/objs/job-control/job_getprocess.d | 7 ------- 42sh/objs/job-control/job_getrank.d | 7 ------- 42sh/objs/job-control/job_is_completed.d | 7 ------- 42sh/objs/job-control/job_is_stopped.d | 7 ------- 42sh/objs/job-control/job_kill_all.d | 7 ------- 42sh/objs/job-control/job_notify_change.d | 7 ------- 42sh/objs/job-control/job_notify_new.d | 7 ------- 42sh/objs/job-control/job_remove.d | 7 ------- 42sh/objs/job-control/job_run.d | 7 ------- 42sh/objs/job-control/job_update_id.d | 7 ------- 42sh/objs/job-control/job_update_status.d | 7 ------- 42sh/objs/job-control/job_wait.d | 7 ------- 42sh/objs/job-control/mark_job_as_running.d | 8 -------- 42sh/objs/job-control/process_cmp_pid.d | 7 ------- 42sh/objs/job-control/process_format.d | 7 ------- 42sh/objs/job-control/process_free.d | 7 ------- 42sh/objs/job-control/process_mark_status.d | 8 -------- 42sh/objs/job-control/put_job_in_background.d | 8 -------- 42sh/objs/job-control/put_job_in_foreground.d | 8 -------- 42sh/objs/job-control/sigchld_handler.d | 7 ------- 42sh/objs/job-control/sigint_handler.d | 7 ------- 42sh/objs/job-control/sigtstp_handler.d | 7 ------- 42sh/objs/job-control/sigttin_handler.d | 7 ------- 42sh/objs/job-control/sigttou_handler.d | 7 ------- 42sh/objs/lexer/command_getoutput.d | 7 ------- 42sh/objs/lexer/ft_lexer.d | 7 ------- 42sh/objs/lexer/ft_post_tokenize.d | 7 ------- 42sh/objs/lexer/ft_tokenize.d | 7 ------- 42sh/objs/lexer/get_lexer_state.d | 7 ------- 42sh/objs/lexer/get_reserved_words.d | 7 ------- 42sh/objs/lexer/lexer_backslash.d | 7 ------- 42sh/objs/lexer/lexer_comment.d | 7 ------- 42sh/objs/lexer/lexer_default.d | 7 ------- 42sh/objs/lexer/lexer_delim.d | 7 ------- 42sh/objs/lexer/lexer_dquote.d | 7 ------- 42sh/objs/lexer/lexer_great.d | 7 ------- 42sh/objs/lexer/lexer_greatand.d | 7 ------- 42sh/objs/lexer/lexer_less.d | 7 ------- 42sh/objs/lexer/lexer_lessand.d | 7 ------- 42sh/objs/lexer/lexer_newline.d | 7 ------- 42sh/objs/lexer/lexer_number.d | 7 ------- 42sh/objs/lexer/lexer_quote.d | 7 ------- 42sh/objs/lexer/lexer_sep.d | 7 ------- 42sh/objs/lexer/lexer_special.d | 7 ------- 42sh/objs/lexer/lexer_then.d | 7 ------- 42sh/objs/lexer/lexer_var.d | 7 ------- 42sh/objs/lexer/lexer_word.d | 7 ------- 42sh/objs/lexer/reduce_bquotes.d | 7 ------- 42sh/objs/lexer/reduce_parens.d | 7 ------- 42sh/objs/lexer/token_append.d | 7 ------- 42sh/objs/lexer/token_cmp_type.d | 7 ------- 42sh/objs/lexer/token_expand_var.d | 7 ------- 42sh/objs/lexer/token_free.d | 7 ------- 42sh/objs/lexer/token_init.d | 7 ------- 42sh/objs/lexer/token_print.d | 7 ------- 42sh/objs/main/data_exit.d | 7 ------- 42sh/objs/main/data_init.d | 7 ------- 42sh/objs/main/data_singleton.d | 7 ------- 42sh/objs/main/ft_cleanup.d | 7 ------- 42sh/objs/main/ft_print_all_ast.d | 7 ------- 42sh/objs/main/ft_putast.d | 7 ------- 42sh/objs/main/ft_putast2.d | 7 ------- 42sh/objs/main/lib_expansion.d | 7 ------- 42sh/objs/main/main.d | 7 ------- 42sh/objs/main/read_script.d | 7 ------- 42sh/objs/main/shell_exit.d | 7 ------- 42sh/objs/main/shell_get_avdata.d | 7 ------- 42sh/objs/main/shell_get_opts.d | 7 ------- 42sh/objs/main/shell_init.d | 7 ------- 42sh/objs/main/shell_script.d | 7 ------- 42sh/objs/main/sig_handler.d | 7 ------- 42sh/objs/parser/ft_parse.d | 7 ------- 42sh/objs/parser/get_instruction.d | 7 ------- 42sh/objs/parser/get_sub_instruction.d | 7 ------- 42sh/objs/parser/parse.d | 7 ------- 42sh/objs/parser/parse_dgreat.d | 7 ------- 42sh/objs/parser/parse_dless.d | 7 ------- 42sh/objs/parser/parse_do.d | 7 ------- 42sh/objs/parser/parse_done.d | 7 ------- 42sh/objs/parser/parse_elif.d | 7 ------- 42sh/objs/parser/parse_else.d | 7 ------- 42sh/objs/parser/parse_great.d | 7 ------- 42sh/objs/parser/parse_greatand.d | 7 ------- 42sh/objs/parser/parse_if.d | 7 ------- 42sh/objs/parser/parse_less.d | 7 ------- 42sh/objs/parser/parse_lessand.d | 7 ------- 42sh/objs/parser/parse_separator.d | 7 ------- 42sh/objs/parser/parse_subshell.d | 7 ------- 42sh/objs/parser/parse_while.d | 7 ------- 42sh/objs/parser/parse_word.d | 7 ------- 158 files changed, 1108 deletions(-) delete mode 100644 42sh/objs/builtin/bt_read_get.d delete mode 100644 42sh/objs/builtin/bt_read_parse.d delete mode 100644 42sh/objs/builtin/bt_read_term.d delete mode 100644 42sh/objs/builtin/builtin_cd.d delete mode 100644 42sh/objs/builtin/builtin_echo.d delete mode 100644 42sh/objs/builtin/builtin_env.d delete mode 100644 42sh/objs/builtin/builtin_exit.d delete mode 100644 42sh/objs/builtin/builtin_read.d delete mode 100644 42sh/objs/builtin/builtin_setenv.d delete mode 100644 42sh/objs/builtin/builtin_unsetenv.d delete mode 100644 42sh/objs/builtin/is_builtin.d delete mode 100644 42sh/objs/exec/ast_free.d delete mode 100644 42sh/objs/exec/exec_ampersand.d delete mode 100644 42sh/objs/exec/exec_and_if.d delete mode 100644 42sh/objs/exec/exec_command.d delete mode 100644 42sh/objs/exec/exec_default.d delete mode 100644 42sh/objs/exec/exec_dgreat.d delete mode 100644 42sh/objs/exec/exec_elif.d delete mode 100644 42sh/objs/exec/exec_else.d delete mode 100644 42sh/objs/exec/exec_great.d delete mode 100644 42sh/objs/exec/exec_if.d delete mode 100644 42sh/objs/exec/exec_less.d delete mode 100644 42sh/objs/exec/exec_or_if.d delete mode 100644 42sh/objs/exec/exec_pipe.d delete mode 100644 42sh/objs/exec/exec_semi.d delete mode 100644 42sh/objs/exec/exec_until.d delete mode 100644 42sh/objs/exec/exec_while.d delete mode 100644 42sh/objs/exec/ft_exec.d delete mode 100644 42sh/objs/exec/ft_findexec.d delete mode 100644 42sh/objs/exec/launch_process.d delete mode 100644 42sh/objs/exec/process_redirect.d delete mode 100644 42sh/objs/exec/process_reset.d delete mode 100644 42sh/objs/exec/process_setexec.d delete mode 100644 42sh/objs/exec/process_setgroup.d delete mode 100644 42sh/objs/exec/process_setsig.d delete mode 100644 42sh/objs/exec/set_exitstatus.d delete mode 100644 42sh/objs/glob/dir_glob.d delete mode 100644 42sh/objs/glob/expand_brace.d delete mode 100644 42sh/objs/glob/expand_esc.d delete mode 100644 42sh/objs/glob/ft_strsplit_esc.d delete mode 100644 42sh/objs/glob/ft_strsplit_spe.d delete mode 100644 42sh/objs/glob/glob.d delete mode 100644 42sh/objs/glob/is_char_esc.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_back.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_clear.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_del.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_front.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_new.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_order.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushback.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushfront.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_reverse.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_size.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_swap.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_to_tab.d delete mode 100644 42sh/objs/glob/lib_perso/ft_strjoinf.d delete mode 100644 42sh/objs/glob/lib_perso/ft_tabdel.d delete mode 100644 42sh/objs/glob/lib_perso/ft_tablen.d delete mode 100644 42sh/objs/glob/match_pattern.d delete mode 100644 42sh/objs/job-control/builtin_bg.d delete mode 100644 42sh/objs/job-control/builtin_fg.d delete mode 100644 42sh/objs/job-control/builtin_jobs.d delete mode 100644 42sh/objs/job-control/do_job_notification.d delete mode 100644 42sh/objs/job-control/job_addprocess.d delete mode 100644 42sh/objs/job-control/job_cmp_id.d delete mode 100644 42sh/objs/job-control/job_format.d delete mode 100644 42sh/objs/job-control/job_format_head.d delete mode 100644 42sh/objs/job-control/job_free.d delete mode 100644 42sh/objs/job-control/job_getprocess.d delete mode 100644 42sh/objs/job-control/job_getrank.d delete mode 100644 42sh/objs/job-control/job_is_completed.d delete mode 100644 42sh/objs/job-control/job_is_stopped.d delete mode 100644 42sh/objs/job-control/job_kill_all.d delete mode 100644 42sh/objs/job-control/job_notify_change.d delete mode 100644 42sh/objs/job-control/job_notify_new.d delete mode 100644 42sh/objs/job-control/job_remove.d delete mode 100644 42sh/objs/job-control/job_run.d delete mode 100644 42sh/objs/job-control/job_update_id.d delete mode 100644 42sh/objs/job-control/job_update_status.d delete mode 100644 42sh/objs/job-control/job_wait.d delete mode 100644 42sh/objs/job-control/mark_job_as_running.d delete mode 100644 42sh/objs/job-control/process_cmp_pid.d delete mode 100644 42sh/objs/job-control/process_format.d delete mode 100644 42sh/objs/job-control/process_free.d delete mode 100644 42sh/objs/job-control/process_mark_status.d delete mode 100644 42sh/objs/job-control/put_job_in_background.d delete mode 100644 42sh/objs/job-control/put_job_in_foreground.d delete mode 100644 42sh/objs/job-control/sigchld_handler.d delete mode 100644 42sh/objs/job-control/sigint_handler.d delete mode 100644 42sh/objs/job-control/sigtstp_handler.d delete mode 100644 42sh/objs/job-control/sigttin_handler.d delete mode 100644 42sh/objs/job-control/sigttou_handler.d delete mode 100644 42sh/objs/lexer/command_getoutput.d delete mode 100644 42sh/objs/lexer/ft_lexer.d delete mode 100644 42sh/objs/lexer/ft_post_tokenize.d delete mode 100644 42sh/objs/lexer/ft_tokenize.d delete mode 100644 42sh/objs/lexer/get_lexer_state.d delete mode 100644 42sh/objs/lexer/get_reserved_words.d delete mode 100644 42sh/objs/lexer/lexer_backslash.d delete mode 100644 42sh/objs/lexer/lexer_comment.d delete mode 100644 42sh/objs/lexer/lexer_default.d delete mode 100644 42sh/objs/lexer/lexer_delim.d delete mode 100644 42sh/objs/lexer/lexer_dquote.d delete mode 100644 42sh/objs/lexer/lexer_great.d delete mode 100644 42sh/objs/lexer/lexer_greatand.d delete mode 100644 42sh/objs/lexer/lexer_less.d delete mode 100644 42sh/objs/lexer/lexer_lessand.d delete mode 100644 42sh/objs/lexer/lexer_newline.d delete mode 100644 42sh/objs/lexer/lexer_number.d delete mode 100644 42sh/objs/lexer/lexer_quote.d delete mode 100644 42sh/objs/lexer/lexer_sep.d delete mode 100644 42sh/objs/lexer/lexer_special.d delete mode 100644 42sh/objs/lexer/lexer_then.d delete mode 100644 42sh/objs/lexer/lexer_var.d delete mode 100644 42sh/objs/lexer/lexer_word.d delete mode 100644 42sh/objs/lexer/reduce_bquotes.d delete mode 100644 42sh/objs/lexer/reduce_parens.d delete mode 100644 42sh/objs/lexer/token_append.d delete mode 100644 42sh/objs/lexer/token_cmp_type.d delete mode 100644 42sh/objs/lexer/token_expand_var.d delete mode 100644 42sh/objs/lexer/token_free.d delete mode 100644 42sh/objs/lexer/token_init.d delete mode 100644 42sh/objs/lexer/token_print.d delete mode 100644 42sh/objs/main/data_exit.d delete mode 100644 42sh/objs/main/data_init.d delete mode 100644 42sh/objs/main/data_singleton.d delete mode 100644 42sh/objs/main/ft_cleanup.d delete mode 100644 42sh/objs/main/ft_print_all_ast.d delete mode 100644 42sh/objs/main/ft_putast.d delete mode 100644 42sh/objs/main/ft_putast2.d delete mode 100644 42sh/objs/main/lib_expansion.d delete mode 100644 42sh/objs/main/main.d delete mode 100644 42sh/objs/main/read_script.d delete mode 100644 42sh/objs/main/shell_exit.d delete mode 100644 42sh/objs/main/shell_get_avdata.d delete mode 100644 42sh/objs/main/shell_get_opts.d delete mode 100644 42sh/objs/main/shell_init.d delete mode 100644 42sh/objs/main/shell_script.d delete mode 100644 42sh/objs/main/sig_handler.d delete mode 100644 42sh/objs/parser/ft_parse.d delete mode 100644 42sh/objs/parser/get_instruction.d delete mode 100644 42sh/objs/parser/get_sub_instruction.d delete mode 100644 42sh/objs/parser/parse.d delete mode 100644 42sh/objs/parser/parse_dgreat.d delete mode 100644 42sh/objs/parser/parse_dless.d delete mode 100644 42sh/objs/parser/parse_do.d delete mode 100644 42sh/objs/parser/parse_done.d delete mode 100644 42sh/objs/parser/parse_elif.d delete mode 100644 42sh/objs/parser/parse_else.d delete mode 100644 42sh/objs/parser/parse_great.d delete mode 100644 42sh/objs/parser/parse_greatand.d delete mode 100644 42sh/objs/parser/parse_if.d delete mode 100644 42sh/objs/parser/parse_less.d delete mode 100644 42sh/objs/parser/parse_lessand.d delete mode 100644 42sh/objs/parser/parse_separator.d delete mode 100644 42sh/objs/parser/parse_subshell.d delete mode 100644 42sh/objs/parser/parse_while.d delete mode 100644 42sh/objs/parser/parse_word.d diff --git a/42sh/objs/builtin/bt_read_get.d b/42sh/objs/builtin/bt_read_get.d deleted file mode 100644 index 78b00ce7..00000000 --- a/42sh/objs/builtin/bt_read_get.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/bt_read_get.o: src/builtin/bt_read_get.c \ - includes/builtin_read.h includes/types.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/builtin.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/bt_read_parse.d b/42sh/objs/builtin/bt_read_parse.d deleted file mode 100644 index 2d3a3ea8..00000000 --- a/42sh/objs/builtin/bt_read_parse.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/bt_read_parse.o: src/builtin/bt_read_parse.c \ - includes/builtin_read.h includes/types.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/builtin.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/bt_read_term.d b/42sh/objs/builtin/bt_read_term.d deleted file mode 100644 index 07daba8a..00000000 --- a/42sh/objs/builtin/bt_read_term.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/bt_read_term.o: src/builtin/bt_read_term.c \ - includes/builtin.h includes/types.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/builtin_read.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_cd.d b/42sh/objs/builtin/builtin_cd.d deleted file mode 100644 index 66bb4b5b..00000000 --- a/42sh/objs/builtin/builtin_cd.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_cd.o: src/builtin/builtin_cd.c includes/builtin.h \ - includes/types.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/builtin_read.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_echo.d b/42sh/objs/builtin/builtin_echo.d deleted file mode 100644 index cad6050e..00000000 --- a/42sh/objs/builtin/builtin_echo.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_echo.o: src/builtin/builtin_echo.c \ - includes/builtin.h includes/types.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/builtin_read.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_env.d b/42sh/objs/builtin/builtin_env.d deleted file mode 100644 index 1721460e..00000000 --- a/42sh/objs/builtin/builtin_env.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_env.o: src/builtin/builtin_env.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_exit.d b/42sh/objs/builtin/builtin_exit.d deleted file mode 100644 index beea8dc7..00000000 --- a/42sh/objs/builtin/builtin_exit.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_exit.o: src/builtin/builtin_exit.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_read.d b/42sh/objs/builtin/builtin_read.d deleted file mode 100644 index bd54b1aa..00000000 --- a/42sh/objs/builtin/builtin_read.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_read.o: src/builtin/builtin_read.c \ - includes/builtin_read.h includes/types.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/builtin.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_setenv.d b/42sh/objs/builtin/builtin_setenv.d deleted file mode 100644 index 7132992c..00000000 --- a/42sh/objs/builtin/builtin_setenv.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_setenv.o: src/builtin/builtin_setenv.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/builtin_unsetenv.d b/42sh/objs/builtin/builtin_unsetenv.d deleted file mode 100644 index 8471e723..00000000 --- a/42sh/objs/builtin/builtin_unsetenv.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/builtin_unsetenv.o: src/builtin/builtin_unsetenv.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d deleted file mode 100644 index ff7d76e5..00000000 --- a/42sh/objs/builtin/is_builtin.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d deleted file mode 100644 index b230ba88..00000000 --- a/42sh/objs/exec/ast_free.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d deleted file mode 100644 index 3f76b13f..00000000 --- a/42sh/objs/exec/exec_ampersand.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d deleted file mode 100644 index b77ed942..00000000 --- a/42sh/objs/exec/exec_and_if.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d deleted file mode 100644 index 519b2761..00000000 --- a/42sh/objs/exec/exec_command.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d deleted file mode 100644 index e30f36b9..00000000 --- a/42sh/objs/exec/exec_default.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_dgreat.d b/42sh/objs/exec/exec_dgreat.d deleted file mode 100644 index 2f6c9f37..00000000 --- a/42sh/objs/exec/exec_dgreat.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_dgreat.o: src/exec/exec_dgreat.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d deleted file mode 100644 index 8bc0cedd..00000000 --- a/42sh/objs/exec/exec_elif.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d deleted file mode 100644 index 70ff1692..00000000 --- a/42sh/objs/exec/exec_else.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/exec/exec_great.d b/42sh/objs/exec/exec_great.d deleted file mode 100644 index 939f9abb..00000000 --- a/42sh/objs/exec/exec_great.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_great.o: src/exec/exec_great.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d deleted file mode 100644 index 69ca093e..00000000 --- a/42sh/objs/exec/exec_if.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/job_control.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/exec/exec_less.d b/42sh/objs/exec/exec_less.d deleted file mode 100644 index d6a05514..00000000 --- a/42sh/objs/exec/exec_less.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_less.o: src/exec/exec_less.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d deleted file mode 100644 index c8524f9c..00000000 --- a/42sh/objs/exec/exec_or_if.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d deleted file mode 100644 index fa4cc8c0..00000000 --- a/42sh/objs/exec/exec_pipe.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d deleted file mode 100644 index 5f926910..00000000 --- a/42sh/objs/exec/exec_semi.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d deleted file mode 100644 index 1bbada62..00000000 --- a/42sh/objs/exec/exec_until.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/exec_while.d b/42sh/objs/exec/exec_while.d deleted file mode 100644 index 0f8ee4e8..00000000 --- a/42sh/objs/exec/exec_while.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/exec_while.o: src/exec/exec_while.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/ft_exec.d b/42sh/objs/exec/ft_exec.d deleted file mode 100644 index 1e838a8e..00000000 --- a/42sh/objs/exec/ft_exec.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/ft_exec.o: src/exec/ft_exec.c includes/exec.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/job_control.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/exec/ft_findexec.d b/42sh/objs/exec/ft_findexec.d deleted file mode 100644 index 17d1f67c..00000000 --- a/42sh/objs/exec/ft_findexec.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/ft_findexec.o: src/exec/ft_findexec.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/exec/launch_process.d b/42sh/objs/exec/launch_process.d deleted file mode 100644 index 24c10872..00000000 --- a/42sh/objs/exec/launch_process.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/launch_process.o: src/exec/launch_process.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_redirect.d b/42sh/objs/exec/process_redirect.d deleted file mode 100644 index 5c8f53f2..00000000 --- a/42sh/objs/exec/process_redirect.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/process_redirect.o: src/exec/process_redirect.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_reset.d b/42sh/objs/exec/process_reset.d deleted file mode 100644 index 11c6fb63..00000000 --- a/42sh/objs/exec/process_reset.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/process_reset.o: src/exec/process_reset.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_setexec.d b/42sh/objs/exec/process_setexec.d deleted file mode 100644 index 06847f89..00000000 --- a/42sh/objs/exec/process_setexec.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/process_setexec.o: src/exec/process_setexec.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_setgroup.d b/42sh/objs/exec/process_setgroup.d deleted file mode 100644 index aaa7fd96..00000000 --- a/42sh/objs/exec/process_setgroup.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/process_setgroup.o: src/exec/process_setgroup.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/process_setsig.d b/42sh/objs/exec/process_setsig.d deleted file mode 100644 index 7f365b62..00000000 --- a/42sh/objs/exec/process_setsig.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/process_setsig.o: src/exec/process_setsig.c includes/exec.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/exec/set_exitstatus.d b/42sh/objs/exec/set_exitstatus.d deleted file mode 100644 index 7fc0037d..00000000 --- a/42sh/objs/exec/set_exitstatus.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/exec/set_exitstatus.o: src/exec/set_exitstatus.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/glob/dir_glob.d b/42sh/objs/glob/dir_glob.d deleted file mode 100644 index ac281bcc..00000000 --- a/42sh/objs/glob/dir_glob.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/dir_glob.o: src/glob/dir_glob.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/expand_brace.d b/42sh/objs/glob/expand_brace.d deleted file mode 100644 index e8830490..00000000 --- a/42sh/objs/glob/expand_brace.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/expand_brace.o: src/glob/expand_brace.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/expand_esc.d b/42sh/objs/glob/expand_esc.d deleted file mode 100644 index a1338a4a..00000000 --- a/42sh/objs/glob/expand_esc.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/expand_esc.o: src/glob/expand_esc.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/ft_strsplit_esc.d b/42sh/objs/glob/ft_strsplit_esc.d deleted file mode 100644 index a483f37c..00000000 --- a/42sh/objs/glob/ft_strsplit_esc.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/ft_strsplit_esc.o: src/glob/ft_strsplit_esc.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/ft_strsplit_spe.d b/42sh/objs/glob/ft_strsplit_spe.d deleted file mode 100644 index 37de917f..00000000 --- a/42sh/objs/glob/ft_strsplit_spe.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/ft_strsplit_spe.o: src/glob/ft_strsplit_spe.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/glob.d b/42sh/objs/glob/glob.d deleted file mode 100644 index 41901c5b..00000000 --- a/42sh/objs/glob/glob.d +++ /dev/null @@ -1,6 +0,0 @@ -objs/glob/glob.o: src/glob/glob.c includes/glob.h includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/is_char_esc.d b/42sh/objs/glob/is_char_esc.d deleted file mode 100644 index 299cb04f..00000000 --- a/42sh/objs/glob/is_char_esc.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/is_char_esc.o: src/glob/is_char_esc.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_back.d b/42sh/objs/glob/lib_perso/ft_ld_back.d deleted file mode 100644 index 9f5c6251..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_back.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_back.o: src/glob/lib_perso/ft_ld_back.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_clear.d b/42sh/objs/glob/lib_perso/ft_ld_clear.d deleted file mode 100644 index 3fed69fe..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_clear.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_clear.o: src/glob/lib_perso/ft_ld_clear.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_del.d b/42sh/objs/glob/lib_perso/ft_ld_del.d deleted file mode 100644 index 09f262fb..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_del.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_del.o: src/glob/lib_perso/ft_ld_del.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_front.d b/42sh/objs/glob/lib_perso/ft_ld_front.d deleted file mode 100644 index 67b63b03..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_front.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_front.o: src/glob/lib_perso/ft_ld_front.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_new.d b/42sh/objs/glob/lib_perso/ft_ld_new.d deleted file mode 100644 index f4e87e22..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_new.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_new.o: src/glob/lib_perso/ft_ld_new.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_order.d b/42sh/objs/glob/lib_perso/ft_ld_order.d deleted file mode 100644 index e26632d7..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_order.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_order.o: src/glob/lib_perso/ft_ld_order.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushback.d b/42sh/objs/glob/lib_perso/ft_ld_pushback.d deleted file mode 100644 index a722d79a..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_pushback.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_pushback.o: src/glob/lib_perso/ft_ld_pushback.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushfront.d b/42sh/objs/glob/lib_perso/ft_ld_pushfront.d deleted file mode 100644 index f60d2ccf..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_pushfront.d +++ /dev/null @@ -1,8 +0,0 @@ -objs/glob/lib_perso/ft_ld_pushfront.o: \ - src/glob/lib_perso/ft_ld_pushfront.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_reverse.d b/42sh/objs/glob/lib_perso/ft_ld_reverse.d deleted file mode 100644 index c906ab8f..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_reverse.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_reverse.o: src/glob/lib_perso/ft_ld_reverse.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_size.d b/42sh/objs/glob/lib_perso/ft_ld_size.d deleted file mode 100644 index b2c71930..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_size.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_size.o: src/glob/lib_perso/ft_ld_size.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_swap.d b/42sh/objs/glob/lib_perso/ft_ld_swap.d deleted file mode 100644 index 17efa53d..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_swap.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_swap.o: src/glob/lib_perso/ft_ld_swap.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_to_tab.d b/42sh/objs/glob/lib_perso/ft_ld_to_tab.d deleted file mode 100644 index cadf7d0c..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_to_tab.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_ld_to_tab.o: src/glob/lib_perso/ft_ld_to_tab.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_strjoinf.d b/42sh/objs/glob/lib_perso/ft_strjoinf.d deleted file mode 100644 index 427d013d..00000000 --- a/42sh/objs/glob/lib_perso/ft_strjoinf.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_strjoinf.o: src/glob/lib_perso/ft_strjoinf.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_tabdel.d b/42sh/objs/glob/lib_perso/ft_tabdel.d deleted file mode 100644 index 19d3bf6e..00000000 --- a/42sh/objs/glob/lib_perso/ft_tabdel.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/lib_perso/ft_tabdel.o: src/glob/lib_perso/ft_tabdel.c \ - includes/glob.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h diff --git a/42sh/objs/glob/lib_perso/ft_tablen.d b/42sh/objs/glob/lib_perso/ft_tablen.d deleted file mode 100644 index f64294f1..00000000 --- a/42sh/objs/glob/lib_perso/ft_tablen.d +++ /dev/null @@ -1,4 +0,0 @@ -objs/glob/lib_perso/ft_tablen.o: src/glob/lib_perso/ft_tablen.c \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h diff --git a/42sh/objs/glob/match_pattern.d b/42sh/objs/glob/match_pattern.d deleted file mode 100644 index 56dbd32f..00000000 --- a/42sh/objs/glob/match_pattern.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/glob/match_pattern.o: src/glob/match_pattern.c includes/glob.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h diff --git a/42sh/objs/job-control/builtin_bg.d b/42sh/objs/job-control/builtin_bg.d deleted file mode 100644 index f21ed2e7..00000000 --- a/42sh/objs/job-control/builtin_bg.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/builtin_bg.o: src/job-control/builtin_bg.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/builtin_fg.d b/42sh/objs/job-control/builtin_fg.d deleted file mode 100644 index c2b7d750..00000000 --- a/42sh/objs/job-control/builtin_fg.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/builtin_fg.o: src/job-control/builtin_fg.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/builtin_jobs.d b/42sh/objs/job-control/builtin_jobs.d deleted file mode 100644 index 1d2bf13b..00000000 --- a/42sh/objs/job-control/builtin_jobs.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/builtin_jobs.o: src/job-control/builtin_jobs.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/do_job_notification.d b/42sh/objs/job-control/do_job_notification.d deleted file mode 100644 index 12976425..00000000 --- a/42sh/objs/job-control/do_job_notification.d +++ /dev/null @@ -1,8 +0,0 @@ -objs/job-control/do_job_notification.o: \ - src/job-control/do_job_notification.c includes/job_control.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/exec.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/job-control/job_addprocess.d b/42sh/objs/job-control/job_addprocess.d deleted file mode 100644 index 5dabc110..00000000 --- a/42sh/objs/job-control/job_addprocess.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_addprocess.o: src/job-control/job_addprocess.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_cmp_id.d b/42sh/objs/job-control/job_cmp_id.d deleted file mode 100644 index 914d5c88..00000000 --- a/42sh/objs/job-control/job_cmp_id.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_cmp_id.o: src/job-control/job_cmp_id.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_format.d b/42sh/objs/job-control/job_format.d deleted file mode 100644 index 15021ee2..00000000 --- a/42sh/objs/job-control/job_format.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_format.o: src/job-control/job_format.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_format_head.d b/42sh/objs/job-control/job_format_head.d deleted file mode 100644 index 90432408..00000000 --- a/42sh/objs/job-control/job_format_head.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_format_head.o: src/job-control/job_format_head.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_free.d b/42sh/objs/job-control/job_free.d deleted file mode 100644 index 5c0af190..00000000 --- a/42sh/objs/job-control/job_free.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_free.o: src/job-control/job_free.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_getprocess.d b/42sh/objs/job-control/job_getprocess.d deleted file mode 100644 index e449b63c..00000000 --- a/42sh/objs/job-control/job_getprocess.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_getprocess.o: src/job-control/job_getprocess.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_getrank.d b/42sh/objs/job-control/job_getrank.d deleted file mode 100644 index 9017a5f6..00000000 --- a/42sh/objs/job-control/job_getrank.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_getrank.o: src/job-control/job_getrank.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_is_completed.d b/42sh/objs/job-control/job_is_completed.d deleted file mode 100644 index 509aa0a3..00000000 --- a/42sh/objs/job-control/job_is_completed.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_is_completed.o: src/job-control/job_is_completed.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_is_stopped.d b/42sh/objs/job-control/job_is_stopped.d deleted file mode 100644 index c4f314a0..00000000 --- a/42sh/objs/job-control/job_is_stopped.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_is_stopped.o: src/job-control/job_is_stopped.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_kill_all.d b/42sh/objs/job-control/job_kill_all.d deleted file mode 100644 index 00f571bb..00000000 --- a/42sh/objs/job-control/job_kill_all.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_kill_all.o: src/job-control/job_kill_all.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_notify_change.d b/42sh/objs/job-control/job_notify_change.d deleted file mode 100644 index d3ddc452..00000000 --- a/42sh/objs/job-control/job_notify_change.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_notify_change.o: src/job-control/job_notify_change.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_notify_new.d b/42sh/objs/job-control/job_notify_new.d deleted file mode 100644 index 04110f1d..00000000 --- a/42sh/objs/job-control/job_notify_new.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_notify_new.o: src/job-control/job_notify_new.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_remove.d b/42sh/objs/job-control/job_remove.d deleted file mode 100644 index d07c853c..00000000 --- a/42sh/objs/job-control/job_remove.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_remove.o: src/job-control/job_remove.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_run.d b/42sh/objs/job-control/job_run.d deleted file mode 100644 index 3926c1ee..00000000 --- a/42sh/objs/job-control/job_run.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_run.o: src/job-control/job_run.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_update_id.d b/42sh/objs/job-control/job_update_id.d deleted file mode 100644 index 4773d879..00000000 --- a/42sh/objs/job-control/job_update_id.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_update_id.o: src/job-control/job_update_id.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_update_status.d b/42sh/objs/job-control/job_update_status.d deleted file mode 100644 index b222b328..00000000 --- a/42sh/objs/job-control/job_update_status.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_update_status.o: src/job-control/job_update_status.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/job_wait.d b/42sh/objs/job-control/job_wait.d deleted file mode 100644 index 35466ce7..00000000 --- a/42sh/objs/job-control/job_wait.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/job_wait.o: src/job-control/job_wait.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/mark_job_as_running.d b/42sh/objs/job-control/mark_job_as_running.d deleted file mode 100644 index 56ab3c99..00000000 --- a/42sh/objs/job-control/mark_job_as_running.d +++ /dev/null @@ -1,8 +0,0 @@ -objs/job-control/mark_job_as_running.o: \ - src/job-control/mark_job_as_running.c includes/job_control.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/exec.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/job-control/process_cmp_pid.d b/42sh/objs/job-control/process_cmp_pid.d deleted file mode 100644 index 35f7ef84..00000000 --- a/42sh/objs/job-control/process_cmp_pid.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/process_cmp_pid.o: src/job-control/process_cmp_pid.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/process_format.d b/42sh/objs/job-control/process_format.d deleted file mode 100644 index 4b9ae465..00000000 --- a/42sh/objs/job-control/process_format.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/process_format.o: src/job-control/process_format.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/process_free.d b/42sh/objs/job-control/process_free.d deleted file mode 100644 index 6634c396..00000000 --- a/42sh/objs/job-control/process_free.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/process_free.o: src/job-control/process_free.c \ - includes/job_control.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/process_mark_status.d b/42sh/objs/job-control/process_mark_status.d deleted file mode 100644 index 3c1da39c..00000000 --- a/42sh/objs/job-control/process_mark_status.d +++ /dev/null @@ -1,8 +0,0 @@ -objs/job-control/process_mark_status.o: \ - src/job-control/process_mark_status.c includes/job_control.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/exec.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/job-control/put_job_in_background.d b/42sh/objs/job-control/put_job_in_background.d deleted file mode 100644 index 95112c17..00000000 --- a/42sh/objs/job-control/put_job_in_background.d +++ /dev/null @@ -1,8 +0,0 @@ -objs/job-control/put_job_in_background.o: \ - src/job-control/put_job_in_background.c includes/job_control.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/exec.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/job-control/put_job_in_foreground.d b/42sh/objs/job-control/put_job_in_foreground.d deleted file mode 100644 index db876ff9..00000000 --- a/42sh/objs/job-control/put_job_in_foreground.d +++ /dev/null @@ -1,8 +0,0 @@ -objs/job-control/put_job_in_foreground.o: \ - src/job-control/put_job_in_foreground.c includes/job_control.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/exec.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/job-control/sigchld_handler.d b/42sh/objs/job-control/sigchld_handler.d deleted file mode 100644 index 7a38880f..00000000 --- a/42sh/objs/job-control/sigchld_handler.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/sigchld_handler.o: src/job-control/sigchld_handler.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigint_handler.d b/42sh/objs/job-control/sigint_handler.d deleted file mode 100644 index fca3434c..00000000 --- a/42sh/objs/job-control/sigint_handler.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/sigint_handler.o: src/job-control/sigint_handler.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigtstp_handler.d b/42sh/objs/job-control/sigtstp_handler.d deleted file mode 100644 index 3f3efe66..00000000 --- a/42sh/objs/job-control/sigtstp_handler.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/sigtstp_handler.o: src/job-control/sigtstp_handler.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigttin_handler.d b/42sh/objs/job-control/sigttin_handler.d deleted file mode 100644 index 19df16e0..00000000 --- a/42sh/objs/job-control/sigttin_handler.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/sigttin_handler.o: src/job-control/sigttin_handler.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/job-control/sigttou_handler.d b/42sh/objs/job-control/sigttou_handler.d deleted file mode 100644 index 31886c4a..00000000 --- a/42sh/objs/job-control/sigttou_handler.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/job-control/sigttou_handler.o: src/job-control/sigttou_handler.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/command_getoutput.d b/42sh/objs/lexer/command_getoutput.d deleted file mode 100644 index 6b4403b7..00000000 --- a/42sh/objs/lexer/command_getoutput.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/command_getoutput.o: src/lexer/command_getoutput.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/ft_lexer.d b/42sh/objs/lexer/ft_lexer.d deleted file mode 100644 index 2775220d..00000000 --- a/42sh/objs/lexer/ft_lexer.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/ft_lexer.o: src/lexer/ft_lexer.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/ft_post_tokenize.d b/42sh/objs/lexer/ft_post_tokenize.d deleted file mode 100644 index 79fc1d90..00000000 --- a/42sh/objs/lexer/ft_post_tokenize.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/ft_post_tokenize.o: src/lexer/ft_post_tokenize.c \ - includes/lexer.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/ft_tokenize.d b/42sh/objs/lexer/ft_tokenize.d deleted file mode 100644 index 7d478980..00000000 --- a/42sh/objs/lexer/ft_tokenize.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/ft_tokenize.o: src/lexer/ft_tokenize.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/get_lexer_state.d b/42sh/objs/lexer/get_lexer_state.d deleted file mode 100644 index 82438116..00000000 --- a/42sh/objs/lexer/get_lexer_state.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/get_lexer_state.o: src/lexer/get_lexer_state.c \ - includes/lexer.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/get_reserved_words.d b/42sh/objs/lexer/get_reserved_words.d deleted file mode 100644 index 0239c611..00000000 --- a/42sh/objs/lexer/get_reserved_words.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/get_reserved_words.o: src/lexer/get_reserved_words.c \ - includes/lexer.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/lexer_backslash.d b/42sh/objs/lexer/lexer_backslash.d deleted file mode 100644 index b925c74a..00000000 --- a/42sh/objs/lexer/lexer_backslash.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_backslash.o: src/lexer/lexer_backslash.c \ - includes/lexer.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/lexer_comment.d b/42sh/objs/lexer/lexer_comment.d deleted file mode 100644 index 04199ff3..00000000 --- a/42sh/objs/lexer/lexer_comment.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_comment.o: src/lexer/lexer_comment.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_default.d b/42sh/objs/lexer/lexer_default.d deleted file mode 100644 index f8fd3ff0..00000000 --- a/42sh/objs/lexer/lexer_default.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_default.o: src/lexer/lexer_default.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_delim.d b/42sh/objs/lexer/lexer_delim.d deleted file mode 100644 index a1ce1483..00000000 --- a/42sh/objs/lexer/lexer_delim.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_delim.o: src/lexer/lexer_delim.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_dquote.d b/42sh/objs/lexer/lexer_dquote.d deleted file mode 100644 index f4d17eb5..00000000 --- a/42sh/objs/lexer/lexer_dquote.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_dquote.o: src/lexer/lexer_dquote.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_great.d b/42sh/objs/lexer/lexer_great.d deleted file mode 100644 index 298ad637..00000000 --- a/42sh/objs/lexer/lexer_great.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_great.o: src/lexer/lexer_great.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_greatand.d b/42sh/objs/lexer/lexer_greatand.d deleted file mode 100644 index 12e896f7..00000000 --- a/42sh/objs/lexer/lexer_greatand.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_greatand.o: src/lexer/lexer_greatand.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_less.d b/42sh/objs/lexer/lexer_less.d deleted file mode 100644 index b281dae1..00000000 --- a/42sh/objs/lexer/lexer_less.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_less.o: src/lexer/lexer_less.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_lessand.d b/42sh/objs/lexer/lexer_lessand.d deleted file mode 100644 index 9fd03772..00000000 --- a/42sh/objs/lexer/lexer_lessand.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_lessand.o: src/lexer/lexer_lessand.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_newline.d b/42sh/objs/lexer/lexer_newline.d deleted file mode 100644 index c1aae813..00000000 --- a/42sh/objs/lexer/lexer_newline.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_newline.o: src/lexer/lexer_newline.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_number.d b/42sh/objs/lexer/lexer_number.d deleted file mode 100644 index 27343a23..00000000 --- a/42sh/objs/lexer/lexer_number.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_number.o: src/lexer/lexer_number.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_quote.d b/42sh/objs/lexer/lexer_quote.d deleted file mode 100644 index 4c8742ba..00000000 --- a/42sh/objs/lexer/lexer_quote.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_quote.o: src/lexer/lexer_quote.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_sep.d b/42sh/objs/lexer/lexer_sep.d deleted file mode 100644 index b1535ccf..00000000 --- a/42sh/objs/lexer/lexer_sep.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_sep.o: src/lexer/lexer_sep.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_special.d b/42sh/objs/lexer/lexer_special.d deleted file mode 100644 index 0f77a543..00000000 --- a/42sh/objs/lexer/lexer_special.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_special.o: src/lexer/lexer_special.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_then.d b/42sh/objs/lexer/lexer_then.d deleted file mode 100644 index ca62a452..00000000 --- a/42sh/objs/lexer/lexer_then.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_then.o: src/lexer/lexer_then.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_var.d b/42sh/objs/lexer/lexer_var.d deleted file mode 100644 index acef2398..00000000 --- a/42sh/objs/lexer/lexer_var.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_var.o: src/lexer/lexer_var.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/lexer_word.d b/42sh/objs/lexer/lexer_word.d deleted file mode 100644 index 495c4eec..00000000 --- a/42sh/objs/lexer/lexer_word.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/lexer_word.o: src/lexer/lexer_word.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/reduce_bquotes.d b/42sh/objs/lexer/reduce_bquotes.d deleted file mode 100644 index ad3f082c..00000000 --- a/42sh/objs/lexer/reduce_bquotes.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/reduce_bquotes.o: src/lexer/reduce_bquotes.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/reduce_parens.d b/42sh/objs/lexer/reduce_parens.d deleted file mode 100644 index 21e19e07..00000000 --- a/42sh/objs/lexer/reduce_parens.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/reduce_parens.o: src/lexer/reduce_parens.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/token_append.d b/42sh/objs/lexer/token_append.d deleted file mode 100644 index df99ed38..00000000 --- a/42sh/objs/lexer/token_append.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/token_append.o: src/lexer/token_append.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/token_cmp_type.d b/42sh/objs/lexer/token_cmp_type.d deleted file mode 100644 index 9f6e010d..00000000 --- a/42sh/objs/lexer/token_cmp_type.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/token_cmp_type.o: src/lexer/token_cmp_type.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/token_expand_var.d b/42sh/objs/lexer/token_expand_var.d deleted file mode 100644 index 82b34a95..00000000 --- a/42sh/objs/lexer/token_expand_var.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/token_expand_var.o: src/lexer/token_expand_var.c \ - includes/lexer.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/lexer/token_free.d b/42sh/objs/lexer/token_free.d deleted file mode 100644 index 14f53c23..00000000 --- a/42sh/objs/lexer/token_free.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/token_free.o: src/lexer/token_free.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/token_init.d b/42sh/objs/lexer/token_init.d deleted file mode 100644 index 2f989946..00000000 --- a/42sh/objs/lexer/token_init.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/token_init.o: src/lexer/token_init.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/lexer/token_print.d b/42sh/objs/lexer/token_print.d deleted file mode 100644 index 15cc7beb..00000000 --- a/42sh/objs/lexer/token_print.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/lexer/token_print.o: src/lexer/token_print.c includes/lexer.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/data_exit.d b/42sh/objs/main/data_exit.d deleted file mode 100644 index 8dbd035e..00000000 --- a/42sh/objs/main/data_exit.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/data_exit.o: src/main/data_exit.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/data_init.d b/42sh/objs/main/data_init.d deleted file mode 100644 index 6719a330..00000000 --- a/42sh/objs/main/data_init.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/data_init.o: src/main/data_init.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/data_singleton.d b/42sh/objs/main/data_singleton.d deleted file mode 100644 index 0f300428..00000000 --- a/42sh/objs/main/data_singleton.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/data_singleton.o: src/main/data_singleton.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/ft_cleanup.d b/42sh/objs/main/ft_cleanup.d deleted file mode 100644 index 0b477da3..00000000 --- a/42sh/objs/main/ft_cleanup.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/ft_cleanup.o: src/main/ft_cleanup.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/ft_print_all_ast.d b/42sh/objs/main/ft_print_all_ast.d deleted file mode 100644 index 29caf400..00000000 --- a/42sh/objs/main/ft_print_all_ast.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/ft_print_all_ast.o: src/main/ft_print_all_ast.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/ft_putast.d b/42sh/objs/main/ft_putast.d deleted file mode 100644 index 545c6ae3..00000000 --- a/42sh/objs/main/ft_putast.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/ft_putast.o: src/main/ft_putast.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/ft_putast2.d b/42sh/objs/main/ft_putast2.d deleted file mode 100644 index dac566c6..00000000 --- a/42sh/objs/main/ft_putast2.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/ft_putast2.o: src/main/ft_putast2.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/lib_expansion.d b/42sh/objs/main/lib_expansion.d deleted file mode 100644 index 0d7e1d1d..00000000 --- a/42sh/objs/main/lib_expansion.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/lib_expansion.o: src/main/lib_expansion.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/main.d b/42sh/objs/main/main.d deleted file mode 100644 index aeaa3335..00000000 --- a/42sh/objs/main/main.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/main.o: src/main/main.c includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/read_script.d b/42sh/objs/main/read_script.d deleted file mode 100644 index b685fbd9..00000000 --- a/42sh/objs/main/read_script.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/read_script.o: src/main/read_script.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/shell_exit.d b/42sh/objs/main/shell_exit.d deleted file mode 100644 index 7c757180..00000000 --- a/42sh/objs/main/shell_exit.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/shell_exit.o: src/main/shell_exit.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/shell_get_avdata.d b/42sh/objs/main/shell_get_avdata.d deleted file mode 100644 index e3307d34..00000000 --- a/42sh/objs/main/shell_get_avdata.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/shell_get_avdata.o: src/main/shell_get_avdata.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/shell_get_opts.d b/42sh/objs/main/shell_get_opts.d deleted file mode 100644 index b82e3bdb..00000000 --- a/42sh/objs/main/shell_get_opts.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/shell_get_opts.o: src/main/shell_get_opts.c \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/main/shell_init.d b/42sh/objs/main/shell_init.d deleted file mode 100644 index 44f5a92f..00000000 --- a/42sh/objs/main/shell_init.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/shell_init.o: src/main/shell_init.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/shell_script.d b/42sh/objs/main/shell_script.d deleted file mode 100644 index 36f67ca6..00000000 --- a/42sh/objs/main/shell_script.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/shell_script.o: src/main/shell_script.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/main/sig_handler.d b/42sh/objs/main/sig_handler.d deleted file mode 100644 index 6f7bd012..00000000 --- a/42sh/objs/main/sig_handler.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/main/sig_handler.o: src/main/sig_handler.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/ft_parse.d b/42sh/objs/parser/ft_parse.d deleted file mode 100644 index 7e218704..00000000 --- a/42sh/objs/parser/ft_parse.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/ft_parse.o: src/parser/ft_parse.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/get_instruction.d b/42sh/objs/parser/get_instruction.d deleted file mode 100644 index 03cab06b..00000000 --- a/42sh/objs/parser/get_instruction.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/get_instruction.o: src/parser/get_instruction.c \ - includes/parser.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/get_sub_instruction.d b/42sh/objs/parser/get_sub_instruction.d deleted file mode 100644 index 7a14d67a..00000000 --- a/42sh/objs/parser/get_sub_instruction.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/get_sub_instruction.o: src/parser/get_sub_instruction.c \ - includes/parser.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse.d b/42sh/objs/parser/parse.d deleted file mode 100644 index fab3a429..00000000 --- a/42sh/objs/parser/parse.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse.o: src/parser/parse.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_dgreat.d b/42sh/objs/parser/parse_dgreat.d deleted file mode 100644 index 71b48ce5..00000000 --- a/42sh/objs/parser/parse_dgreat.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_dgreat.o: src/parser/parse_dgreat.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_dless.d b/42sh/objs/parser/parse_dless.d deleted file mode 100644 index 73792f0d..00000000 --- a/42sh/objs/parser/parse_dless.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_dless.o: src/parser/parse_dless.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_do.d b/42sh/objs/parser/parse_do.d deleted file mode 100644 index 8f12c9f2..00000000 --- a/42sh/objs/parser/parse_do.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_do.o: src/parser/parse_do.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_done.d b/42sh/objs/parser/parse_done.d deleted file mode 100644 index ccfc3515..00000000 --- a/42sh/objs/parser/parse_done.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_done.o: src/parser/parse_done.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_elif.d b/42sh/objs/parser/parse_elif.d deleted file mode 100644 index 220e68fe..00000000 --- a/42sh/objs/parser/parse_elif.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_elif.o: src/parser/parse_elif.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_else.d b/42sh/objs/parser/parse_else.d deleted file mode 100644 index c0ece4a3..00000000 --- a/42sh/objs/parser/parse_else.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_else.o: src/parser/parse_else.c includes/minishell.h \ - includes/libft.h includes/get_next_line.h includes/ft_xattr.h \ - includes/mytime.h includes/lst.h includes/dlst.h includes/btree.h \ - includes/color.h includes/types.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_great.d b/42sh/objs/parser/parse_great.d deleted file mode 100644 index 91c1b658..00000000 --- a/42sh/objs/parser/parse_great.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_great.o: src/parser/parse_great.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_greatand.d b/42sh/objs/parser/parse_greatand.d deleted file mode 100644 index 0b158be7..00000000 --- a/42sh/objs/parser/parse_greatand.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_greatand.o: src/parser/parse_greatand.c \ - includes/parser.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse_if.d b/42sh/objs/parser/parse_if.d deleted file mode 100644 index 67aab5f3..00000000 --- a/42sh/objs/parser/parse_if.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_if.o: src/parser/parse_if.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_less.d b/42sh/objs/parser/parse_less.d deleted file mode 100644 index b715e726..00000000 --- a/42sh/objs/parser/parse_less.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_less.o: src/parser/parse_less.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_lessand.d b/42sh/objs/parser/parse_lessand.d deleted file mode 100644 index c9a51421..00000000 --- a/42sh/objs/parser/parse_lessand.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_lessand.o: src/parser/parse_lessand.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_separator.d b/42sh/objs/parser/parse_separator.d deleted file mode 100644 index 03219dc7..00000000 --- a/42sh/objs/parser/parse_separator.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_separator.o: src/parser/parse_separator.c \ - includes/parser.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse_subshell.d b/42sh/objs/parser/parse_subshell.d deleted file mode 100644 index 14893805..00000000 --- a/42sh/objs/parser/parse_subshell.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_subshell.o: src/parser/parse_subshell.c \ - includes/parser.h includes/minishell.h includes/libft.h \ - includes/get_next_line.h includes/ft_xattr.h includes/mytime.h \ - includes/lst.h includes/dlst.h includes/btree.h includes/color.h \ - includes/types.h includes/lexer.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h diff --git a/42sh/objs/parser/parse_while.d b/42sh/objs/parser/parse_while.d deleted file mode 100644 index ef25c352..00000000 --- a/42sh/objs/parser/parse_while.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_while.o: src/parser/parse_while.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h diff --git a/42sh/objs/parser/parse_word.d b/42sh/objs/parser/parse_word.d deleted file mode 100644 index 1423079d..00000000 --- a/42sh/objs/parser/parse_word.d +++ /dev/null @@ -1,7 +0,0 @@ -objs/parser/parse_word.o: src/parser/parse_word.c includes/parser.h \ - includes/minishell.h includes/libft.h includes/get_next_line.h \ - includes/ft_xattr.h includes/mytime.h includes/lst.h includes/dlst.h \ - includes/btree.h includes/color.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h From ebc57c0da8ac33a88beead6f51028962d27033f8 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 9 Feb 2017 16:06:05 +0100 Subject: [PATCH 037/206] parser as a pushdown automata, test --- 42sh/Makefile | 4 +- 42sh/includes/lexer.h | 26 +++++++-- 42sh/includes/parser.h | 86 ++++++++++++++++++++++++++++-- 42sh/sample/stack.sh | 1 + 42sh/src/lexer/ft_lexer.c | 2 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/lexer_less.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/shell_script.c | 18 +++---- 42sh/src/parser/ft_parse.c | 68 ++++++++++------------- 42sh/src/parser/old_parse.c | 58 ++++++++++++++++++++ 42sh/src/parser/parse_word.c | 2 +- 42sh/src/parser/produce_prim_sym.c | 38 +++++++++++++ 42sh/src/parser/read_stack.c | 41 ++++++++++++++ 14 files changed, 285 insertions(+), 65 deletions(-) create mode 100644 42sh/sample/stack.sh create mode 100644 42sh/src/parser/old_parse.c create mode 100644 42sh/src/parser/produce_prim_sym.c create mode 100644 42sh/src/parser/read_stack.c diff --git a/42sh/Makefile b/42sh/Makefile index 147fe340..672d19c9 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -170,6 +170,7 @@ main/shell_script.c\ main/sig_handler.c\ parser/parse.c\ parser/ft_parse.c\ +parser/produce_prim_sym.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ parser/parse_dgreat.c\ @@ -186,7 +187,8 @@ parser/parse_while.c\ parser/parse_if.c\ parser/parse_elif.c\ parser/parse_else.c\ -parser/parse_word.c +parser/parse_word.c\ +parser/read_stack.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 98fd2c83..b614d632 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/06 20:35:43 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:26:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,8 +24,27 @@ typedef struct s_nest t_nest; typedef long long t_type; -# define TK_LESS (1 << 0) -# define TK_GREAT (1 << 1) +/* + * Token need : + * DLESSDASH + * CLOBBER + * LESSGREAT + * IO_NUMBER + * NAME + * DSEMI + * ASSIGNEMENT_WORD + * Lbrace + * Rbrace + * Bang + * Case + * Esac + * for + * in + * +*/ + +# define TK_LESS (1 << 0) //transparent +# define TK_GREAT (1 << 1) //transparent # define TK_DLESS (1 << 2) # define TK_DGREAT (1 << 3) # define TK_LESSAND (1 << 4) @@ -83,7 +102,6 @@ enum e_lexstate IF, THEN, FI, - LIST, COMMENT, }; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 538825a3..eef07eaf 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/06 20:35:28 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:58:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,87 @@ # include "minishell.h" -#define INSTRUCTION (TK_WHILE | TK_IF | TK_ELIF | TK_NEWLINE | TK_SEMI\ - | TK_ELSE | TK_UNTIL) +/* + * Parse POSIX grammar + * +*/ + +typedef unsigned long long int t_sym; + +#define PROGRAM (1UL << 0) +#define COMPLETE_COMMANDS (1UL << 1) +#define COMPLETE_COMMAND (1UL << 2) +#define LIST (1UL << 3) +#define AND_OR (1UL << 4) +#define PIPELINE (1UL << 5) +#define PIPE_SEQUENCE (1UL << 6) +#define COMMAND (1UL << 7) +#define COMPOUND_COMMAND (1UL << 8) +#define SUBSHELL (1UL << 9) +#define COMPOUND_LIST (1UL << 10) +#define TERM (1UL << 11) +#define FOR_CLAUSE (1UL << 12) +#define NAME (1UL << 13) +#define IN (1UL << 14) +#define WORDLIST (1UL << 15) +#define CASE_CLAUSE (1UL << 16) +#define CASE_LIST_NS (1UL << 17) +#define CASE_LIST (1UL << 18) +#define CASE_ITEM_NS (1UL << 19) +#define PATTERN (1UL << 20) +#define IF_CLAUSE (1UL << 21) +#define ELSE_PART (1UL << 22) +#define WHILE_CLAUSE (1UL << 23) +#define UNTIL_CLAUSE (1UL << 24) +#define FUNCTION_DEFINITION (1UL << 25) +#define FUNCTION_BODY (1UL << 26) +#define FNAME (1UL << 27) +#define BRACE_GROUP (1UL << 28) +#define DO_GROUP (1UL << 29) +#define SIMPLE_COMMAND (1UL << 30) +#define CMD_NAME (1UL << 31) +#define CMD_WORD (1UL << 32) +#define CMD_PREFIX (1UL << 33) +#define CMD_SUFFIX (1UL << 34) +#define REDIRECT_LIST (1UL << 35) +#define IO_REDIRECT (1UL << 36) +#define IO_FILE (1UL << 37) +#define FILENAME (1UL << 38) +#define IO_HERE (1UL << 39) +#define HERE_END (1UL << 40) +#define NEWLINE_LIST (1UL << 41) +#define LINEBREAK (1UL << 42) +#define SEPARATOR_OP (1UL << 43) +#define SEPARATOR (1UL << 44) +#define SEQUENTIAL_SEP (1UL << 45) + +#define SYM_DLESS (1UL << 46) +#define SYM_DGREAT (1UL << 47) +#define SYM_GREATAND (1UL << 48) +#define SYM_GREAT (1UL << 49) +#define SYM_LESSAND (1UL << 50) +#define SYM_LESS (1UL << 51) + + +int ft_parse(t_btree **ast, t_list **token); +int produce_prim_sym(t_sym *new_sym, t_list **lst); + +int ft_read_stack(t_sym stack[], int size); +char *read_state(t_sym current); + +enum e_parstate +{ + UNDEFINED, + ERROR, + SUCCESS, +}; + +typedef enum e_parstate t_parstate; + +/* + * Build AST + * +*/ typedef struct s_parser t_parser; typedef struct s_ld t_ld; @@ -64,7 +143,6 @@ extern t_parser g_parser[]; int parse(t_btree **ast, t_list **token); -int ft_parse(t_btree **ast, t_list **token); int get_instruction(t_list **lst); int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst); diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh new file mode 100644 index 00000000..35665a6c --- /dev/null +++ b/42sh/sample/stack.sh @@ -0,0 +1 @@ +ls > file1 diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 6682e759..48385360 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/06 20:27:07 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:36:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index eabed451..2498ad2d 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 20:04:33 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:37:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 0b00c6a1..d9e8ea36 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:50:00 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:00:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 08ca6489..ef8b06e9 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:52:48 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:37:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 6fb3c788..e86194d7 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:05:34 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:26:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,16 +29,12 @@ int shell_script() return (1); DG("after post_tokenize"); token_print(token); - - while (token) - { - if (parse(&ast, &token)) - return (1); - btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); - ast = NULL; - } + if (ft_parse(&ast, &token)) + return (1); +// btree_print(STDBUG, ast, &ft_putast); +// if (ft_exec(&ast)) +// return (1); +// ast = NULL; script->size = 0; get_script_content(script); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 5631a0a8..70a78875 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -3,56 +3,44 @@ /* ::: :::::::: */ /* ft_parse.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ +/* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/06 20:37:26 by ariard ### ########.fr */ +/* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ +/* Updated: 2017/02/09 16:02:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -t_parser g_parser[] = +int ft_parse(t_btree **ast, t_list **token) { - {INSTRUCTION, &get_sub_instruction}, - {TK_AND_IF | TK_OR_IF, &parse_separator}, - {TK_AMP, &parse_separator}, - {TK_PIPE, &parse_separator}, - {TK_LESS, &parse_less}, - {TK_GREAT, &parse_great}, - {TK_DLESS, &parse_dless}, - {TK_DGREAT, &parse_dgreat}, - {TK_LESSAND, &parse_lessand}, - {TK_GREATAND, &parse_greatand}, - {TK_SUBSHELL, &parse_subshell}, - {TK_WORD, &parse_word}, - {0, 0}, -}; + t_sym *new_sym; + t_parstate state; -int ft_parse(t_btree **ast, t_list **start) -{ - t_list *lst; - t_astnode item; - int i; - - i = 0; - if (!*start) - return (0); - if (!*ast) + (void)ast; + state = UNDEFINED; + new_sym = ft_memalloc(sizeof(t_sym)); + while (*token) { - *ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*ast)->item)->data.token = NULL; - ((t_astnode *)(*ast)->item)->type = 0; - } - while (g_parser[i].type) - { - if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) + produce_prim_sym(new_sym, token); + DG("new sym : %s", read_state(*new_sym)); +/* if (eval_sym(head_stack, new_sym)) + state = ERROR; + else { - if (g_parser[i].f) - (*g_parser[i].f)(ast, start, &lst); - return (0); + aggregate_sym(head_stack, new_sym, struct_sym); + if (struct_sym) + pop(struct_sym.sym); + else if (!same_sym(new_sym, head_stack)) + push(new_sym); } - i++; - } + build_tree(token, ast); + if (head_stack == PROGRAM) + state = PROGRAM; + if (state == ERROR) + return (error_syntax(token)); + if (state == PROGRAM) + return (0); +*/ } return (0); } diff --git a/42sh/src/parser/old_parse.c b/42sh/src/parser/old_parse.c new file mode 100644 index 00000000..929b2e4a --- /dev/null +++ b/42sh/src/parser/old_parse.c @@ -0,0 +1,58 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_parse.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ +/* Updated: 2017/02/09 15:24:15 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +t_parser g_parser[] = +{ + {INSTRUCTION, &get_sub_instruction}, + {TK_AND_IF | TK_OR_IF, &parse_separator}, + {TK_AMP, &parse_separator}, + {TK_PIPE, &parse_separator}, + {TK_LESS, &parse_less}, + {TK_GREAT, &parse_great}, + {TK_DLESS, &parse_dless}, + {TK_DGREAT, &parse_dgreat}, + {TK_LESSAND, &parse_lessand}, + {TK_GREATAND, &parse_greatand}, + {TK_SUBSHELL, &parse_subshell}, + {TK_WORD, &parse_word}, + {0, 0}, +}; + +int ft_parse(t_btree **ast, t_list **start) +{ + t_list *lst; + t_astnode item; + int i; + + i = 0; + if (!*start) + return (0); + if (!*ast) + { + *ast = btree_create_node(&item, sizeof(item)); + ((t_astnode *)(*ast)->item)->data.token = NULL; + ((t_astnode *)(*ast)->item)->type = 0; + } + while (g_parser[i].type) + { + if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) + { + if (g_parser[i].f) + (*g_parser[i].f)(ast, start, &lst); + return (0); + } + i++; + } + return (0); +} diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index e265a6a0..7fa5fa7c 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:37:29 by ariard ### ########.fr */ +/* Updated: 2017/02/09 15:24:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_prim_sym.c b/42sh/src/parser/produce_prim_sym.c new file mode 100644 index 00000000..0aab7439 --- /dev/null +++ b/42sh/src/parser/produce_prim_sym.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* produce_prim_sym.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 14:55:10 by ariard #+# #+# */ +/* Updated: 2017/02/09 16:05:27 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int produce_prim_sym(t_sym *new_sym, t_list **lst) +{ + t_token *token; + + token = (*lst)->content; + if (token->type == TK_N_WORD) + *new_sym = CMD_NAME; + else if (token->type == TK_NEWLINE) + *new_sym = NEWLINE_LIST; + else if (token->type == TK_DLESS) + *new_sym = SYM_DLESS; + else if (token->type == TK_DGREAT) + *new_sym = SYM_DGREAT; + else if (token->type == TK_GREATAND) + *new_sym = SYM_GREATAND; + else if (token->type == TK_GREAT) + *new_sym = SYM_GREAT; + else if (token->type == TK_LESSAND) + *new_sym = SYM_LESSAND; + else if (token->type == TK_LESS) + *new_sym = SYM_LESS; + ft_lst_delif(lst, (*lst)->content, &ft_addrcmp, &token_free); + return (0); +} diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c new file mode 100644 index 00000000..cdf7a796 --- /dev/null +++ b/42sh/src/parser/read_stack.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* read_stack.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ +/* Updated: 2017/02/09 16:02:30 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +char *read_state(t_sym current) +{ + if (current == CMD_NAME) + return ("CMD_NAME"); + if (current == NEWLINE_LIST) + return ("NEWLINE_LIST"); + if (current == SYM_DLESS) + return ("DLESS"); + if (current == SYM_DGREAT) + return ("DGREAT"); + if (current == SYM_GREATAND) + return ("GREATAND"); + if (current == SYM_GREAT) + return ("GREAT"); + if (current == SYM_LESSAND) + return ("LESSAND"); + if (current == SYM_LESS) + return ("LESS"); + return (NULL); +} + +int ft_read_stack(t_sym stack[], int size) +{ + while (stack[size]) + ft_putstr(read_state(stack[size--])); + return (0); +} From e7a7fc04df78c83c4c3fbc4c73eff509123537ab Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 9 Feb 2017 18:10:28 +0100 Subject: [PATCH 038/206] proto parser en cours --- 42sh/Makefile | 3 ++ 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 11 ++++-- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/aggregate_sym.c | 33 ++++++++++++++++++ 42sh/src/parser/eval_sym.c | 25 ++++++++++++++ 42sh/src/parser/ft_parse.c | 34 ++++++++++++------- .../{produce_prim_sym.c => produce_sym.c} | 9 +++-- 42sh/src/parser/push_stack.c | 19 +++++++++++ 42sh/src/parser/read_stack.c | 11 +++--- 42sh/src/parser/superflous_sym.c | 20 +++++++++++ 11 files changed, 143 insertions(+), 26 deletions(-) create mode 100644 42sh/src/parser/aggregate_sym.c create mode 100644 42sh/src/parser/eval_sym.c rename 42sh/src/parser/{produce_prim_sym.c => produce_sym.c} (80%) create mode 100644 42sh/src/parser/push_stack.c create mode 100644 42sh/src/parser/superflous_sym.c diff --git a/42sh/Makefile b/42sh/Makefile index 672d19c9..d55a28b1 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -171,6 +171,9 @@ main/sig_handler.c\ parser/parse.c\ parser/ft_parse.c\ parser/produce_prim_sym.c\ +parser/eval_sym.c\ +parser/push_stack.c\ +parser/superflous_sym.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ parser/parse_dgreat.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index b614d632..a6b1c776 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/09 15:26:01 by ariard ### ########.fr */ +/* Updated: 2017/02/09 17:06:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index eef07eaf..fe6b869c 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/09 15:58:13 by ariard ### ########.fr */ +/* Updated: 2017/02/09 18:04:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -78,9 +78,14 @@ typedef unsigned long long int t_sym; int ft_parse(t_btree **ast, t_list **token); -int produce_prim_sym(t_sym *new_sym, t_list **lst); +int produce_sym(t_sym *new_sym, t_list **lst); +int eval_sym(t_sym stack, t_sym new_sym); +int aggregate_sym(t_sym stack, t_sym *new_sym); +int superflous_sym(t_sym stack, t_sym new_sym); -int ft_read_stack(t_sym stack[], int size); +int push_stack(t_sym *stack, t_sym *new_sym); + +int ft_read_stack(t_sym *stack); char *read_state(t_sym current); enum e_parstate diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index e86194d7..57eb7fe1 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/09 15:26:55 by ariard ### ########.fr */ +/* Updated: 2017/02/09 16:45:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c new file mode 100644 index 00000000..1afd8229 --- /dev/null +++ b/42sh/src/parser/aggregate_sym.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* aggregate_sym.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ +/* Updated: 2017/02/09 18:10:13 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +//descente recursive pour multi aggregation + +int aggregate_sym(t_sym stack, t_sym *new_sym) +{ + int k; + + if (stack == 0 && *new_sym == CMD_NAME) + { + new_sym = SIMPLE_COMMAND; + k = aggregate_sym(stack, new_sym); + return (k); + } + if (stack == SIMPLE_COMMAND && *new_sym == PROGRAM) + { + new_sym = PROGRAM + } + return (0); + +} diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c new file mode 100644 index 00000000..0ca80845 --- /dev/null +++ b/42sh/src/parser/eval_sym.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* eval_sym.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ +/* Updated: 2017/02/09 17:50:23 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int eval_sym(t_sym stack, t_sym new_sym) +{ +// DG("eval head %s && eval sym %s", read_state(stack), read_state(new_sym)); + if (stack == 0 && new_sym == CMD_NAME) + return (0); + if (stack == SYM_GREAT && new_sym == CMD_NAME) + return (0); + if (stack == CMD_NAME && new_sym == SYM_GREAT) + return (0); + return (1); +} diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 70a78875..b56a2d19 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/09 16:02:49 by ariard ### ########.fr */ +/* Updated: 2017/02/09 18:03:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,32 +15,42 @@ int ft_parse(t_btree **ast, t_list **token) { t_sym *new_sym; + t_sym *stack; t_parstate state; + int k; (void)ast; state = UNDEFINED; - new_sym = ft_memalloc(sizeof(t_sym)); + new_sym = ft_memalloc(sizeof(t_sym)); + stack = ft_memalloc(sizeof(t_sym) * 1000); + *stack = 0; + k = 0; while (*token) { - produce_prim_sym(new_sym, token); - DG("new sym : %s", read_state(*new_sym)); -/* if (eval_sym(head_stack, new_sym)) + produce_sym(new_sym, token); + if (eval_sym(*stack, *new_sym)) state = ERROR; + DG("head state : %s", read_state(*stack)); else { - aggregate_sym(head_stack, new_sym, struct_sym); - if (struct_sym) - pop(struct_sym.sym); - else if (!same_sym(new_sym, head_stack)) - push(new_sym); + k = aggregate_sym(*stack, new_sym) + if (k) + { + while (k--) + pop_stack(stack--); + push_stack(++stack, new_sym); + } + else if (!superflous_sym(new_sym, stack)) + push_stack(++stack, new_sym); } - build_tree(token, ast); - if (head_stack == PROGRAM) +/* if (head_stack == PROGRAM) state = PROGRAM; if (state == ERROR) return (error_syntax(token)); if (state == PROGRAM) return (0); + build_tree(token, ast); */ } + ft_read_stack(stack); return (0); } diff --git a/42sh/src/parser/produce_prim_sym.c b/42sh/src/parser/produce_sym.c similarity index 80% rename from 42sh/src/parser/produce_prim_sym.c rename to 42sh/src/parser/produce_sym.c index 0aab7439..8e9e4988 100644 --- a/42sh/src/parser/produce_prim_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -1,18 +1,18 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* produce_prim_sym.c :+: :+: :+: */ +/* produce_sym.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/09 14:55:10 by ariard #+# #+# */ -/* Updated: 2017/02/09 16:05:27 by ariard ### ########.fr */ +/* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ +/* Updated: 2017/02/09 17:58:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int produce_prim_sym(t_sym *new_sym, t_list **lst) +int produce_sym(t_sym *new_sym, t_list **lst) { t_token *token; @@ -33,6 +33,5 @@ int produce_prim_sym(t_sym *new_sym, t_list **lst) *new_sym = SYM_LESSAND; else if (token->type == TK_LESS) *new_sym = SYM_LESS; - ft_lst_delif(lst, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c new file mode 100644 index 00000000..07605faf --- /dev/null +++ b/42sh/src/parser/push_stack.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* push_stack.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 16:48:30 by ariard #+# #+# */ +/* Updated: 2017/02/09 17:55:44 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int push_stack(t_sym *stack, t_sym *new_sym) +{ + *stack = *new_sym; + return (0); +} diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index cdf7a796..d8f8ee2e 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/09 16:02:30 by ariard ### ########.fr */ +/* Updated: 2017/02/09 17:33:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,9 +33,12 @@ char *read_state(t_sym current) return (NULL); } -int ft_read_stack(t_sym stack[], int size) +int ft_read_stack(t_sym *stack) { - while (stack[size]) - ft_putstr(read_state(stack[size--])); + while (*stack) + { + ft_putstr(read_state(*stack--)); + ft_putchar(10); + } return (0); } diff --git a/42sh/src/parser/superflous_sym.c b/42sh/src/parser/superflous_sym.c new file mode 100644 index 00000000..5c4e10a6 --- /dev/null +++ b/42sh/src/parser/superflous_sym.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* superflous_sym.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 17:47:33 by ariard #+# #+# */ +/* Updated: 2017/02/09 17:56:25 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int superflous_sym(t_sym stack, t_sym new_sym) +{ + if (stack == new_sym); + return (1); + return (0); +} From 87b7d65d71ebe6d8cec31b6fd2a1046d936f60f2 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 9 Feb 2017 20:34:09 +0100 Subject: [PATCH 039/206] archi ok, test struct de grammaire --- 42sh/Makefile | 5 ++++- 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 24 +++++++++++------------ 42sh/sample/stack.sh | 2 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/aggregate_sym.c | 23 +++++++++------------- 42sh/src/parser/error_syntax.c | 20 +++++++++++++++++++ 42sh/src/parser/eval_sym.c | 4 ++-- 42sh/src/parser/ft_parse.c | 32 ++++++++++++------------------- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/pop_stack.c | 20 +++++++++++++++++++ 42sh/src/parser/produce_sym.c | 7 +++++-- 42sh/src/parser/push_stack.c | 6 +++--- 42sh/src/parser/read_stack.c | 8 +++++++- 42sh/src/parser/superflous_sym.c | 4 ++-- 17 files changed, 102 insertions(+), 63 deletions(-) create mode 100644 42sh/src/parser/error_syntax.c create mode 100644 42sh/src/parser/pop_stack.c diff --git a/42sh/Makefile b/42sh/Makefile index d55a28b1..a1eb2f94 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -170,10 +170,13 @@ main/shell_script.c\ main/sig_handler.c\ parser/parse.c\ parser/ft_parse.c\ -parser/produce_prim_sym.c\ +parser/produce_sym.c\ parser/eval_sym.c\ +parser/aggregate_sym.c\ +parser/pop_stack.c\ parser/push_stack.c\ parser/superflous_sym.c\ +parser/error_syntax.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ parser/parse_dgreat.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index a6b1c776..f55f3b82 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/09 17:06:08 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:20:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index fe6b869c..3c53dfb8 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/09 18:04:35 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:28:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -75,27 +75,27 @@ typedef unsigned long long int t_sym; #define SYM_GREAT (1UL << 49) #define SYM_LESSAND (1UL << 50) #define SYM_LESS (1UL << 51) - +#define SYM_SEMI (1UL << 52) int ft_parse(t_btree **ast, t_list **token); -int produce_sym(t_sym *new_sym, t_list **lst); +int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); int eval_sym(t_sym stack, t_sym new_sym); -int aggregate_sym(t_sym stack, t_sym *new_sym); +int aggregate_sym(t_sym **stack, t_sym *new_sym); int superflous_sym(t_sym stack, t_sym new_sym); -int push_stack(t_sym *stack, t_sym *new_sym); +int push_stack(t_sym *stack, t_sym new_sym); +int pop_stack(t_sym **stack, int k); + +int error_syntax(t_list **token); int ft_read_stack(t_sym *stack); char *read_state(t_sym current); -enum e_parstate -{ - UNDEFINED, - ERROR, - SUCCESS, -}; +#define UNDEFINED (1 << 0) +#define ERROR (1 << 1) +#define SUCCESS (1 << 2) -typedef enum e_parstate t_parstate; +typedef int t_parstate; /* * Build AST diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 35665a6c..1900a1fe 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls > file1 +ls ; diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 2498ad2d..43d9fb29 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/09 15:37:13 by ariard ### ########.fr */ +/* Updated: 2017/02/09 19:54:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index dbc44be1..13a6d1dc 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/03 19:53:49 by ariard ### ########.fr */ +/* Updated: 2017/02/09 19:26:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 57eb7fe1..0c33c5b3 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/09 16:45:16 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:30:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 1afd8229..05632520 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/09 18:10:13 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:19:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,20 +14,15 @@ //descente recursive pour multi aggregation -int aggregate_sym(t_sym stack, t_sym *new_sym) +int aggregate_sym(t_sym **stack, t_sym *new_sym) { - int k; - - if (stack == 0 && *new_sym == CMD_NAME) + DG("aggregate head %s && sym %s", read_state(**stack), read_state(*new_sym)); + if (**stack == 0 && *new_sym == CMD_NAME) { - new_sym = SIMPLE_COMMAND; - k = aggregate_sym(stack, new_sym); - return (k); + *new_sym = SIMPLE_COMMAND; + aggregate_sym(stack, new_sym); } - if (stack == SIMPLE_COMMAND && *new_sym == PROGRAM) - { - new_sym = PROGRAM - } - return (0); - + if (**stack == 0 && *new_sym == SIMPLE_COMMAND) + *new_sym = PROGRAM; + return (0); } diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c new file mode 100644 index 00000000..bfbeb805 --- /dev/null +++ b/42sh/src/parser/error_syntax.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* error_syntax.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ +/* Updated: 2017/02/09 20:31:48 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int error_syntax(t_list **lst) +{ + (void)lst; + ft_putstr_fd("syntax error near unexepected token ';'", 2); + return (1); +} diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 0ca80845..b78cda57 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/09 17:50:23 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:14:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { -// DG("eval head %s && eval sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && eval sym %s", read_state(stack), read_state(new_sym)); if (stack == 0 && new_sym == CMD_NAME) return (0); if (stack == SYM_GREAT && new_sym == CMD_NAME) diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index b56a2d19..f4edb39a 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/09 18:03:53 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:32:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,40 +17,32 @@ int ft_parse(t_btree **ast, t_list **token) t_sym *new_sym; t_sym *stack; t_parstate state; - int k; (void)ast; state = UNDEFINED; new_sym = ft_memalloc(sizeof(t_sym)); stack = ft_memalloc(sizeof(t_sym) * 1000); - *stack = 0; - k = 0; + push_stack(stack, 0); while (*token) { - produce_sym(new_sym, token); + produce_sym(*stack, new_sym, token); if (eval_sym(*stack, *new_sym)) state = ERROR; - DG("head state : %s", read_state(*stack)); else { - k = aggregate_sym(*stack, new_sym) - if (k) - { - while (k--) - pop_stack(stack--); - push_stack(++stack, new_sym); - } - else if (!superflous_sym(new_sym, stack)) - push_stack(++stack, new_sym); + aggregate_sym(&stack, new_sym); + //superflous sym + push_stack(++stack, *new_sym); } -/* if (head_stack == PROGRAM) + if (*stack == PROGRAM) state = PROGRAM; if (state == ERROR) - return (error_syntax(token)); + return (error_syntax(token)); if (state == PROGRAM) - return (0); - build_tree(token, ast); -*/ } + ft_putstr("success"); +// build_tree(token, ast); + ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); + } ft_read_stack(stack); return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index 27b56c01..aa644e27 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/06 17:52:31 by ariard ### ########.fr */ +/* Updated: 2017/02/09 19:27:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c new file mode 100644 index 00000000..29e7045f --- /dev/null +++ b/42sh/src/parser/pop_stack.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pop_stack.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ +/* Updated: 2017/02/09 20:02:05 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int pop_stack(t_sym **stack, int k) +{ + while (k--) + *stack-- = 0; + return (0); +} diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 8e9e4988..b3a9cead 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,16 +6,17 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/09 17:58:45 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:28:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int produce_sym(t_sym *new_sym, t_list **lst) +int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) { t_token *token; + (void)stack; token = (*lst)->content; if (token->type == TK_N_WORD) *new_sym = CMD_NAME; @@ -33,5 +34,7 @@ int produce_sym(t_sym *new_sym, t_list **lst) *new_sym = SYM_LESSAND; else if (token->type == TK_LESS) *new_sym = SYM_LESS; + else if (token->type == TK_SEMI) + *new_sym = SYM_SEMI; return (0); } diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c index 07605faf..a3cd4af9 100644 --- a/42sh/src/parser/push_stack.c +++ b/42sh/src/parser/push_stack.c @@ -6,14 +6,14 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:48:30 by ariard #+# #+# */ -/* Updated: 2017/02/09 17:55:44 by ariard ### ########.fr */ +/* Updated: 2017/02/09 20:00:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int push_stack(t_sym *stack, t_sym *new_sym) +int push_stack(t_sym *stack, t_sym new_sym) { - *stack = *new_sym; + *stack = new_sym; return (0); } diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index d8f8ee2e..4523b906 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/09 17:33:30 by ariard ### ########.fr */ +/* Updated: 2017/02/09 19:41:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,12 @@ char *read_state(t_sym current) return ("LESSAND"); if (current == SYM_LESS) return ("LESS"); + if (current == SIMPLE_COMMAND) + return ("SIMPLE_COMMAND"); + if (current == PROGRAM) + return ("PROGRAM"); + if (current != 0) + return ("NON-DEFINED"); return (NULL); } diff --git a/42sh/src/parser/superflous_sym.c b/42sh/src/parser/superflous_sym.c index 5c4e10a6..ac7790d2 100644 --- a/42sh/src/parser/superflous_sym.c +++ b/42sh/src/parser/superflous_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:47:33 by ariard #+# #+# */ -/* Updated: 2017/02/09 17:56:25 by ariard ### ########.fr */ +/* Updated: 2017/02/09 19:25:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ int superflous_sym(t_sym stack, t_sym new_sym) { - if (stack == new_sym); + if (stack == new_sym) return (1); return (0); } From 1358c367e68e9a9c731e6cd43189b719a266fa8a Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 10 Feb 2017 01:43:20 +0100 Subject: [PATCH 040/206] jack a raison: les enums ca marche.. --- 42sh/includes/.parser.h.swn | Bin 0 -> 20480 bytes 42sh/includes/lexer.h | 14 ++- 42sh/includes/minishell.h | 3 +- 42sh/includes/parser.h | 129 ++++++++++++++++++++++++++-- 42sh/sample/stack.sh | 2 +- 42sh/src/lexer/ft_lexer.c | 6 +- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/lexer/lexer_then.c | 4 +- 42sh/src/main/data_init.c | 4 +- 42sh/src/parser/.ft_parse.c.swm | Bin 0 -> 12288 bytes 42sh/src/parser/.ft_parse.c.swn | Bin 0 -> 12288 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 0 -> 12288 bytes 42sh/src/parser/eval_sym.c | 30 +++++-- 42sh/src/parser/ft_parse.c | 11 +-- 42sh/src/parser/old_parse.c | 2 +- 42sh/src/parser/parse_dgreat.c | 2 +- 42sh/src/parser/produce_sym.c | 38 ++++---- 42sh/src/parser/read_stack.c | 16 ++-- 42sh/test.sh | 2 + 20 files changed, 197 insertions(+), 70 deletions(-) create mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/src/parser/.ft_parse.c.swm create mode 100644 42sh/src/parser/.ft_parse.c.swn create mode 100644 42sh/src/parser/.produce_sym.c.swn create mode 100644 42sh/test.sh diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn new file mode 100644 index 0000000000000000000000000000000000000000..7a3584acb38091b2d7976c605da3d3bb37c73e4d GIT binary patch literal 20480 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 W{@-$uQu9{)e)QzS$)~e(k@as36&l3= literal 0 HcmV?d00001 diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index f55f3b82..4cfa83cb 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,20 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/09 20:20:23 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:24:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef LEXER_H # define LEXER_H -struct s_nest -{ - long long do_group; -}; - -typedef struct s_nest t_nest; - # include "minishell.h" typedef long long t_type; @@ -43,6 +36,8 @@ typedef long long t_type; * */ +/* + # define TK_LESS (1 << 0) //transparent # define TK_GREAT (1 << 1) //transparent # define TK_DLESS (1 << 2) @@ -73,6 +68,9 @@ typedef long long t_type; # define TK_ELSE (1 << 27) # define TK_UNTIL (1 << 28) +*/ + +# define TK_COMMAND (1 << 10) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) # define TK_NON_FREEABLE (TK_PAREN_OPEN | TK_PAREN_CLOSE | TK_BQUOTE) diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index d1a944fb..8fe62ce6 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/06 23:47:53 by ariard ### ########.fr */ +/* Updated: 2017/02/09 22:31:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -69,7 +69,6 @@ struct s_data t_exec exec; t_jobc jobc; t_script script; - t_nest nest; }; extern t_stof g_builtins[]; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 3c53dfb8..632ee87f 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/09 20:28:03 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:39:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,98 @@ * */ +enum e_sym +{ + EMPTY = 1, + TK_LESS, + TK_GREAT, + TK_DLESS, + TK_DGREAT, + TK_LESSAND, + TK_GREATAND, + TK_SEMI, + TK_PIPE, + TK_AND_IF, + TK_OR_IF, + TK_AMP, + TK_PAREN_OPEN, + TK_PAREN_CLOSE, + TK_BQUOTE, + TK_SUBSHELL, + TK_NEWLINE, + TK_WHILE, + TK_DO, + TK_DONE, + TK_IF, + TK_THEN, + TK_FI, + TK_ELIF, + TK_ELSE, + TK_UNTIL, + TK_N_WORD, + TK_Q_WORD, + TK_DQ_WORD, + PROGRAM = 100, + COMPLETE_COMMANDS, + LIST, + AND_OR, + PIPELINE, + PIPE_SEQUENCE, + COMMAND, + COMPOUND_COMMAND, + SUBSHELL, + COMPOUND_LIST, + TERM, + FOR_CLAUSE, + NAME, + IN, + WORDLIST, + CASE_CLAUSE, + CASE_LIST_NS, + CASE_ITEM_NS, + PATTERN, + IF_CLAUSE, + ELSE_PART, + WHILE_CLAUSE, + UNTIL_CLAUSE, + FUNCTION_DEFINITION, + FUNCTION_BODY, + FNAME, + BRACE_GROUP, + DO_GROUP, + SIMPLE_COMMAND, + CMD_NAME, + CMD_WORD, + CMD_PREFIX, + CMD_SUFFIX, + REDIRECT_LIST, + IO_REDIRECT, + IO_FILE, + FILENAME, + IO_HERE, + HERE_END, + NEWLINE_LIST, + LINEBREAK, + SEPARATOR_OP, + SEPARATOR, + SEQUENTIAL_SEP, + ALL = TK_LESS | TK_GREAT | TK_DLESS | TK_DGREAT | TK_LESSAND | TK_GREATAND\ + | TK_SEMI | TK_PIPE | TK_AND_IF | TK_OR_IF | TK_AMP | TK_PAREN_OPEN\ + | TK_PAREN_CLOSE | TK_BQUOTE | TK_SUBSHELL | TK_NEWLINE | TK_WHILE | TK_DO\ + | TK_DONE | TK_IF | TK_THEN | TK_FI | TK_ELIF | TK_ELSE | TK_UNTIL | TK_N_WORD\ + | TK_Q_WORD | TK_DQ_WORD | PROGRAM | COMPLETE_COMMANDS | LIST\ + | AND_OR | PIPELINE | PIPE_SEQUENCE | COMMAND | COMPOUND_COMMAND | SUBSHELL\ + | COMPOUND_LIST | TERM | FOR_CLAUSE | NAME | IN | WORDLIST | CASE_CLAUSE\ + | CASE_LIST_NS | CASE_ITEM_NS | PATTERN | IF_CLAUSE | ELSE_PART\ + | WHILE_CLAUSE | UNTIL_CLAUSE | FUNCTION_DEFINITION | FUNCTION_BODY | FNAME\ + | BRACE_GROUP | DO_GROUP | SIMPLE_COMMAND | CMD_NAME | CMD_WORD | CMD_PREFIX\ + | CMD_SUFFIX | REDIRECT_LIST | IO_REDIRECT | IO_FILE | FILENAME | IO_HERE\ + | HERE_END | NEWLINE_LIST | LINEBREAK | SEPARATOR_OP | SEPARATOR | SEQUENTIAL_SEP +}; + +typedef unsigned long long int t_sym; + +/* typedef unsigned long long int t_sym; #define PROGRAM (1UL << 0) @@ -69,13 +161,34 @@ typedef unsigned long long int t_sym; #define SEPARATOR (1UL << 44) #define SEQUENTIAL_SEP (1UL << 45) -#define SYM_DLESS (1UL << 46) -#define SYM_DGREAT (1UL << 47) -#define SYM_GREATAND (1UL << 48) -#define SYM_GREAT (1UL << 49) -#define SYM_LESSAND (1UL << 50) -#define SYM_LESS (1UL << 51) -#define SYM_SEMI (1UL << 52) +#define SYM_LESS (1UL << 49) +#define SYM_GREAT (1UL << 50) + +#define ALL_SYM !0 +//#define ALL_SYM -1UL +*/ + +struct s_prodmatch +{ + t_type token; + t_sym stack; + t_sym new_sym; +}; + +typedef struct s_prodmatch t_prodmatch; + +extern t_prodmatch g_prodmatch[]; + + +struct s_stackmatch +{ + t_sym under; + t_sym top; +}; + +typedef struct s_stackmatch t_stackmatch; + +extern t_stackmatch g_stackmatch[]; int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 1900a1fe..4ec79147 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls ; +ls > file1 > file2 diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 48385360..2063e7dd 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/09 15:36:59 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:24:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ int ft_lexer(t_list **alst, char **command) ret = 1; else if (ft_tokenize(alst, *command, DEFAULT)) ret = 1; - else if (ft_post_tokenize(alst, command)) - ret = 1; +// else if (ft_post_tokenize(alst, command)) +// ret = 1; ft_strdel(command); return (ret); } diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 43d9fb29..26b35eca 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/09 19:54:13 by ariard ### ########.fr */ +/* Updated: 2017/02/09 21:55:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 00fd33ca..8e05c32c 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:37:28 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:13:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_then.c b/42sh/src/lexer/lexer_then.c index ad4f937b..c00c521c 100644 --- a/42sh/src/lexer/lexer_then.c +++ b/42sh/src/lexer/lexer_then.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 23:29:49 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:59:37 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:15:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,6 @@ int lexer_then(t_list **alst, char *str) } token = (*alst)->content; token->type = TK_THEN; - state = LIST; + state = TK_WORD; return (ft_tokenize(&(*alst)->next, str + 4, state)); } diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index a865b92c..6582e39b 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:34:02 by ariard ### ########.fr */ +/* Updated: 2017/02/09 22:31:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,8 +23,6 @@ int data_init(void) data->env = ft_sstrdup(environ); data->opts = SHELL_OPTS_JOBC; - data->nest.do_group = 0; - data->exec.process.path = NULL; data->exec.process.av = NULL; data->exec.process.fdin = STDIN; diff --git a/42sh/src/parser/.ft_parse.c.swm b/42sh/src/parser/.ft_parse.c.swm new file mode 100644 index 0000000000000000000000000000000000000000..833a54ff378e5a316885855b875d579f24b6afef GIT binary patch literal 12288 zcmeI2PjB2r7{;d@08>H{y@7;=T~WM$y7q1&C|*)1$r5@<8*NxxB*ew#d8Pyz6(CdYuV>aP;lc(A(hIr!11f zTk46aCwS!LAs38$6FJsro#??P_KqcB2|PN1LQc+KSRjkNu71_)wO8ob7eBKI8Tt{r1APPS zLk09P^gh&s&Om=4=U>N86S)NnGE+z*G8l7I0!j1bTAxV9qNIVn=w8Lhs&e%;%x?3jid7{V}pQKqKD6Z;aop5`bvu&iV z0^M`f$oYW>uxF`YY8I20PShmDZiJ~GU1m2ougY$9&8@*s%}8GrwKg@6Uo!VFL7idF zv$%-LM2uCHNSl^Vu@7X(=jJp?+2Nxl^Tk&M4AwV3_(-|xK3%4G=DTb+Ow%lKMe-TT zutGE&+N53I*K4zy?BAj*OZBAb=*sHgy~|eytC+^UktJ~h3#CtpQ|`P~>!Bis06iH9 zmW9nr=lQEcrq2b-J}r%k9l`6W8l?^zf-0_C{Ct zjNuB_)e%GgP1;=w7Gc=?M?+d~DMxdt?C5_hxdpT84@NjUw7YNk?tWm(daEq&9U<}f zX0qJueQ|D#F=++HY0lG>d^G+TJ>_=a5qVbb#?Y+1PIL^jG9+jPM^4JVF+8@-d|(h5 ZOPr~OoBzvj-rSs*h9~u&H1X1T2A_aoEDLyHu6vAF^6hghcS#lZ{!gZOu%& z4W(2<@Cmpg@ew$1MdF6U7eE|1f#4f(p+e%#*t5-6Xti2aNR?)y7teTp^M3F5JU&F3 z&EC5gFVS<|9zlD8kY|7Y>e}DC&ykbw5EAh;;)$9#xUqnrD}#P_G3bu@0imB(g#J}t ze8gfY{KY^_e8FSCjJROjAIp*Mb>jnA?38uDI&d@x7RZ^PuV3|M<9T}O$&I7Y*j3g6 z>wtB@I$#~J4p;}Q1J(iSz&dySO=^F)&c9leds`h|MzDn33<Mowe*b^-I3XVZ3&3}e5wZFg2A4IZ9ZTj$K)7v%EuHPj^}`osWxLvRroP zX~acI!sDG113f(&bH+g9`;N0YO|xVqal>##LaG!xK{=H|aMvKU!fs1e1kN10w-shi8I)U94{8=zAe=?kLKq2}pH=I#m93QJxj)3_31 zsA?e{T0O-9EQ6liNt&^}M@#05uM5yyMfd3v#q-`_J5iPuu`AM#S%KZ5eW4!h_j)?E zPIOST5@`(BxV*ad*2T+ftGMT0FVduiO)?S_0G$l(RYlF;sIv~pO_Jsk zA&{z1?n2%_m38Rhb%x`znAjJ0&aa@ghz9KxvW(YUR z1pXu;4SM}o{9fSqUZp`0zPuQoIZHQZv^w5Am$=z%VuWwqa5%c2GlVPHQ}+_~!PX0d z;9m)8v#l7-rKY1tE4dA_`U4{L_UP^szBvm`S+7;)y&)tXUoNZD-sk7m7?O5qnC3W5 z$@}9EF;Z-I8KJXgH-u*Ab>l;jRUu(J+}EkbhVald^MPS#DA7|5lmCfup4{{+!sB{R JJiK&1`3K_&!^;2w literal 0 HcmV?d00001 diff --git a/42sh/src/parser/.produce_sym.c.swn b/42sh/src/parser/.produce_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..f06e7bec986a637b0c15bb7ed0edbcca35a20601 GIT binary patch literal 12288 zcmeI2&rcIU6vrQ4%qpnSc=13+n$*&k?ry087a<}LHBcl3{1Jmq*)Dc%*=}~H!KSGu zMo<1Yd+{GICjJ5HAE1dh8yy}U*lkC{h#T}YZ zIuRfOM1Tko0U|&IhyW2F0(+SNce~&oHn1;hA{otHo91Xs6A>T+M1Tko0U|&IhyW2F z0z`la5CI~v2MLt%^Zoq?0A8bl&;RBB|E~@M+(h-D-W&p`p-!OQ^#I&KokD%;26%{i zfO1g{)I4eqrK66cz8?hmhWd*7f_jO1fqI5|ih6?bQ8m;w>LRKa^#kkqi28tfk9vy= zYJ7yEK?H~Z5g-CYfCvx)BJdv&=z!u`yy-bCrS*@1f_ufzWN@V@X~$X%E`_pDcB|xi z9Wh`BCmNO2GB>L??4?{}C47@f=JT>yV@cr~%M!ot4@y{JDc-1A&cGONxfUA@ONgb4 zC@5`E)~a^hVyU3SSUh?ln%P*th7T4eaGgrmecnGXW;PsdIeY{##o^em9VC@R8a6NH z5om)5#_q_bxPT&R&9ZPKQ3d^}=*%wsiIK{A8Am&&*`m zL~*h-J6@cU!3*g8_2v@)C)(y|M4B6J% zu)T9W$3LIL!^_@du`|*nV@Ri%r)+s+{x)`j+qxsx8M#Zt*!z$(x8a8=M#cyeqeVDL h!|i!&$}$XTiK}2>{GSXr`HO96xLfZ@8ecjUegciuWQPC% literal 0 HcmV?d00001 diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b78cda57..fefbe13a 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,20 +6,32 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:14:46 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:42:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int eval_sym(t_sym stack, t_sym new_sym) +t_stackmatch g_stackmatch[] = { - DG("eval head %s && eval sym %s", read_state(stack), read_state(new_sym)); - if (stack == 0 && new_sym == CMD_NAME) - return (0); - if (stack == SYM_GREAT && new_sym == CMD_NAME) - return (0); - if (stack == CMD_NAME && new_sym == SYM_GREAT) - return (0); + {EMPTY, CMD_NAME}, + {TK_GREAT, CMD_NAME}, + {CMD_NAME, TK_GREAT}, + {0, 0}, +}; + +int eval_sym(t_sym stack, t_sym new_sym) +{ + int i; + + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + i = 0; + while (g_stackmatch[i].top) + { + if (stack == g_stackmatch[i].under + && new_sym == g_stackmatch[i].top) + return (0); + i++; + } return (1); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index f4edb39a..a7316233 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:32:25 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:40:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,23 +22,24 @@ int ft_parse(t_btree **ast, t_list **token) state = UNDEFINED; new_sym = ft_memalloc(sizeof(t_sym)); stack = ft_memalloc(sizeof(t_sym) * 1000); - push_stack(stack, 0); + push_stack(stack, EMPTY); while (*token) { produce_sym(*stack, new_sym, token); + DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else { - aggregate_sym(&stack, new_sym); +// aggregate_sym(&stack, new_sym); //superflous sym push_stack(++stack, *new_sym); } if (*stack == PROGRAM) - state = PROGRAM; + state = SUCCESS; if (state == ERROR) return (error_syntax(token)); - if (state == PROGRAM) + if (state == SUCCESS) ft_putstr("success"); // build_tree(token, ast); ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); diff --git a/42sh/src/parser/old_parse.c b/42sh/src/parser/old_parse.c index 929b2e4a..8814ece1 100644 --- a/42sh/src/parser/old_parse.c +++ b/42sh/src/parser/old_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/09 15:24:15 by ariard ### ########.fr */ +/* Updated: 2017/02/09 22:06:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_dgreat.c b/42sh/src/parser/parse_dgreat.c index 885ac93a..960be5ee 100644 --- a/42sh/src/parser/parse_dgreat.c +++ b/42sh/src/parser/parse_dgreat.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 16:35:32 by ariard ### ########.fr */ +/* Updated: 2017/02/09 21:22:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index b3a9cead..bad1b889 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,35 +6,33 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:28:25 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:42:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" +t_prodmatch g_prodmatch[] = +{ + {TK_N_WORD, EMPTY, CMD_NAME}, + {TK_GREAT, ALL, TK_GREAT}, + {TK_N_WORD, ALL, CMD_NAME}, + {0, 0, 0}, +}; + int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) { t_token *token; + int i; - (void)stack; token = (*lst)->content; - if (token->type == TK_N_WORD) - *new_sym = CMD_NAME; - else if (token->type == TK_NEWLINE) - *new_sym = NEWLINE_LIST; - else if (token->type == TK_DLESS) - *new_sym = SYM_DLESS; - else if (token->type == TK_DGREAT) - *new_sym = SYM_DGREAT; - else if (token->type == TK_GREATAND) - *new_sym = SYM_GREATAND; - else if (token->type == TK_GREAT) - *new_sym = SYM_GREAT; - else if (token->type == TK_LESSAND) - *new_sym = SYM_LESSAND; - else if (token->type == TK_LESS) - *new_sym = SYM_LESS; - else if (token->type == TK_SEMI) - *new_sym = SYM_SEMI; + i = 0; + while (g_prodmatch[i].new_sym) + { + if (token->type == g_prodmatch[i].token + && stack & g_prodmatch[i].stack) + *new_sym = g_prodmatch[i].new_sym; + i++; + } return (0); } diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 4523b906..4ffb8113 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/09 19:41:44 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:41:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ char *read_state(t_sym current) { if (current == CMD_NAME) return ("CMD_NAME"); - if (current == NEWLINE_LIST) +/* if (current == NEWLINE_LIST) return ("NEWLINE_LIST"); if (current == SYM_DLESS) return ("DLESS"); @@ -24,9 +24,11 @@ char *read_state(t_sym current) return ("DGREAT"); if (current == SYM_GREATAND) return ("GREATAND"); - if (current == SYM_GREAT) +*/ if (current == TK_GREAT) return ("GREAT"); - if (current == SYM_LESSAND) + if (current == TK_LESS) + return ("LESS"); +/* if (current == SYM_LESSAND) return ("LESSAND"); if (current == SYM_LESS) return ("LESS"); @@ -34,9 +36,13 @@ char *read_state(t_sym current) return ("SIMPLE_COMMAND"); if (current == PROGRAM) return ("PROGRAM"); +*/ if (current == EMPTY) + return ("EMPTY"); if (current != 0) return ("NON-DEFINED"); - return (NULL); + if (current == 0) + return ("NULL"); + return ("NULL"); } int ft_read_stack(t_sym *stack) diff --git a/42sh/test.sh b/42sh/test.sh new file mode 100644 index 00000000..48d16f00 --- /dev/null +++ b/42sh/test.sh @@ -0,0 +1,2 @@ +while [ 1 ] ; do + ls From 53ce7d5c1caf2bb82c47a3d9460aa09665129604 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 10 Feb 2017 17:00:52 +0100 Subject: [PATCH 041/206] grammar --- 42sh/grammar/linebreak | 87 +++++++++++++++++++++++++++++++++++++ 42sh/grammar/newline_list | 87 +++++++++++++++++++++++++++++++++++++ 42sh/grammar/rules | 21 +++++++++ 42sh/grammar/separator | 87 +++++++++++++++++++++++++++++++++++++ 42sh/grammar/separator_op | 87 +++++++++++++++++++++++++++++++++++++ 42sh/grammar/sequential_sep | 87 +++++++++++++++++++++++++++++++++++++ 6 files changed, 456 insertions(+) create mode 100644 42sh/grammar/linebreak create mode 100644 42sh/grammar/newline_list create mode 100644 42sh/grammar/rules create mode 100644 42sh/grammar/separator create mode 100644 42sh/grammar/separator_op create mode 100644 42sh/grammar/sequential_sep diff --git a/42sh/grammar/linebreak b/42sh/grammar/linebreak new file mode 100644 index 00000000..4e8becad --- /dev/null +++ b/42sh/grammar/linebreak @@ -0,0 +1,87 @@ +#LINEBREAK# + + linebreak - linebreak : NOTHING +linebreak - sequential_sep : 0 + linebreak - separator_op : AGGREGATION, k = 1, new = separator +linebreak - separator : 0 +linebreak - newline_list : 0 +linebreak - here_end : 0 +linebreak - io_here : 0 +linebreak - filename : 0 +linebreak - io_file : 0 +linebreak - io_redirect : 0 +linebreak - redirect_list : 0 +linebreak - cmd_suffix : 0 +linebreak - cmd_prefix : 0 +linebreak - cmd_word : 0 +linebreak - cmd_name : 0 +linebreak - simple_commound : 0 +linebreak - do_group : 0 +linebreak - brace_group : 0 +linebreak - fname : 0 +linebreak - function_body : 0 +linebreak - function_definition : 0 +linebreak - until_clause : 0 +linebreak - while_clause : 0 +linebreak - else_part : 0 +linebreak - if_clause : 0 +linebreak - pattern : 0 +linebreak - case_item : 0 +linebreak - case_item_ns : 0 +linebreak - case_list : 0 +linebreak - case_list_ns : 0 +linebreak - case_clause : 0 +linebreak - wordlist : 0 + linebreak - in : VALID + linebreak - name : VALID +linebreak - term : 0 + linebreak - compound_list : VALID +linebreak - subshell : 0 +linebreak - compound_command : 0 +linebreak - command : 0 +linebreak - pipe_sequence : 0 +linebreak - pipeline : 0 +linebreak - and_or : 0 +linebreak - list : 0 +linebreak - complete_command : 0 + linebreak - complete_commands : VALID +linebreak - program : 0 +linebreak - In : 0 +#linebreak - Lbrace : 0 +#linebreak - Rbrace : 0 +#linebreak - Bang : 0 +linebreak - case : 0 +linebreak - esac : 0 +linebreak - while : 0 +linebreak - until : 0 +linebreak - for : 0 +linebreak - if : 0 +linebreak - then : 0 +linebreak - else : 0 +linebreak - elif : 0 +linebreak - fi : 0 +linebreak - do : 0 +linebreak - done : 0 +linebreak - CLOBBER : 0 +linebreak - DLESS : 0 +linebreak - DGREAT : 0 +linebreak - LESSAND : 0 +linebreak - GREATAND : 0 +linebreak - LESSGREAT : 0 +linebreak - DLESSDAH : 0 +i linebreak - AND_IF : VALID + linebreak - OR_IF : VALID +linebreak - DSEMI : 0 + linebreak - WORD : VALID +linebreak - ASSIGNEMENT_WORD : 0 +linebreak - NAME : 0 +linebreak - NEWLINE : 0 +linebreak - IO_NUMER : 0 + linebreak - SEMI : AGGREGATION, k = 1 new = sequential_sep +linebreak - AMP : 0 + linebreak - EMPTY : VALID +linebreak - GREAT : 0 +linebreak - LESS : 0 +linebreak - PAREN_OPEN : 0 +linebreak - PIPE : 0 + linebreak - PAREN_CLOSE : VALID diff --git a/42sh/grammar/newline_list b/42sh/grammar/newline_list new file mode 100644 index 00000000..daabf0af --- /dev/null +++ b/42sh/grammar/newline_list @@ -0,0 +1,87 @@ +#NEWLINE_LIST + +newline_list - newline_list : 0 +newline_list - sequential_sep : 0 +newline_list - separator_op : 0 +newline_list - separator : 0 +newline_list - newline_list : 0 +newline_list - here_end : 0 +newline_list - io_here : 0 +newline_list - filename : 0 +newline_list - io_file : 0 +newline_list - io_redirect : 0 +newline_list - redirect_list : 0 +newline_list - cmd_suffix : 0 +newline_list - cmd_prefix : 0 +newline_list - cmd_word : 0 +newline_list - cmd_name : 0 +newline_list - simple_commound : 0 +newline_list - do_group : 0 +newline_list - brace_group : 0 +newline_list - fname : 0 +newline_list - function_body : 0 +newline_list - function_definition : 0 +newline_list - until_clause : 0 +newline_list - while_clause : 0 +newline_list - else_part : 0 +newline_list - if_clause : 0 +newline_list - pattern : 0 +newline_list - case_item : 0 +newline_list - case_item_ns : 0 +newline_list - case_list : 0 +newline_list - case_list_ns : 0 +newline_list - case_clause : 0 +newline_list - wordlist : 0 +newline_list - in : 0 +newline_list - name : 0 +newline_list - term : 0 +newline_list - compound_list : 0 +newline_list - subshell : 0 +newline_list - compound_command : 0 +newline_list - command : 0 +newline_list - pipe_sequence : 0 +newline_list - pipeline : 0 +newline_list - and_or : 0 +newline_list - list : 0 +newline_list - complete_command : 0 +newline_list - complete_commands : 0 +newline_list - program : 0 +newline_list - In : 0 +#newline_list - Lbrace : 0 +#newline_list - Rbrace : 0 +#newline_list - Bang : 0 +newline_list - case : 0 +newline_list - esac : 0 +newline_list - while : 0 +newline_list - until : 0 +newline_list - for : 0 +newline_list - if : 0 +newline_list - then : 0 +newline_list - else : 0 +newline_list - elif : 0 +newline_list - fi : 0 +newline_list - do : 0 +newline_list - done : 0 +newline_list - CLOBBER : 0 +newline_list - DLESS : 0 +newline_list - DGREAT : 0 +newline_list - LESSAND : 0 +newline_list - GREATAND : 0 +newline_list - LESSGREAT : 0 +newline_list - DLESSDAH : 0 +newline_list - AND_IF : 0 +newline_list - OR_IF : 0 +newline_list - DSEMI : 0 +newline_list - WORD : 0 +newline_list - ASSIGNEMENT_WORD : 0 +newline_list - NAME : 0 +newline_list - NEWLINE : 0 +newline_list - IO_NUMER : 0 +newline_list - SEMI : 0 +newline_list - AMP : 0 + newline_list - EMPTY : VALID +newline_list - GREAT : 0 +newline_list - LESS : 0 +newline_list - PAREN_OPEN : 0 +newline_list - PIPE : 0 + newline_list - PAREN_CLOSE : VALID diff --git a/42sh/grammar/rules b/42sh/grammar/rules new file mode 100644 index 00000000..266c6214 --- /dev/null +++ b/42sh/grammar/rules @@ -0,0 +1,21 @@ +sequential_sep - wordlist : VALID +sequential_sep - in : VALID +sequential_sep - name : VALID + +separator - term : VALID +separator - compound_list : NOTHING !!!!! + +separator_op - complete_commands : NOTHING !!!! + +linebreak - linebreak : NOTHING +linebreak - separator_op : ASSIGNATION, k = 1, new = separator +linebreak - in : VALID +linebreak - name : VALID +linebreak - compound_list : VALID +linebreak - complete_commands : VALID +linebreak - AND_IF : VALID +linebreak - OR_IF : VALID +linebreak - WORD : VALID +linebreak - SEMI : AGGREGATION k - 1, new = sequential_sep +linebreak - EMPTY : VALID +linebreak - PAREN_CLOSE : VALID diff --git a/42sh/grammar/separator b/42sh/grammar/separator new file mode 100644 index 00000000..b5d7c30a --- /dev/null +++ b/42sh/grammar/separator @@ -0,0 +1,87 @@ +#SEPARATOR + +separator - separator : 0 +separator - sequential_sep : 0 +separator - separator_op : 0 +separator - linebreak : 0 +separator - newline_list : 0 +separator - here_end : 0 +separator - io_here : 0 +separator - filename : 0 +separator - io_file : 0 +separator - io_redirect : 0 +separator - redirect_list : 0 +separator - cmd_suffix : 0 +separator - cmd_prefix : 0 +separator - cmd_word : 0 +separator - cmd_name : 0 +separator - simple_commound : 0 +separator - do_group : 0 +separator - brace_group : 0 +separator - fname : 0 +separator - function_body : 0 +separator - function_definition : 0 +separator - until_clause : 0 +separator - while_clause : 0 +separator - else_part : 0 +separator - if_clause : 0 +separator - pattern : 0 +separator - case_item : 0 +separator - case_item_ns : 0 +separator - case_list : 0 +separator - case_list_ns : 0 +separator - case_clause : 0 +separator - wordlist : 0 +separator - in : 0 +separator - name : 0 + separator - term : VALID + separator - compound_list : NOTHING !!!!!! +separator - subshell : 0 +separator - compound_command : 0 +separator - command : 0 +separator - pipe_sequence : 0 +separator - pipeline : 0 +separator - and_or : 0 +separator - list : 0 +separator - complete_command : 0 +separator - complete_commands : 0 +separator - program : 0 +separator - In : 0 +#separator - Lbrace : 0 +#separator - Rbrace : 0 +#separator - Bang : 0 +separator - case : 0 +separator - esac : 0 +separator - while : 0 +separator - until : 0 +separator - for : 0 +separator - if : 0 +separator - then : 0 +separator - else : 0 +separator - elif : 0 +separator - fi : 0 +separator - do : 0 +separator - done : 0 +separator - CLOBBER : 0 +separator - DLESS : 0 +separator - DGREAT : 0 +separator - LESSAND : 0 +separator - GREATAND : 0 +separator - LESSGREAT : 0 +separator - DLESSDAH : 0 +separator - AND_IF : 0 +separator - OR_IF : 0 +separator - DSEMI : 0 +separator - WORD : 0 +separator - ASSIGNEMENT_WORD : 0 +separator - NAME : 0 +separator - NEWLINE : 0 +separator - IO_NUMER : 0 +separator - SEMI : 0 +separator - AMP : 0 +separator - EMPTY : 0 +separator - GREAT : 0 +separator - LESS : 0 +separator - PAREN_OPEN : 0 +separator - PIPE : 0 +separator - PAREN_CLOSE : 0 diff --git a/42sh/grammar/separator_op b/42sh/grammar/separator_op new file mode 100644 index 00000000..398998b4 --- /dev/null +++ b/42sh/grammar/separator_op @@ -0,0 +1,87 @@ +#SEPARATOR_OP + +separator_op - separator_op : 0 +separator_op - sequential_sep : 0 +separator_op - separator_op_op : 0 +separator_op - linebreak : 0 +separator_op - newline_list : 0 +separator_op - here_end : 0 +separator_op - io_here : 0 +separator_op - filename : 0 +separator_op - io_file : 0 +separator_op - io_redirect : 0 +separator_op - redirect_list : 0 +separator_op - cmd_suffix : 0 +separator_op - cmd_prefix : 0 +separator_op - cmd_word : 0 +separator_op - cmd_name : 0 +separator_op - simple_commound : 0 +separator_op - do_group : 0 +separator_op - brace_group : 0 +separator_op - fname : 0 +separator_op - function_body : 0 +separator_op - function_definition : 0 +separator_op - until_clause : 0 +separator_op - while_clause : 0 +separator_op - else_part : 0 +separator_op - if_clause : 0 +separator_op - pattern : 0 +separator_op - case_item : 0 +separator_op - case_item_ns : 0 +separator_op - case_list : 0 +separator_op - case_list_ns : 0 +separator_op - case_clause : 0 +separator_op - wordlist : 0 +separator_op - in : 0 +separator_op - name : 0 +separator_op - term : 0 +separator_op - compound_list : 0 +separator_op - subshell : 0 +separator_op - compound_command : 0 +separator_op - command : 0 +separator_op - pipe_sequence : 0 +separator_op - pipeline : 0 +separator_op - and_or : 0 + separator_op - list : 0 !!!!! +separator_op - complete_command : 0 +separator_op - complete_commands : 0 +separator_op - program : 0 +separator_op - In : 0 + #separator_op - Lbrace : 0 + #separator_op - Rbrace : 0 + #separator_op - Bang : 0 +separator_op - case : 0 +separator_op - esac : 0 +separator_op - while : 0 +separator_op - until : 0 +separator_op - for : 0 +separator_op - if : 0 +separator_op - then : 0 +separator_op - else : 0 +separator_op - elif : 0 +separator_op - fi : 0 +separator_op - do : 0 +separator_op - done : 0 +separator_op - CLOBBER : 0 +separator_op - DLESS : 0 +separator_op - DGREAT : 0 +separator_op - LESSAND : 0 +separator_op - GREATAND : 0 +separator_op - LESSGREAT : 0 +separator_op - DLESSDAH : 0 +separator_op - AND_IF : 0 +separator_op - OR_IF : 0 +separator_op - DSEMI : 0 +separator_op - WORD : 0 +separator_op - ASSIGNEMENT_WORD : 0 +separator_op - NAME : 0 +separator_op - NEWLINE : 0 +separator_op - IO_NUMER : 0 +separator_op - SEMI : 0 +separator_op - AMP : 0 +separator_op - EMPTY : 0 +separator_op - GREAT : 0 +separator_op - LESS : 0 +separator_op - PAREN_OPEN : 0 +separator_op - PIPE : 0 +separator_op - PAREN_CLOSE : 0 diff --git a/42sh/grammar/sequential_sep b/42sh/grammar/sequential_sep new file mode 100644 index 00000000..7b3ac7cc --- /dev/null +++ b/42sh/grammar/sequential_sep @@ -0,0 +1,87 @@ +#SEQUENTIAL_SEP + +sequential_sep - sequential_sep : 0 +sequential_sep - separator : 0 +sequential_sep - separator_op : 0 +sequential_sep - linebreak : 0 +sequential_sep - newline_list : 0 +sequential_sep - here_end : 0 +sequential_sep - io_here : 0 +sequential_sep - filename : 0 +sequential_sep - io_file : 0 +sequential_sep - io_redirect : 0 +sequential_sep - redirect_list : 0 +sequential_sep - cmd_suffix : 0 +sequential_sep - cmd_prefix : 0 +sequential_sep - cmd_word : 0 +sequential_sep - cmd_name : 0 +sequential_sep - simple_commound : 0 +sequential_sep - do_group : 0 +sequential_sep - brace_group : 0 +sequential_sep - fname : 0 +sequential_sep - function_body : 0 +sequential_sep - function_definition : 0 +sequential_sep - until_clause : 0 +sequential_sep - while_clause : 0 +sequential_sep - else_part : 0 +sequential_sep - if_clause : 0 +sequential_sep - pattern : 0 +sequential_sep - case_item : 0 +sequential_sep - case_item_ns : 0 +sequential_sep - case_list : 0 +sequential_sep - case_list_ns : 0 +sequential_sep - case_clause : 0 + sequential_sep - wordlist : VALID + sequential_sep - in : VALID + sequential_sep - name : VALID +sequential_sep - term : 0 +sequential_sep - compound_list : 0 +sequential_sep - subshell : 0 +sequential_sep - compound_command : 0 +sequential_sep - command : 0 +sequential_sep - pipe_sequence : 0 +sequential_sep - pipeline : 0 +sequential_sep - and_or : 0 +sequential_sep - list : 0 +sequential_sep - complete_command : 0 +sequential_sep - complete_commands : 0 +sequential_sep - program : 0 +sequential_sep - In : 0 +#sequential_sep - Lbrace : 0 +#sequential_sep - Rbrace : 0 +#sequential_sep - Bang : 0 +sequential_sep - case : 0 +sequential_sep - esac : 0 +sequential_sep - while : 0 +sequential_sep - until : 0 +sequential_sep - for : 0 +sequential_sep - if : 0 +sequential_sep - then : 0 +sequential_sep - else : 0 +sequential_sep - elif : 0 +sequential_sep - fi : 0 +sequential_sep - do : 0 +sequential_sep - done : 0 +sequential_sep - CLOBBER : 0 +sequential_sep - DLESS : 0 +sequential_sep - DGREAT : 0 +sequential_sep - LESSAND : 0 +sequential_sep - GREATAND : 0 +sequential_sep - LESSGREAT : 0 +sequential_sep - DLESSDAH : 0 +sequential_sep - AND_IF : 0 +sequential_sep - OR_IF : 0 +sequential_sep - DSEMI : 0 +sequential_sep - WORD : 0 +sequential_sep - ASSIGNEMENT_WORD : 0 +sequential_sep - NAME : 0 +sequential_sep - NEWLINE : 0 +sequential_sep - IO_NUMER : 0 +sequential_sep - SEMI : 0 +sequential_sep - AMP : 0 +sequential_sep - EMPTY : 0 +sequential_sep - GREAT : 0 +sequential_sep - LESS : 0 +sequential_sep - PAREN_OPEN : 0 +sequential_sep - PIPE : 0 +sequential_sep - PAREN_CLOSE : 0 From 30494f2df299df4605bf894740f00669efebf5a6 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 10 Feb 2017 20:08:46 +0100 Subject: [PATCH 042/206] moar grammar --- 42sh/grammar/copie | 87 +++++++++++++++++++++++++++++ 42sh/grammar/here_end | 87 +++++++++++++++++++++++++++++ 42sh/grammar/io_here | 87 +++++++++++++++++++++++++++++ 42sh/grammar/newline_list | 12 ++-- 42sh/grammar/rules | 52 +++++++++++++++-- 42sh/includes/.parser.h.swn | Bin 20480 -> 0 bytes 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 2 +- 42sh/src/parser/.ft_parse.c.swm | Bin 12288 -> 0 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 12288 -> 0 bytes 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 2 +- 13 files changed, 318 insertions(+), 17 deletions(-) create mode 100644 42sh/grammar/copie create mode 100644 42sh/grammar/here_end create mode 100644 42sh/grammar/io_here delete mode 100644 42sh/includes/.parser.h.swn delete mode 100644 42sh/src/parser/.ft_parse.c.swm delete mode 100644 42sh/src/parser/.produce_sym.c.swn diff --git a/42sh/grammar/copie b/42sh/grammar/copie new file mode 100644 index 00000000..e22142e4 --- /dev/null +++ b/42sh/grammar/copie @@ -0,0 +1,87 @@ +#SEPARATOR + +separator - separator : 0 +separator - sequential_sep : 0 +separator - separator_op : 0 +separator - linebreak : 0 +separator - newline_list : 0 +separator - here_end : 0 +separator - io_here : 0 +separator - filename : 0 +separator - io_file : 0 +separator - io_redirect : 0 +separator - redirect_list : 0 +separator - cmd_suffix : 0 +separator - cmd_prefix : 0 +separator - cmd_word : 0 +separator - cmd_name : 0 +separator - simple_commound : 0 +separator - do_group : 0 +separator - brace_group : 0 +separator - fname : 0 +separator - function_body : 0 +separator - function_definition : 0 +separator - until_clause : 0 +separator - while_clause : 0 +separator - else_part : 0 +separator - if_clause : 0 +separator - pattern : 0 +separator - case_item : 0 +separator - case_item_ns : 0 +separator - case_list : 0 +separator - case_list_ns : 0 +separator - case_clause : 0 +separator - wordlist : 0 +separator - in : 0 +separator - name : 0 +separator - term : 0 +separator - compound_list : 0 +separator - subshell : 0 +separator - compound_command : 0 +separator - command : 0 +separator - pipe_sequence : 0 +separator - pipeline : 0 +separator - and_or : 0 +separator - list : 0 +separator - complete_command : 0 +separator - complete_commands : 0 +separator - program : 0 +separator - In : 0 +#separator - Lbrace : 0 +#separator - Rbrace : 0 +#separator - Bang : 0 +separator - case : 0 +separator - esac : 0 +separator - while : 0 +separator - until : 0 +separator - for : 0 +separator - if : 0 +separator - then : 0 +separator - else : 0 +separator - elif : 0 +separator - fi : 0 +separator - do : 0 +separator - done : 0 +separator - CLOBBER : 0 +separator - DLESS : 0 +separator - DGREAT : 0 +separator - LESSAND : 0 +separator - GREATAND : 0 +separator - LESSGREAT : 0 +separator - DLESSDAH : 0 +separator - AND_IF : 0 +separator - OR_IF : 0 +separator - DSEMI : 0 +separator - WORD : 0 +separator - ASSIGNEMENT_WORD : 0 +separator - NAME : 0 +separator - NEWLINE : 0 +separator - IO_NUMER : 0 +separator - SEMI : 0 +separator - AMP : 0 +separator - EMPTY : 0 +separator - GREAT : 0 +separator - LESS : 0 +separator - PAREN_OPEN : 0 +separator - PIPE : 0 +separator - PAREN_CLOSE : 0 diff --git a/42sh/grammar/here_end b/42sh/grammar/here_end new file mode 100644 index 00000000..0a969177 --- /dev/null +++ b/42sh/grammar/here_end @@ -0,0 +1,87 @@ +#HERE_END + +here_end - here_end : 0 +here_end - sequential_sep : 0 +here_end - separator_op : 0 +here_end - linebreak : 0 +here_end - newline_list : 0 +here_end - separator : 0 +here_end - io_here : 0 +here_end - filename : 0 +here_end - io_file : 0 +here_end - io_redirect : 0 +here_end - redirect_list : 0 +here_end - cmd_suffix : 0 +here_end - cmd_prefix : 0 +here_end - cmd_word : 0 +here_end - cmd_name : 0 +here_end - simple_commound : 0 +here_end - do_group : 0 +here_end - brace_group : 0 +here_end - fname : 0 +here_end - function_body : 0 +here_end - function_definition : 0 +here_end - until_clause : 0 +here_end - while_clause : 0 +here_end - else_part : 0 +here_end - if_clause : 0 +here_end - pattern : 0 +here_end - case_item : 0 +here_end - case_item_ns : 0 +here_end - case_list : 0 +here_end - case_list_ns : 0 +here_end - case_clause : 0 +here_end - wordlist : 0 +here_end - in : 0 +here_end - name : 0 +here_end - term : 0 +here_end - compound_list : 0 +here_end - subshell : 0 +here_end - compound_command : 0 +here_end - command : 0 +here_end - pipe_sequence : 0 +here_end - pipeline : 0 +here_end - and_or : 0 +here_end - list : 0 +here_end - complete_command : 0 +here_end - complete_commands : 0 +here_end - program : 0 +here_end - In : 0 +#here_end - Lbrace : 0 +#here_end - Rbrace : 0 +#here_end - Bang : 0 +here_end - case : 0 +here_end - esac : 0 +here_end - while : 0 +here_end - until : 0 +here_end - for : 0 +here_end - if : 0 +here_end - then : 0 +here_end - else : 0 +here_end - elif : 0 +here_end - fi : 0 +here_end - do : 0 +here_end - done : 0 +here_end - CLOBBER : 0 + here_end - DLESS : VALID - AGGREGATION k = 1, new = io_here +here_end - DGREAT : 0 +here_end - LESSAND : 0 +here_end - GREATAND : 0 +here_end - LESSGREAT : 0 + here_end - DLESSDAH : VALID - AGGREGATION k = 1, new = io_here +here_end - AND_IF : 0 +here_end - OR_IF : 0 +here_end - DSEMI : 0 +here_end - WORD : 0 +here_end - ASSIGNEMENT_WORD : 0 +here_end - NAME : 0 +here_end - NEWLINE : 0 +here_end - IO_NUMER : 0 +here_end - SEMI : 0 +here_end - AMP : 0 +here_end - EMPTY : 0 +here_end - GREAT : 0 +here_end - LESS : 0 +here_end - PAREN_OPEN : 0 +here_end - PIPE : 0 +here_end - PAREN_CLOSE : 0 diff --git a/42sh/grammar/io_here b/42sh/grammar/io_here new file mode 100644 index 00000000..654ba9e7 --- /dev/null +++ b/42sh/grammar/io_here @@ -0,0 +1,87 @@ +#IO_HERE + +io_here - io_here : 0 +io_here - sequential_sep : 0 +io_here - separator_op : 0 + io_here - linebreak : VALID - AGGREGATION k = 1, new = program +io_here - newline_list : 0 +io_here - here_end : 0 +io_here - separator : 0 +io_here - filename : 0 +io_here - io_file : 0 +io_here - io_redirect : 0 + io_here - redirect_list : VALID - NOTHING + io_here - cmd_suffix : VALID - NOTHING + io_here - cmd_prefix : VALID - NOTHING + io_here - cmd_word : VALID - AGGREGATION k = 0, new = cmd_suffix + io_here - cmd_name : VALID - AGGREGATION k = 0, new = cmd_suffix +io_here - simple_command : 0 +io_here - do_group : 0 +io_here - brace_group : 0 +io_here - fname : 0 +io_here - function_body : 0 +io_here - function_definition : 0 +io_here - until_clause : 0 +io_here - while_clause : 0 +io_here - else_part : 0 +io_here - if_clause : 0 +io_here - pattern : 0 +io_here - case_item : 0 +io_here - case_item_ns : 0 +io_here - case_list : 0 +io_here - case_list_ns : 0 +io_here - case_clause : 0 +io_here - wordlist : 0 +io_here - in : 0 +io_here - name : 0 +io_here - term : 0 +io_here - compound_list : 0 +io_here - subshell : 0 +io_here - compound_command : 0 +io_here - command : 0 +io_here - pipe_sequence : 0 +io_here - pipeline : 0 +io_here - and_or : 0 +io_here - list : 0 +io_here - complete_command : 0 +io_here - complete_commands : 0 +io_here - program : 0 +io_here - In : 0 +#io_here - Lbrace : 0 +#io_here - Rbrace : 0 +#io_here - Bang : 0 +io_here - case : 0 +io_here - esac : 0 +io_here - while : 0 +io_here - until : 0 +io_here - for : 0 +io_here - if : 0 +io_here - then : 0 +io_here - else : 0 +io_here - elif : 0 +io_here - fi : 0 +io_here - do : 0 +io_here - done : 0 +io_here - CLOBBER : 0 +io_here - DLESS : 0 +io_here - DGREAT : 0 +io_here - LESSAND : 0 +io_here - GREATAND : 0 +io_here - LESSGREAT : 0 +io_here - DLESSDAH : 0 +io_here - AND_IF : 0 +io_here - OR_IF : 0 +io_here - DSEMI : 0 +io_here - WORD : 0 +io_here - ASSIGNEMENT_WORD : 0 +io_here - NAME : 0 +io_here - NEWLINE : 0 + io_here - IO_NUMBER : VALID - AGREGATION k = 1, new = io_redirect +io_here - SEMI : 0 +io_here - AMP : 0 +io_here - EMPTY : 0 +io_here - GREAT : 0 +io_here - LESS : 0 +io_here - PAREN_OPEN : 0 +io_here - PIPE : 0 +io_here - PAREN_CLOSE : 0 diff --git a/42sh/grammar/newline_list b/42sh/grammar/newline_list index daabf0af..94dc6b8e 100644 --- a/42sh/grammar/newline_list +++ b/42sh/grammar/newline_list @@ -1,10 +1,10 @@ #NEWLINE_LIST -newline_list - newline_list : 0 + newline_list - newline_list : VALID - NOTHING newline_list - sequential_sep : 0 newline_list - separator_op : 0 -newline_list - separator : 0 -newline_list - newline_list : 0 + newline_list - separator : VALID - NOTHNG !!! + newline_list - linebreak : VALID - NOTHING newline_list - here_end : 0 newline_list - io_here : 0 newline_list - filename : 0 @@ -34,7 +34,7 @@ newline_list - case_clause : 0 newline_list - wordlist : 0 newline_list - in : 0 newline_list - name : 0 -newline_list - term : 0 + newline_list - term : AGGREGATION k - 0, new = separator newline_list - compound_list : 0 newline_list - subshell : 0 newline_list - compound_command : 0 @@ -79,9 +79,9 @@ newline_list - NEWLINE : 0 newline_list - IO_NUMER : 0 newline_list - SEMI : 0 newline_list - AMP : 0 - newline_list - EMPTY : VALID + newline_list - EMPTY : AGGREGATION k = 1, new = linebreak; newline_list - GREAT : 0 newline_list - LESS : 0 newline_list - PAREN_OPEN : 0 newline_list - PIPE : 0 - newline_list - PAREN_CLOSE : VALID +newline_list - PAREN_CLOSE : 0 diff --git a/42sh/grammar/rules b/42sh/grammar/rules index 266c6214..75b22e2b 100644 --- a/42sh/grammar/rules +++ b/42sh/grammar/rules @@ -3,12 +3,12 @@ sequential_sep - in : VALID sequential_sep - name : VALID separator - term : VALID -separator - compound_list : NOTHING !!!!! +separator - compound_list : VALID - NOTHING !!!!! -separator_op - complete_commands : NOTHING !!!! +separator_op - complete_commands : VALID - NOTHING !!!! -linebreak - linebreak : NOTHING -linebreak - separator_op : ASSIGNATION, k = 1, new = separator +linebreak - linebreak : VALID - NOTHING +linebreak - separator_op : VALID - ASSIGNATION, k = 1, new = separator linebreak - in : VALID linebreak - name : VALID linebreak - compound_list : VALID @@ -16,6 +16,46 @@ linebreak - complete_commands : VALID linebreak - AND_IF : VALID linebreak - OR_IF : VALID linebreak - WORD : VALID -linebreak - SEMI : AGGREGATION k - 1, new = sequential_sep -linebreak - EMPTY : VALID +linebreak - SEMI : VALID - AGGREGATION k = 1, new = sequential_sep linebreak - PAREN_CLOSE : VALID + +newline_list - newline_list : VALID - NOTHING +newline_list - separator : VALID - NOTHING !!! +newline_list - linebreak : VALID - NOTHING +newline_list - term : VALID - AGGREGATION k = 0, new = separator + +here_end - DLESS : VALID - AGGREGATION k = 1, new = io_here +here_end - DLESSDAH : VALID - AGGREGATION k = 1, new = io_here + +io_here - linebreak : VALID - AGGREGATION k = 1, new = program +io_here - redirect_list : VALID - NOTHING +io_here - cmd_suffix : VALID - NOTHING +io_here - cmd_prefix : VALID - NOTHING +io_here - cmd_word : VALID - AGGREGATION k = 0, new = cmd_suffix +io_here - cmd_name : VALID - AGGREGATION k = 0, new = cd_suffix +io_here - IO_NUMBER : VALID - AGGREGATION k = 1, new = io_redirect +io_here - compound_command : VALID - AGGREGATION k = 0, new = io_redirect + +filename - LESS : VALID - AGGREGATION k = 1, new = io_file +filename - LESSAND : VALID - AGGREGATION k = 1, new = io_file +filename - GREAT : VALID - AGGREGATION k = 1, new = io_file +filename - GREATAND : VALID - AGGREGATION k = 1, new = io_file +filename - DGREAT : VALID - AGGREGATION k = 1, new = io_file +filename - LESSGREAT : VALID - AGGREGATION k = 1, new = io_file +filename - CLOBBER : VALID - AGGREGATION k = 1, new = io_file + +io_file - redirect_list : VALID - NOTHING +io_file - cmd_suffix : VALID - NOTHING +io_file - cmd_prefix : VALID - NOTHING +io_file - cmd_name : VALID - NOTHING +io_file - cmd_word : VALID - NOTHING +io_file - linebreak : VALID - AGGREGATION k = 1, new = program +io_file - IO_NUMBER : VALID - AGGREGATION k = 1, new = io_redirect +io_file - compound_command : VALID - AGGREGATION k = 0, new = io_redirect + +io_redirect - redirect_list : VALID - NOTHING +io_redirect - compound_command : VALID - AGGREGATION k = 0, new = redirect_list + +// si transparence continuer remontee, +// si dernier membre aurait pu aussi constitue membre actuel, ne rien fiare, ainsi que transparence +//push un dernier caracter linebreak diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn deleted file mode 100644 index 7a3584acb38091b2d7976c605da3d3bb37c73e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 W{@-$uQu9{)e)QzS$)~e(k@as36&l3= diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 4cfa83cb..d158daf4 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/10 01:24:00 by ariard ### ########.fr */ +/* Updated: 2017/02/10 01:43:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 632ee87f..3ebc25e6 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/10 01:39:33 by ariard ### ########.fr */ +/* Updated: 2017/02/10 15:58:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.ft_parse.c.swm b/42sh/src/parser/.ft_parse.c.swm deleted file mode 100644 index 833a54ff378e5a316885855b875d579f24b6afef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2PjB2r7{;d@08>H{y@7;=T~WM$y7q1&C|*)1$r5@<8*NxxB*ew#d8Pyz6(CdYuV>aP;lc(A(hIr!11f zTk46aCwS!LAs38$6FJsro#??P_KqcB2|PN1LQc+KSRjkNu71_)wO8ob7eBKI8Tt{r1APPS zLk09P^gh&s&Om=4=U>N86S)NnGE+z*G8l7I0!j1bTAxV9qNIVn=w8Lhs&e%;%x?3jid7{V}pQKqKD6Z;aop5`bvu&iV z0^M`f$oYW>uxF`YY8I20PShmDZiJ~GU1m2ougY$9&8@*s%}8GrwKg@6Uo!VFL7idF zv$%-LM2uCHNSl^Vu@7X(=jJp?+2Nxl^Tk&M4AwV3_(-|xK3%4G=DTb+Ow%lKMe-TT zutGE&+N53I*K4zy?BAj*OZBAb=*sHgy~|eytC+^UktJ~h3#CtpQ|`P~>!Bis06iH9 zmW9nr=lQEcrq2b-J}r%k9l`6W8l?^zf-0_C{Ct zjNuB_)e%GgP1;=w7Gc=?M?+d~DMxdt?C5_hxdpT84@NjUw7YNk?tWm(daEq&9U<}f zX0qJueQ|D#F=++HY0lG>d^G+TJ>_=a5qVbb#?Y+1PIL^jG9+jPM^4JVF+8@-d|(h5 ZOPr~OoBzvj-rSs*h9~u&H1X1T8yy}U*lkC{h#T}YZ zIuRfOM1Tko0U|&IhyW2F0(+SNce~&oHn1;hA{otHo91Xs6A>T+M1Tko0U|&IhyW2F z0z`la5CI~v2MLt%^Zoq?0A8bl&;RBB|E~@M+(h-D-W&p`p-!OQ^#I&KokD%;26%{i zfO1g{)I4eqrK66cz8?hmhWd*7f_jO1fqI5|ih6?bQ8m;w>LRKa^#kkqi28tfk9vy= zYJ7yEK?H~Z5g-CYfCvx)BJdv&=z!u`yy-bCrS*@1f_ufzWN@V@X~$X%E`_pDcB|xi z9Wh`BCmNO2GB>L??4?{}C47@f=JT>yV@cr~%M!ot4@y{JDc-1A&cGONxfUA@ONgb4 zC@5`E)~a^hVyU3SSUh?ln%P*th7T4eaGgrmecnGXW;PsdIeY{##o^em9VC@R8a6NH z5om)5#_q_bxPT&R&9ZPKQ3d^}=*%wsiIK{A8Am&&*`m zL~*h-J6@cU!3*g8_2v@)C)(y|M4B6J% zu)T9W$3LIL!^_@du`|*nV@Ri%r)+s+{x)`j+qxsx8M#Zt*!z$(x8a8=M#cyeqeVDL h!|i!&$}$XTiK}2>{GSXr`HO96xLfZ@8ecjUegciuWQPC% diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index fefbe13a..412488a7 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/10 01:42:21 by ariard ### ########.fr */ +/* Updated: 2017/02/10 16:57:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index a7316233..dfcd3d4c 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/10 01:40:26 by ariard ### ########.fr */ +/* Updated: 2017/02/10 16:57:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index bad1b889..d66023df 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/10 01:42:12 by ariard ### ########.fr */ +/* Updated: 2017/02/10 16:57:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 516e1dade5fe282ce591474aeaa94c305038a715 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sun, 12 Feb 2017 02:40:34 +0100 Subject: [PATCH 043/206] enforcement grammar part 1 --- 42sh/grammar/rules | 6 ++ 42sh/includes/parser.h | 27 +++++- 42sh/sample/stack.sh | 2 +- 42sh/src/parser/aggregate_sym.c | 15 ++- 42sh/src/parser/eval_sym.c | 160 +++++++++++++++++++++++++++++++- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 37 +++++++- 42sh/src/parser/read_stack.c | 4 +- 8 files changed, 238 insertions(+), 15 deletions(-) diff --git a/42sh/grammar/rules b/42sh/grammar/rules index 75b22e2b..22b5afae 100644 --- a/42sh/grammar/rules +++ b/42sh/grammar/rules @@ -55,6 +55,12 @@ io_file - compound_command : VALID - AGGREGATION k = 0, new = io_redirect io_redirect - redirect_list : VALID - NOTHING io_redirect - compound_command : VALID - AGGREGATION k = 0, new = redirect_list +io_redirect - cmd_suffix : VALID - NOTHING +io_redirect - cmd_prefix : VALID - NOTHING +io_redirect - cmd_word : VALID - NOTHING +io_redirect - cmd_name : VALID - NOTHING + + // si transparence continuer remontee, // si dernier membre aurait pu aussi constitue membre actuel, ne rien fiare, ainsi que transparence diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 3ebc25e6..ba7226e3 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -22,7 +22,7 @@ enum e_sym { - EMPTY = 1, + LINEBREAK = 1, TK_LESS, TK_GREAT, TK_DLESS, @@ -51,6 +51,16 @@ enum e_sym TK_N_WORD, TK_Q_WORD, TK_DQ_WORD, + TK_ASSIGNEMENT_WORD = 50, + TK_BANG, + TK_NAME, + TK_FOR, + TK_IO_NUMBER, + TK_DLESSDASH, + TK_LESSGREAT, + TK_CASE, + TK_LBRACE, + TK_IN, PROGRAM = 100, COMPLETE_COMMANDS, LIST, @@ -91,7 +101,6 @@ enum e_sym IO_HERE, HERE_END, NEWLINE_LIST, - LINEBREAK, SEPARATOR_OP, SEPARATOR, SEQUENTIAL_SEP, @@ -106,7 +115,7 @@ enum e_sym | WHILE_CLAUSE | UNTIL_CLAUSE | FUNCTION_DEFINITION | FUNCTION_BODY | FNAME\ | BRACE_GROUP | DO_GROUP | SIMPLE_COMMAND | CMD_NAME | CMD_WORD | CMD_PREFIX\ | CMD_SUFFIX | REDIRECT_LIST | IO_REDIRECT | IO_FILE | FILENAME | IO_HERE\ - | HERE_END | NEWLINE_LIST | LINEBREAK | SEPARATOR_OP | SEPARATOR | SEQUENTIAL_SEP + | HERE_END | NEWLINE_LIST | SEPARATOR_OP | SEPARATOR | SEQUENTIAL_SEP }; typedef unsigned long long int t_sym; @@ -168,6 +177,17 @@ typedef unsigned long long int t_sym; //#define ALL_SYM -1UL */ +struct s_aggrematch +{ + t_sym under; + t_sym top; + t_sym new_sym; +}; + +typedef struct s_aggrematch t_aggrematch; + +extern t_aggrematch g_aggrematch[]; + struct s_prodmatch { t_type token; @@ -179,7 +199,6 @@ typedef struct s_prodmatch t_prodmatch; extern t_prodmatch g_prodmatch[]; - struct s_stackmatch { t_sym under; diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 4ec79147..9e2740c6 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls > file1 > file2 +ls diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 05632520..41cb395f 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -12,7 +12,20 @@ #include "parser.h" -//descente recursive pour multi aggregation +t_aggrematch g_aggrematch[] = +{ + {CMD_SUFFIX, TK_WORD, CMD_SUFFIX}, + {TK_PIPE, TK_WORD, PATTERN}, + {WORDLIST, TK_WORD, WORDLIST}, + + {CMD_PREFIX, TK_ASSIGNEMENT_WORD, CMD_PREFIX}, + + {ELSE_PART, TK_FI, IF_CLAUSE}, + {COMPOUND_LIST, TK_FI, IF_CLAUSE}, + + {TK_COMPOUND_LIST, TK_DONE, DO_GROUP}, + {TK_COMPOUND_LIST, TK_RBRACE, BRACE_GROUP}, + {0, 0, 0}, int aggregate_sym(t_sym **stack, t_sym *new_sym) { diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 412488a7..ff6c7761 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -14,9 +14,163 @@ t_stackmatch g_stackmatch[] = { - {EMPTY, CMD_NAME}, - {TK_GREAT, CMD_NAME}, - {CMD_NAME, TK_GREAT}, + {CMD_SUFFIX, TK_WORD}, + {TK_PIPE, TK_WORD}, + {CASE, TK_WORD}, + {WORDLIST, TK_WORD}, + + {CMD_PREFIX, TK_ASSIGNEMENT_WORD}, + + {REDIRECT_LIST, TK_IO_NUMBER}, + {CMD_SUFFIX, TK_IO_NUMBER}, + {CMD_PREFIX, TK_IO_NUMBER}, + {CMD_NAME, TK_IO_NUMBER}, + {CMD_WORD, TK_IO_NUMBER}, + {LINEBREAK, TK_IO_NUMBER}, + {TK_BANG, TK_IO_NUMBER}, + {SEPARATOR_OP, TK_IO_NUMBER}, + {NEWLINE_LIST, TK_IO_NUMBER}, + + {TK_AND_IF, AND_OR}, + + {TK_OR_IF, AND_OR}, + + {TK_DSEMI, LINEBREAK}, + {TK_DSEMI, COMPOUND_LIST}, + + {TK_DLESS, TK_IO_NUMBER}, + {TK_DLESS, REDIRECT_LIST}, + {TK_DLESS, CMD_SUFFIX}, + {TK_DLESS, CMD_PREFIX}, + {TK_DLESS, CMD_WORD}, + {TK_DLESS, CMD_NAME}, + {TK_DLESS, LINEBREAK}, + {TK_DLESS, TK_BANG}, + {TK_DLESS, SEPARATOR_OP}, + {TK_DLESS, NEWLINE_LIST}, + + {TK_DLESSDASH, TK_IO_NUMBER}, + {TK_DLESSDASH, REDIRECT_LIST}, + {TK_DLESSDASH, CMD_SUFFIX}, + {TK_DLESSDASH, CMD_PREFIX}, + {TK_DLESSDASH, CMD_WORD}, + {TK_DLESSDASH, CMD_NAME}, + {TK_DLESSDASH, LINEBREAK}, + {TK_DLESSDASH, TK_BANG}, + {TK_DLESSDASH, SEPARATOR_OP}, + {TK_DLESSDASH, NEWLINE_LIST}, + + {TK_DGREAT, TK_IO_NUMBER}, + {TK_DGREAT, REDIRECT_LIST}, + {TK_DGREAT, CMD_SUFFIX}, + {TK_DGREAT, CMD_PREFIX}, + {TK_DGREAT, CMD_WORD}, + {TK_DGREAT, CMD_NAME}, + {TK_DGREAT, LINEBREAK}, + {TK_DGREAT, TK_BANG}, + {TK_DGREAT, SEPARATOR_OP}, + {TK_DGREAT, NEWLINE_LIST}, + + {TK_LESSAND, TK_IO_NUMBER}, + {TK_LESSAND, REDIRECT_LIST}, + {TK_LESSAND, CMD_SUFFIX}, + {TK_LESSAND, CMD_PREFIX}, + {TK_LESSAND, CMD_WORD}, + {TK_LESSAND, CMD_NAME}, + {TK_LESSAND, LINEBREAK}, + {TK_LESSAND, TK_BANG}, + {TK_LESSAND, SEPARATOR_OP}, + {TK_LESSAND, NEWLINE_LIST}, + + {TK_GREATAND, TK_IO_NUMBER}, + {TK_GREATAND, REDIRECT_LIST}, + {TK_GREATAND, CMD_SUFFIX}, + {TK_GREATAND, CMD_PREFIX}, + {TK_GREATAND, CMD_WORD}, + {TK_GREATAND, CMD_NAME}, + {TK_GREATAND, LINEBREAK}, + {TK_GREATAND, TK_BANG}, + {TK_GREATAND, SEPARATOR_OP}, + {TK_GREATAND, NEWLINE_LIST}, + + {TK_LESSGREAT, TK_IO_NUMBER}, + {TK_LESSGREAT, REDIRECT_LIST}, + {TK_LESSGREAT, CMD_SUFFIX}, + {TK_LESSGREAT, CMD_PREFIX}, + {TK_LESSGREAT, CMD_WORD}, + {TK_LESSGREAT, CMD_NAME}, + {TK_LESSGREAT, LINEBREAK}, + {TK_LESSGREAT, TK_BANG}, + {TK_LESSGREAT, SEPARATOR_OP}, + {TK_LESSGREAT, NEWLINE_LIST}, + + {TK_CLOBBER, TK_IO_NUMBER}, + {TK_CLOBBER, REDIRECT_LIST}, + {TK_CLOBBER, CMD_SUFFIX}, + {TK_CLOBBER, CMD_PREFIX}, + {TK_CLOBBER, CMD_WORD}, + {TK_CLOBBER, CMD_NAME}, + {TK_CLOBBER, LINEBREAK}, + {TK_CLOBBER, TK_BANG}, + {TK_CLOBBER, SEPARATOR_OP}, + {TK_CLOBBER, NEWLINE_LIST}, + + {TK_IF, LINEBREAK}, + {TK_IF, TK_BANG}, + {TK_IF, SEPARATOR_OP}, + {TK_IF, NEWLINE_LIST}, + + {TK_THEN, COMPOUND_LIST}, + + {TK_ELSE, COMPOUND_LIST}, + + {TK_ELIF, COMPOUND_LIST}, + + {TK_FI, ELSE_PART}, + {TK_FI, COMPOUND_LIST}, + + {TK_DO, COMPOUND_LIST}, + {TK_DO, NAME}, + {TK_DO, SEQUENTIAL_SEP}, + + {TK_DONE, COMPOUND_LIST}, + + {TK_CASE, LINEBREAK}, + {TK_CASE, TK_BANG}, + {TK_CASE, NEWLINE_LIST}, + {TK_CASE, SEPARATOR_OP}, + + {TK_ESAC, CASE_LIST}, + {TK_ESAC, CASE_LIST_NS}, + {TK_ESAC, LINEBREAK}, + + {TK_WHILE, LINEBREAK}, + {TK_WHILE, TK_BANG}, + {TK_WHILE, SEPARATOR_OP}, + {TK_WHILE, NEWLINE_LIST}, + + {TK_UNTIL, LINEBREAK}, + {TK_UNTIL, TK_BANG}, + {TK_UNTIL, SEPARATOR_OP}, + {TK_UNTIL, NEWLINE_LIST}, + + {TK_FOR, LINEBREAK}, + {TK_FOR, TK_BANG}, + {TK_FOR, SEPARATOR_OP}, + {TK_FOR, NEWLINE_LIST}, + + {TK_LBRACE, LINEBREAK}, + {TK_LBRACE, TK_BANG}, + {TK_LBRACE, SEPARATOR_OP}, + {TK_LBRACE, NEWLINE_LIST}, + + {TK_RBRACE, COMPOUND_LIST}, + + {TK_BANG, LINEBREAK}, + {TK_BANG, SEPARATOR_OP}, + {TK_BANG, NEWLINE_LIST}, + + {TK_IN, LINEBREAK}, {0, 0}, }; diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index dfcd3d4c..00f8036e 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -22,7 +22,7 @@ int ft_parse(t_btree **ast, t_list **token) state = UNDEFINED; new_sym = ft_memalloc(sizeof(t_sym)); stack = ft_memalloc(sizeof(t_sym) * 1000); - push_stack(stack, EMPTY); + push_stack(stack, LINEBREAK); while (*token) { produce_sym(*stack, new_sym, token); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index d66023df..ef44af73 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -14,9 +14,37 @@ t_prodmatch g_prodmatch[] = { - {TK_N_WORD, EMPTY, CMD_NAME}, - {TK_GREAT, ALL, TK_GREAT}, - {TK_N_WORD, ALL, CMD_NAME}, + {TK_WORD, TK_DLESS, HERE_END}, + {TK_WORD, TK_DLESSDASH, HERE_END}, + {TK_WORD, TK_LESS, FILENAME}, + {TK_WORD, TK_LESSAND, FILENAME}, + {TK_WORD, TK_GREAT, FILENAME}, + {TK_WORD, TK_GREATAND, FILENAME}, + {TK_WORD, TK_DGREAT, FILENAME}, + {TK_WORD, TK_LESSGREAT, FILENAME}, + {TK_WORD, TK_CLOBBER, FILENAME}, + {TK_WORD, CMD_WORD, CMD_SUFFIX}, + {TK_WORD, CMD_NAME, CMD_SUFFIX}, + {TK_WORD, LINEBREAK, CMD_NAME}, + {TK_WORD, NEWLINE_LIST, CMD_NAME}, + {TK_WORD, IN, WORDLIST}, +// {{TK_WORD, CASE_LIST, PATTERN}, rule 4 ? + {TK_WORD, TK_PAREN_OPEN, PATTERN}, + + {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, + + {TK_NAME, LINEBREAK, FNAME}, + {TK_NAME, TK_BANG, FNAME}, + {TK_NAME, SEPARATOR_OP, FNAME}, + {TK_NAME, NEWLINE_LIST, FNAME}, + {TK_NAME, TK_FOR, NAME}, + + {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, + {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, + {0, 0, 0}, }; @@ -27,6 +55,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) token = (*lst)->content; i = 0; + *new_sym = NULL; while (g_prodmatch[i].new_sym) { if (token->type == g_prodmatch[i].token @@ -34,5 +63,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) *new_sym = g_prodmatch[i].new_sym; i++; } + if (!*new_sym) + *new_sym = token->type; return (0); } diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 4ffb8113..e7505232 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -36,8 +36,8 @@ char *read_state(t_sym current) return ("SIMPLE_COMMAND"); if (current == PROGRAM) return ("PROGRAM"); -*/ if (current == EMPTY) - return ("EMPTY"); +*/ if (current == LINEBREAK) + return ("LINEBREAK"); if (current != 0) return ("NON-DEFINED"); if (current == 0) From 6601e2111f9c0a09ad7b6105d1362b35e9321e73 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sun, 12 Feb 2017 04:09:36 +0100 Subject: [PATCH 044/206] moar moar grammar --- 42sh/includes/parser.h | 2 ++ 42sh/src/parser/aggregate_sym.c | 21 +++++++++++-- 42sh/src/parser/eval_sym.c | 55 ++++++++++++++++++++++++++++++++- 42sh/src/parser/produce_sym.c | 2 +- 4 files changed, 76 insertions(+), 4 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index ba7226e3..d15dc7a9 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -61,6 +61,8 @@ enum e_sym TK_CASE, TK_LBRACE, TK_IN, + TK_CASE, + TK_ESAC, PROGRAM = 100, COMPLETE_COMMANDS, LIST, diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 41cb395f..35b9ea4d 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -23,8 +23,25 @@ t_aggrematch g_aggrematch[] = {ELSE_PART, TK_FI, IF_CLAUSE}, {COMPOUND_LIST, TK_FI, IF_CLAUSE}, - {TK_COMPOUND_LIST, TK_DONE, DO_GROUP}, - {TK_COMPOUND_LIST, TK_RBRACE, BRACE_GROUP}, + {COMPOUND_LIST, TK_DONE, DO_GROUP}, + {COMPOUND_LIST, TK_RBRACE, BRACE_GROUP}, + + {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, 2}, + +//watch this + {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 1}, + + {LINEBREAK, TK_SEMI, SEPARATOR_OP, 1}, +//prediction one + {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('}, + + {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, + {NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0}, + {NEWlINE_LIST, IN, SEPARATOR_SEP, ALL, 0}, + {NEWLINE_LIST, WORDLIST, SEPARATOR_SEP, ALL, 0}, + {NEWLINE_LIST, TERM, SEPARATOR, ALL, 0}, + {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, ALL, 0}, + {0, 0, 0}, int aggregate_sym(t_sym **stack, t_sym *new_sym) diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index ff6c7761..72313720 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -170,7 +170,60 @@ t_stackmatch g_stackmatch[] = {TK_BANG, SEPARATOR_OP}, {TK_BANG, NEWLINE_LIST}, - {TK_IN, LINEBREAK}, + {TK_IN, LINEBREAK}, + + {TK_SEMI, NAME}, + {TK_SEMI, IN}, + {TK_SEMI, WORDLIST}, + {TK_SEMI, LIST}, + {TK_SEMI, TERM}, + + {TK_AMP, LIST}, + {TK_AMP, TERM}, + + {TK_PIPE, PATTERN}, + {TK_PIPE, PIPE_SEQUENCE}, + + {TK_PAREN_OPEN, FNAME}, + {TK_PAREN_OPEN, CASE_LIST}, + {TK_PAREN_OPEN, LINEBREAK}, + {TK_PAREN_OPEN, TK_BANG}, + {TK_PAREN_OPEN, SEPARATOR_OP}, + {TK_PAREN_OPEN, NEWLINE_LIST}, + + {TK_PAREN_CLOSE, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, PATTERN}, + {TK_PAREN_CLOSE, COMPOUND_LIST}, + + {SEQUENTIAL_SEP, NAME}, + {SEQUENTIAL_SEP, IN}, + {SEQUENTIAL_SEP, WORDLIST}, + + {SEPARATOR, TERM}, + {SEPARATOR, COMPOUND_LIST}, + + {SEPARATOR_OP, LIST}, + {SEPARATOR_OP, TERM}, + {SEPARATOR_OP, COMPOUND_LIST}, + + {LINEBREAK, TK_SEMI}, + {LINEBREAK, TK_PAREN_CLOSE}, + {LINEBREAK, WORD}, + {LINEBREAK, IN}, + {LINEBREAK, TK_AND_IF}, + {LINEBREAK, TK_OR_IF}, + {LINEBREAK, TK_PIPE}, + {LINEBREAK, LINEBREAK}, + {LINEBREAK, COMPLETECOMMANDS}, + + {NEWLINE_LIST, NEWLINE_LIST}, + {NEWLINE_LIST, NAME}, + {NEWLINE_LIST, IN}, + {NEWLINE_LIST, WORDLIST}, + {NEWLINE_LIST, TERM}, + {NEWLINE_LIST, COMPOUND_LIST}, + {NEWLINE_LIST, COMPLETE_COMMANDS}, + {0, 0}, }; diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index ef44af73..112ada0f 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -28,7 +28,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, LINEBREAK, CMD_NAME}, {TK_WORD, NEWLINE_LIST, CMD_NAME}, {TK_WORD, IN, WORDLIST}, -// {{TK_WORD, CASE_LIST, PATTERN}, rule 4 ? + {{TK_WORD, CASE_LIST, PATTERN}, {TK_WORD, TK_PAREN_OPEN, PATTERN}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, From 775d99577279c70bc30ef46812c8d55ccb074e80 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 17:30:36 +0100 Subject: [PATCH 045/206] grammar --- 42sh/src/parser/ft_parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index dfcd3d4c..1b002dbb 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/10 16:57:51 by ariard ### ########.fr */ +/* Updated: 2017/02/11 16:22:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From a07ed6eea7e85c3a92694ff08eb1f41a53cb32bf Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 18:47:16 +0100 Subject: [PATCH 046/206] moaaaar grammar --- 42sh/includes/.parser.h.swn | Bin 0 -> 20480 bytes 42sh/includes/parser.h | 4 +- 42sh/src/parser/.eval_sym.c.swm | Bin 0 -> 16384 bytes 42sh/src/parser/.eval_sym.c.swn | Bin 0 -> 24576 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 0 -> 12288 bytes 42sh/src/parser/aggregate_sym.c | 68 +++++++++++++++++---- 42sh/src/parser/eval_sym.c | 92 +++++++++++++++++++++++------ 42sh/src/parser/produce_sym.c | 2 +- 8 files changed, 133 insertions(+), 33 deletions(-) create mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/src/parser/.eval_sym.c.swm create mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/.produce_sym.c.swn diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn new file mode 100644 index 0000000000000000000000000000000000000000..2abcaac7df2b3534f54e4e69c54e7874312065cc GIT binary patch literal 20480 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 x`|4V)2{ui<|_EG=< literal 0 HcmV?d00001 diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index d15dc7a9..8ca18491 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/10 15:58:05 by ariard ### ########.fr */ +/* Updated: 2017/02/12 17:41:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -203,8 +203,8 @@ extern t_prodmatch g_prodmatch[]; struct s_stackmatch { - t_sym under; t_sym top; + t_sym under; }; typedef struct s_stackmatch t_stackmatch; diff --git a/42sh/src/parser/.eval_sym.c.swm b/42sh/src/parser/.eval_sym.c.swm new file mode 100644 index 0000000000000000000000000000000000000000..f8bd1d65c0b323fce7f61b953a91a4b917bfc3bd GIT binary patch literal 16384 zcmeI3Z)_W99mlU7uzApJu#Jf#;FhRe(pZV}r)%&is$*YTGskxAWT}`o<0jscrcF}Y zWvfC)kvfDrK)@z=1$0pM0%`DKXcK5dplOJy0>+=AX=v{l8k#_Wv`$nY_&oRAouB9N zld38e0_m>$#J=D6x!?0V-{W=)BJ3g3l*sgP&tzS5O;QoKU-|5@7$*DIN z>&-LKu>-LKu>-LK zu>-LKu>=2?4zyP{JD;TGn}gP$2wpcCuU7>7t>E=jh92z3FR=r$1F-|K1F-|K1F-|K z1F-|K1F-|K1F-|K1OI~#)Oo&t1MNzQ1puD^p9tFc-D@4^ZrB1(U*kASuoa%);yCxi zE%4iSIL?D`5>{aa_CpDFK@VI9=ilx)e}@<0*YE^<8IHrfXNfv4dycnDTu1*3s0j`KVC5uAZjumlD82n@nI z;ms=@=M{Jk9*0L@9qQmg7PiAx@Ta#q&adG6a2h@h%dj8DU=(hIb8mH=m*IzS22Q~W z+yUdT72X5q-$FTf22R6+a0rSp1~+Y)R}Vr}~NnpenACf#gls$7~W=4yp}b$UJNL}Jz3P@LZ9 z6)j?LsK{FMW()bE7bO+-iFnm3XDXTLQl(ZZi^{?{@-O&}@99`4B>1bAKIkmKsg*hxFtKY1M^`%EVats~cqO#ktQ>Awtte^}myW4Sk7nkP_ADeHuJ@Pldg9|;} zZ0>M(T(-^KF(eXR#w|=ZvpQdIH|EpsNNRZ3P-a)w>j%U{Hv$kxe7JA>?D!p?8TFCv*N zk{(EFZ{&WM@S@YG1=Hy;CGW(B_#Y)ylZWqR!prtS;X^m%i2462bIt?IW5xVGe7^rW z^ZsALFW^ad3_c4F!78l40mwo>TnpF0o2(JM0zZN0;Boj0d;;q5G1vzqa1;E4b%gWq zdw2n!g0I0>;UpY^{jd|p;3jxC{EKykSK%x?58s0);8FM@tidA8!VKhK6h`2Euo*VN zYpgk(h3~+_(1I#dAO$zT-&kMxE4&0hhBNRD_&gkiWtfFM;KB#sO86t|4KKp8@NM`K ztieH;fIV(|U6js55ER4f0_zPq98k~in!U;GEhu~iLD2Q>L zg?Nh{h#iO>h#mOvII!*{nvM3c=Ca#2+<%*sU_Y@qFu=P+B&39pSiHyWTW;JZ{@7T*HT>0 zeoZ0hijqR~+bks}a+!)(tg%8IO!AZ?P{l-iJ;{AZVohD9vCZ3cJu+VphqFszSEO7p z84qvrqvnsW))e~11YUa{pdLA?`@yt6>54NDgN2>hXqGR6 zNRb1wf0-$UAsiv$s2>Q2S(cHjIclMBeMdej5{Jo%_SuZ0!9Yg)T8r}-tMy*iDU7l^ zE)|>CQc;u1T$PDRCQIMVXIxS(1giOkAbJ&Qw%S6CV(O@d;qGQkmNs~1r>eRf4z``VyXY~7HG(Nr1iZfUMm-0-x@l|e@M literal 0 HcmV?d00001 diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..15f49d57bcf37e914aa7f93299bb64c851f39efa GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 35b9ea4d..d2bccfe3 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:19:29 by ariard ### ########.fr */ +/* Updated: 2017/02/12 18:47:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,25 +14,26 @@ t_aggrematch g_aggrematch[] = { - {CMD_SUFFIX, TK_WORD, CMD_SUFFIX}, - {TK_PIPE, TK_WORD, PATTERN}, - {WORDLIST, TK_WORD, WORDLIST}, + {TK_WORD, CMD_SUFFIX, CMD_SUFFIX, ALL, 0}, + {TK_WORD, TK_PIPE, PATTERN, ALL, 0}, + {TK_WORD, WORDLIST, WORDLIST, ALL, 0}, - {CMD_PREFIX, TK_ASSIGNEMENT_WORD, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, ALL, 0}, - {ELSE_PART, TK_FI, IF_CLAUSE}, - {COMPOUND_LIST, TK_FI, IF_CLAUSE}, + {TK_FI, ELSE_PART, IF_CLAUSE, ALL, tant que IF}, + {TK_FI, COMPOUND_LIST, IF_CLAUSE, ALL, tant que IF}, - {COMPOUND_LIST, TK_DONE, DO_GROUP}, - {COMPOUND_LIST, TK_RBRACE, BRACE_GROUP}, + {TK_DONE, COMPOUND_LIST, DO_GROUP, ALL, tant DO}, - {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, 2}, + {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, ALL tant que LBRACE}, + + {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, ALL, tant que TK_PAREN_OPEN}, //watch this - {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 1}, + {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, ALL, 0}, - {LINEBREAK, TK_SEMI, SEPARATOR_OP, 1}, -//prediction one + {LINEBREAK, TK_SEMI, SEPARATOR_OP, ALL, tant que TK_SEMI}, +//do one {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, @@ -42,7 +43,48 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, TERM, SEPARATOR, ALL, 0}, {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, ALL, 0}, + {IO_HERE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, + + {FILENAME, TK_LESS, IO_FILE, ALL, TK_LESS}, + {FILENAME, TK_LESSAND, IO_FILE, ALL, TK_LESSAND}, + {FILENAME, TK_GREAT, IO_FILE, ALL, TK_GREAT}, + {FILENAME, TK_GREATAND, IO_FILE, ALL, TK_GREATAND}, + {FILENAME, TK_DGREAT, IO_FILE, ALL, TK_DGREAT}, + {FILENAME, TK_LESGREAT, IO_FILE, ALL, TK_LESSGREAT}, + {FILENAME, TK_CLOBBER, IO_FILE, ALL, TK_CLOBBER}, + + {IO_FILE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, + + {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, ALL, REDIRECT_LIST}, + {IO_REDIRECT, CMD_SUFFIX, CMD_SUFFIX, ALL, CMD_SUFFIX}, + {IO_REDIRECT, CMD_NAME, CMD_SUFFIX, ALL, 0}, + {IO_REDIRECT, CMD_WORD, CMD_SUFFIX, ALL, 0}, + {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, ALL, CMD_PREFIX}, + {IO_REDIRECT, LINEBREAK, CMD_PREFIX, ALL, 0}, + {IO_REDIRECT, TK_BANG, CMD_PREFIX, ALL, 0}, + {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, ALL, 0}, + {IO_REDIRECT, NEWLINE_LIST, CMD_PREFIX, ALL, 0}, + + {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, ALL, COMPOUND_COMMAND}, + + {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, ALL, CMD_PREFIX}, + {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, ALL, CMD_NAME}, + + {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + + {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, + CMD_PREFIX}, + + {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_NAME, TK_BANG, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {0, 0, 0}, +} int aggregate_sym(t_sym **stack, t_sym *new_sym) { diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 72313720..711b4761 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/10 16:57:46 by ariard ### ########.fr */ +/* Updated: 2017/02/12 18:46:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,22 +14,22 @@ t_stackmatch g_stackmatch[] = { - {CMD_SUFFIX, TK_WORD}, - {TK_PIPE, TK_WORD}, - {CASE, TK_WORD}, - {WORDLIST, TK_WORD}, + {TK_WORD, CMD_SUFFIX}, + {TK_WORD, TK_PIPE}, + {TK_WORD, CASE}, + {TK_WORD, WORDLIST}, - {CMD_PREFIX, TK_ASSIGNEMENT_WORD}, + {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, - {REDIRECT_LIST, TK_IO_NUMBER}, - {CMD_SUFFIX, TK_IO_NUMBER}, - {CMD_PREFIX, TK_IO_NUMBER}, - {CMD_NAME, TK_IO_NUMBER}, - {CMD_WORD, TK_IO_NUMBER}, - {LINEBREAK, TK_IO_NUMBER}, - {TK_BANG, TK_IO_NUMBER}, - {SEPARATOR_OP, TK_IO_NUMBER}, - {NEWLINE_LIST, TK_IO_NUMBER}, + {TK_IO_NUMBER, REDIRECT_LIST}, + {TK_IO_NUMBER, CMD_SUFFIX}, + {TK_IO_NUMBER, CMD_PREFIX}, + {TK_IO_NUMBER, CMD_NAME}, + {TK_IO_NUMBER, CMD_WORD}, + {TK_IO_NUMBER, LINEBREAK}, + {TK_IO_NUMBER, TK_BANG}, + {TK_IO_NUMBER, SEPARATOR_OP}, + {TK_IO_NUMBER, NEWWLINE_LIST}, {TK_AND_IF, AND_OR}, @@ -224,6 +224,65 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, COMPOUND_LIST}, {NEWLINE_LIST, COMPLETE_COMMANDS}, + {HERE_END, DLESS}, + {HERE_END, DLESSDASH}, + + {IO_HERE, TK_IO_NUMBER}, + {IO_HERE, REDIRECT_LIST}, + {IO_HERE, CMD_SUFFIX}, + {IO_HERE, CMD_PREFIX}, + {IO_HERE, CMD_WORD}, + {IO_HERE, CMD_NAME}, + {IO_HERE, LINEBREAK}, + {IO_HERE, TK_BANG}, + {IO_HERE, SEPARATOR_OP}, + {IO_HERE, NEWLINE_LIST}, + + {FILENAME, TK_LESS}, + {FILENAME, TK_LESSAND}, + {FILENAME, TK_GREAT}, + {FILENAME, TK_GREATAND}, + {FILENAME, TK_DGREAT}, + {FILENAME, TK_LESSGREAT}, + {FILENAME, TK_CLOBBER}, + + {IO_FILE, TK_IO_NUMBER}, + {IO_FILE, REDIRECT_LIST}, + {IO_FILE, CMD_SUFFIX}, + {IO_FILE, CMD_PREFIX}, + {IO_FILE, CMD_WORD}, + {IO_FILE, CMD_NAME}, + {IO_FILE, LINEBREAK}, + {IO_FILE, TK_BANG}, + {IO_FILE, SEPARATOR_OP}, + {IO_FILE, NEWLINE_LIST}, + + {IO_REDIRECT, REDIRECT_LIST}, + {IO_REDIRECT, CMD_SUFFIX}, + {IO_REDIRECT, CMD_PREFIX}, + {IO_REDIRECT, CMD_WORD}, + {IO_REDIRECT, CMD_NAME}, + {IO_REDIRECT, LINEBREAK}, + {IO_REDIRECT, TK_BANG}, + {IO_REDIRECT, SEPARATOR_OP}, + {IO_REDIRECT, NEWLINE_LIST}, + + {REDIRECT_LIST, COMPOUND_COMMAND} + + {CMD_SUFFIX, CMD_WORD}, + {CMD_SUFFIX, CMD_NAME}, + + {CMD_PREFIX, LINEBREAK}, + {CMD_PREFIX, TK_BANG}, + {CMD_PREFIX, SEPARATOR_OP}, + {CMD_PREFIX, NEWLINE_LIST}, + + {CMD_WORD, CMD_PREFIX}, + + {CMD_NAME, LINEBREAK}, + {CMD_NAME, TK_BANG}, + {CMD_NAME, SEPARATOR_OP}, + {CMD_NAME, NEWLINE_LIST}, {0, 0}, }; @@ -235,8 +294,7 @@ int eval_sym(t_sym stack, t_sym new_sym) i = 0; while (g_stackmatch[i].top) { - if (stack == g_stackmatch[i].under - && new_sym == g_stackmatch[i].top) + if (new_sym == g_stackmatch[i].top && stack == g.stackmatch[i].under) return (0); i++; } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 112ada0f..8dea1220 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/10 16:57:17 by ariard ### ########.fr */ +/* Updated: 2017/02/12 17:41:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From f16b0b923fac1b010c828e3b091ec9bf7ea6b489 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 18:49:30 +0100 Subject: [PATCH 047/206] moaaar grammar --- 42sh/src/parser/.eval_sym.c.swm | Bin 16384 -> 0 bytes 42sh/src/parser/.eval_sym.c.swn | Bin 24576 -> 0 bytes 42sh/src/parser/.ft_parse.c.swn | Bin 12288 -> 0 bytes 42sh/src/parser/.ft_parse.c.swp | Bin 12288 -> 0 bytes 42sh/src/parser/.parse_word.c.swp | Bin 12288 -> 0 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 12288 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 42sh/src/parser/.eval_sym.c.swm delete mode 100644 42sh/src/parser/.eval_sym.c.swn delete mode 100644 42sh/src/parser/.ft_parse.c.swn delete mode 100644 42sh/src/parser/.ft_parse.c.swp delete mode 100644 42sh/src/parser/.parse_word.c.swp delete mode 100644 42sh/src/parser/.produce_sym.c.swn diff --git a/42sh/src/parser/.eval_sym.c.swm b/42sh/src/parser/.eval_sym.c.swm deleted file mode 100644 index f8bd1d65c0b323fce7f61b953a91a4b917bfc3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI3Z)_W99mlU7uzApJu#Jf#;FhRe(pZV}r)%&is$*YTGskxAWT}`o<0jscrcF}Y zWvfC)kvfDrK)@z=1$0pM0%`DKXcK5dplOJy0>+=AX=v{l8k#_Wv`$nY_&oRAouB9N zld38e0_m>$#J=D6x!?0V-{W=)BJ3g3l*sgP&tzS5O;QoKU-|5@7$*DIN z>&-LKu>-LKu>-LK zu>-LKu>=2?4zyP{JD;TGn}gP$2wpcCuU7>7t>E=jh92z3FR=r$1F-|K1F-|K1F-|K z1F-|K1F-|K1F-|K1OI~#)Oo&t1MNzQ1puD^p9tFc-D@4^ZrB1(U*kASuoa%);yCxi zE%4iSIL?D`5>{aa_CpDFK@VI9=ilx)e}@<0*YE^<8IHrfXNfv4dycnDTu1*3s0j`KVC5uAZjumlD82n@nI z;ms=@=M{Jk9*0L@9qQmg7PiAx@Ta#q&adG6a2h@h%dj8DU=(hIb8mH=m*IzS22Q~W z+yUdT72X5q-$FTf22R6+a0rSp1~+Y)R}Vr}~NnpenACf#gls$7~W=4yp}b$UJNL}Jz3P@LZ9 z6)j?LsK{FMW()bE7bO+-iFnm3XDXTLQl(ZZi^{?{@-O&}@99`4B>1bAKIkmKsg*hxFtKY1M^`%EVats~cqO#ktQ>Awtte^}myW4Sk7nkP_ADeHuJ@Pldg9|;} zZ0>M(T(-^KF(eXR#w|=ZvpQdIH|EpsNNRZ3P-a)w>j%U{Hv$kxe7JA>?D!p?8TFCv*N zk{(EFZ{&WM@S@YG1=Hy;CGW(B_#Y)ylZWqR!prtS;X^m%i2462bIt?IW5xVGe7^rW z^ZsALFW^ad3_c4F!78l40mwo>TnpF0o2(JM0zZN0;Boj0d;;q5G1vzqa1;E4b%gWq zdw2n!g0I0>;UpY^{jd|p;3jxC{EKykSK%x?58s0);8FM@tidA8!VKhK6h`2Euo*VN zYpgk(h3~+_(1I#dAO$zT-&kMxE4&0hhBNRD_&gkiWtfFM;KB#sO86t|4KKp8@NM`K ztieH;fIV(|U6js55ER4f0_zPq98k~in!U;GEhu~iLD2Q>L zg?Nh{h#iO>h#mOvII!*{nvM3c=Ca#2+<%*sU_Y@qFu=P+B&39pSiHyWTW;JZ{@7T*HT>0 zeoZ0hijqR~+bks}a+!)(tg%8IO!AZ?P{l-iJ;{AZVohD9vCZ3cJu+VphqFszSEO7p z84qvrqvnsW))e~11YUa{pdLA?`@yt6>54NDgN2>hXqGR6 zNRb1wf0-$UAsiv$s2>Q2S(cHjIclMBeMdej5{Jo%_SuZ0!9Yg)T8r}-tMy*iDU7l^ zE)|>CQc;u1T$PDRCQIMVXIxS(1giOkAbJ&Qw%S6CV(O@d;qGQkmNs~1r>eRf4z``VyXY~7HG(Nr1iZfUMm-0-x@l|e@M diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn deleted file mode 100644 index 15f49d57bcf37e914aa7f93299bb64c851f39efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 JJiK&1`3K_&!^;2w diff --git a/42sh/src/parser/.ft_parse.c.swp b/42sh/src/parser/.ft_parse.c.swp deleted file mode 100644 index 5596bf6a046de669ff1f94f273aabbc4415ce6dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2U2oh(6ow~U00vSJz2ZYK$x5x)o7(%4HjP6oQnHYUO&VpJ7KDoB_0DFUY4#2?@ifw%^VTafw>`i?(#y--pja#QI{^kj~G=Da@hW*sTY zw9404R{5M+V;Ijd_MQ33J5#T|!1kV)V6OCC*;a|8hp5R~P_3A=RkI_HSb94VwASTd zTX<1u%~r#%6-v(vTp0>!bs{H@Oz#L4N|6KPz_A_JjXLKpPO@6HQdYHv=_!8t`ORa? zPysnW4v+)n069PokOSlZIY16Px(-Ca1p656KbCG`KAk82Hm8>~kptuaIY17O1LOcX zKn{=tB;7f1^Y=LEP7Ca9Ae2TF@!0+HU@GbZTdqe%KFN*d90nuo%Bl?baD{$0}VzJ1S(q7l^ ziSdWT>0}GK9y#c&KWGbX6mvELB-fUll{fiE9A;hJK=|)V zoAuR|2WAggdX!gc!%yu^ehKFe{l3@R#V2n%IrD3Frx~*h{J>6XaKlo9Cpa>}%>ZwQ zXxqG6uFP5Gid8N1$_2YNXIJNWYo8~_n{y8?6biV)_jurNbehWq--zF(MDT)DsaQ1# z&e@e&`}{>ExZQPo9ehGZl7*5|G)mhgJGn@MWXc3b d>y8oGb|#5P4b=WG!3RA%5j?5)#K22uvHS1y+gShr diff --git a/42sh/src/parser/.parse_word.c.swp b/42sh/src/parser/.parse_word.c.swp deleted file mode 100644 index 9e721f92f141b7ce10d8e067a0762e837f2fe034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2-D(p-7>1`FSk|^G3L+vhHlW*0oBc`J;#P}V5k#sUSoO$do1M^Y(@mJ2)|R3o z==FHusW(v2Q*XcnucF{P`;)XiD4`ai@J)Dk{=V;>*(X^@$Sgaro-Fd&TAiU>WbDV| zPjCM0U1ht&LoAeWC?h>_bP;t~?|N>n;niC5h|mwYq5VR3Rz*{#cEd|o>{K@GZYWbB z^D21Pkx{LAgbz&-0U~f50%NT1xsJ}PjNjy!FD)I%gmQ=g5g-CYfCvx)B0vO)01-H) z1XOp3eZ=0+6#Ktk)I*2rqDvJKAOb{y2oM1xKm>>Y5g-CYfCvx)B5(=`g!q4d=Nx0h zBiKCt|1W?4f4#uiTWAdWex9*4=o+*;#@H5g8~QcM*ca$C)P*{b2RYCUXcQWO_Tc>+ z`U!o5Hlf$h707_}+GimuM1Tko0U|&IhyW2F0z}|H5qQrGDb$8cxamyHF{7n|cB+C% zwBweUs!*y)Zdw?cn3`{P5+xE0+(J|sMY6fxMMrhkL=v>55QRZ@sMQQp9a-ikVoT}i zq!Wp$`6yIjElri=_c*+C3x4LI$w{7B=i&WiwcQoSd-*h2c)qy!;Mt?X7GtJ`Rk71p ziFJ%->Dlms8^DaY*@>fx?EdEPU0elOs9{)Hty2Ry>HQd%zRs~77AMLuvU|%;>Y6H8 zR=8EpdF_Qy@Fb=uh+)8!#HWSHzL8u^E1D-m2t*w3-KpaxMgd@6D+0SQWtNS zhX%OYJWIn~=%5Yl)_24{3-{8n|4FPh2lVu-ejZsg@~Si((Bxp4@0XTn X>4NEhGCXLX_j1FNdQL1nbT<17570S4 diff --git a/42sh/src/parser/.produce_sym.c.swn b/42sh/src/parser/.produce_sym.c.swn deleted file mode 100644 index 222f271b46a00f0c5b8ec14ecc33d2769cc725d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&2Jk;7{=cqp|WiQ2u{rbO=1)hd*iP-t#L?%Kh~*Ldu@4bQVE5XYi}Bp)V9`Z z+9*o76vPQ}?2#i968r-_A#p(5Ie>r@N6v@?D$ndkvbKZkLM}zK$wE!-;r!*PI}|?-)iZ zX7_!gY4szCcz-X_H=B`O!|WSoq-Sa zTRpHa&t83{{&XHfEfNq3hy+9eA_0+rNI)bY5)cVI(+OC;8Tt?_c+Opg;_hcg_HI+` zL;@lKk$^}*Bp?zH35Wzl0wMvCfJi_jAQE^66KLT3{hyvEx^w}>b;&zyd1R0y&TXb6^(md@cg9i3CIfA_0-W|1N=Jl1#%Im>sqhU0x?i3U-XU z{8==%!L07S(OKEF4toZA+PiFN-s@c^2_vO;D8$G32i?~B18sL2R&(#&_Dpl>a&Y&N?c%jj6^1WCujdfHs1+cGT9-mlXU*`2=U^_DC8S>>SBxs#j***SAWR@QnXi6nrP1nj*y<9m{0Pjp%-8!?+w;Ipd zDJ!jMg)LPnDQZpME?0BI)yphf%ITG=k}ur!${imuT-h`uPD-6d?5llP?ySJ68jgrZ zQ4x-!%B+&E)s(7wEc46Cua~3BrZvUBj6Q|mrGTMa>A%wdl#2ffIhv6|#|6B6e%6Uq ztLJ^Ox&=aUdUTcoYsnVNnT&$FC|@WlPeFS6KRKS5Cz(u=E0z4um$It z-|*f7Q6z|uhV$B3Fv1Pbaq|r8y;j3AS}7Kf#;!%8@klJrV%JiMSSqo`ZXGh`@n+w| zfj|H)yxJQcj&}Pz!>nlx8%E#chHJ^xYT`^o76@@iZ|B;vf4Afi%-kOs;poKf)G%|H z@|N|Mv%I(a7A{}Ma-R0y^o{XMLMhM5=jknZSU*LJyPZ0sPS@Qt^!*JAH>dD}Bo#_I mLifPgd4|(@jHps6&k{#`L;rs=9PziCj^TN|Pl9;UMd)vwQD*P} From 2a70b3f702383d33dfacc0573639aaf207fe574c Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 19:19:16 +0100 Subject: [PATCH 048/206] moar moar moar grammar --- 42sh/includes/.parser.h.swm | Bin 0 -> 24576 bytes 42sh/includes/parser.h | 4 ++- 42sh/src/parser/aggregate_sym.c | 27 ++++++++++++++++-- 42sh/src/parser/eval_sym.c | 48 +++++++++++++++++++++++++++++++- 4 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 42sh/includes/.parser.h.swm diff --git a/42sh/includes/.parser.h.swm b/42sh/includes/.parser.h.swm new file mode 100644 index 0000000000000000000000000000000000000000..0fdd297dfa6e52f18a37c3b2bd0296d2c2266ecd GIT binary patch literal 24576 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/12 17:41:16 by ariard ### ########.fr */ +/* Updated: 2017/02/12 19:02:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -106,6 +106,8 @@ enum e_sym SEPARATOR_OP, SEPARATOR, SEQUENTIAL_SEP, + LOOP, + FUNC, ALL = TK_LESS | TK_GREAT | TK_DLESS | TK_DGREAT | TK_LESSAND | TK_GREATAND\ | TK_SEMI | TK_PIPE | TK_AND_IF | TK_OR_IF | TK_AMP | TK_PAREN_OPEN\ | TK_PAREN_CLOSE | TK_BQUOTE | TK_SUBSHELL | TK_NEWLINE | TK_WHILE | TK_DO\ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index d2bccfe3..4ae42267 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/12 18:47:00 by ariard ### ########.fr */ +/* Updated: 2017/02/12 19:18:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,8 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, TK_SEMI, SEPARATOR_OP, ALL, tant que TK_SEMI}, //do one {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('}, - + {LINEBREAK, TK_PAREN_CLOSE, FUNC, ALL, FNAME}, + {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, {NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0}, {NEWlINE_LIST, IN, SEPARATOR_SEP, ALL, 0}, @@ -83,6 +84,28 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {SIMPLE_COMMAND, ALL, COMMAND, ALL, 0}, + + {DO_GROUP, NAME, FOR_CLAUSE, ALL, FOR}, + {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, ALL, FOR}, + {DO_GROUP, COMPOUND_LIST, LOOP, ALL, COMPOUND_LIST}, + + {LOOP, WHILE, WHILE_CLAUSE, ALL, WHILE}, + {LOOP, UNTIL, UNTIL_CLAUSE, ALL, UNTIL}, + + {BRACE_GROUP, ALL, COMMAND, ALL, 0}, + + {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, ALL, 0}, + + {FUNCTION_DEFINITION, ALL, COMMAND, ALL, 0}, + + {UNTIL_CLAUSE, ALL, COMMAND, ALL, 0}, + + {WHILE_CLAUSE, ALL, COMMAND, ALL, 0}, + + {ELSE_PART, COMPOUND_LIST, ELSE_PART, ALL, ELIF}, + + {IF_CLAUSE, ALL, COMMAND, ALL, 0} {0, 0, 0}, } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 711b4761..7c2d5e92 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/12 18:46:15 by ariard ### ########.fr */ +/* Updated: 2017/02/12 19:18:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -283,6 +283,52 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, + + {SIMPLE_COMMNAND, LINEBREAK}, + {SIMPLE_COMMAND, TK_BANG}, + {SIMPLE_COMMAND, SEPARATOR_OP}, + {SIMPLE_COMMAND, NEWLINE_LIST}, + + {DO_GROUP, COMPOUND_LIST}, + {DO_GROUP, NAME}, + {DO_GROUP, SEQUENTIAL_SEP}, + + {LOOP, WHILE}, + {LOOP, UNTIL}, + + {BRACE_GROUP, LINEBREAK}, + {BRACE_GROUP, TK_BANG}, + {BRACE_GROUP, SEPARATOR_OP}, + {BRACE_GROUP, NEWLINE_LIST}, + + {FNAME, LINEBREAK}, + {FNAME, TK_BANG}, + {FNAME, SEPARATOR_OP}, + {FNAME, NEWLINE_LIST}, + + {FUNCTION_BODY, FUNC}, + + {FUNCTION_DEFINITION, LINEBREAK}, + {FUNCTION_DEFINITION, TK_BANG}, + {FUNCTION_DEFINITION, SEPARATOR_OP}, + {FUNCTION_DEFINITION, NEWLINE_LIST}, + + {UNTIL_CLAUSE, LINEBREAK}, + {UNTIL_CLAUSE, TK_BANG}, + {UNTIL_CLAUSE, SEPARATOR_OP}, + {UNTIL_CLAUSE, NEWLINE_LIST}, + + {WHILE_CLAUSE, LINEBREAK}, + {WHILE_CLAUSE, TK_BANG}, + {WHILE_CLAUSE, SEPARATOR_OP}, + {WHILE_CLAUSE, NEWLINE_LIST}, + + {ELSE_PART, COMPOUND_LIST}, + + {IF_CLAUSE, LINEBREAK}, + {IF_CLAUSE, TK_BANG}, + {IF_CLAUSE, SEPARATOR_OP}, + {IF_CLAUSE, NEWLINE_LIST}, {0, 0}, }; From 582087186f92ba25fe6fca572498aece57ddd1a5 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 21:09:23 +0100 Subject: [PATCH 049/206] a lot of grammar --- 42sh/includes/.parser.h.swm | Bin 24576 -> 24576 bytes 42sh/includes/parser.h | 3 +- 42sh/src/parser/aggregate_sym.c | 60 ++++++++++++++-- 42sh/src/parser/eval_sym.c | 120 ++++++++++++++++++++++++++++++-- 42sh/test.sh | 2 - 5 files changed, 171 insertions(+), 14 deletions(-) diff --git a/42sh/includes/.parser.h.swm b/42sh/includes/.parser.h.swm index 0fdd297dfa6e52f18a37c3b2bd0296d2c2266ecd..ba6e51fc4b06450358bb162c5e2317e829ba649d 100644 GIT binary patch delta 109 zcmZoTz}RqrQ7p+I%+puFLeGE!2m}}ye(YEfae-^2*f0Lc76JmB6$GB}^YXJXFg$06 z$meesRM^kR_=!>{-ey68&-}a^Yzz#4*dek& yA%*>nj3t{dDvGg9e&El+%gO2E?;j8!3Z^#yQFmeGFtoHXFtReS*zBRZ!w3MWjT}_~ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 314d49c8..21d31f66 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/12 19:02:48 by ariard ### ########.fr */ +/* Updated: 2017/02/12 20:35:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -108,6 +108,7 @@ enum e_sym SEQUENTIAL_SEP, LOOP, FUNC, + PIPE_SEMI_SEQUENCE, ALL = TK_LESS | TK_GREAT | TK_DLESS | TK_DGREAT | TK_LESSAND | TK_GREATAND\ | TK_SEMI | TK_PIPE | TK_AND_IF | TK_OR_IF | TK_AMP | TK_PAREN_OPEN\ | TK_PAREN_CLOSE | TK_BQUOTE | TK_SUBSHELL | TK_NEWLINE | TK_WHILE | TK_DO\ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 4ae42267..1bf8c8c6 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/12 19:18:45 by ariard ### ########.fr */ +/* Updated: 2017/02/12 20:53:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,11 @@ t_aggrematch g_aggrematch[] = {TK_DONE, COMPOUND_LIST, DO_GROUP, ALL, tant DO}, +//Esac ? + {TK_ESAC, CASE_LIST, CASE_CLAUSE, ALL, tant que CASE}, + {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, ALL, tant que CASE}, + {TK_ESAC, LINEBREAK, CASE_CLAUSE, ALL, tant que CASE}, + {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, ALL tant que LBRACE}, {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, ALL, tant que TK_PAREN_OPEN}, @@ -36,6 +41,10 @@ t_aggrematch g_aggrematch[] = //do one {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('}, {LINEBREAK, TK_PAREN_CLOSE, FUNC, ALL, FNAME}, + {LINEBREAK, TK_DSEMI, CASE_ITEM, ALL, tant que pattern ou '('}, + {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, tant que linebreak}, + {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, ALL, PIPE_SEQUENCE}, + {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, LINEBREAK}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, {NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0}, @@ -93,19 +102,60 @@ t_aggrematch g_aggrematch[] = {LOOP, WHILE, WHILE_CLAUSE, ALL, WHILE}, {LOOP, UNTIL, UNTIL_CLAUSE, ALL, UNTIL}, - {BRACE_GROUP, ALL, COMMAND, ALL, 0}, + {BRACE_GROUP, ALL, COMPOUND_COMMAND, ALL, 0}, {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, ALL, 0}, {FUNCTION_DEFINITION, ALL, COMMAND, ALL, 0}, - {UNTIL_CLAUSE, ALL, COMMAND, ALL, 0}, + {UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {WHILE_CLAUSE, ALL, COMMAND, ALL, 0}, + {WHILE_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, {ELSE_PART, COMPOUND_LIST, ELSE_PART, ALL, ELIF}, - {IF_CLAUSE, ALL, COMMAND, ALL, 0} + {IF_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, + + {CASE_ITEM, CASE_LIST, CASE_LIST, ALL, CASE_LIST}, + {CASE_ITEM, LINEBREAK, CASE_LIST, ALL, CASE_LIST}, + + {CASE_ITEM_NS, CASE_LIST, CASE_LIST_NS, ALL, CASE_LIST}, + {CASE_ITEM_NS, LINEBREAK, CASE_LIST_NS, ALL, CASE_LIST}, + + {CASE_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, + + {FOR_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, + + {TERM, LINEBREAK, COMPOUND_LIST, ALL, LINEBREAK}, + + {COMPOUND_LIST, TK_ELSE, ELSE_PART, ALL, TK_ELSE}, + {COMPOUND_LIST, TK_THEN, ELSE_PART, ALL, TK_ELIF}, + + {SUBSHELL, ALL, COMPOUND_COMMAND, ALL, 0}, + + {COMPOUND_COMMAND, ALL, COMMAND, ALL, 0}, + + {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, ALL, PIPE_SEQUENCE}, + {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, ALL, PIPE_SEQUENCE}, + {COMMAND, TK_BANG, PIPE_SEQUENCE, ALL, 0}, + {COMMAND, SEPARATOR_OP, PIPE_SEQUENCE, ALL, 0}, + {COMMAND, NEWLINE_LIST, PIPE_SEQUENCE, ALL, 0}, + + {PIPE_SEQUENCE, TK_BANG, PIPELINE, ALL, TK_BANG}, + {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, ALL, 0}, + {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, ALL, 0}, + + {PIPELINE, LINEBREAK, AND_OR, ALL, AND_OR}, + {PIPELINE, SEPARATOR_OP, AND_OR, ALL, 0}, + + {AND_OR, SEPARATOR_OP, LIST, ALL, LIST}, + {AND_OR, NEWLINE_LIST, LIST, ALL, 0}, + + {LIST, NEWLINE_LIST, COMPLETE_COMMAND, ALL, 0}, + + {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, ALL, COMPLETE_COMMANDS}, + {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, ALL, 0}, + {0, 0, 0}, } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 7c2d5e92..3f927208 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/12 19:18:30 by ariard ### ########.fr */ +/* Updated: 2017/02/12 21:08:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,7 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, TK_BANG}, {TK_IO_NUMBER, SEPARATOR_OP}, {TK_IO_NUMBER, NEWWLINE_LIST}, + {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, {TK_AND_IF, AND_OR}, @@ -48,6 +49,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, TK_BANG}, {TK_DLESS, SEPARATOR_OP}, {TK_DLESS, NEWLINE_LIST}, + {TK_DLESS, PIPE_SEMI_SEQUENCE}, {TK_DLESSDASH, TK_IO_NUMBER}, {TK_DLESSDASH, REDIRECT_LIST}, @@ -59,7 +61,8 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, TK_BANG}, {TK_DLESSDASH, SEPARATOR_OP}, {TK_DLESSDASH, NEWLINE_LIST}, - + {TK_DLESSDASH, PIPE_SEMI_SEQUENCE}, + {TK_DGREAT, TK_IO_NUMBER}, {TK_DGREAT, REDIRECT_LIST}, {TK_DGREAT, CMD_SUFFIX}, @@ -70,7 +73,8 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, TK_BANG}, {TK_DGREAT, SEPARATOR_OP}, {TK_DGREAT, NEWLINE_LIST}, - + {TK_DGREAT, PIPE_SEMI_SEQUENCE}, + {TK_LESSAND, TK_IO_NUMBER}, {TK_LESSAND, REDIRECT_LIST}, {TK_LESSAND, CMD_SUFFIX}, @@ -81,6 +85,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, TK_BANG}, {TK_LESSAND, SEPARATOR_OP}, {TK_LESSAND, NEWLINE_LIST}, + {TK_LESSAND, PIPE_SEMI_SEQUENCE}, {TK_GREATAND, TK_IO_NUMBER}, {TK_GREATAND, REDIRECT_LIST}, @@ -92,6 +97,7 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, TK_BANG}, {TK_GREATAND, SEPARATOR_OP}, {TK_GREATAND, NEWLINE_LIST}, + {TK_GREATAND, PIPE_SEMI_SEQUENCE}, {TK_LESSGREAT, TK_IO_NUMBER}, {TK_LESSGREAT, REDIRECT_LIST}, @@ -103,6 +109,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, TK_BANG}, {TK_LESSGREAT, SEPARATOR_OP}, {TK_LESSGREAT, NEWLINE_LIST}, + {TK_LESSGREAT, PIPE_SEMI_SEQUENCE}, {TK_CLOBBER, TK_IO_NUMBER}, {TK_CLOBBER, REDIRECT_LIST}, @@ -114,11 +121,13 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, TK_BANG}, {TK_CLOBBER, SEPARATOR_OP}, {TK_CLOBBER, NEWLINE_LIST}, + {TK_CLOBBER, PIPE_SEMI_SEQUENCE}, {TK_IF, LINEBREAK}, {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, {TK_IF, NEWLINE_LIST}, + {TK_IF, PIPE_SEMI_SEQUENCE}, {TK_THEN, COMPOUND_LIST}, @@ -139,6 +148,7 @@ t_stackmatch g_stackmatch[] = {TK_CASE, TK_BANG}, {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, + {TK_CASE, PIPE_SEMI_SEQUENCE}, {TK_ESAC, CASE_LIST}, {TK_ESAC, CASE_LIST_NS}, @@ -148,28 +158,32 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, {TK_WHILE, NEWLINE_LIST}, + {TK_WHILE, PIPE_SEMI_SEQUENCE}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, NEWLINE_LIST}, - + {TK_UNTIL, PIPE_SEMI_SEQUENCE}, + {TK_FOR, LINEBREAK}, {TK_FOR, TK_BANG}, {TK_FOR, SEPARATOR_OP}, {TK_FOR, NEWLINE_LIST}, + {TK_FOR, PIPE_SEMI_SEQUENCE}, {TK_LBRACE, LINEBREAK}, {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, NEWLINE_LIST}, + {TK_LBRACE, PIPE_SEMI_SEQUENCE}, {TK_RBRACE, COMPOUND_LIST}, {TK_BANG, LINEBREAK}, {TK_BANG, SEPARATOR_OP}, {TK_BANG, NEWLINE_LIST}, - + {TK_IN, LINEBREAK}, {TK_SEMI, NAME}, @@ -190,6 +204,7 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, NEWLINE_LIST}, + {TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE}, {TK_PAREN_CLOSE, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, PATTERN}, @@ -214,7 +229,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, TK_OR_IF}, {LINEBREAK, TK_PIPE}, {LINEBREAK, LINEBREAK}, - {LINEBREAK, COMPLETECOMMANDS}, + {LINEBREAK, COMPLETE_COMMANDS}, {NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NAME}, @@ -237,6 +252,7 @@ t_stackmatch g_stackmatch[] = {IO_HERE, TK_BANG}, {IO_HERE, SEPARATOR_OP}, {IO_HERE, NEWLINE_LIST}, + {IO_HERE, PIPE_SEMI_SEQUENCE}, {FILENAME, TK_LESS}, {FILENAME, TK_LESSAND}, @@ -256,6 +272,7 @@ t_stackmatch g_stackmatch[] = {IO_FILE, TK_BANG}, {IO_FILE, SEPARATOR_OP}, {IO_FILE, NEWLINE_LIST}, + {IO_FILE, PIPE_SEMI_SEQUENCE}, {IO_REDIRECT, REDIRECT_LIST}, {IO_REDIRECT, CMD_SUFFIX}, @@ -266,6 +283,7 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, SEPARATOR_OP}, {IO_REDIRECT, NEWLINE_LIST}, + {IO_REDIRECT, PIPE_SEMI_SEQUENCE}, {REDIRECT_LIST, COMPOUND_COMMAND} @@ -276,6 +294,7 @@ t_stackmatch g_stackmatch[] = {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, {CMD_PREFIX, NEWLINE_LIST}, + {CMD_PREFIX, PIPE_SEMI_SEQUENCE}, {CMD_WORD, CMD_PREFIX}, @@ -283,11 +302,13 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, + {CMD_NAME, PIPE_SEMI_SEQUENCE}, {SIMPLE_COMMNAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, + {SIMPLE_COMMAND, PIPE_SEMI_SEQUENCE}, {DO_GROUP, COMPOUND_LIST}, {DO_GROUP, NAME}, @@ -300,11 +321,13 @@ t_stackmatch g_stackmatch[] = {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, {BRACE_GROUP, NEWLINE_LIST}, + {BRACE_GROUP, PIPE_SEMI_SEQUENCE}, {FNAME, LINEBREAK}, {FNAME, TK_BANG}, {FNAME, SEPARATOR_OP}, {FNAME, NEWLINE_LIST}, + {FNAME, PIPE_SEMI_SEQUENCE}, {FUNCTION_BODY, FUNC}, @@ -312,16 +335,19 @@ t_stackmatch g_stackmatch[] = {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, SEPARATOR_OP}, {FUNCTION_DEFINITION, NEWLINE_LIST}, + {FUNCTION_DEFINITION, PIPE_SEMI_SEQUENCE}, {UNTIL_CLAUSE, LINEBREAK}, {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, + {UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE}, {WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, NEWLINE_LIST}, + {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, {ELSE_PART, COMPOUND_LIST}, @@ -329,6 +355,88 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, NEWLINE_LIST}, + {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, + + {PATTERN, TK_PAREN_OPEN}, + {PATTERN, CASE_LIST}, + + {CASE_ITEM, CASE_LIST}, + {CASE_ITEM, LINEBREAK}, + + {CASE_ITEM_NS, CASE_LIST}, + {CASE_ITEM_NS, LINEBREAK}, + + {CASE_LIST, LINEBREAK}, + + {CASE_LIST_NS, LINEBREAK}, + + {CASE_CLAUSE, LINEBREAK}, + {CASE_CLAUSE, TK_BANG}, + {CASE_CLAUSE, SEPARATOR_OP}, + {CASE_CLAUSE, NEWLINE_LIST}, + {CASE_CLAUSE, PIPE_SEMI_SEQUENCE}, + + {WORDLIST, IN}, + + {IN, LINEBREAK}, + + {NAME, FOR}, + + {FOR_CLAUSE, LINEBREAK}, + {FOR_CLAUSE, TK_BANG}, + {FOR_CLAUSE, SEPARATOR_OP}, + {FOR_CLAUSE, NEWLINE_LIST}, + {FOR_CLAUSE, PIPE_SEMI_SEQUENCE}, + + {TERM, LINEBREAK}, + + {COMPOUND_LIST, TK_DO}, + {COMPOUND_LIST, TK_LBRACE}, + {COMPOUND_LIST, TK_WHILE}, + {COMPOUND_LIST, TK_UNTIL}, + {COMPOUND_LIST, TK_ELIF}, + {COMPOUND_LIST, TK_ELSE}, + {COMPOUND_LIST, TK_IF}, + + {SUBSHELL, LINEBREAK}, + {SUBSHELL, TK_BANG}, + {SUBSHELL, SEPARATOR_OP}, + {SUBSHELL, NEWLINE_LIST}, + {SUBSHELL, PIPE_SEMI_SEQUENCE}, + + {COMPOUND_COMMAND, LINEBREAK}, + {COMPOUND_COMMAND, TK_BANG}, + {COMPOUND_COMMAND, SEPARATOR_OP}, + {COMPOUND_COMMAND, NEWLINE_LIST}, + {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, + {COMPOUND_COMMAND, FUNC}, + + {COMMAND, LINEBREAK}, + {COMMAND, TK_BANG}, + {COMMAND, SEPARATOR_OP}, + {COMMAND, NEWLINE_LIST}, + {COMMAND, PIPE_SEMI_SEQUENCE}, + + {PIPE_SEQUENCE, LINEBREAK}, + {PIPE_SEQUENCE, TK_BANG}, + {PIPE_SEQUENCE, SEPARATOR_OP}, + {PIPE_SEQUENCE, NEWLINE_LIST}, + + {PIPELINE, LINEBREAK}, + {PIPELINE, SEPARATOR_OP}, + {PIPELINE, NEWLINE_LIST}, + + {AND_OR, LINEBREAK}, + {AND_OR, SEPARATOR_OP}, + {AND_OR, NEWLINE_LIST}, + + {LIST, LINEBREAK}, + {LIST, NEWLINE_LIST}, + + {COMPLETE_COMMAND, LINEBREAK}, + {COMPLETE_COMMAND, NEWLINE_LIST}, + + {COMPLETE_COMMANDS, LINEBREAK}, {0, 0}, }; diff --git a/42sh/test.sh b/42sh/test.sh index 48d16f00..e69de29b 100644 --- a/42sh/test.sh +++ b/42sh/test.sh @@ -1,2 +0,0 @@ -while [ 1 ] ; do - ls From fd951302a376dc09c44b8d1d944da793b60756de Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 13 Feb 2017 23:00:05 +0100 Subject: [PATCH 050/206] combinaison pipe et simple ok --- 42sh/includes/.parser.h.swm | Bin 24576 -> 0 bytes 42sh/includes/.parser.h.swn | Bin 20480 -> 20480 bytes 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 44 ++++----- 42sh/sample/stack.sh | 2 +- 42sh/src/parser/aggregate_sym.c | 166 +++++++++++++++----------------- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/eval_sym.c | 120 +++++------------------ 42sh/src/parser/ft_parse.c | 16 ++- 42sh/src/parser/pop_stack.c | 14 ++- 42sh/src/parser/produce_sym.c | 63 +++++++----- 42sh/src/parser/push_stack.c | 2 +- 42sh/src/parser/read_stack.c | 36 ++++++- 42sh/tofix | 13 +++ 14 files changed, 238 insertions(+), 242 deletions(-) delete mode 100644 42sh/includes/.parser.h.swm create mode 100644 42sh/tofix diff --git a/42sh/includes/.parser.h.swm b/42sh/includes/.parser.h.swm deleted file mode 100644 index ba6e51fc4b06450358bb162c5e2317e829ba649d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 Ov?XZZW@cA`j{gO7SeMiQ diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn index 2abcaac7df2b3534f54e4e69c54e7874312065cc..163f04d89d5281e593a7a318388f290b64dcfda1 100644 GIT binary patch delta 1924 zcmZ|PeQXnD9Ki9XWo{fDbQ91hCcC{jw>qI)H5p?Jy6v`gyS}XLoC}&u*$PgijP`&L zkxrw$CE{j{piu*;XjBsAH1lO!Ld*c)5@Hxm7lRrJNQ{Yql0b}puN}faUh=u;x#xNM zd!Bpx+;3o?WniCW!Aj@-9mh8txe2Fh$?$4Vy z3GoctAaIy{>qi|fvA3@yge;6%g;rnfxS;btbxg}mS!H;$X(2AOAKFT)K-(K7k zUDX?lN`auiIq3Gvk|dQ?cBpb~E#2lYGlY7_{|}R$3Om8+aiv&$1u(vxy)?@)XV3XM%2z6J`_ z?+;WMQdz`O;0Y^UTFlus)e{P9zR-=2srBVXUW4BoP?fNvQSrKcjj2M%Ewzp23o(>e z3)TnS>G0Im8|n?JzrJ1xW(FxCw>dRKJU*k#amG5!C0A9|xLh@^#YW3LBi2XkHqJQA zFXr0EG-{^}%VEKhIYJDe4gzDd*%{Qqilezg>_97WVZ$Ubw`1FM{H->_l9g{Wl1rbk zrs|gE8bkG$EYB^^N^%;-L5`QXfNNj-6q63)WtaOSWHw!q85$r<}-Dp8Ma&U%4 zjpH>ug&s7b2m+HV@I&m)Pj=+>AU3 zTp(rrf=Nu^BtF9t9L9dUidQf&LzIdnl`zbFw+QDrjAvmU%Jjh`u1IZJR&N|_ykbp# z-#lSYry)5Sk0hdILP~wmQgxS^ocbd1gdWkOvLjto$h!7uZ$g(Hv1q@p>Fd@+W2t!_ zm!-n+cyg>OrT-$3X6WDC7nQD$Ot%qTrfpLu?`86zENzJOMB~@{^>uwq#A70%$2WBA fQbLQYULB9Fjp*GEr^cEW7`xlzS;mT@k1YQJ^xbi= delta 2350 zcmYk-eQXnD9Ki9Xbz^jFYzB>(5xocj28inhXqZF$^0d9}dRMNk<7IN0Y%&4^TsH{{ zb|eBb0o+#qFeE06iDE>9P$H6msJumEd`oc4 zbG>J9%riLVse7v72|cboGQUA^)Cw_gcx>6=fA@*!rg}!|=1genTezvQ;ZWO|8qeO` zowfJZ?^E?SUUpByQ#{{MJXaUb_4(zs2WqM-D6aJKL)Ubm-N;&%LPXJmCQL^SCgP?~ zi0k+n7jO>8@eba=s~Ev26VeH2~?7=o{ zL^oC-0f|MJg*sH?1kbY>v+?}|AzncQH_C-LhIN>RugZjY2|KX^tMDXNlqG~{B=BPj zekX6A;UGrQ4;u?mi$BTTm&juj&qC#M1>7SaHII36&pZ&%jZH7h)lZ+A_4)dp%$D9} z9;;dSwrVkHOGlbvZL4O=c0)I%W9Z2g#iUFG>_E!09V;=uScsRVrJ2$LhC?mYO(-6A zlIci9U&d`)hILzpQl*}B%PC#Ta+_jAHzbidnSr4dC!JW!aj8n)Ph3fnDPJ%|buwq!De?%HDvGNGnCRT z(+ShU)KxhCYS0QVS7kL!p}SBZ>E_5WliVm2^^}ae#Y7;LlD6tWkK7(Z8nhvusjSyWy&5-JaBeuWvSHdbLC zM0$iMf*=I|C~rO`bDg7+QO(`nrSJYF z`Z|f%p!#2lM==fm(&q(yfMN6^f%&MxZ;bId-o_!i|(S>%T5yKKRV=?BU9vY^g99b_v9{jokBPQb +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/10 01:43:45 by ariard ### ########.fr */ +/* Updated: 2017/02/13 19:41:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 21d31f66..53701f4e 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/12 20:35:20 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:33:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,11 +59,14 @@ enum e_sym TK_DLESSDASH, TK_LESSGREAT, TK_CASE, - TK_LBRACE, TK_IN, - TK_CASE, TK_ESAC, + TK_CLOBBER, + TK_LBRACE, + TK_RBRACE, + TK_DSEMI, PROGRAM = 100, + COMPLETE_COMMAND, COMPLETE_COMMANDS, LIST, AND_OR, @@ -79,7 +82,9 @@ enum e_sym IN, WORDLIST, CASE_CLAUSE, + CASE_LIST, CASE_LIST_NS, + CASE_ITEM, CASE_ITEM_NS, PATTERN, IF_CLAUSE, @@ -109,21 +114,15 @@ enum e_sym LOOP, FUNC, PIPE_SEMI_SEQUENCE, - ALL = TK_LESS | TK_GREAT | TK_DLESS | TK_DGREAT | TK_LESSAND | TK_GREATAND\ - | TK_SEMI | TK_PIPE | TK_AND_IF | TK_OR_IF | TK_AMP | TK_PAREN_OPEN\ - | TK_PAREN_CLOSE | TK_BQUOTE | TK_SUBSHELL | TK_NEWLINE | TK_WHILE | TK_DO\ - | TK_DONE | TK_IF | TK_THEN | TK_FI | TK_ELIF | TK_ELSE | TK_UNTIL | TK_N_WORD\ - | TK_Q_WORD | TK_DQ_WORD | PROGRAM | COMPLETE_COMMANDS | LIST\ - | AND_OR | PIPELINE | PIPE_SEQUENCE | COMMAND | COMPOUND_COMMAND | SUBSHELL\ - | COMPOUND_LIST | TERM | FOR_CLAUSE | NAME | IN | WORDLIST | CASE_CLAUSE\ - | CASE_LIST_NS | CASE_ITEM_NS | PATTERN | IF_CLAUSE | ELSE_PART\ - | WHILE_CLAUSE | UNTIL_CLAUSE | FUNCTION_DEFINITION | FUNCTION_BODY | FNAME\ - | BRACE_GROUP | DO_GROUP | SIMPLE_COMMAND | CMD_NAME | CMD_WORD | CMD_PREFIX\ - | CMD_SUFFIX | REDIRECT_LIST | IO_REDIRECT | IO_FILE | FILENAME | IO_HERE\ - | HERE_END | NEWLINE_LIST | SEPARATOR_OP | SEPARATOR | SEQUENTIAL_SEP + ALL = 200, + PATTERN_CASE, + ALL_SEPERATOR, }; -typedef unsigned long long int t_sym; +# define PATTERN_CASE (PATTERN | TK_PAREN_OPEN) +# define ALL_SEPARATOR (TK_NEWLINE | TK_SEMI | TK_AMP) + +typedef int t_sym; /* typedef unsigned long long int t_sym; @@ -181,12 +180,15 @@ typedef unsigned long long int t_sym; #define ALL_SYM !0 //#define ALL_SYM -1UL */ +typedef int t_parstate; struct s_aggrematch { - t_sym under; t_sym top; + t_sym under; t_sym new_sym; + t_type next_token; + t_sym erase_sym; }; typedef struct s_aggrematch t_aggrematch; @@ -217,11 +219,11 @@ extern t_stackmatch g_stackmatch[]; int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); int eval_sym(t_sym stack, t_sym new_sym); -int aggregate_sym(t_sym **stack, t_sym *new_sym); -int superflous_sym(t_sym stack, t_sym new_sym); +int aggregate_sym(t_sym **stack, t_sym *new_sym, + t_parstate *state, t_list *next_token); int push_stack(t_sym *stack, t_sym new_sym); -int pop_stack(t_sym **stack, int k); +int pop_stack(t_sym **stack, t_sym erase_sym); int error_syntax(t_list **token); @@ -232,8 +234,6 @@ char *read_state(t_sym current); #define ERROR (1 << 1) #define SUCCESS (1 << 2) -typedef int t_parstate; - /* * Build AST * diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 9e2740c6..968d1077 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls +ls | cat | cat | cat diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 1bf8c8c6..f4424ef4 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/12 20:53:36 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:59:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,54 +17,41 @@ t_aggrematch g_aggrematch[] = {TK_WORD, CMD_SUFFIX, CMD_SUFFIX, ALL, 0}, {TK_WORD, TK_PIPE, PATTERN, ALL, 0}, {TK_WORD, WORDLIST, WORDLIST, ALL, 0}, - {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, ALL, 0}, - - {TK_FI, ELSE_PART, IF_CLAUSE, ALL, tant que IF}, - {TK_FI, COMPOUND_LIST, IF_CLAUSE, ALL, tant que IF}, - - {TK_DONE, COMPOUND_LIST, DO_GROUP, ALL, tant DO}, - + {TK_FI, ELSE_PART, IF_CLAUSE, ALL, IF}, + {TK_FI, COMPOUND_LIST, IF_CLAUSE, ALL, IF}, + {TK_DONE, COMPOUND_LIST, DO_GROUP, ALL, DO}, //Esac ? - {TK_ESAC, CASE_LIST, CASE_CLAUSE, ALL, tant que CASE}, - {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, ALL, tant que CASE}, - {TK_ESAC, LINEBREAK, CASE_CLAUSE, ALL, tant que CASE}, - - {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, ALL tant que LBRACE}, - - {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, ALL, tant que TK_PAREN_OPEN}, - + {TK_ESAC, CASE_LIST, CASE_CLAUSE, ALL, TK_CASE}, + {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, ALL, TK_CASE}, + {TK_ESAC, LINEBREAK, CASE_CLAUSE, ALL, TK_CASE}, + {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, ALL, TK_LBRACE}, + {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, ALL, TK_PAREN_OPEN}, //watch this {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, ALL, 0}, - - {LINEBREAK, TK_SEMI, SEPARATOR_OP, ALL, tant que TK_SEMI}, -//do one - {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('}, + {LINEBREAK, SEPARATOR_OP, SEPARATOR, ALL, SEPARATOR_OP}, + {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, ALL, TK_SEMI}, + {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, PATTERN_CASE}, {LINEBREAK, TK_PAREN_CLOSE, FUNC, ALL, FNAME}, - {LINEBREAK, TK_DSEMI, CASE_ITEM, ALL, tant que pattern ou '('}, - {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, tant que linebreak}, + {LINEBREAK, TK_DSEMI, CASE_ITEM, ALL, PATTERN_CASE}, + {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, LINEBREAK}, {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, ALL, PIPE_SEQUENCE}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, LINEBREAK}, - - {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, - {NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0}, - {NEWlINE_LIST, IN, SEPARATOR_SEP, ALL, 0}, - {NEWLINE_LIST, WORDLIST, SEPARATOR_SEP, ALL, 0}, + {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, NEWLINE}, + {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, ALL, 0}, + {NEWLINE_LIST, IN, SEQUENTIAL_SEP, ALL, 0}, + {NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, ALL, 0}, {NEWLINE_LIST, TERM, SEPARATOR, ALL, 0}, {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, ALL, 0}, - {IO_HERE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, - {FILENAME, TK_LESS, IO_FILE, ALL, TK_LESS}, {FILENAME, TK_LESSAND, IO_FILE, ALL, TK_LESSAND}, {FILENAME, TK_GREAT, IO_FILE, ALL, TK_GREAT}, {FILENAME, TK_GREATAND, IO_FILE, ALL, TK_GREATAND}, {FILENAME, TK_DGREAT, IO_FILE, ALL, TK_DGREAT}, - {FILENAME, TK_LESGREAT, IO_FILE, ALL, TK_LESSGREAT}, + {FILENAME, TK_LESSGREAT, IO_FILE, ALL, TK_LESSGREAT}, {FILENAME, TK_CLOBBER, IO_FILE, ALL, TK_CLOBBER}, - {IO_FILE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, - {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, ALL, REDIRECT_LIST}, {IO_REDIRECT, CMD_SUFFIX, CMD_SUFFIX, ALL, CMD_SUFFIX}, {IO_REDIRECT, CMD_NAME, CMD_SUFFIX, ALL, 0}, @@ -74,100 +61,105 @@ t_aggrematch g_aggrematch[] = {IO_REDIRECT, TK_BANG, CMD_PREFIX, ALL, 0}, {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, ALL, 0}, {IO_REDIRECT, NEWLINE_LIST, CMD_PREFIX, ALL, 0}, - {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, ALL, COMPOUND_COMMAND}, - {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, ALL, CMD_PREFIX}, {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, ALL, CMD_NAME}, - - {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - - {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, - CMD_PREFIX}, - - {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - {CMD_NAME, TK_BANG, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, - {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, + {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, + {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, + {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, + {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, ALL_SEPARATOR, CMD_PREFIX}, +//to check + {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, ALL, 0}, + {CMD_NAME, TK_BANG, SIMPLE_COMMAND, ALL, 0}, + {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, ALL, 0}, + {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, ALL, 0}, + {CMD_NAME, PIPE_SEMI_SEQUENCE, SIMPLE_COMMAND, ALL, 0}, {SIMPLE_COMMAND, ALL, COMMAND, ALL, 0}, - - {DO_GROUP, NAME, FOR_CLAUSE, ALL, FOR}, - {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, ALL, FOR}, + {DO_GROUP, NAME, FOR_CLAUSE, ALL, TK_FOR}, + {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, ALL, TK_FOR}, {DO_GROUP, COMPOUND_LIST, LOOP, ALL, COMPOUND_LIST}, - {LOOP, WHILE, WHILE_CLAUSE, ALL, WHILE}, - {LOOP, UNTIL, UNTIL_CLAUSE, ALL, UNTIL}, - + {LOOP, TK_UNTIL, UNTIL_CLAUSE, ALL, TK_UNTIL}, {BRACE_GROUP, ALL, COMPOUND_COMMAND, ALL, 0}, - {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, ALL, 0}, - {FUNCTION_DEFINITION, ALL, COMMAND, ALL, 0}, - {UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {WHILE_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - - {ELSE_PART, COMPOUND_LIST, ELSE_PART, ALL, ELIF}, - + {ELSE_PART, COMPOUND_LIST, ELSE_PART, ALL, TK_ELIF}, {IF_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {CASE_ITEM, CASE_LIST, CASE_LIST, ALL, CASE_LIST}, {CASE_ITEM, LINEBREAK, CASE_LIST, ALL, CASE_LIST}, - {CASE_ITEM_NS, CASE_LIST, CASE_LIST_NS, ALL, CASE_LIST}, {CASE_ITEM_NS, LINEBREAK, CASE_LIST_NS, ALL, CASE_LIST}, - {CASE_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {FOR_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {TERM, LINEBREAK, COMPOUND_LIST, ALL, LINEBREAK}, - {COMPOUND_LIST, TK_ELSE, ELSE_PART, ALL, TK_ELSE}, {COMPOUND_LIST, TK_THEN, ELSE_PART, ALL, TK_ELIF}, - {SUBSHELL, ALL, COMPOUND_COMMAND, ALL, 0}, - {COMPOUND_COMMAND, ALL, COMMAND, ALL, 0}, - - {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, ALL, PIPE_SEQUENCE}, - {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, ALL, PIPE_SEQUENCE}, + {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, ALL, PIPE_SEMI_SEQUENCE}, {COMMAND, TK_BANG, PIPE_SEQUENCE, ALL, 0}, {COMMAND, SEPARATOR_OP, PIPE_SEQUENCE, ALL, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEQUENCE, ALL, 0}, - + {COMMAND, LINEBREAK, PIPE_SEQUENCE, ALL, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, ALL, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, ALL, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, ALL, 0}, - - {PIPELINE, LINEBREAK, AND_OR, ALL, AND_OR}, + {PIPE_SEQUENCE, LINEBREAK, PIPELINE, ALL_SEPARATOR, 0}, + {PIPELINE, LINEBREAK, AND_OR, ALL, 0}, +// {PIPELINE, LINEBREAK, AND_OR, ALL, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, ALL, 0}, - {AND_OR, SEPARATOR_OP, LIST, ALL, LIST}, {AND_OR, NEWLINE_LIST, LIST, ALL, 0}, - + {AND_OR, LINEBREAK, LIST, ALL, 0}, {LIST, NEWLINE_LIST, COMPLETE_COMMAND, ALL, 0}, - + {LIST, LINEBREAK, COMPLETE_COMMAND, ALL, 0}, {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, ALL, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, ALL, 0}, - - {0, 0, 0}, -} +// voir decoupe separateur au lexer + {COMPLETE_COMMANDS, LINEBREAK, PROGRAM, ALL_SEPARATOR, 0}, + {0, 0, 0, 0, 0}, +}; -int aggregate_sym(t_sym **stack, t_sym *new_sym) +int aggregate_sym(t_sym **stack, t_sym *new_sym, + t_parstate *state, t_list *next_token) { - DG("aggregate head %s && sym %s", read_state(**stack), read_state(*new_sym)); - if (**stack == 0 && *new_sym == CMD_NAME) + int i; + int next; + t_token *token; + + i = 0; + next = 0; + if (next_token) + if ((token = next_token->content)) + next = token->type; + DG("aggregate head %s && sym %s && next %s", + read_state(**stack), read_state(*new_sym), read_state(next)); + while (g_aggrematch[i].top) { - *new_sym = SIMPLE_COMMAND; - aggregate_sym(stack, new_sym); + if (*new_sym == g_aggrematch[i].top && (**stack == g_aggrematch[i].under + || g_aggrematch[i].under == ALL + || g_aggrematch[i].under == ALL_SEPARATOR) + && (next == g_aggrematch[i].next_token || next == 0 + || g_aggrematch[i].next_token == ALL + || (g_aggrematch[i].next_token == ALL_SEPARATOR && next == TK_SEMI))) + { + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + *new_sym = g_aggrematch[i].new_sym; + if (g_aggrematch[i].erase_sym) + { + pop_stack(stack, g_aggrematch[i].erase_sym); + DG("stack after pop: %s", read_state(**stack)); + } + if (eval_sym(**stack, *new_sym)) + return ((*state = ERROR)); + aggregate_sym(stack, new_sym, state, next_token); + return (0); + } + i++; } - if (**stack == 0 && *new_sym == SIMPLE_COMMAND) - *new_sym = PROGRAM; return (0); } diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index bfbeb805..c5c668a1 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:31:48 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:09:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 3f927208..510970b5 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/12 21:08:57 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:59:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,13 +14,12 @@ t_stackmatch g_stackmatch[] = { - {TK_WORD, CMD_SUFFIX}, - {TK_WORD, TK_PIPE}, - {TK_WORD, CASE}, - {TK_WORD, WORDLIST}, - + {TK_N_WORD, CMD_SUFFIX}, + {TK_N_WORD, TK_PIPE}, + {TK_N_WORD, TK_CASE}, + {TK_N_WORD, WORDLIST}, + {TK_N_WORD, LINEBREAK}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, - {TK_IO_NUMBER, REDIRECT_LIST}, {TK_IO_NUMBER, CMD_SUFFIX}, {TK_IO_NUMBER, CMD_PREFIX}, @@ -29,16 +28,12 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, LINEBREAK}, {TK_IO_NUMBER, TK_BANG}, {TK_IO_NUMBER, SEPARATOR_OP}, - {TK_IO_NUMBER, NEWWLINE_LIST}, + {TK_IO_NUMBER, NEWLINE_LIST}, {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, - {TK_AND_IF, AND_OR}, - {TK_OR_IF, AND_OR}, - {TK_DSEMI, LINEBREAK}, {TK_DSEMI, COMPOUND_LIST}, - {TK_DLESS, TK_IO_NUMBER}, {TK_DLESS, REDIRECT_LIST}, {TK_DLESS, CMD_SUFFIX}, @@ -50,7 +45,6 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, SEPARATOR_OP}, {TK_DLESS, NEWLINE_LIST}, {TK_DLESS, PIPE_SEMI_SEQUENCE}, - {TK_DLESSDASH, TK_IO_NUMBER}, {TK_DLESSDASH, REDIRECT_LIST}, {TK_DLESSDASH, CMD_SUFFIX}, @@ -62,7 +56,6 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, SEPARATOR_OP}, {TK_DLESSDASH, NEWLINE_LIST}, {TK_DLESSDASH, PIPE_SEMI_SEQUENCE}, - {TK_DGREAT, TK_IO_NUMBER}, {TK_DGREAT, REDIRECT_LIST}, {TK_DGREAT, CMD_SUFFIX}, @@ -74,7 +67,6 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, SEPARATOR_OP}, {TK_DGREAT, NEWLINE_LIST}, {TK_DGREAT, PIPE_SEMI_SEQUENCE}, - {TK_LESSAND, TK_IO_NUMBER}, {TK_LESSAND, REDIRECT_LIST}, {TK_LESSAND, CMD_SUFFIX}, @@ -86,7 +78,6 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, SEPARATOR_OP}, {TK_LESSAND, NEWLINE_LIST}, {TK_LESSAND, PIPE_SEMI_SEQUENCE}, - {TK_GREATAND, TK_IO_NUMBER}, {TK_GREATAND, REDIRECT_LIST}, {TK_GREATAND, CMD_SUFFIX}, @@ -98,7 +89,6 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, SEPARATOR_OP}, {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, - {TK_LESSGREAT, TK_IO_NUMBER}, {TK_LESSGREAT, REDIRECT_LIST}, {TK_LESSGREAT, CMD_SUFFIX}, @@ -110,7 +100,6 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, SEPARATOR_OP}, {TK_LESSGREAT, NEWLINE_LIST}, {TK_LESSGREAT, PIPE_SEMI_SEQUENCE}, - {TK_CLOBBER, TK_IO_NUMBER}, {TK_CLOBBER, REDIRECT_LIST}, {TK_CLOBBER, CMD_SUFFIX}, @@ -122,82 +111,64 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, SEPARATOR_OP}, {TK_CLOBBER, NEWLINE_LIST}, {TK_CLOBBER, PIPE_SEMI_SEQUENCE}, - {TK_IF, LINEBREAK}, {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, {TK_IF, NEWLINE_LIST}, {TK_IF, PIPE_SEMI_SEQUENCE}, - {TK_THEN, COMPOUND_LIST}, - {TK_ELSE, COMPOUND_LIST}, - - {TK_ELIF, COMPOUND_LIST}, - + {TK_ELIF, COMPOUND_LIST}, {TK_FI, ELSE_PART}, {TK_FI, COMPOUND_LIST}, - {TK_DO, COMPOUND_LIST}, {TK_DO, NAME}, {TK_DO, SEQUENTIAL_SEP}, - {TK_DONE, COMPOUND_LIST}, - {TK_CASE, LINEBREAK}, {TK_CASE, TK_BANG}, {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, {TK_CASE, PIPE_SEMI_SEQUENCE}, - {TK_ESAC, CASE_LIST}, {TK_ESAC, CASE_LIST_NS}, {TK_ESAC, LINEBREAK}, - {TK_WHILE, LINEBREAK}, {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, PIPE_SEMI_SEQUENCE}, - {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, NEWLINE_LIST}, {TK_UNTIL, PIPE_SEMI_SEQUENCE}, - {TK_FOR, LINEBREAK}, {TK_FOR, TK_BANG}, {TK_FOR, SEPARATOR_OP}, {TK_FOR, NEWLINE_LIST}, {TK_FOR, PIPE_SEMI_SEQUENCE}, - {TK_LBRACE, LINEBREAK}, {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, PIPE_SEMI_SEQUENCE}, - {TK_RBRACE, COMPOUND_LIST}, - {TK_BANG, LINEBREAK}, {TK_BANG, SEPARATOR_OP}, {TK_BANG, NEWLINE_LIST}, - {TK_IN, LINEBREAK}, - {TK_SEMI, NAME}, {TK_SEMI, IN}, {TK_SEMI, WORDLIST}, {TK_SEMI, LIST}, {TK_SEMI, TERM}, - + {TK_SEMI, CMD_NAME}, + {TK_SEMI, PROGRAM}, {TK_AMP, LIST}, {TK_AMP, TERM}, - {TK_PIPE, PATTERN}, {TK_PIPE, PIPE_SEQUENCE}, - {TK_PAREN_OPEN, FNAME}, {TK_PAREN_OPEN, CASE_LIST}, {TK_PAREN_OPEN, LINEBREAK}, @@ -205,23 +176,19 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, NEWLINE_LIST}, {TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE}, - {TK_PAREN_CLOSE, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, PATTERN}, {TK_PAREN_CLOSE, COMPOUND_LIST}, - {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, - {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, - {SEPARATOR_OP, LIST}, {SEPARATOR_OP, TERM}, {SEPARATOR_OP, COMPOUND_LIST}, - - {LINEBREAK, TK_SEMI}, + {LINEBREAK, TK_SEMI}, + {LINEBREAK, SEPARATOR_OP}, {LINEBREAK, TK_PAREN_CLOSE}, {LINEBREAK, WORD}, {LINEBREAK, IN}, @@ -230,7 +197,6 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, TK_PIPE}, {LINEBREAK, LINEBREAK}, {LINEBREAK, COMPLETE_COMMANDS}, - {NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NAME}, {NEWLINE_LIST, IN}, @@ -238,10 +204,8 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, TERM}, {NEWLINE_LIST, COMPOUND_LIST}, {NEWLINE_LIST, COMPLETE_COMMANDS}, - - {HERE_END, DLESS}, - {HERE_END, DLESSDASH}, - + {HERE_END, TK_DLESS}, + {HERE_END, TK_DLESSDASH}, {IO_HERE, TK_IO_NUMBER}, {IO_HERE, REDIRECT_LIST}, {IO_HERE, CMD_SUFFIX}, @@ -253,7 +217,6 @@ t_stackmatch g_stackmatch[] = {IO_HERE, SEPARATOR_OP}, {IO_HERE, NEWLINE_LIST}, {IO_HERE, PIPE_SEMI_SEQUENCE}, - {FILENAME, TK_LESS}, {FILENAME, TK_LESSAND}, {FILENAME, TK_GREAT}, @@ -261,7 +224,6 @@ t_stackmatch g_stackmatch[] = {FILENAME, TK_DGREAT}, {FILENAME, TK_LESSGREAT}, {FILENAME, TK_CLOBBER}, - {IO_FILE, TK_IO_NUMBER}, {IO_FILE, REDIRECT_LIST}, {IO_FILE, CMD_SUFFIX}, @@ -273,7 +235,6 @@ t_stackmatch g_stackmatch[] = {IO_FILE, SEPARATOR_OP}, {IO_FILE, NEWLINE_LIST}, {IO_FILE, PIPE_SEMI_SEQUENCE}, - {IO_REDIRECT, REDIRECT_LIST}, {IO_REDIRECT, CMD_SUFFIX}, {IO_REDIRECT, CMD_PREFIX}, @@ -284,112 +245,84 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, SEPARATOR_OP}, {IO_REDIRECT, NEWLINE_LIST}, {IO_REDIRECT, PIPE_SEMI_SEQUENCE}, - - {REDIRECT_LIST, COMPOUND_COMMAND} - + {REDIRECT_LIST, COMPOUND_COMMAND}, {CMD_SUFFIX, CMD_WORD}, {CMD_SUFFIX, CMD_NAME}, - {CMD_PREFIX, LINEBREAK}, {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, {CMD_PREFIX, NEWLINE_LIST}, {CMD_PREFIX, PIPE_SEMI_SEQUENCE}, - {CMD_WORD, CMD_PREFIX}, - {CMD_NAME, LINEBREAK}, {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, PIPE_SEMI_SEQUENCE}, - - {SIMPLE_COMMNAND, LINEBREAK}, + {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, {SIMPLE_COMMAND, PIPE_SEMI_SEQUENCE}, - {DO_GROUP, COMPOUND_LIST}, {DO_GROUP, NAME}, {DO_GROUP, SEQUENTIAL_SEP}, - - {LOOP, WHILE}, - {LOOP, UNTIL}, - + {LOOP, TK_WHILE}, + {LOOP, TK_UNTIL}, {BRACE_GROUP, LINEBREAK}, {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, {BRACE_GROUP, NEWLINE_LIST}, {BRACE_GROUP, PIPE_SEMI_SEQUENCE}, - {FNAME, LINEBREAK}, {FNAME, TK_BANG}, {FNAME, SEPARATOR_OP}, {FNAME, NEWLINE_LIST}, {FNAME, PIPE_SEMI_SEQUENCE}, - {FUNCTION_BODY, FUNC}, - {FUNCTION_DEFINITION, LINEBREAK}, {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, SEPARATOR_OP}, {FUNCTION_DEFINITION, NEWLINE_LIST}, {FUNCTION_DEFINITION, PIPE_SEMI_SEQUENCE}, - {UNTIL_CLAUSE, LINEBREAK}, {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE}, - {WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, - {ELSE_PART, COMPOUND_LIST}, - {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, NEWLINE_LIST}, {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, - {PATTERN, TK_PAREN_OPEN}, {PATTERN, CASE_LIST}, - {CASE_ITEM, CASE_LIST}, {CASE_ITEM, LINEBREAK}, - {CASE_ITEM_NS, CASE_LIST}, {CASE_ITEM_NS, LINEBREAK}, - {CASE_LIST, LINEBREAK}, - {CASE_LIST_NS, LINEBREAK}, - {CASE_CLAUSE, LINEBREAK}, {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, SEPARATOR_OP}, {CASE_CLAUSE, NEWLINE_LIST}, {CASE_CLAUSE, PIPE_SEMI_SEQUENCE}, - {WORDLIST, IN}, - {IN, LINEBREAK}, - - {NAME, FOR}, - + {NAME, TK_FOR}, {FOR_CLAUSE, LINEBREAK}, {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, SEPARATOR_OP}, {FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, PIPE_SEMI_SEQUENCE}, - {TERM, LINEBREAK}, - {COMPOUND_LIST, TK_DO}, {COMPOUND_LIST, TK_LBRACE}, {COMPOUND_LIST, TK_WHILE}, @@ -397,45 +330,40 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, TK_ELIF}, {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, TK_IF}, - {SUBSHELL, LINEBREAK}, {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, {SUBSHELL, NEWLINE_LIST}, {SUBSHELL, PIPE_SEMI_SEQUENCE}, - {COMPOUND_COMMAND, LINEBREAK}, {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, SEPARATOR_OP}, {COMPOUND_COMMAND, NEWLINE_LIST}, {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, FUNC}, - {COMMAND, LINEBREAK}, {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, {COMMAND, NEWLINE_LIST}, {COMMAND, PIPE_SEMI_SEQUENCE}, - {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, NEWLINE_LIST}, - + {PIPE_SEMI_SEQUENCE, LINEBREAK}, + {PIPE_SEMI_SEQUENCE, TK_BANG}, + {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, + {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPELINE, LINEBREAK}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, - {AND_OR, LINEBREAK}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, - {LIST, LINEBREAK}, {LIST, NEWLINE_LIST}, - {COMPLETE_COMMAND, LINEBREAK}, {COMPLETE_COMMAND, NEWLINE_LIST}, - {COMPLETE_COMMANDS, LINEBREAK}, {0, 0}, }; @@ -448,7 +376,7 @@ int eval_sym(t_sym stack, t_sym new_sym) i = 0; while (g_stackmatch[i].top) { - if (new_sym == g_stackmatch[i].top && stack == g.stackmatch[i].under) + if (new_sym == g_stackmatch[i].top && stack == g_stackmatch[i].under) return (0); i++; } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 8a2e2a44..a774e88f 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/11 16:22:51 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:59:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ int ft_parse(t_btree **ast, t_list **token) t_sym *new_sym; t_sym *stack; t_parstate state; +//to delete + t_token *content; (void)ast; state = UNDEFINED; @@ -25,16 +27,18 @@ int ft_parse(t_btree **ast, t_list **token) push_stack(stack, LINEBREAK); while (*token) { + content = (*token)->content; produce_sym(*stack, new_sym, token); DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else { -// aggregate_sym(&stack, new_sym); - //superflous sym + aggregate_sym(&stack, new_sym, &state, (*token)->next); push_stack(++stack, *new_sym); } + ft_putstr("\n"); + ft_read_stack(stack); if (*stack == PROGRAM) state = SUCCESS; if (state == ERROR) @@ -42,8 +46,10 @@ int ft_parse(t_btree **ast, t_list **token) if (state == SUCCESS) ft_putstr("success"); // build_tree(token, ast); - ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); + if (*stack == TK_PIPE) + content->type = LINEBREAK; + else + ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } - ft_read_stack(stack); return (0); } diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index 29e7045f..597d3867 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -6,15 +6,21 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:02:05 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:51:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int pop_stack(t_sym **stack, int k) +int pop_stack(t_sym **stack, t_sym erase_sym) { - while (k--) - *stack-- = 0; + t_sym *temp; + + DG("pop until :%s", read_state(erase_sym)); + temp = *stack; + while (*temp != erase_sym) + *temp-- = 0; + *temp-- = 0; + *stack = temp; return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 8dea1220..bf36bd82 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/12 17:41:45 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:59:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,37 +14,49 @@ t_prodmatch g_prodmatch[] = { - {TK_WORD, TK_DLESS, HERE_END}, - {TK_WORD, TK_DLESSDASH, HERE_END}, - {TK_WORD, TK_LESS, FILENAME}, - {TK_WORD, TK_LESSAND, FILENAME}, - {TK_WORD, TK_GREAT, FILENAME}, - {TK_WORD, TK_GREATAND, FILENAME}, - {TK_WORD, TK_DGREAT, FILENAME}, - {TK_WORD, TK_LESSGREAT, FILENAME}, - {TK_WORD, TK_CLOBBER, FILENAME}, - {TK_WORD, CMD_WORD, CMD_SUFFIX}, - {TK_WORD, CMD_NAME, CMD_SUFFIX}, - {TK_WORD, LINEBREAK, CMD_NAME}, - {TK_WORD, NEWLINE_LIST, CMD_NAME}, - {TK_WORD, IN, WORDLIST}, - {{TK_WORD, CASE_LIST, PATTERN}, - {TK_WORD, TK_PAREN_OPEN, PATTERN}, - + {TK_N_WORD, TK_DLESS, HERE_END}, + {TK_N_WORD, TK_DLESSDASH, HERE_END}, + {TK_N_WORD, TK_LESS, FILENAME}, + {TK_N_WORD, TK_LESSAND, FILENAME}, + {TK_N_WORD, TK_GREAT, FILENAME}, + {TK_N_WORD, TK_GREATAND, FILENAME}, + {TK_N_WORD, TK_DGREAT, FILENAME}, + {TK_N_WORD, TK_LESSGREAT, FILENAME}, + {TK_N_WORD, TK_CLOBBER, FILENAME}, + {TK_N_WORD, CMD_WORD, CMD_SUFFIX}, + {TK_N_WORD, CMD_NAME, CMD_SUFFIX}, + {TK_N_WORD, LINEBREAK, CMD_NAME}, + {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, +//to delete + {TK_N_WORD, TK_SEMI, CMD_NAME}, + + {TK_N_WORD, TK_BANG, CMD_NAME}, + {TK_N_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, + {TK_N_WORD, SEPARATOR_OP, CMD_NAME}, + {TK_N_WORD, IN, WORDLIST}, + {TK_N_WORD, CASE_LIST, PATTERN}, + {TK_N_WORD, TK_PAREN_OPEN, PATTERN}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, - {TK_NAME, LINEBREAK, FNAME}, {TK_NAME, TK_BANG, FNAME}, {TK_NAME, SEPARATOR_OP, FNAME}, {TK_NAME, NEWLINE_LIST, FNAME}, {TK_NAME, TK_FOR, NAME}, - {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, - + {TK_SEMI, TERM, SEPARATOR_OP}, + {TK_SEMI, LIST, SEPARATOR_OP}, + {TK_SEMI, COMPLETE_COMMAND, SEPARATOR_OP}, + {TK_SEMI, COMPLETE_COMMANDS, SEPARATOR_OP}, + {TK_AMP, TERM, SEPARATOR_OP}, + {TK_AMP, LIST, SEPARATOR_OP}, + {TK_AMP, COMPLETE_COMMAND, SEPARATOR_OP}, + {TK_AMP, COMPLETE_COMMANDS, SEPARATOR_OP}, + + {0, 0, 0}, }; @@ -54,13 +66,18 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; + DG("produce stack : %s && token : %s", read_state(stack), + read_state(token->type)); i = 0; - *new_sym = NULL; + *new_sym = 0; while (g_prodmatch[i].new_sym) { if (token->type == g_prodmatch[i].token - && stack & g_prodmatch[i].stack) + && stack == g_prodmatch[i].stack) + { + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; + } i++; } if (!*new_sym) diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c index a3cd4af9..1d0d9278 100644 --- a/42sh/src/parser/push_stack.c +++ b/42sh/src/parser/push_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:48:30 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:00:35 by ariard ### ########.fr */ +/* Updated: 2017/02/13 20:19:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index e7505232..31c9bebc 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/10 01:41:47 by ariard ### ########.fr */ +/* Updated: 2017/02/13 22:40:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,42 @@ char *read_state(t_sym current) { + if (current == PIPE_SEMI_SEQUENCE) + return ("PIPE_SEMI_SEQUENCE"); + if (current == TK_PIPE) + return ("TK_PIPE"); + if (current == PROGRAM) + return ("PROGRAM"); + if (current == COMMAND) + return ("COMMAND"); + if (current == PIPE_SEQUENCE) + return ("PIPE_SEQUENCE"); + if (current == PIPELINE) + return ("PIPELINE"); + if (current == AND_OR) + return ("AND_OR"); + if (current == LIST) + return ("LIST"); + if (current == COMPLETE_COMMAND) + return ("COMPLETE_COMMAND"); + if (current == COMPLETE_COMMANDS) + return ("COMPLETE_COMMANDS"); + if (current == TK_N_WORD) + return ("TK_WORD"); if (current == CMD_NAME) return ("CMD_NAME"); + if (current == HERE_END) + return ("HERE_END"); + if (current == FILENAME) + return ("FILENAME"); + if (current == CMD_SUFFIX) + return ("CMD_SUFFIX"); + if (current == SIMPLE_COMMAND) + return ("SIMPLE_COMMAND"); + if (current == TK_SEMI) + return ("TK_SEMI"); + if (current == ALL) + return ("ALL"); /* if (current == NEWLINE_LIST) return ("NEWLINE_LIST"); if (current == SYM_DLESS) diff --git a/42sh/tofix b/42sh/tofix new file mode 100644 index 00000000..f031f6a3 --- /dev/null +++ b/42sh/tofix @@ -0,0 +1,13 @@ +valeur all, all_separator, paren_case, +integrer decoupe temporaire +soigner les regles avec les separateurs +ajouter linebreak sur token needed + +pour jack, jerter les separateurs a la formation +rajouter les noms de tous les tokens pour la sortie d erreur + +->passer a une stack infinie +->construire if, while, else if +->tester les combinaisons deja existantes +->integrer erreurs +->erreur speciale : EOF From 0040a07ce9aacc6e47531d1a53a25c06e5eb7076 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 14 Feb 2017 19:09:30 +0100 Subject: [PATCH 051/206] bitwise pour exclure next_token malvenu --- 42sh/includes/.parser.h.swn | Bin 20480 -> 0 bytes 42sh/includes/parser.h | 15 +++++++++------ 42sh/sample/stack.sh | 2 +- 42sh/src/main/shell_script.c | 10 +++++----- 42sh/src/parser/aggregate_sym.c | 29 +++++++++++++---------------- 42sh/src/parser/parse.c | 7 +++---- 42sh/src/parser/produce_sym.c | 15 +++++---------- 7 files changed, 36 insertions(+), 42 deletions(-) delete mode 100644 42sh/includes/.parser.h.swn diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn deleted file mode 100644 index 163f04d89d5281e593a7a318388f290b64dcfda1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/13 22:33:39 by ariard ### ########.fr */ +/* Updated: 2017/02/14 19:07:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -115,15 +115,13 @@ enum e_sym FUNC, PIPE_SEMI_SEQUENCE, ALL = 200, - PATTERN_CASE, - ALL_SEPERATOR, }; -# define PATTERN_CASE (PATTERN | TK_PAREN_OPEN) -# define ALL_SEPARATOR (TK_NEWLINE | TK_SEMI | TK_AMP) - typedef int t_sym; +# define REDIR (TK_IO_NUMBER | TK_LESS | TK_LESSAND | TK_GREATAND | TK_DGREAT\ + | TK_LESSGREAT | TK_CLOBBER | TK_DLESS | TK_DLESSDASH | TK_WORD) + /* typedef unsigned long long int t_sym; @@ -180,6 +178,11 @@ typedef unsigned long long int t_sym; #define ALL_SYM !0 //#define ALL_SYM -1UL */ + +# define MATCH_STACK(x, y) (x == y || x == ALL) +# define MATCH_NXT_TOKEN(x, y) (x == y || y == ALL || x == 0 || x &~ REDIR) + + typedef int t_parstate; struct s_aggrematch diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 968d1077..30cde0b2 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls | cat | cat | cat +ls diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 0c33c5b3..1e953693 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/09 20:30:31 by ariard ### ########.fr */ +/* Updated: 2017/02/14 18:29:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,10 +31,10 @@ int shell_script() token_print(token); if (ft_parse(&ast, &token)) return (1); -// btree_print(STDBUG, ast, &ft_putast); -// if (ft_exec(&ast)) -// return (1); -// ast = NULL; +// btree_print(STDBUG, ast, &ft_putast); +// if (ft_exec(&ast)) +// return (1); +// ast = NULL; script->size = 0; get_script_content(script); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index f4424ef4..a845f0ad 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:59:11 by ariard ### ########.fr */ +/* Updated: 2017/02/14 19:08:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,17 +64,17 @@ t_aggrematch g_aggrematch[] = {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, ALL, COMPOUND_COMMAND}, {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, ALL, CMD_PREFIX}, {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, ALL, CMD_NAME}, - {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, - {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, - {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, - {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, ALL_SEPARATOR, 0}, + {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, TK_WORD, 0}, + {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, TK_WORD, 0}, + {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, TK_WORD, 0}, + {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, TK_WORD, 0}, {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, ALL_SEPARATOR, CMD_PREFIX}, //to check - {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, ALL, 0}, - {CMD_NAME, TK_BANG, SIMPLE_COMMAND, ALL, 0}, - {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, ALL, 0}, - {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, ALL, 0}, - {CMD_NAME, PIPE_SEMI_SEQUENCE, SIMPLE_COMMAND, ALL, 0}, + {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, SUFFIX_NAME, 0}, + {CMD_NAME, TK_BANG, SIMPLE_COMMAND, SUFFIX_NAME, 0}, + {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, SUFFIX_NAME, 0}, + {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, SUFFIX_NAME, 0}, + {CMD_NAME, PIPE_SEMI_SEQUENCE, SIMPLE_COMMAND, SUFFIX_NAME, 0}, {SIMPLE_COMMAND, ALL, COMMAND, ALL, 0}, {DO_GROUP, NAME, FOR_CLAUSE, ALL, TK_FOR}, @@ -140,12 +140,9 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, read_state(**stack), read_state(*new_sym), read_state(next)); while (g_aggrematch[i].top) { - if (*new_sym == g_aggrematch[i].top && (**stack == g_aggrematch[i].under - || g_aggrematch[i].under == ALL - || g_aggrematch[i].under == ALL_SEPARATOR) - && (next == g_aggrematch[i].next_token || next == 0 - || g_aggrematch[i].next_token == ALL - || (g_aggrematch[i].next_token == ALL_SEPARATOR && next == TK_SEMI))) + if (*new_sym == g_aggrematch[i].top + && MATCH_STACK(**stack, g_aggrematch[i].under) + && MATCH_NXT_TOKEN(next, g_aggrematch[i].next_token)) { DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parse.c index b96698de..f21dacab 100644 --- a/42sh/src/parser/parse.c +++ b/42sh/src/parser/parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:26:02 by ariard ### ########.fr */ +/* Updated: 2017/02/14 17:48:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,10 +16,9 @@ int parse(t_btree **ast, t_list **token) { t_list *start; - (void)ast; start = *token; - if (get_instruction(token)) - return (1); +// if (get_instruction(token)) +// return (1); if (ft_parse(ast, &start)) return (1); return (0); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index bf36bd82..4ab45e5f 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:59:16 by ariard ### ########.fr */ +/* Updated: 2017/02/14 18:26:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,10 +26,8 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, CMD_WORD, CMD_SUFFIX}, {TK_N_WORD, CMD_NAME, CMD_SUFFIX}, {TK_N_WORD, LINEBREAK, CMD_NAME}, - {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, -//to delete - {TK_N_WORD, TK_SEMI, CMD_NAME}, + {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, {TK_N_WORD, TK_BANG, CMD_NAME}, {TK_N_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, {TK_N_WORD, SEPARATOR_OP, CMD_NAME}, @@ -49,13 +47,10 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, - {TK_SEMI, COMPLETE_COMMAND, SEPARATOR_OP}, - {TK_SEMI, COMPLETE_COMMANDS, SEPARATOR_OP}, + {TK_SEMI, COMPOUND_LIST, SEPARATOR_OP}, {TK_AMP, TERM, SEPARATOR_OP}, - {TK_AMP, LIST, SEPARATOR_OP}, - {TK_AMP, COMPLETE_COMMAND, SEPARATOR_OP}, - {TK_AMP, COMPLETE_COMMANDS, SEPARATOR_OP}, - + {TK_AMP, LIST, SEPARATOR_OP}, + {TK_AMP, COMPOUND_LIST, SEPARATOR_OP}, {0, 0, 0}, }; From 8e05bba1c634cceeeef78f074082139a8c7e2600 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 15 Feb 2017 02:22:05 +0100 Subject: [PATCH 052/206] less code is better --- 42sh/Makefile | 1 - 42sh/file1 | 0 42sh/file2 | 0 42sh/file3 | 0 42sh/file4 | 0 42sh/includes/parser.h | 17 +-- 42sh/sample/multiredir | 3 + 42sh/sample/stack.sh | 2 +- 42sh/src/parser/aggregate_sym.c | 247 ++++++++++++++++--------------- 42sh/src/parser/error_syntax.c | 21 ++- 42sh/src/parser/eval_sym.c | 57 ++++++- 42sh/src/parser/ft_parse.c | 9 +- 42sh/src/parser/produce_sym.c | 3 + 42sh/src/parser/read_stack.c | 12 ++ 42sh/src/parser/superflous_sym.c | 20 --- 15 files changed, 230 insertions(+), 162 deletions(-) create mode 100644 42sh/file1 create mode 100644 42sh/file2 create mode 100644 42sh/file3 create mode 100644 42sh/file4 create mode 100644 42sh/sample/multiredir delete mode 100644 42sh/src/parser/superflous_sym.c diff --git a/42sh/Makefile b/42sh/Makefile index a1eb2f94..2aad4347 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -175,7 +175,6 @@ parser/eval_sym.c\ parser/aggregate_sym.c\ parser/pop_stack.c\ parser/push_stack.c\ -parser/superflous_sym.c\ parser/error_syntax.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/file2 b/42sh/file2 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/file3 b/42sh/file3 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/file4 b/42sh/file4 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index b6a50c7e..14293032 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -114,14 +114,13 @@ enum e_sym LOOP, FUNC, PIPE_SEMI_SEQUENCE, + PATTERN_CASE, + CMD_SUPERIOR, ALL = 200, }; typedef int t_sym; -# define REDIR (TK_IO_NUMBER | TK_LESS | TK_LESSAND | TK_GREATAND | TK_DGREAT\ - | TK_LESSGREAT | TK_CLOBBER | TK_DLESS | TK_DLESSDASH | TK_WORD) - /* typedef unsigned long long int t_sym; @@ -179,9 +178,7 @@ typedef unsigned long long int t_sym; //#define ALL_SYM -1UL */ -# define MATCH_STACK(x, y) (x == y || x == ALL) -# define MATCH_NXT_TOKEN(x, y) (x == y || y == ALL || x == 0 || x &~ REDIR) - +# define MATCH_STACK(x, y) (x == y || y == ALL) typedef int t_parstate; @@ -190,8 +187,7 @@ struct s_aggrematch t_sym top; t_sym under; t_sym new_sym; - t_type next_token; - t_sym erase_sym; + int erase_sym; }; typedef struct s_aggrematch t_aggrematch; @@ -222,8 +218,7 @@ extern t_stackmatch g_stackmatch[]; int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); int eval_sym(t_sym stack, t_sym new_sym); -int aggregate_sym(t_sym **stack, t_sym *new_sym, - t_parstate *state, t_list *next_token); +int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state); int push_stack(t_sym *stack, t_sym new_sym); int pop_stack(t_sym **stack, t_sym erase_sym); @@ -231,7 +226,7 @@ int pop_stack(t_sym **stack, t_sym erase_sym); int error_syntax(t_list **token); int ft_read_stack(t_sym *stack); -char *read_state(t_sym current); +char *read_state(t_sym current); #define UNDEFINED (1 << 0) #define ERROR (1 << 1) diff --git a/42sh/sample/multiredir b/42sh/sample/multiredir new file mode 100644 index 00000000..0350bb6f --- /dev/null +++ b/42sh/sample/multiredir @@ -0,0 +1,3 @@ +cat < file1 < file2 > file3 > file4 + + diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 30cde0b2..1c1823ad 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls +ls | cat | cat > file1 diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index a845f0ad..7092a5fb 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -14,135 +14,148 @@ t_aggrematch g_aggrematch[] = { - {TK_WORD, CMD_SUFFIX, CMD_SUFFIX, ALL, 0}, - {TK_WORD, TK_PIPE, PATTERN, ALL, 0}, - {TK_WORD, WORDLIST, WORDLIST, ALL, 0}, - {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, ALL, 0}, - {TK_FI, ELSE_PART, IF_CLAUSE, ALL, IF}, - {TK_FI, COMPOUND_LIST, IF_CLAUSE, ALL, IF}, - {TK_DONE, COMPOUND_LIST, DO_GROUP, ALL, DO}, + {TK_WORD, CMD_SUFFIX, CMD_SUFFIX, 0}, + {TK_WORD, TK_PIPE, PATTERN, 0}, + {TK_WORD, WORDLIST, WORDLIST, 0}, + {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, + {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {TK_FI, ELSE_PART, IF_CLAUSE, IF}, + {TK_FI, COMPOUND_LIST, IF_CLAUSE, IF}, + {TK_DONE, COMPOUND_LIST, DO_GROUP, DO}, //Esac ? - {TK_ESAC, CASE_LIST, CASE_CLAUSE, ALL, TK_CASE}, - {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, ALL, TK_CASE}, - {TK_ESAC, LINEBREAK, CASE_CLAUSE, ALL, TK_CASE}, - {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, ALL, TK_LBRACE}, - {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, ALL, TK_PAREN_OPEN}, + {TK_ESAC, CASE_LIST, CASE_CLAUSE, TK_CASE}, + {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, + {TK_ESAC, LINEBREAK, CASE_CLAUSE, TK_CASE}, + {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, TK_LBRACE}, + {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, //watch this - {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, ALL, 0}, - {LINEBREAK, SEPARATOR_OP, SEPARATOR, ALL, SEPARATOR_OP}, - {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, ALL, TK_SEMI}, - {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, PATTERN_CASE}, - {LINEBREAK, TK_PAREN_CLOSE, FUNC, ALL, FNAME}, - {LINEBREAK, TK_DSEMI, CASE_ITEM, ALL, PATTERN_CASE}, - {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, LINEBREAK}, - {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, ALL, PIPE_SEQUENCE}, - {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, ALL, LINEBREAK}, - {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, NEWLINE}, - {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, ALL, 0}, - {NEWLINE_LIST, IN, SEQUENTIAL_SEP, ALL, 0}, - {NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, ALL, 0}, - {NEWLINE_LIST, TERM, SEPARATOR, ALL, 0}, - {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, ALL, 0}, - {IO_HERE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, - {FILENAME, TK_LESS, IO_FILE, ALL, TK_LESS}, - {FILENAME, TK_LESSAND, IO_FILE, ALL, TK_LESSAND}, - {FILENAME, TK_GREAT, IO_FILE, ALL, TK_GREAT}, - {FILENAME, TK_GREATAND, IO_FILE, ALL, TK_GREATAND}, - {FILENAME, TK_DGREAT, IO_FILE, ALL, TK_DGREAT}, - {FILENAME, TK_LESSGREAT, IO_FILE, ALL, TK_LESSGREAT}, - {FILENAME, TK_CLOBBER, IO_FILE, ALL, TK_CLOBBER}, - {IO_FILE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, - {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, ALL, REDIRECT_LIST}, - {IO_REDIRECT, CMD_SUFFIX, CMD_SUFFIX, ALL, CMD_SUFFIX}, - {IO_REDIRECT, CMD_NAME, CMD_SUFFIX, ALL, 0}, - {IO_REDIRECT, CMD_WORD, CMD_SUFFIX, ALL, 0}, - {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, ALL, CMD_PREFIX}, - {IO_REDIRECT, LINEBREAK, CMD_PREFIX, ALL, 0}, - {IO_REDIRECT, TK_BANG, CMD_PREFIX, ALL, 0}, - {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, ALL, 0}, - {IO_REDIRECT, NEWLINE_LIST, CMD_PREFIX, ALL, 0}, - {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, ALL, COMPOUND_COMMAND}, - {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, ALL, CMD_PREFIX}, - {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, ALL, CMD_NAME}, - {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, TK_WORD, 0}, - {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, TK_WORD, 0}, - {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, TK_WORD, 0}, - {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, TK_WORD, 0}, - {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, ALL_SEPARATOR, CMD_PREFIX}, -//to check - {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, SUFFIX_NAME, 0}, - {CMD_NAME, TK_BANG, SIMPLE_COMMAND, SUFFIX_NAME, 0}, - {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, SUFFIX_NAME, 0}, - {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, SUFFIX_NAME, 0}, - {CMD_NAME, PIPE_SEMI_SEQUENCE, SIMPLE_COMMAND, SUFFIX_NAME, 0}, + {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 0}, + {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, + {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI}, - {SIMPLE_COMMAND, ALL, COMMAND, ALL, 0}, - {DO_GROUP, NAME, FOR_CLAUSE, ALL, TK_FOR}, - {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, ALL, TK_FOR}, - {DO_GROUP, COMPOUND_LIST, LOOP, ALL, COMPOUND_LIST}, - {LOOP, WHILE, WHILE_CLAUSE, ALL, WHILE}, - {LOOP, TK_UNTIL, UNTIL_CLAUSE, ALL, TK_UNTIL}, - {BRACE_GROUP, ALL, COMPOUND_COMMAND, ALL, 0}, - {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, ALL, 0}, - {FUNCTION_DEFINITION, ALL, COMMAND, ALL, 0}, - {UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {WHILE_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {ELSE_PART, COMPOUND_LIST, ELSE_PART, ALL, TK_ELIF}, - {IF_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {CASE_ITEM, CASE_LIST, CASE_LIST, ALL, CASE_LIST}, - {CASE_ITEM, LINEBREAK, CASE_LIST, ALL, CASE_LIST}, - {CASE_ITEM_NS, CASE_LIST, CASE_LIST_NS, ALL, CASE_LIST}, - {CASE_ITEM_NS, LINEBREAK, CASE_LIST_NS, ALL, CASE_LIST}, - {CASE_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {FOR_CLAUSE, ALL, COMPOUND_COMMAND, ALL, 0}, - {TERM, LINEBREAK, COMPOUND_LIST, ALL, LINEBREAK}, - {COMPOUND_LIST, TK_ELSE, ELSE_PART, ALL, TK_ELSE}, - {COMPOUND_LIST, TK_THEN, ELSE_PART, ALL, TK_ELIF}, - {SUBSHELL, ALL, COMPOUND_COMMAND, ALL, 0}, - {COMPOUND_COMMAND, ALL, COMMAND, ALL, 0}, - {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, ALL, PIPE_SEMI_SEQUENCE}, - {COMMAND, TK_BANG, PIPE_SEQUENCE, ALL, 0}, - {COMMAND, SEPARATOR_OP, PIPE_SEQUENCE, ALL, 0}, - {COMMAND, NEWLINE_LIST, PIPE_SEQUENCE, ALL, 0}, - {COMMAND, LINEBREAK, PIPE_SEQUENCE, ALL, 0}, - {PIPE_SEQUENCE, TK_BANG, PIPELINE, ALL, TK_BANG}, - {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, ALL, 0}, - {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, ALL, 0}, - {PIPE_SEQUENCE, LINEBREAK, PIPELINE, ALL_SEPARATOR, 0}, - {PIPELINE, LINEBREAK, AND_OR, ALL, 0}, -// {PIPELINE, LINEBREAK, AND_OR, ALL, AND_OR}, - {PIPELINE, SEPARATOR_OP, AND_OR, ALL, 0}, - {AND_OR, SEPARATOR_OP, LIST, ALL, LIST}, - {AND_OR, NEWLINE_LIST, LIST, ALL, 0}, - {AND_OR, LINEBREAK, LIST, ALL, 0}, - {LIST, NEWLINE_LIST, COMPLETE_COMMAND, ALL, 0}, - {LIST, LINEBREAK, COMPLETE_COMMAND, ALL, 0}, - {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, ALL, COMPLETE_COMMANDS}, - {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, ALL, 0}, +//to abstract TK_ESAC + {LINEBREAK, TK_PAREN_CLOSE, CASE_ITEM_NS, PATTERN_CASE}, + {LINEBREAK, TK_PAREN_CLOSE, FUNC, FNAME}, +//paren open + {LINEBREAK, TK_DSEMI, CASE_ITEM, PATTERN_CASE}, + {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, + {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE}, + {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, + {LINEBREAK, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, + {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, + {NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0}, + {NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, 0}, + {NEWLINE_LIST, TERM, SEPARATOR, 0}, + {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0}, + +//to check + {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, + {IO_HERE, ALL, IO_REDIRECT, 0}, + {FILENAME, TK_LESS, IO_FILE, TK_LESS}, + {FILENAME, TK_LESSAND, IO_FILE, TK_LESSAND}, + {FILENAME, TK_GREAT, IO_FILE, TK_GREAT}, + {FILENAME, TK_GREATAND, IO_FILE, TK_GREATAND}, + {FILENAME, TK_DGREAT, IO_FILE, TK_DGREAT}, + {FILENAME, TK_LESSGREAT, IO_FILE, TK_LESSGREAT}, + {FILENAME, TK_CLOBBER, IO_FILE, TK_CLOBBER}, + +//to check + {IO_FILE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, + {IO_FILE, ALL, IO_REDIRECT, 0}, + {IO_REDIRECT, CMD_SUPERIOR, CMD_SUPERIOR, CMD_SUPERIOR}, + {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, REDIRECT_LIST}, + +//to check + {IO_REDIRECT, CMD_SUFFIX, CMD_SUFFIX, CMD_SUFFIX}, + {IO_REDIRECT, CMD_NAME, CMD_SUFFIX, 0}, + {IO_REDIRECT, CMD_WORD, CMD_SUFFIX, 0}, + {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, CMD_PREFIX}, + {IO_REDIRECT, LINEBREAK, CMD_PREFIX, 0}, + {IO_REDIRECT, TK_BANG, CMD_PREFIX, 0}, + {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, 0}, + {IO_REDIRECT, NEWLINE_LIST, CMD_PREFIX, 0}, + {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, COMPOUND_COMMAND}, + {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, CMD_PREFIX}, + {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, CMD_NAME}, + +//to abstract + {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, + {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0}, + {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, 0}, + {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, 0}, + + {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, CMD_PREFIX}, +//to check + {CMD_NAME, LINEBREAK, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_BANG, CMD_SUPERIOR, 0}, + {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, + {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, + {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, + {SIMPLE_COMMAND, ALL, COMMAND, 0}, + {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, + {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, TK_FOR}, + {DO_GROUP, COMPOUND_LIST, LOOP, COMPOUND_LIST}, + {LOOP, WHILE, WHILE_CLAUSE, WHILE}, + {LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL}, + {BRACE_GROUP, ALL, COMPOUND_COMMAND, 0}, + {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, 0}, + {FUNCTION_DEFINITION, ALL, COMMAND, 0}, + {UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, 0}, + {WHILE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, + {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF}, + {IF_CLAUSE, ALL, COMPOUND_COMMAND, 0}, + {PATTERN, TK_PAREN_OPEN, PATTERN_CASE, TK_PAREN_OPEN}, + {PATTERN, CASE_LIST, PATTERN_CASE, 0}, + {CASE_ITEM, CASE_LIST, CASE_LIST, CASE_LIST}, + {CASE_ITEM, LINEBREAK, CASE_LIST, CASE_LIST}, + {CASE_ITEM_NS, CASE_LIST, CASE_LIST_NS, CASE_LIST}, + {CASE_ITEM_NS, LINEBREAK, CASE_LIST_NS, CASE_LIST}, + {CASE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, + {FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0}, + {TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK}, + {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, + {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, + {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, + {COMPOUND_COMMAND, ALL, COMMAND, 0}, + {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, + {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, + {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, + {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, + {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, + {PIPELINE, LINEBREAK, AND_OR, 0}, +// {PIPELINE, LINEBREAK, AND_OR, AND_OR}, + {PIPELINE, SEPARATOR_OP, AND_OR, 0}, + {AND_OR, SEPARATOR_OP, LIST, LIST}, + {AND_OR, NEWLINE_LIST, LIST, 0}, + {AND_OR, LINEBREAK, LIST, 0}, + {LIST, NEWLINE_LIST, COMPLETE_COMMAND, 0}, + {LIST, LINEBREAK, COMPLETE_COMMAND, 0}, + {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, + {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, 0}, + {COMPLETE_COMMANDS, LINEBREAK, PROGRAM, LINEBREAK}, // voir decoupe separateur au lexer - {COMPLETE_COMMANDS, LINEBREAK, PROGRAM, ALL_SEPARATOR, 0}, - {0, 0, 0, 0, 0}, + {0, 0, 0, 0}, }; -int aggregate_sym(t_sym **stack, t_sym *new_sym, - t_parstate *state, t_list *next_token) +int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) { int i; - int next; - t_token *token; i = 0; - next = 0; - if (next_token) - if ((token = next_token->content)) - next = token->type; - DG("aggregate head %s && sym %s && next %s", - read_state(**stack), read_state(*new_sym), read_state(next)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top - && MATCH_STACK(**stack, g_aggrematch[i].under) - && MATCH_NXT_TOKEN(next, g_aggrematch[i].next_token)) + && MATCH_STACK(**stack, g_aggrematch[i].under)) + { DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; @@ -153,7 +166,7 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); - aggregate_sym(stack, new_sym, state, next_token); + aggregate_sym(stack, new_sym, state); return (0); } i++; diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index c5c668a1..9bacf149 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -12,9 +12,22 @@ #include "parser.h" -int error_syntax(t_list **lst) -{ - (void)lst; - ft_putstr_fd("syntax error near unexepected token ';'", 2); +int error_syntax(t_list **lst) +{ + t_token *token; + + token = (*lst)->content; + if (token->type == TK_SEMI) + ft_putstr_fd("syntax error near unexepected token ';'", 2); + else if (token->type == TK_WORD) + ft_putstr_fd("syntax error near unexepected token 'word'", 2); + else if (token->type == TK_GREAT) + ft_putstr_fd("syntax error near unexepected token '>'", 2); + else if (token->type == TK_NEWLINE) + ft_putstr_fd("syntax error near unexepected token 'newline'", 2); + else if (token->type == TK_LESS) + ft_putstr_fd("syntax error near unexepected token '<'", 2); + else + ft_putstr_fd("grammar error, notify ariard", 2); return (1); } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 510970b5..66883372 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -30,10 +30,37 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, SEPARATOR_OP}, {TK_IO_NUMBER, NEWLINE_LIST}, {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, + {TK_IO_NUMBER, CMD_SUPERIOR}, {TK_AND_IF, AND_OR}, {TK_OR_IF, AND_OR}, {TK_DSEMI, LINEBREAK}, {TK_DSEMI, COMPOUND_LIST}, + {TK_LESS, TK_IO_NUMBER}, + {TK_LESS, REDIRECT_LIST}, + {TK_LESS, CMD_SUFFIX}, + {TK_LESS, CMD_PREFIX}, + {TK_LESS, CMD_WORD}, + {TK_LESS, CMD_NAME}, + {TK_LESS, LINEBREAK}, + {TK_LESS, TK_BANG}, + {TK_LESS, SEPARATOR_OP}, + {TK_LESS, NEWLINE_LIST}, + {TK_LESS, PIPE_SEMI_SEQUENCE}, + {TK_LESS, CMD_SUPERIOR}, + {TK_GREAT, TK_IO_NUMBER}, + {TK_GREAT, REDIRECT_LIST}, + {TK_GREAT, CMD_SUFFIX}, + {TK_GREAT, CMD_PREFIX}, + {TK_GREAT, CMD_WORD}, + {TK_GREAT, CMD_NAME}, + {TK_GREAT, LINEBREAK}, + {TK_GREAT, TK_BANG}, + {TK_GREAT, SEPARATOR_OP}, + {TK_GREAT, NEWLINE_LIST}, + {TK_GREAT, PIPE_SEMI_SEQUENCE}, +//duplicate and extend + {TK_GREAT, CMD_SUPERIOR}, + {TK_DLESS, TK_IO_NUMBER}, {TK_DLESS, REDIRECT_LIST}, {TK_DLESS, CMD_SUFFIX}, @@ -45,6 +72,8 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, SEPARATOR_OP}, {TK_DLESS, NEWLINE_LIST}, {TK_DLESS, PIPE_SEMI_SEQUENCE}, + {TK_DLESS, CMD_SUPERIOR}, + {TK_DLESSDASH, TK_IO_NUMBER}, {TK_DLESSDASH, REDIRECT_LIST}, {TK_DLESSDASH, CMD_SUFFIX}, @@ -56,6 +85,8 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, SEPARATOR_OP}, {TK_DLESSDASH, NEWLINE_LIST}, {TK_DLESSDASH, PIPE_SEMI_SEQUENCE}, + {TK_DLESSDASH, CMD_SUPERIOR}, + {TK_DGREAT, TK_IO_NUMBER}, {TK_DGREAT, REDIRECT_LIST}, {TK_DGREAT, CMD_SUFFIX}, @@ -67,6 +98,8 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, SEPARATOR_OP}, {TK_DGREAT, NEWLINE_LIST}, {TK_DGREAT, PIPE_SEMI_SEQUENCE}, + {TK_DGREAT, CMD_SUPERIOR}, + {TK_LESSAND, TK_IO_NUMBER}, {TK_LESSAND, REDIRECT_LIST}, {TK_LESSAND, CMD_SUFFIX}, @@ -78,6 +111,8 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, SEPARATOR_OP}, {TK_LESSAND, NEWLINE_LIST}, {TK_LESSAND, PIPE_SEMI_SEQUENCE}, + {TK_LESSAND, CMD_SUPERIOR}, + {TK_GREATAND, TK_IO_NUMBER}, {TK_GREATAND, REDIRECT_LIST}, {TK_GREATAND, CMD_SUFFIX}, @@ -89,6 +124,8 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, SEPARATOR_OP}, {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, + {TK_GREATAND, CMD_SUPERIOR}, + {TK_LESSGREAT, TK_IO_NUMBER}, {TK_LESSGREAT, REDIRECT_LIST}, {TK_LESSGREAT, CMD_SUFFIX}, @@ -100,6 +137,8 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, SEPARATOR_OP}, {TK_LESSGREAT, NEWLINE_LIST}, {TK_LESSGREAT, PIPE_SEMI_SEQUENCE}, + {TK_LESSGREAT, CMD_SUPERIOR}, + {TK_CLOBBER, TK_IO_NUMBER}, {TK_CLOBBER, REDIRECT_LIST}, {TK_CLOBBER, CMD_SUFFIX}, @@ -111,6 +150,8 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, SEPARATOR_OP}, {TK_CLOBBER, NEWLINE_LIST}, {TK_CLOBBER, PIPE_SEMI_SEQUENCE}, + {TK_CLOBBER, CMD_SUPERIOR}, + {TK_IF, LINEBREAK}, {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, @@ -168,7 +209,7 @@ t_stackmatch g_stackmatch[] = {TK_AMP, LIST}, {TK_AMP, TERM}, {TK_PIPE, PATTERN}, - {TK_PIPE, PIPE_SEQUENCE}, + {TK_PIPE, CMD_SUPERIOR}, {TK_PAREN_OPEN, FNAME}, {TK_PAREN_OPEN, CASE_LIST}, {TK_PAREN_OPEN, LINEBREAK}, @@ -197,6 +238,8 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, TK_PIPE}, {LINEBREAK, LINEBREAK}, {LINEBREAK, COMPLETE_COMMANDS}, + {LINEBREAK, CMD_SUPERIOR}, + {LINEBREAK, PIPE_SEMI_SEQUENCE}, {NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NAME}, {NEWLINE_LIST, IN}, @@ -207,6 +250,7 @@ t_stackmatch g_stackmatch[] = {HERE_END, TK_DLESS}, {HERE_END, TK_DLESSDASH}, {IO_HERE, TK_IO_NUMBER}, + {IO_HERE, CMD_SUPERIOR}, {IO_HERE, REDIRECT_LIST}, {IO_HERE, CMD_SUFFIX}, {IO_HERE, CMD_PREFIX}, @@ -225,6 +269,7 @@ t_stackmatch g_stackmatch[] = {FILENAME, TK_LESSGREAT}, {FILENAME, TK_CLOBBER}, {IO_FILE, TK_IO_NUMBER}, + {IO_FILE, CMD_SUPERIOR}, {IO_FILE, REDIRECT_LIST}, {IO_FILE, CMD_SUFFIX}, {IO_FILE, CMD_PREFIX}, @@ -236,6 +281,7 @@ t_stackmatch g_stackmatch[] = {IO_FILE, NEWLINE_LIST}, {IO_FILE, PIPE_SEMI_SEQUENCE}, {IO_REDIRECT, REDIRECT_LIST}, + {IO_REDIRECT, CMD_SUPERIOR}, {IO_REDIRECT, CMD_SUFFIX}, {IO_REDIRECT, CMD_PREFIX}, {IO_REDIRECT, CMD_WORD}, @@ -259,6 +305,14 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, PIPE_SEMI_SEQUENCE}, + + {CMD_SUPERIOR, LINEBREAK,}, + {CMD_SUPERIOR, TK_BANG}, + {CMD_SUPERIOR, SEPARATOR_OP}, + {CMD_SUPERIOR, NEWLINE_LIST}, + {CMD_SUPERIOR, TK_PIPE}, + {CMD_SUPERIOR, PIPE_SEMI_SEQUENCE}, + {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, @@ -303,6 +357,7 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, {PATTERN, TK_PAREN_OPEN}, {PATTERN, CASE_LIST}, + {PATTERN_CASE, CASE_LIST}, {CASE_ITEM, CASE_LIST}, {CASE_ITEM, LINEBREAK}, {CASE_ITEM_NS, CASE_LIST}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index a774e88f..2ee26cc2 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -18,7 +18,6 @@ int ft_parse(t_btree **ast, t_list **token) t_sym *stack; t_parstate state; //to delete - t_token *content; (void)ast; state = UNDEFINED; @@ -27,14 +26,13 @@ int ft_parse(t_btree **ast, t_list **token) push_stack(stack, LINEBREAK); while (*token) { - content = (*token)->content; produce_sym(*stack, new_sym, token); DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else { - aggregate_sym(&stack, new_sym, &state, (*token)->next); + aggregate_sym(&stack, new_sym, &state); push_stack(++stack, *new_sym); } ft_putstr("\n"); @@ -46,10 +44,7 @@ int ft_parse(t_btree **ast, t_list **token) if (state == SUCCESS) ft_putstr("success"); // build_tree(token, ast); - if (*stack == TK_PIPE) - content->type = LINEBREAK; - else - ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); + ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 4ab45e5f..bb95c364 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -26,6 +26,7 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, CMD_WORD, CMD_SUFFIX}, {TK_N_WORD, CMD_NAME, CMD_SUFFIX}, {TK_N_WORD, LINEBREAK, CMD_NAME}, + {TK_N_WORD, TK_PIPE, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, {TK_N_WORD, TK_BANG, CMD_NAME}, @@ -45,6 +46,8 @@ t_prodmatch g_prodmatch[] = {TK_NAME, TK_FOR, NAME}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, + {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, + {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, {TK_SEMI, COMPOUND_LIST, SEPARATOR_OP}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 31c9bebc..2e9ccf35 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,18 @@ char *read_state(t_sym current) { + if (current == CMD_SUPERIOR) + return ("CMD_SUPERIOR"); + if (current == TK_IO_NUMBER) + return ("IO_NUMBER"); + if (current == CMD_SUFFIX) + return ("CMD_SUFFIX"); + if (current == CMD_PREFIX) + return ("CMD_PREFIX"); + if (current == IO_REDIRECT) + return ("IO_REDIRECT"); + if (current == IO_FILE) + return ("IO_FILE"); if (current == PIPE_SEMI_SEQUENCE) return ("PIPE_SEMI_SEQUENCE"); if (current == TK_PIPE) diff --git a/42sh/src/parser/superflous_sym.c b/42sh/src/parser/superflous_sym.c deleted file mode 100644 index ac7790d2..00000000 --- a/42sh/src/parser/superflous_sym.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* superflous_sym.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/09 17:47:33 by ariard #+# #+# */ -/* Updated: 2017/02/09 19:25:30 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int superflous_sym(t_sym stack, t_sym new_sym) -{ - if (stack == new_sym) - return (1); - return (0); -} From 78a2dafe50afc0a2e85eeb4bc1037ed6750f73a3 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 15 Feb 2017 18:31:37 +0100 Subject: [PATCH 053/206] before merge with clean dir --- 42sh/includes/parser.h | 2 +- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/eval_sym.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index b6a50c7e..cc55c791 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/14 19:07:15 by ariard ### ########.fr */ +/* Updated: 2017/02/14 19:09:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index a845f0ad..59441c34 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/14 19:08:33 by ariard ### ########.fr */ +/* Updated: 2017/02/14 19:09:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 510970b5..75d9dc3b 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:59:09 by ariard ### ########.fr */ +/* Updated: 2017/02/14 19:09:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 185ed2ebd3f83faa43e94e74959f105bf3379463 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 15 Feb 2017 20:58:41 +0100 Subject: [PATCH 054/206] gen ast en cours --- 42sh/Makefile | 4 ++ 42sh/file1 | 0 42sh/file2 | 0 42sh/file3 | 0 42sh/file4 | 0 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 2 +- 42sh/includes/parser.h | 84 ++++++++++--------------------- 42sh/sample/stack.sh | 2 +- 42sh/src/main/shell_script.c | 10 ++-- 42sh/src/parser/add_cmd.c | 33 ++++++++++++ 42sh/src/parser/add_sep.c | 28 +++++++++++ 42sh/src/parser/aggregate_sym.c | 10 ++-- 42sh/src/parser/build_tree.c | 38 ++++++++++++++ 42sh/src/parser/eval_sym.c | 4 +- 42sh/src/parser/ft_parse.c | 6 +-- 42sh/src/parser/old_parse.c | 2 +- 42sh/src/parser/parse_do.c | 2 +- 42sh/src/parser/parse_great.c | 2 +- 42sh/src/parser/parse_separator.c | 2 +- 42sh/src/parser/parse_word.c | 2 +- 42sh/src/parser/pop_stack.c | 4 +- 42sh/src/parser/produce_sym.c | 6 +-- 42sh/src/parser/tree_wrapper.c | 32 ++++++++++++ 24 files changed, 189 insertions(+), 86 deletions(-) delete mode 100644 42sh/file1 delete mode 100644 42sh/file2 delete mode 100644 42sh/file3 delete mode 100644 42sh/file4 create mode 100644 42sh/src/parser/add_cmd.c create mode 100644 42sh/src/parser/add_sep.c create mode 100644 42sh/src/parser/build_tree.c create mode 100644 42sh/src/parser/tree_wrapper.c diff --git a/42sh/Makefile b/42sh/Makefile index 2aad4347..91ab3226 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -176,6 +176,10 @@ parser/aggregate_sym.c\ parser/pop_stack.c\ parser/push_stack.c\ parser/error_syntax.c\ +parser/build_tree.c\ +parser/tree_wrapper.c\ +parser/add_sep.c\ +parser/add_cmd.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ parser/parse_dgreat.c\ diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/file2 b/42sh/file2 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/file3 b/42sh/file3 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/file4 b/42sh/file4 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index c52567d4..b8891c65 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/13 19:41:57 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:46:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 8fe62ce6..f1870080 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/09 22:31:21 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:22:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 7d5f20f7..90ccbcb3 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/14 19:09:38 by ariard ### ########.fr */ +/* Updated: 2017/02/15 20:50:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -121,63 +121,6 @@ enum e_sym typedef int t_sym; -/* -typedef unsigned long long int t_sym; - -#define PROGRAM (1UL << 0) -#define COMPLETE_COMMANDS (1UL << 1) -#define COMPLETE_COMMAND (1UL << 2) -#define LIST (1UL << 3) -#define AND_OR (1UL << 4) -#define PIPELINE (1UL << 5) -#define PIPE_SEQUENCE (1UL << 6) -#define COMMAND (1UL << 7) -#define COMPOUND_COMMAND (1UL << 8) -#define SUBSHELL (1UL << 9) -#define COMPOUND_LIST (1UL << 10) -#define TERM (1UL << 11) -#define FOR_CLAUSE (1UL << 12) -#define NAME (1UL << 13) -#define IN (1UL << 14) -#define WORDLIST (1UL << 15) -#define CASE_CLAUSE (1UL << 16) -#define CASE_LIST_NS (1UL << 17) -#define CASE_LIST (1UL << 18) -#define CASE_ITEM_NS (1UL << 19) -#define PATTERN (1UL << 20) -#define IF_CLAUSE (1UL << 21) -#define ELSE_PART (1UL << 22) -#define WHILE_CLAUSE (1UL << 23) -#define UNTIL_CLAUSE (1UL << 24) -#define FUNCTION_DEFINITION (1UL << 25) -#define FUNCTION_BODY (1UL << 26) -#define FNAME (1UL << 27) -#define BRACE_GROUP (1UL << 28) -#define DO_GROUP (1UL << 29) -#define SIMPLE_COMMAND (1UL << 30) -#define CMD_NAME (1UL << 31) -#define CMD_WORD (1UL << 32) -#define CMD_PREFIX (1UL << 33) -#define CMD_SUFFIX (1UL << 34) -#define REDIRECT_LIST (1UL << 35) -#define IO_REDIRECT (1UL << 36) -#define IO_FILE (1UL << 37) -#define FILENAME (1UL << 38) -#define IO_HERE (1UL << 39) -#define HERE_END (1UL << 40) -#define NEWLINE_LIST (1UL << 41) -#define LINEBREAK (1UL << 42) -#define SEPARATOR_OP (1UL << 43) -#define SEPARATOR (1UL << 44) -#define SEQUENTIAL_SEP (1UL << 45) - -#define SYM_LESS (1UL << 49) -#define SYM_GREAT (1UL << 50) - -#define ALL_SYM !0 -//#define ALL_SYM -1UL -*/ - # define MATCH_STACK(x, y) (x == y || y == ALL) typedef int t_parstate; @@ -232,6 +175,31 @@ char *read_state(t_sym current); #define ERROR (1 << 1) #define SUCCESS (1 << 2) +/* + * Build AST - rewriting + * +*/ + +struct s_treematch +{ + t_type type; + int (*add)(t_btree **ast, t_list **lst); +}; + +typedef struct s_treematch t_treematch; + +extern t_treematch g_treematch[]; + +int build_tree(t_btree **ast, t_list **lst); + +int add_sep(t_btree **ast, t_list **lst); +int add_cmd(t_btree **ast, t_list **lst); + +int join_ast(t_btree **ast, t_btree **new_node); +int gen_node(t_btree **ast); + + + /* * Build AST * diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 1c1823ad..b3bc3407 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls | cat | cat > file1 +ls | cat diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 1e953693..994a89b9 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/14 18:29:49 by ariard ### ########.fr */ +/* Updated: 2017/02/15 20:58:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,10 +31,10 @@ int shell_script() token_print(token); if (ft_parse(&ast, &token)) return (1); -// btree_print(STDBUG, ast, &ft_putast); -// if (ft_exec(&ast)) -// return (1); -// ast = NULL; + btree_print(STDBUG, ast, &ft_putast); + if (ft_exec(&ast)) + return (1); + ast = NULL; script->size = 0; get_script_content(script); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c new file mode 100644 index 00000000..b299c780 --- /dev/null +++ b/42sh/src/parser/add_cmd.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_cmd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ +/* Updated: 2017/02/15 20:57:47 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int add_cmd(t_btree **ast, t_list **lst) +{ + t_token *token; + t_astnode *node; + char **my_tab; + + if (!*ast) + gen_node(ast); + else + return (add_cmd(&(*ast)->right, lst)); + my_tab = NULL; + token = (*lst)->content; + node = (*ast)->item; + node->type = TK_COMMAND; + my_tab = ft_sstradd(my_tab, token->data); + my_tab = ft_sstradd(my_tab, (char *)token->esc); + ft_ld_pushback(&node->data.token, my_tab); + return (0); +} diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c new file mode 100644 index 00000000..01dd18a6 --- /dev/null +++ b/42sh/src/parser/add_sep.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_sep.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ +/* Updated: 2017/02/15 20:48:17 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int add_sep(t_btree **ast, t_list **lst) +{ + t_token *token; + t_astnode *node; + t_btree *new_node; + + new_node = NULL; + gen_node(&new_node); + join_ast(ast, &new_node); + token = (*lst)->content; + node = (new_node)->item; + node->type = token->type; + return (0); +} diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 0b81a7f2..7d3434e5 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/14 19:09:44 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:52:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -149,20 +149,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c new file mode 100644 index 00000000..2441360a --- /dev/null +++ b/42sh/src/parser/build_tree.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* build_tree.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ +/* Updated: 2017/02/15 20:51:50 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +t_treematch g_treematch[] = +{ + {TK_N_WORD, &add_cmd}, + {TK_PIPE, &add_sep}, + {0, NULL}, +}; + +int build_tree(t_btree **ast, t_list **lst) +{ + int i; + t_token *token; + + i = 0; + token = (*lst)->content; + while (g_treematch[i].type) + { + DG("func TK : '%s' TK : '%s'", + read_state(g_treematch[i].type) ,read_state(token->type)); + if (g_treematch[i].type == token->type) + return (g_treematch[i].add(ast, lst)); + i++; + } + return (0); +} diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 38e9361c..49f4acf3 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/14 19:09:40 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:52:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -427,7 +427,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 2ee26cc2..b8a0f105 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:59:00 by ariard ### ########.fr */ +/* Updated: 2017/02/15 20:40:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,7 +27,7 @@ int ft_parse(t_btree **ast, t_list **token) while (*token) { produce_sym(*stack, new_sym, token); - DG("new sym %s", read_state(*new_sym)); +// DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else @@ -43,7 +43,7 @@ int ft_parse(t_btree **ast, t_list **token) return (error_syntax(token)); if (state == SUCCESS) ft_putstr("success"); -// build_tree(token, ast); + build_tree(ast, token); ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } return (0); diff --git a/42sh/src/parser/old_parse.c b/42sh/src/parser/old_parse.c index 8814ece1..b5310530 100644 --- a/42sh/src/parser/old_parse.c +++ b/42sh/src/parser/old_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/09 22:06:41 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:56:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_do.c b/42sh/src/parser/parse_do.c index e4d8ba80..1c0051c1 100644 --- a/42sh/src/parser/parse_do.c +++ b/42sh/src/parser/parse_do.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:28:41 by ariard #+# #+# */ -/* Updated: 2017/02/03 16:46:45 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:08:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index fd15c29d..91420222 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/04 23:44:59 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:30:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index aa644e27..ca1e0387 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/09 19:27:22 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:34:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 7fa5fa7c..eba9cfdf 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/09 15:24:49 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:54:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index 597d3867..4d2b8fe5 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:51:52 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:52:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ int pop_stack(t_sym **stack, t_sym erase_sym) { t_sym *temp; - DG("pop until :%s", read_state(erase_sym)); +// DG("pop until :%s", read_state(erase_sym)); temp = *stack; while (*temp != erase_sym) *temp-- = 0; diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index bb95c364..c5f415b6 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/14 18:26:07 by ariard ### ########.fr */ +/* Updated: 2017/02/15 19:50:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,8 +64,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; - DG("produce stack : %s && token : %s", read_state(stack), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(stack), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c new file mode 100644 index 00000000..31258f7e --- /dev/null +++ b/42sh/src/parser/tree_wrapper.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* tree_wrapper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ +/* Updated: 2017/02/15 20:56:38 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int join_ast(t_btree **ast, t_btree **new_node) +{ + (*new_node)->left = *ast; + *ast = *new_node; + return (0); +} + +int gen_node(t_btree **ast) +{ + t_astnode item; + + if (!*ast) + { + *ast = btree_create_node(&item, sizeof(item)); + ((t_astnode *)(*ast)->item)->data.token = NULL; + } + return (0); +} From 90457ec703de0d8c44c031e494072d0d72ae4b9d Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Thu, 16 Feb 2017 17:02:37 +0100 Subject: [PATCH 055/206] before pull --- 42sh/includes/parser.h | 10 ++++++++++ 42sh/src/parser/build_tree.c | 12 ++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 42sh/src/parser/build_tree.c diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 14293032..66ac51df 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -215,6 +215,16 @@ typedef struct s_stackmatch t_stackmatch; extern t_stackmatch g_stackmatch[]; +struct s_treematch g_treemacth[]; +{ + t_type token; + void (*add)(t_btree **ast, t_type ) +}; + +typedef struct s_treematch t_treematch; + +extern t_treematch g_treematch[]; + int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); int eval_sym(t_sym stack, t_sym new_sym); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c new file mode 100644 index 00000000..1ba0fd59 --- /dev/null +++ b/42sh/src/parser/build_tree.c @@ -0,0 +1,12 @@ +#include "parser.h" + +t_treematch g_treematch[] = +{ + TK_WORD, + +int build_tree(t_btree **ast) +{ + int i; + + i = 0; + while (g From 7477cb4c0d7781f75fc5623e975cfcf515f2c1c4 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Thu, 16 Feb 2017 17:35:44 +0100 Subject: [PATCH 056/206] debug exec ou parsing --- 42sh/Makefile | 1 + 42sh/includes/parser.h | 14 ++------------ 42sh/sample/stack.sh | 2 +- 42sh/src/main/shell_script.c | 14 ++++++++------ 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/old_parse.c | 5 +++-- 42sh/src/parser/parse_word.c | 2 ++ 42sh/src/parser/read_stack.c | 2 ++ 8 files changed, 20 insertions(+), 22 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index 91ab3226..0b41f6bb 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -170,6 +170,7 @@ main/shell_script.c\ main/sig_handler.c\ parser/parse.c\ parser/ft_parse.c\ +parser/old_parse.c\ parser/produce_sym.c\ parser/eval_sym.c\ parser/aggregate_sym.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 1526281c..9830855d 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -158,15 +158,7 @@ typedef struct s_stackmatch t_stackmatch; extern t_stackmatch g_stackmatch[]; -struct s_treematch g_treemacth[]; -{ - t_type token; - void (*add)(t_btree **ast, t_type ) -}; - -typedef struct s_treematch t_treematch; - -extern t_treematch g_treematch[]; +int ft_parse2(t_btree **ast, t_list **token); int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); @@ -193,7 +185,7 @@ char *read_state(t_sym current); struct s_treematch { t_type type; - int (*add)(t_btree **ast, t_list **lst); + int (*add)(t_btree **ast, t_list **lst); }; typedef struct s_treematch t_treematch; @@ -208,8 +200,6 @@ int add_cmd(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); - - /* * Build AST * diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index b3bc3407..30cde0b2 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1 @@ -ls | cat +ls diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 994a89b9..bdb13254 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -23,21 +23,23 @@ int shell_script() ast = NULL; list_ast = NULL; script = &data_singleton()->script; - while (script->size) - { +// while (script->size) +// { if (ft_lexer(&token, &data_singleton()->script.buffer) || !token) return (1); DG("after post_tokenize"); token_print(token); +// if (ft_parse2(&ast, &token)) +// return (1); if (ft_parse(&ast, &token)) return (1); btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); - ast = NULL; + if (ft_exec(&ast)) + return (1); + ast = NULL; script->size = 0; get_script_content(script); - } +// } close(script->fd); return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index b8a0f105..745b48aa 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -12,7 +12,7 @@ #include "parser.h" -int ft_parse(t_btree **ast, t_list **token) +int ft_parse2(t_btree **ast, t_list **token) { t_sym *new_sym; t_sym *stack; diff --git a/42sh/src/parser/old_parse.c b/42sh/src/parser/old_parse.c index b5310530..00969352 100644 --- a/42sh/src/parser/old_parse.c +++ b/42sh/src/parser/old_parse.c @@ -14,7 +14,6 @@ t_parser g_parser[] = { - {INSTRUCTION, &get_sub_instruction}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, {TK_PIPE, &parse_separator}, @@ -25,7 +24,7 @@ t_parser g_parser[] = {TK_LESSAND, &parse_lessand}, {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, - {TK_WORD, &parse_word}, + {TK_N_WORD, &parse_word}, {0, 0}, }; @@ -35,6 +34,7 @@ int ft_parse(t_btree **ast, t_list **start) t_astnode item; int i; + DG("old parser"); i = 0; if (!*start) return (0); @@ -48,6 +48,7 @@ int ft_parse(t_btree **ast, t_list **start) { if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) { + DG("match : %s", read_state(g_parser[i].type)); if (g_parser[i].f) (*g_parser[i].f)(ast, start, &lst); return (0); diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index eba9cfdf..8df72e27 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -18,6 +18,7 @@ int parse_word(t_btree **ast, t_list **start, t_list **lst) t_token *token; char **my_tab; + DG("parse word begin"); my_tab = NULL; token = (*lst)->content; node = (*ast)->item; @@ -27,5 +28,6 @@ int parse_word(t_btree **ast, t_list **start, t_list **lst) ft_ld_pushback(&node->data.token, my_tab); ft_parse(ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + DG("parse word end"); return (0); } diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 2e9ccf35..dec9d797 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == TK_DLESS) + return ("TK_DLESS"); if (current == CMD_SUPERIOR) return ("CMD_SUPERIOR"); if (current == TK_IO_NUMBER) From 7f83e231aa773e19eebb8193218c96f08e8933be Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Fri, 17 Feb 2017 02:38:56 +0100 Subject: [PATCH 057/206] && || --- 42sh/Makefile | 26 +++++++++++++------------- 42sh/file1 | 14 ++++++++++++++ 42sh/includes/lexer.h | 4 +--- 42sh/includes/parser.h | 6 +++++- 42sh/sample/stack.sh | 4 +++- 42sh/src/exec/ft_exec.c | 8 +++++--- 42sh/src/main/ft_putast.c | 2 ++ 42sh/src/main/shell_script.c | 14 ++++++-------- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/aggregate_sym.c | 18 ++++++++++++++---- 42sh/src/parser/build_tree.c | 14 +++++++++++--- 42sh/src/parser/eval_sym.c | 31 ++++++++++++++++++++++++++++--- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/old_parse.c | 1 - 42sh/src/parser/produce_sym.c | 6 ++++-- 42sh/src/parser/read_stack.c | 28 ++++++++++++++++++++++++++++ 16 files changed, 136 insertions(+), 44 deletions(-) create mode 100644 42sh/file1 diff --git a/42sh/Makefile b/42sh/Makefile index 0b41f6bb..fa337596 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -168,19 +168,7 @@ main/shell_get_opts.c\ main/shell_init.c\ main/shell_script.c\ main/sig_handler.c\ -parser/parse.c\ -parser/ft_parse.c\ parser/old_parse.c\ -parser/produce_sym.c\ -parser/eval_sym.c\ -parser/aggregate_sym.c\ -parser/pop_stack.c\ -parser/push_stack.c\ -parser/error_syntax.c\ -parser/build_tree.c\ -parser/tree_wrapper.c\ -parser/add_sep.c\ -parser/add_cmd.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ parser/parse_dgreat.c\ @@ -198,7 +186,19 @@ parser/parse_if.c\ parser/parse_elif.c\ parser/parse_else.c\ parser/parse_word.c\ -parser/read_stack.c +parser/read_stack.c\ +parser/parse.c\ +parser/ft_parse.c\ +parser/produce_sym.c\ +parser/eval_sym.c\ +parser/aggregate_sym.c\ +parser/pop_stack.c\ +parser/push_stack.c\ +parser/error_syntax.c\ +parser/build_tree.c\ +parser/tree_wrapper.c\ +parser/add_sep.c\ +parser/add_cmd.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..e75bc531 --- /dev/null +++ b/42sh/file1 @@ -0,0 +1,14 @@ +Makefile +blind.text +debug +file1 +grammar +includes +libft +pdf +sample +script.sh +src +test.sh +tofix +update_makefile.sh diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index b8891c65..705bef68 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -36,8 +36,8 @@ typedef long long t_type; * */ -/* +/* # define TK_LESS (1 << 0) //transparent # define TK_GREAT (1 << 1) //transparent # define TK_DLESS (1 << 2) @@ -67,10 +67,8 @@ typedef long long t_type; # define TK_ELIF (1 << 26) # define TK_ELSE (1 << 27) # define TK_UNTIL (1 << 28) - */ -# define TK_COMMAND (1 << 10) # define TK_WORD (TK_N_WORD | TK_Q_WORD | TK_DQ_WORD) # define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) # define TK_NON_FREEABLE (TK_PAREN_OPEN | TK_PAREN_CLOSE | TK_BQUOTE) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 9830855d..e226d0e5 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -20,9 +20,11 @@ * */ + enum e_sym { LINEBREAK = 1, + TK_COMMAND, TK_LESS, TK_GREAT, TK_DLESS, @@ -116,6 +118,8 @@ enum e_sym PIPE_SEMI_SEQUENCE, PATTERN_CASE, CMD_SUPERIOR, + AND_OR_MAJOR, + AND_OR_MINOR, ALL = 200, }; @@ -215,7 +219,7 @@ typedef long long t_type; struct s_parser { - t_type type; + t_type type; int (*f)(t_btree **ast, t_list **start, t_list **token); }; diff --git a/42sh/sample/stack.sh b/42sh/sample/stack.sh index 30cde0b2..5b2b1f27 100644 --- a/42sh/sample/stack.sh +++ b/42sh/sample/stack.sh @@ -1 +1,3 @@ -ls +cat && ls || ls | cat && ls | cat || ls + + diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 9bf82ba0..1baf929c 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -28,7 +28,8 @@ t_execmap g_execmap[] = {TK_ELIF, &exec_elif}, {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, - {TK_COMMAND | TK_SUBSHELL, &exec_command}, + {TK_COMMAND, &exec_command}, + {TK_SUBSHELL, &exec_command}, {0, 0}, }; @@ -43,9 +44,10 @@ int ft_exec(t_btree **ast) item = (*ast)->item; while (g_execmap[i].type) { - if (item->type & g_execmap[i].type) - + if (item->type == g_execmap[i].type) { + DG("match : %s and %s", + read_state(item->type), read_state(g_execmap[i].type)); /* return ((*g_execmap[i].f)(ast)); */ (*g_execmap[i].f)(ast); } diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index acc9cfb8..2b5e4e7b 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -22,6 +22,8 @@ char *ft_putast(void *nodein) node = nodein; if (node->type == TK_AMP) return (" & "); + else if (node->type == TK_N_WORD) + return (" TK_N_WORD"); else if (node->type == TK_SEMI) return (" ; "); else if (node->type == TK_AND_IF) diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index bdb13254..2d2829b0 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -23,23 +23,21 @@ int shell_script() ast = NULL; list_ast = NULL; script = &data_singleton()->script; -// while (script->size) -// { + while (script->size) + { if (ft_lexer(&token, &data_singleton()->script.buffer) || !token) return (1); DG("after post_tokenize"); token_print(token); -// if (ft_parse2(&ast, &token)) -// return (1); - if (ft_parse(&ast, &token)) + if (ft_parse2(&ast, &token)) return (1); btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); +// if (ft_exec(&ast)) +// return (1); ast = NULL; script->size = 0; get_script_content(script); -// } + } close(script->fd); return (0); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index b299c780..8d6f7ecd 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -25,7 +25,7 @@ int add_cmd(t_btree **ast, t_list **lst) my_tab = NULL; token = (*lst)->content; node = (*ast)->item; - node->type = TK_COMMAND; + node->type = token->type; my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); ft_ld_pushback(&node->data.token, my_tab); diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 7d3434e5..e7eabeca 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -28,6 +28,8 @@ t_aggrematch g_aggrematch[] = {TK_ESAC, LINEBREAK, CASE_CLAUSE, TK_CASE}, {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, TK_LBRACE}, {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, + {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, + {TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, //watch this {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 0}, {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, @@ -94,6 +96,7 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, + {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, {SIMPLE_COMMAND, ALL, COMMAND, 0}, {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, TK_FOR}, @@ -120,18 +123,25 @@ t_aggrematch g_aggrematch[] = {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0}, + {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, + {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, + {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, + {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, + {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, @@ -149,20 +159,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 2441360a..60f50e24 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -16,6 +16,11 @@ t_treematch g_treematch[] = { {TK_N_WORD, &add_cmd}, {TK_PIPE, &add_sep}, + {TK_SEMI, &add_sep}, + {TK_GREAT, &add_sep}, + {TK_LESS, &add_sep}, + {TK_OR_IF, &add_sep}, + {TK_AND_IF, &add_sep}, {0, NULL}, }; @@ -28,10 +33,13 @@ int build_tree(t_btree **ast, t_list **lst) token = (*lst)->content; while (g_treematch[i].type) { - DG("func TK : '%s' TK : '%s'", - read_state(g_treematch[i].type) ,read_state(token->type)); if (g_treematch[i].type == token->type) - return (g_treematch[i].add(ast, lst)); + { + + DG("func TK : '%s' TK : '%s'", + read_state(g_treematch[i].type) ,read_state(token->type)); + return (g_treematch[i].add(ast, lst)); + } i++; } return (0); diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 49f4acf3..b7520b85 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -31,7 +31,11 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, NEWLINE_LIST}, {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, {TK_IO_NUMBER, CMD_SUPERIOR}, + {TK_IO_NUMBER, AND_OR_MAJOR}, {TK_AND_IF, AND_OR}, + {TK_AND_IF, CMD_SUPERIOR}, + {TK_OR_IF, AND_OR}, + {TK_OR_IF, CMD_SUPERIOR}, {TK_OR_IF, AND_OR}, {TK_DSEMI, LINEBREAK}, {TK_DSEMI, COMPOUND_LIST}, @@ -47,6 +51,7 @@ t_stackmatch g_stackmatch[] = {TK_LESS, NEWLINE_LIST}, {TK_LESS, PIPE_SEMI_SEQUENCE}, {TK_LESS, CMD_SUPERIOR}, + {TK_LESS, AND_OR_MAJOR}, {TK_GREAT, TK_IO_NUMBER}, {TK_GREAT, REDIRECT_LIST}, {TK_GREAT, CMD_SUFFIX}, @@ -60,6 +65,7 @@ t_stackmatch g_stackmatch[] = {TK_GREAT, PIPE_SEMI_SEQUENCE}, //duplicate and extend {TK_GREAT, CMD_SUPERIOR}, + {TK_GREAT, AND_OR_MAJOR}, {TK_DLESS, TK_IO_NUMBER}, {TK_DLESS, REDIRECT_LIST}, @@ -73,6 +79,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, NEWLINE_LIST}, {TK_DLESS, PIPE_SEMI_SEQUENCE}, {TK_DLESS, CMD_SUPERIOR}, + {TK_DLESS, AND_OR_MAJOR}, {TK_DLESSDASH, TK_IO_NUMBER}, {TK_DLESSDASH, REDIRECT_LIST}, @@ -86,6 +93,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, NEWLINE_LIST}, {TK_DLESSDASH, PIPE_SEMI_SEQUENCE}, {TK_DLESSDASH, CMD_SUPERIOR}, + {TK_DLESSDASH, AND_OR_MAJOR}, {TK_DGREAT, TK_IO_NUMBER}, {TK_DGREAT, REDIRECT_LIST}, @@ -99,6 +107,7 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, NEWLINE_LIST}, {TK_DGREAT, PIPE_SEMI_SEQUENCE}, {TK_DGREAT, CMD_SUPERIOR}, + {TK_DGREAT, AND_OR_MAJOR}, {TK_LESSAND, TK_IO_NUMBER}, {TK_LESSAND, REDIRECT_LIST}, @@ -112,6 +121,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, NEWLINE_LIST}, {TK_LESSAND, PIPE_SEMI_SEQUENCE}, {TK_LESSAND, CMD_SUPERIOR}, + {TK_LESSAND, AND_OR_MAJOR}, {TK_GREATAND, TK_IO_NUMBER}, {TK_GREATAND, REDIRECT_LIST}, @@ -125,6 +135,7 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, {TK_GREATAND, CMD_SUPERIOR}, + {TK_GREATAND, AND_OR_MAJOR}, {TK_LESSGREAT, TK_IO_NUMBER}, {TK_LESSGREAT, REDIRECT_LIST}, @@ -138,6 +149,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, NEWLINE_LIST}, {TK_LESSGREAT, PIPE_SEMI_SEQUENCE}, {TK_LESSGREAT, CMD_SUPERIOR}, + {TK_LESSGREAT, AND_OR_MAJOR}, {TK_CLOBBER, TK_IO_NUMBER}, {TK_CLOBBER, REDIRECT_LIST}, @@ -151,6 +163,7 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, NEWLINE_LIST}, {TK_CLOBBER, PIPE_SEMI_SEQUENCE}, {TK_CLOBBER, CMD_SUPERIOR}, + {TK_CLOBBER, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, {TK_IF, TK_BANG}, @@ -305,19 +318,22 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, PIPE_SEMI_SEQUENCE}, - + {CMD_NAME, AND_OR_MAJOR}, + {CMD_SUPERIOR, LINEBREAK,}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, {CMD_SUPERIOR, NEWLINE_LIST}, {CMD_SUPERIOR, TK_PIPE}, {CMD_SUPERIOR, PIPE_SEMI_SEQUENCE}, - + {CMD_SUPERIOR, AND_OR_MAJOR}, + {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, {SIMPLE_COMMAND, PIPE_SEMI_SEQUENCE}, + {SIMPLE_COMMAND, AND_OR_MAJOR}, {DO_GROUP, COMPOUND_LIST}, {DO_GROUP, NAME}, {DO_GROUP, SEQUENTIAL_SEP}, @@ -401,17 +417,26 @@ t_stackmatch g_stackmatch[] = {COMMAND, SEPARATOR_OP}, {COMMAND, NEWLINE_LIST}, {COMMAND, PIPE_SEMI_SEQUENCE}, + {COMMAND, AND_OR_MAJOR}, + {AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, + {AND_OR_MINOR, LINEBREAK}, + {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, NEWLINE_LIST}, + {PIPE_SEQUENCE, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, + {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, {PIPELINE, LINEBREAK}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, + {PIPELINE, AND_OR_MAJOR}, + {AND_OR_MAJOR, LINEBREAK}, + {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, LINEBREAK}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, @@ -427,7 +452,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; -// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 745b48aa..ef0280e8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -27,7 +27,7 @@ int ft_parse2(t_btree **ast, t_list **token) while (*token) { produce_sym(*stack, new_sym, token); -// DG("new sym %s", read_state(*new_sym)); + DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else diff --git a/42sh/src/parser/old_parse.c b/42sh/src/parser/old_parse.c index 00969352..af5cb658 100644 --- a/42sh/src/parser/old_parse.c +++ b/42sh/src/parser/old_parse.c @@ -48,7 +48,6 @@ int ft_parse(t_btree **ast, t_list **start) { if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) { - DG("match : %s", read_state(g_parser[i].type)); if (g_parser[i].f) (*g_parser[i].f)(ast, start, &lst); return (0); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c5f415b6..ca1d7088 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -27,6 +27,8 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, CMD_NAME, CMD_SUFFIX}, {TK_N_WORD, LINEBREAK, CMD_NAME}, {TK_N_WORD, TK_PIPE, CMD_NAME}, + {TK_N_WORD, AND_OR, CMD_NAME}, + {TK_N_WORD, AND_OR_MAJOR, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, {TK_N_WORD, TK_BANG, CMD_NAME}, @@ -64,8 +66,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; -// DG("produce stack : %s && token : %s", read_state(stack), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(stack), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index dec9d797..89f4af57 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,8 +14,36 @@ char *read_state(t_sym current) { + if (current == AND_OR_MINOR) + return("AND_OR_MINOR"); + if (current == AND_OR_MAJOR) + return ("AND_OR_MAJOR"); + if (current == TK_COMMAND) + return ("TK_COMMAND"); + if (current == TK_AND_IF) + return ("TK_AND_IF"); + if (current == TK_OR_IF) + return ("TK_OR_IF"); + if (current == TK_AMP) + return ("TK_AMP"); + if (current == TK_PIPE) + return ("TK_PIPE"); + if (current == TK_LESS) + return ("TK_LESS"); + if (current == TK_GREAT) + return ("TK_GREAT"); if (current == TK_DLESS) return ("TK_DLESS"); + if (current == TK_DGREAT) + return ("TK_DGREAT"); + if (current == TK_DGREAT) + return ("TK_DGREAT"); + if (current == TK_LESSAND) + return ("TK_LESSAND"); + if (current == TK_GREATAND) + return ("TK_GREATAND"); + if (current == TK_SUBSHELL) + return ("TK_SUBSEHLL"); if (current == CMD_SUPERIOR) return ("CMD_SUPERIOR"); if (current == TK_IO_NUMBER) From 730773c375cdf8b0e803ee5926cdb19d39b0db26 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 17 Feb 2017 16:26:40 +0100 Subject: [PATCH 058/206] added yale examples --- 42sh/sample/yale0.ex | 1 + 42sh/sample/yale1.ex | 1 + 42sh/sample/yale2.ex | 1 + 42sh/sample/yale3.ex | 1 + 42sh/sample/yale5.ex | 1 + 5 files changed, 5 insertions(+) create mode 100644 42sh/sample/yale0.ex create mode 100644 42sh/sample/yale1.ex create mode 100644 42sh/sample/yale2.ex create mode 100644 42sh/sample/yale3.ex create mode 100644 42sh/sample/yale5.ex diff --git a/42sh/sample/yale0.ex b/42sh/sample/yale0.ex new file mode 100644 index 00000000..8d12c570 --- /dev/null +++ b/42sh/sample/yale0.ex @@ -0,0 +1 @@ +< A B | ( C 2> D & E < F ) > G ; H=I J K diff --git a/42sh/sample/yale1.ex b/42sh/sample/yale1.ex new file mode 100644 index 00000000..372d7e63 --- /dev/null +++ b/42sh/sample/yale1.ex @@ -0,0 +1 @@ +< A B | C | D | E > F diff --git a/42sh/sample/yale2.ex b/42sh/sample/yale2.ex new file mode 100644 index 00000000..71e5a6d8 --- /dev/null +++ b/42sh/sample/yale2.ex @@ -0,0 +1 @@ + A && B || C && D diff --git a/42sh/sample/yale3.ex b/42sh/sample/yale3.ex new file mode 100644 index 00000000..260a8b62 --- /dev/null +++ b/42sh/sample/yale3.ex @@ -0,0 +1 @@ +A ; B & C ; D || E diff --git a/42sh/sample/yale5.ex b/42sh/sample/yale5.ex new file mode 100644 index 00000000..4cd3a71e --- /dev/null +++ b/42sh/sample/yale5.ex @@ -0,0 +1 @@ +(A ; B &) | (C || D) && E From b0a3e63ffcb221ce5924f6dbcf047ba2624f5bd0 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 17 Feb 2017 17:15:58 +0100 Subject: [PATCH 059/206] modif redirect list --- 42sh/Makefile | 3 ++- 42sh/includes/.parser.h.swn | Bin 0 -> 16384 bytes 42sh/includes/parser.h | 4 +++- 42sh/sample/yale1.sh | 1 + 42sh/src/main/data_init.c | 2 +- 42sh/src/parser/add_cmd.c | 4 +++- 42sh/src/parser/add_file.c | 41 ++++++++++++++++++++++++++++++++ 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/aggregate_sym.c | 10 ++++---- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/eval_sym.c | 4 ++-- 42sh/src/parser/ft_parse.c | 4 ++-- 42sh/src/parser/parse_less.c | 2 +- 42sh/src/parser/produce_sym.c | 8 +++---- 42sh/src/parser/tree_wrapper.c | 3 ++- 15 files changed, 69 insertions(+), 21 deletions(-) create mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/sample/yale1.sh create mode 100644 42sh/src/parser/add_file.c diff --git a/42sh/Makefile b/42sh/Makefile index fa337596..a60aa4ea 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -198,7 +198,8 @@ parser/error_syntax.c\ parser/build_tree.c\ parser/tree_wrapper.c\ parser/add_sep.c\ -parser/add_cmd.c +parser/add_cmd.c\ +parser/add_file.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn new file mode 100644 index 0000000000000000000000000000000000000000..8b6d42c56e08e458f16249d4b76e08412a09d8c5 GIT binary patch literal 16384 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 VfykXdqvlrAbq=`oPQ6(({s(~*FP8uS literal 0 HcmV?d00001 diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index e226d0e5..2d66ee99 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/15 20:50:55 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:11:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -200,6 +200,8 @@ int build_tree(t_btree **ast, t_list **lst); int add_sep(t_btree **ast, t_list **lst); int add_cmd(t_btree **ast, t_list **lst); +int add_file(t_btree **ast, t_list **lst); +int isdir(t_btree **ast); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); diff --git a/42sh/sample/yale1.sh b/42sh/sample/yale1.sh new file mode 100644 index 00000000..05752234 --- /dev/null +++ b/42sh/sample/yale1.sh @@ -0,0 +1 @@ +< file1 ls | cat | cat | ls > file2 diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 6582e39b..bf178888 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/02/09 22:31:50 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:09:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 8d6f7ecd..2ad670f7 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/15 20:57:47 by ariard ### ########.fr */ +/* Updated: 2017/02/17 16:52:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,8 @@ int add_cmd(t_btree **ast, t_list **lst) if (!*ast) gen_node(ast); + else if (isdir(ast)) + return (add_file(ast, lst)); else return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c new file mode 100644 index 00000000..4eed48cc --- /dev/null +++ b/42sh/src/parser/add_file.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_file.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ +/* Updated: 2017/02/17 17:14:52 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int isdir(t_btree **ast) +{ + t_astnode *node; + + node = (*ast)->item; + if (node->data.redir.word.word) + return (0); + if (node->type == TK_LESS || node->type == TK_GREAT + || node->type == TK_LESSAND || node->type == TK_GREATAND + || node->type == TK_DGREAT || node->type == TK_LESSGREAT + || node->type == TK_CLOBBER) + return (1); + return (0); +} + +int add_file(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + DG("add file"); + token = (*lst)->content; + node = (*ast)->item; + node->data.redir.n = ft_atoi(token->data); + node->data.redir.word.word = ft_strdup(token->data); + return (0); +} diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 01dd18a6..3bbf1028 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/15 20:48:17 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:09:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index e7eabeca..2b1458bc 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/15 19:52:56 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:05:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -159,20 +159,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 60f50e24..8d1b1d64 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/15 20:51:50 by ariard ### ########.fr */ +/* Updated: 2017/02/17 16:39:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b7520b85..b27c1418 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/15 19:52:12 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:05:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -452,7 +452,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index ef0280e8..d8dc831d 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/15 20:40:28 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:05:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,7 +27,7 @@ int ft_parse2(t_btree **ast, t_list **token) while (*token) { produce_sym(*stack, new_sym, token); - DG("new sym %s", read_state(*new_sym)); +// DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else diff --git a/42sh/src/parser/parse_less.c b/42sh/src/parser/parse_less.c index 5faf5020..aaa9e994 100644 --- a/42sh/src/parser/parse_less.c +++ b/42sh/src/parser/parse_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 17:39:34 by ariard ### ########.fr */ +/* Updated: 2017/02/17 16:45:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index ca1d7088..c3405ea6 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/15 19:50:59 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:04:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,8 +66,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; - DG("produce stack : %s && token : %s", read_state(stack), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(stack), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -75,7 +75,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 31258f7e..0328eae4 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/15 20:56:38 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:14:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,7 @@ int gen_node(t_btree **ast) { *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; + ((t_astnode *)(*ast)->item)->data.redir.word.word = NULL; } return (0); } From 4ef7af6e2066bbe7476f5c5e05d3a6eaa678d141 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 17 Feb 2017 19:49:12 +0100 Subject: [PATCH 060/206] while error check doing --- 42sh/includes/.parser.h.swn | Bin 16384 -> 0 bytes 42sh/includes/parser.h | 2 +- 42sh/sample/while.sh | 29 +----------------- 42sh/sample/yale1.sh | 2 +- 42sh/src/lexer/ft_lexer.c | 6 ++-- 42sh/src/lexer/ft_post_tokenize.c | 11 +++---- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 4 +-- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/.eval_sym.c.swn | Bin 0 -> 28672 bytes 42sh/src/parser/.read_stack.c.swn | Bin 0 -> 20480 bytes 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_file.c | 2 +- 42sh/src/parser/aggregate_sym.c | 37 +++++++++++++++-------- 42sh/src/parser/build_tree.c | 6 ++-- 42sh/src/parser/eval_sym.c | 22 ++++++++++++-- 42sh/src/parser/ft_parse.c | 28 ++++++++++++++---- 42sh/src/parser/produce_sym.c | 9 +++++- 42sh/src/parser/read_stack.c | 44 +++++++++++++++------------- 42sh/src/parser/tree_wrapper.c | 2 +- 42sh/test.sh | 1 + 21 files changed, 121 insertions(+), 90 deletions(-) delete mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/.read_stack.c.swn diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn deleted file mode 100644 index 8b6d42c56e08e458f16249d4b76e08412a09d8c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 VfykXdqvlrAbq=`oPQ6(({s(~*FP8uS diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 2d66ee99..d40032d1 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/17 17:11:45 by ariard ### ########.fr */ +/* Updated: 2017/02/17 18:49:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 4dd61c2f..fe11d2e0 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,28 +1 @@ -while ls -do - while ls - do - while ls - do - while ls - do - while ls - do - while ls - do - echo hello - done - done - done - done - done - ls - while ls - do - while ls - do - echo world - done - done - pwd -done +ls | cat | cat | cat | cat | cat diff --git a/42sh/sample/yale1.sh b/42sh/sample/yale1.sh index 05752234..8b137891 100644 --- a/42sh/sample/yale1.sh +++ b/42sh/sample/yale1.sh @@ -1 +1 @@ -< file1 ls | cat | cat | ls > file2 + diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 2063e7dd..54c390d0 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/10 01:24:32 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:28:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ int ft_lexer(t_list **alst, char **command) ret = 1; else if (ft_tokenize(alst, *command, DEFAULT)) ret = 1; -// else if (ft_post_tokenize(alst, command)) -// ret = 1; + else if (ft_post_tokenize(alst, command)) + ret = 1; ft_strdel(command); return (ret); } diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index f951fe2b..dfb0b406 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/02/04 15:54:27 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:28:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,13 @@ int ft_post_tokenize(t_list **alst, char **str) { - int ret; - t_flag tk; +// int ret; +// t_flag tk; + (void)str; // token_print(*alst); get_reserved_words(alst); - while ((ret = reduce_parens(alst, *str))) +/* while ((ret = reduce_parens(alst, *str))) if (ret == -1) { ft_dprintf(2, "{red}%s: parse error near '('{eoc}\n", SHELL_NAME); @@ -38,5 +39,5 @@ int ft_post_tokenize(t_list **alst, char **str) return (-1); } DG("new command from bquotes: '%s'", *str); - return (0); +*/ return (0); } diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 26b35eca..54b6a9cc 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/09 21:55:06 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:28:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 8e05c32c..d09cf09e 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/10 01:13:35 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:30:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ int get_reserved_words(t_list **alst) temp = *alst; previous_token = NULL; while (temp) - { + { token = temp->content; if (!previous_token || (previous_token->type & RW_SEP)) { diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 2d2829b0..d7273002 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/15 20:58:03 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:22:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..4e796003c942536ebc1b2c15270f3fc07d31994a GIT binary patch literal 28672 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/17 16:52:22 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:46:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c index 4eed48cc..1eed2a89 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_file.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:14:52 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:19:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 2b1458bc..3f0a83d2 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:05:00 by ariard ### ########.fr */ +/* Updated: 2017/02/17 19:48:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,9 +19,10 @@ t_aggrematch g_aggrematch[] = {TK_WORD, WORDLIST, WORDLIST, 0}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, - {TK_FI, ELSE_PART, IF_CLAUSE, IF}, - {TK_FI, COMPOUND_LIST, IF_CLAUSE, IF}, - {TK_DONE, COMPOUND_LIST, DO_GROUP, DO}, + {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, + {TK_FI, COMPOUND_LIST, IF_CLAUSE, TK_IF}, + {TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO}, + {TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO}, //Esac ? {TK_ESAC, CASE_LIST, CASE_CLAUSE, TK_CASE}, {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, @@ -31,7 +32,10 @@ t_aggrematch g_aggrematch[] = {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, {TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, //watch this - {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 0}, + {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, + {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, + {SEPARATOR, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI}, @@ -45,6 +49,9 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {LINEBREAK, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, + {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, + {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0}, @@ -94,18 +101,20 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, TK_BANG, CMD_SUPERIOR, 0}, {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, {SIMPLE_COMMAND, ALL, COMMAND, 0}, {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, TK_FOR}, + {DO_GROUP, CMD_SUPERIOR, LOOP, CMD_SUPERIOR}, {DO_GROUP, COMPOUND_LIST, LOOP, COMPOUND_LIST}, - {LOOP, WHILE, WHILE_CLAUSE, WHILE}, - {LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL}, {BRACE_GROUP, ALL, COMPOUND_COMMAND, 0}, {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, 0}, {FUNCTION_DEFINITION, ALL, COMMAND, 0}, + {LOOP, TK_WHILE, WHILE_CLAUSE, TK_WHILE}, + {LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL}, {UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {WHILE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF}, @@ -126,22 +135,26 @@ t_aggrematch g_aggrematch[] = {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, - {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, + {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, + {PIPELINE, TK_WHILE, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, + {AND_OR, TK_WHILE, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, @@ -159,20 +172,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 8d1b1d64..43f5bb4b 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/17 16:39:38 by ariard ### ########.fr */ +/* Updated: 2017/02/17 18:48:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,8 +36,8 @@ int build_tree(t_btree **ast, t_list **lst) if (g_treematch[i].type == token->type) { - DG("func TK : '%s' TK : '%s'", - read_state(g_treematch[i].type) ,read_state(token->type)); +// DG("func TK : '%s' TK : '%s'", +// read_state(g_treematch[i].type) ,read_state(token->type)); return (g_treematch[i].add(ast, lst)); } i++; diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b27c1418..709f9a91 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:05:11 by ariard ### ########.fr */ +/* Updated: 2017/02/17 19:43:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -175,9 +175,11 @@ t_stackmatch g_stackmatch[] = {TK_ELIF, COMPOUND_LIST}, {TK_FI, ELSE_PART}, {TK_FI, COMPOUND_LIST}, + {TK_DO, CMD_SUPERIOR}, {TK_DO, COMPOUND_LIST}, {TK_DO, NAME}, {TK_DO, SEQUENTIAL_SEP}, + {TK_DONE, CMD_SUPERIOR}, {TK_DONE, COMPOUND_LIST}, {TK_CASE, LINEBREAK}, {TK_CASE, TK_BANG}, @@ -236,8 +238,10 @@ t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, + {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, + {SEPARATOR_OP, CMD_SUPERIOR}, {SEPARATOR_OP, LIST}, {SEPARATOR_OP, TERM}, {SEPARATOR_OP, COMPOUND_LIST}, @@ -253,6 +257,9 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, COMPLETE_COMMANDS}, {LINEBREAK, CMD_SUPERIOR}, {LINEBREAK, PIPE_SEMI_SEQUENCE}, + {LINEBREAK, COMPOUND_LIST}, + {NEWLINE_LIST, TK_DO}, + {NEWLINE_LIST, CMD_NAME}, {NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NAME}, {NEWLINE_LIST, IN}, @@ -319,7 +326,11 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, PIPE_SEMI_SEQUENCE}, {CMD_NAME, AND_OR_MAJOR}, + {CMD_NAME, TK_WHILE}, + {CMD_NAME, TK_DO}, + {CMD_SUPERIOR, TK_WHILE}, + {CMD_SUPERIOR, TK_DO}, {CMD_SUPERIOR, LINEBREAK,}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, @@ -328,12 +339,14 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, PIPE_SEMI_SEQUENCE}, {CMD_SUPERIOR, AND_OR_MAJOR}, + {SIMPLE_COMMAND, TK_WHILE}, {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, {SIMPLE_COMMAND, PIPE_SEMI_SEQUENCE}, {SIMPLE_COMMAND, AND_OR_MAJOR}, + {DO_GROUP, CMD_SUPERIOR}, {DO_GROUP, COMPOUND_LIST}, {DO_GROUP, NAME}, {DO_GROUP, SEQUENTIAL_SEP}, @@ -412,6 +425,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, NEWLINE_LIST}, {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, FUNC}, + {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, @@ -421,22 +435,26 @@ t_stackmatch g_stackmatch[] = {AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK}, {AND_OR_MINOR, AND_OR_MAJOR}, + {PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, NEWLINE_LIST}, {PIPE_SEQUENCE, AND_OR_MAJOR}, + {PIPE_SEMI_SEQUENCE, TK_WHILE}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, + {PIPELINE, TK_WHILE}, {PIPELINE, LINEBREAK}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, {PIPELINE, AND_OR_MAJOR}, {AND_OR_MAJOR, LINEBREAK}, {AND_OR_MAJOR, AND_OR_MAJOR}, + {AND_OR, TK_WHILE}, {AND_OR, LINEBREAK}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, @@ -452,7 +470,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; -// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index d8dc831d..7e00865d 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,20 +6,33 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:05:21 by ariard ### ########.fr */ +/* Updated: 2017/02/17 19:48:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" +static void insert_linebreak(t_list **lst) +{ + t_token *token; + + token = (*lst)->content; + token->type = LINEBREAK; +} + +static int end_instruction(t_sym sym) +{ + if (sym == CMD_SUPERIOR || sym == PIPE_SEMI_SEQUENCE) + return (1); + return (0); +} + int ft_parse2(t_btree **ast, t_list **token) { t_sym *new_sym; t_sym *stack; t_parstate state; -//to delete - (void)ast; state = UNDEFINED; new_sym = ft_memalloc(sizeof(t_sym)); stack = ft_memalloc(sizeof(t_sym) * 1000); @@ -27,11 +40,11 @@ int ft_parse2(t_btree **ast, t_list **token) while (*token) { produce_sym(*stack, new_sym, token); -// DG("new sym %s", read_state(*new_sym)); + DG("new sym %s", read_state(*new_sym)); if (eval_sym(*stack, *new_sym)) state = ERROR; else - { + { aggregate_sym(&stack, new_sym, &state); push_stack(++stack, *new_sym); } @@ -44,7 +57,10 @@ int ft_parse2(t_btree **ast, t_list **token) if (state == SUCCESS) ft_putstr("success"); build_tree(ast, token); - ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); + if (end_instruction(*stack) && !(*token)->next) + insert_linebreak(token); + else + ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c3405ea6..6b70555f 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:04:44 by ariard ### ########.fr */ +/* Updated: 2017/02/17 19:48:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,8 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, TK_PIPE, CMD_NAME}, {TK_N_WORD, AND_OR, CMD_NAME}, {TK_N_WORD, AND_OR_MAJOR, CMD_NAME}, + {TK_N_WORD, TK_WHILE, CMD_NAME}, + {TK_N_WORD, TK_DO, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, {TK_N_WORD, TK_BANG, CMD_NAME}, @@ -46,13 +48,18 @@ t_prodmatch g_prodmatch[] = {TK_NAME, SEPARATOR_OP, FNAME}, {TK_NAME, NEWLINE_LIST, FNAME}, {TK_NAME, TK_FOR, NAME}, + {TK_NEWLINE, TK_DO, NEWLINE_LIST}, + {TK_NEWLINE, CMD_NAME, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, + {TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST}, + {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, {TK_SEMI, COMPOUND_LIST, SEPARATOR_OP}, + {TK_AMP, CMD_SUPERIOR, SEPARATOR_OP}, {TK_AMP, TERM, SEPARATOR_OP}, {TK_AMP, LIST, SEPARATOR_OP}, {TK_AMP, COMPOUND_LIST, SEPARATOR_OP}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 89f4af57..893f9f94 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:40:40 by ariard ### ########.fr */ +/* Updated: 2017/02/17 19:40:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,26 @@ char *read_state(t_sym current) { + if (current == SEQUENTIAL_SEP) + return ("SEQUENTIAL_SEP"); + if (current == SEPARATOR) + return ("SEPARATOR"); + if (current == SEPARATOR_OP) + return ("SEPARATOR_OP"); + if (current == TERM) + return ("TERM"); + if (current == COMPOUND_LIST) + return ("COMPOUND_LIST"); + if (current == DO_GROUP) + return ("DO_GROUP"); + if (current == TK_NEWLINE) + return ("TK_NEWLINE"); + if (current == TK_WHILE) + return ("TK_WHILE"); + if (current == TK_DO) + return ("TK_DO"); + if (current == TK_DONE) + return ("TK_DONE"); if (current == AND_OR_MINOR) return("AND_OR_MINOR"); if (current == AND_OR_MAJOR) @@ -92,27 +112,9 @@ char *read_state(t_sym current) return ("TK_SEMI"); if (current == ALL) return ("ALL"); -/* if (current == NEWLINE_LIST) + if (current == NEWLINE_LIST) return ("NEWLINE_LIST"); - if (current == SYM_DLESS) - return ("DLESS"); - if (current == SYM_DGREAT) - return ("DGREAT"); - if (current == SYM_GREATAND) - return ("GREATAND"); -*/ if (current == TK_GREAT) - return ("GREAT"); - if (current == TK_LESS) - return ("LESS"); -/* if (current == SYM_LESSAND) - return ("LESSAND"); - if (current == SYM_LESS) - return ("LESS"); - if (current == SIMPLE_COMMAND) - return ("SIMPLE_COMMAND"); - if (current == PROGRAM) - return ("PROGRAM"); -*/ if (current == LINEBREAK) + if (current == LINEBREAK) return ("LINEBREAK"); if (current != 0) return ("NON-DEFINED"); diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 0328eae4..56235151 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:14:34 by ariard ### ########.fr */ +/* Updated: 2017/02/17 17:19:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/test.sh b/42sh/test.sh index e69de29b..27c1ef0f 100644 --- a/42sh/test.sh +++ b/42sh/test.sh @@ -0,0 +1 @@ +ls | From 96e439b6520c7e6df2ea5bedfef22e12acbd4365 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 17 Feb 2017 23:43:44 +0100 Subject: [PATCH 061/206] parsing while simple ok --- 42sh/Makefile | 3 +- 42sh/file1 | 2 + 42sh/includes/parser.h | 7 ++- 42sh/sample/dir.sh | 1 + 42sh/sample/while.sh | 5 +- 42sh/src/glob/lib_perso/ft_ld_back.c | 2 +- 42sh/src/glob/lib_perso/ft_ld_pushback.c | 2 +- 42sh/src/main/ft_putast.c | 4 +- 42sh/src/main/shell_script.c | 4 +- 42sh/src/parser/.eval_sym.c.swn | Bin 28672 -> 0 bytes 42sh/src/parser/.read_stack.c.swn | Bin 20480 -> 20480 bytes 42sh/src/parser/add_cmd.c | 18 +++++-- 42sh/src/parser/add_file.c | 2 +- 42sh/src/parser/add_loop.c | 59 +++++++++++++++++++++++ 42sh/src/parser/add_sep.c | 7 ++- 42sh/src/parser/aggregate_sym.c | 21 ++++++-- 42sh/src/parser/build_tree.c | 9 ++-- 42sh/src/parser/eval_sym.c | 22 ++++++++- 42sh/src/parser/ft_parse.c | 3 +- 42sh/src/parser/produce_sym.c | 5 +- 42sh/src/parser/read_stack.c | 8 ++- 42sh/src/parser/tree_wrapper.c | 3 +- 22 files changed, 158 insertions(+), 29 deletions(-) create mode 100644 42sh/sample/dir.sh delete mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/add_loop.c diff --git a/42sh/Makefile b/42sh/Makefile index a60aa4ea..2012337d 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -199,7 +199,8 @@ parser/build_tree.c\ parser/tree_wrapper.c\ parser/add_sep.c\ parser/add_cmd.c\ -parser/add_file.c +parser/add_file.c\ +parser/add_loop.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/file1 b/42sh/file1 index e75bc531..3e9b5839 100644 --- a/42sh/file1 +++ b/42sh/file1 @@ -1,3 +1,4 @@ +42sh Makefile blind.text debug @@ -5,6 +6,7 @@ file1 grammar includes libft +objs pdf sample script.sh diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index d40032d1..1be71b53 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/17 18:49:28 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:18:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -120,6 +120,7 @@ enum e_sym CMD_SUPERIOR, AND_OR_MAJOR, AND_OR_MINOR, + END_COMMAND, ALL = 200, }; @@ -201,6 +202,9 @@ int build_tree(t_btree **ast, t_list **lst); int add_sep(t_btree **ast, t_list **lst); int add_cmd(t_btree **ast, t_list **lst); int add_file(t_btree **ast, t_list **lst); +int add_loop_cmd(t_btree **ast, t_list **lst); +int add_loop_sep(t_btree **ast, t_list **lst); +int isloop(t_btree **ast); int isdir(t_btree **ast); int join_ast(t_btree **ast, t_btree **new_node); @@ -245,6 +249,7 @@ union u_astdata t_ld *token; char **sstr; char *str; + int loop; }; struct s_astnode diff --git a/42sh/sample/dir.sh b/42sh/sample/dir.sh new file mode 100644 index 00000000..f413e465 --- /dev/null +++ b/42sh/sample/dir.sh @@ -0,0 +1 @@ +file1 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/16 16:23:26 by wescande #+# #+# */ -/* Updated: 2017/01/05 14:16:53 by wescande ### ########.fr */ +/* Updated: 2017/02/17 23:31:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/lib_perso/ft_ld_pushback.c b/42sh/src/glob/lib_perso/ft_ld_pushback.c index 25a1d019..5ec29624 100644 --- a/42sh/src/glob/lib_perso/ft_ld_pushback.c +++ b/42sh/src/glob/lib_perso/ft_ld_pushback.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/16 15:59:38 by wescande #+# #+# */ -/* Updated: 2017/01/05 14:17:40 by wescande ### ########.fr */ +/* Updated: 2017/02/17 23:33:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 2b5e4e7b..c4d1f46c 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/06 20:37:16 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:41:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,8 @@ char *ft_putast(void *nodein) t_type type; }; node = nodein; + if (node->type == TK_DO) + return ("TK_DO"); if (node->type == TK_AMP) return (" & "); else if (node->type == TK_N_WORD) diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index d7273002..5b907c72 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:22:03 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:27:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,7 @@ int shell_script() token_print(token); if (ft_parse2(&ast, &token)) return (1); - btree_print(STDBUG, ast, &ft_putast); +// btree_print(STDBUG, ast, &ft_putast); // if (ft_exec(&ast)) // return (1); ast = NULL; diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn deleted file mode 100644 index 4e796003c942536ebc1b2c15270f3fc07d31994a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 Ym`J-LM-6eTGH~COU0hUTbL6a*-y#mPs{jB1 delta 1068 zcmXZaeMnPL7{~Evy0w?oJ0nBXauPz|+l*ySNegS1VT#d*FoMqn=}krJpCL6HP23TaFTN&7B#;B(Kpm*;TqIp-G$8UjH>`hMrm zE!B?Ve5cUtA_En7b{{KpNLQ;oNRKFnWooiL)8JJL?U~j^(HdH-R&VcD67v^}+(L93 zWsXXJPJ&1h!hHP*Jyvmz{v4W73pcWnfLWW!6owE)I}V`+E@U7MKdd6}FoYgl!b$9d z2L)E~OA3Q|i^x}u;y$`@76;%#E)+z}B9nNEn>dfdsD%sZm}kq=7{wqi<2ZI<16E-P z{+L+PMLt8v4Yc7X>QIU-*f0|>@*X;FqaDrIhGMKlGQx43 z9(44q=Fx@IXhI#2Z0A z$Rk9rm~H-Ve|i6a*LZ;^h}H}$TBE&PQNNW{`5O;%Cj6exmZNjMvAN%=n~cr5PTz(j zs6i1jV8X8?*1&W0qXRzdfE&wUL?}^Y9FGyi1^5yPLIZ=1$UzF`NaZv}prIQ9G@%-W zNW~n9{DNWJ#YLRJc9dcTObC(4F=)7o0KD)Z+eQ!)7|fE!Pk4oU=*AiBK?QQL6bqy= zgb6&v6||rZYmo&rW=P}&o}mYwXhA*P$Ur=PMx!}}m*_ +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:46:18 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:40:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,18 +18,26 @@ int add_cmd(t_btree **ast, t_list **lst) t_astnode *node; char **my_tab; + DG("add cmd"); if (!*ast) gen_node(ast); else if (isdir(ast)) - return (add_file(ast, lst)); + return (add_file(ast, lst)); + else if (isloop(ast)) + return (add_loop_cmd(ast, lst)); else return (add_cmd(&(*ast)->right, lst)); + DG("insert data cmd"); my_tab = NULL; token = (*lst)->content; node = (*ast)->item; node->type = token->type; - my_tab = ft_sstradd(my_tab, token->data); - my_tab = ft_sstradd(my_tab, (char *)token->esc); - ft_ld_pushback(&node->data.token, my_tab); + if (token->type == TK_N_WORD) + { + my_tab = ft_sstradd(my_tab, token->data); + my_tab = ft_sstradd(my_tab, (char *)token->esc); +// ft_ld_pushback(&node->data.token, my_tab); + DG("still alive"); + } return (0); } diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c index 1eed2a89..23660275 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_file.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:19:35 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:24:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c new file mode 100644 index 00000000..2709e6f6 --- /dev/null +++ b/42sh/src/parser/add_loop.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_loop.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ +/* Updated: 2017/02/17 23:38:25 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int isloop(t_btree **ast) +{ + t_astnode *node; + + node = NULL; + if (*ast) + { + DG("end isloop"); + node = (*ast)->item; + if (node->data.loop == 1) + return (2); + if (node->type == TK_WHILE) + return (1); + } + return (0); +} + +int add_loop_cmd(t_btree **ast, t_list **lst) +{ + t_token *token; + t_astnode *node; + + DG("add loop cmd"); + token = (*lst)->content; + node = (*ast)->item; + if (token->type == TK_DONE) + return ((node->data.loop = 1)); + else if (token->type == TK_DO) + return (add_cmd(&(*ast)->right, lst)); + else if (!(*ast)->right && isloop(&(*ast)->left) != 2) + return (add_cmd(&(*ast)->left, lst)); + else + return (add_cmd(&(*ast)->right, lst)); + return (0); +} + +int add_loop_sep(t_btree **ast, t_list **lst) +{ + DG("add loop sep"); + if (!(*ast)->right) + return (add_sep(&(*ast)->left, lst)); + else + return (add_sep(&(*ast)->right, lst)); + return (0); +} diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 3bbf1028..a7cb461a 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:09:31 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:34:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,9 @@ int add_sep(t_btree **ast, t_list **lst) t_astnode *node; t_btree *new_node; + DG("add sep"); + if (isloop(&(*ast)->right) == 1 || isloop(ast)) + return (add_loop_sep(ast, lst)); new_node = NULL; gen_node(&new_node); join_ast(ast, &new_node); @@ -25,4 +28,4 @@ int add_sep(t_btree **ast, t_list **lst) node = (new_node)->item; node->type = token->type; return (0); -} +} diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 3f0a83d2..3315be3c 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/17 19:48:12 by ariard ### ########.fr */ +/* Updated: 2017/02/17 21:35:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,7 +34,7 @@ t_aggrematch g_aggrematch[] = //watch this {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, - {SEPARATOR, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {SEPARATOR, CMD_SUPERIOR, END_COMMAND, CMD_SUPERIOR}, {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI}, @@ -47,7 +47,7 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, - {LINEBREAK, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {LINEBREAK, CMD_SUPERIOR, SEPARATOR_OP, 0}, {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, @@ -102,6 +102,8 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_DO, CMD_SUPERIOR, 0}, + {CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, @@ -130,31 +132,44 @@ t_aggrematch g_aggrematch[] = {TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK}, {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, + {COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_DO, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, + {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, + {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, + {PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0}, {PIPELINE, TK_WHILE, AND_OR, 0}, + {PIPELINE, TK_DO, AND_OR, 0}, + {PIPELINE, COMPOUND_LIST, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, + {AND_OR, TK_DO, COMPOUND_LIST, 0}, {AND_OR, TK_WHILE, COMPOUND_LIST, 0}, + {AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 43f5bb4b..df2a2152 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/17 18:48:56 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:34:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,9 @@ t_treematch g_treematch[] = {TK_LESS, &add_sep}, {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, + {TK_WHILE, &add_cmd}, + {TK_DO, &add_cmd}, + {TK_DONE, &add_cmd}, {0, NULL}, }; @@ -36,8 +39,8 @@ int build_tree(t_btree **ast, t_list **lst) if (g_treematch[i].type == token->type) { -// DG("func TK : '%s' TK : '%s'", -// read_state(g_treematch[i].type) ,read_state(token->type)); + DG("func TK : '%s' TK : '%s'", + read_state(g_treematch[i].type) ,read_state(token->type)); return (g_treematch[i].add(ast, lst)); } i++; diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 709f9a91..77833aa1 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/17 19:43:28 by ariard ### ########.fr */ +/* Updated: 2017/02/17 21:35:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -181,6 +181,7 @@ t_stackmatch g_stackmatch[] = {TK_DO, SEQUENTIAL_SEP}, {TK_DONE, CMD_SUPERIOR}, {TK_DONE, COMPOUND_LIST}, + {TK_DONE, END_COMMAND}, {TK_CASE, LINEBREAK}, {TK_CASE, TK_BANG}, {TK_CASE, NEWLINE_LIST}, @@ -238,6 +239,10 @@ t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, + {END_COMMAND, PIPE_SEMI_SEQUENCE}, + {END_COMMAND, TK_WHILE}, + {END_COMMAND, TK_DO}, + {END_COMMAND, LINEBREAK}, {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, @@ -328,9 +333,11 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, TK_WHILE}, {CMD_NAME, TK_DO}, + {CMD_NAME, COMPOUND_LIST}, {CMD_SUPERIOR, TK_WHILE}, {CMD_SUPERIOR, TK_DO}, + {CMD_SUPERIOR, COMPOUND_LIST}, {CMD_SUPERIOR, LINEBREAK,}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, @@ -340,6 +347,8 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, AND_OR_MAJOR}, {SIMPLE_COMMAND, TK_WHILE}, + {SIMPLE_COMMAND, TK_DO}, + {SIMPLE_COMMAND, COMPOUND_LIST}, {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, @@ -414,6 +423,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, TK_ELIF}, {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, TK_IF}, + {COMPOUND_LIST, COMPOUND_LIST}, {SUBSHELL, LINEBREAK}, {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, @@ -427,6 +437,8 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, FUNC}, {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, + {COMMAND, TK_DO}, + {COMMAND, COMPOUND_LIST}, {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, {COMMAND, NEWLINE_LIST}, @@ -436,25 +448,33 @@ t_stackmatch g_stackmatch[] = {AND_OR_MINOR, LINEBREAK}, {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, + {PIPE_SEQUENCE, TK_DO}, + {PIPE_SEQUENCE, COMPOUND_LIST}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, NEWLINE_LIST}, {PIPE_SEQUENCE, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, TK_WHILE}, + {PIPE_SEMI_SEQUENCE, TK_DO}, + {PIPE_SEMI_SEQUENCE, COMPOUND_LIST}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, {PIPELINE, TK_WHILE}, + {PIPELINE, TK_DO}, + {PIPELINE, COMPOUND_LIST}, {PIPELINE, LINEBREAK}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, {PIPELINE, AND_OR_MAJOR}, {AND_OR_MAJOR, LINEBREAK}, {AND_OR_MAJOR, AND_OR_MAJOR}, + {AND_OR, TK_DO}, {AND_OR, TK_WHILE}, + {AND_OR, COMPOUND_LIST}, {AND_OR, LINEBREAK}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 7e00865d..f56dd3fb 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/17 19:48:01 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:39:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -57,6 +57,7 @@ int ft_parse2(t_btree **ast, t_list **token) if (state == SUCCESS) ft_putstr("success"); build_tree(ast, token); + btree_print(STDBUG, *ast, &ft_putast); if (end_instruction(*stack) && !(*token)->next) insert_linebreak(token); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 6b70555f..af01c929 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/17 19:48:06 by ariard ### ########.fr */ +/* Updated: 2017/02/17 21:29:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, AND_OR_MAJOR, CMD_NAME}, {TK_N_WORD, TK_WHILE, CMD_NAME}, {TK_N_WORD, TK_DO, CMD_NAME}, + {TK_N_WORD, COMPOUND_LIST, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, {TK_N_WORD, TK_BANG, CMD_NAME}, @@ -58,11 +59,9 @@ t_prodmatch g_prodmatch[] = {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, - {TK_SEMI, COMPOUND_LIST, SEPARATOR_OP}, {TK_AMP, CMD_SUPERIOR, SEPARATOR_OP}, {TK_AMP, TERM, SEPARATOR_OP}, {TK_AMP, LIST, SEPARATOR_OP}, - {TK_AMP, COMPOUND_LIST, SEPARATOR_OP}, {0, 0, 0}, }; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 893f9f94..8068646c 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/17 19:40:45 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:40:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,12 @@ char *read_state(t_sym current) { + if (current == TK_DONE) + return ("DONE"); + if (current == TK_DO) + return ("TK_DO"); + if (current == END_COMMAND) + return ("END_COMMAND"); if (current == SEQUENTIAL_SEP) return ("SEQUENTIAL_SEP"); if (current == SEPARATOR) diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 56235151..6d3d6d36 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:19:41 by ariard ### ########.fr */ +/* Updated: 2017/02/17 23:38:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,7 @@ int gen_node(t_btree **ast) *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; ((t_astnode *)(*ast)->item)->data.redir.word.word = NULL; + ((t_astnode *)(*ast)->item)->data.loop = 0; } return (0); } From 6609e3b8d9594590f1fed35cd4be20a92734351b Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sat, 18 Feb 2017 20:10:42 +0100 Subject: [PATCH 062/206] while one nest ok --- 42sh/includes/.parser.h.swn | Bin 0 -> 16384 bytes 42sh/includes/parser.h | 6 +++-- 42sh/sample/while.sh | 8 +++++-- 42sh/src/parser/.read_stack.c.swn | Bin 20480 -> 0 bytes 42sh/src/parser/add_cmd.c | 6 ++--- 42sh/src/parser/add_file.c | 3 +-- 42sh/src/parser/add_loop.c | 37 ++++++++++++++++++++++-------- 42sh/src/parser/add_sep.c | 17 +++++++++----- 42sh/src/parser/aggregate_sym.c | 9 ++++---- 42sh/src/parser/build_tree.c | 22 ++++++++++++++---- 42sh/src/parser/eval_sym.c | 6 ++++- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 8 +++---- 42sh/src/parser/read_stack.c | 8 ++++++- 42sh/src/parser/tree_wrapper.c | 7 ++++-- 42sh/test.sh | 1 - 16 files changed, 96 insertions(+), 44 deletions(-) create mode 100644 42sh/includes/.parser.h.swn delete mode 100644 42sh/src/parser/.read_stack.c.swn delete mode 100644 42sh/test.sh diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn new file mode 100644 index 0000000000000000000000000000000000000000..ccd9ee3b6c7158678ac574c293719a7fc2be918f GIT binary patch literal 16384 zcmeI2dyHIF8Ne@9gaHbrjm98^Yd3}NwB5(>u$e8$?983rDf8+)+A4wT?983r+0M=k z_s-BZAc_J;X+aWvpd=!R3I-!42E?d;K#gD&VuJOZphPqV5?>Jv5dEEVA9H8fwm8cl z8t?4>=AOrQzVn^$oO|xQ-<`RM-KmVaeQZMEvrbXY`TYHRPtT~z#tkPa6|+$>Yog-# zA0uLJ??fiXE{=@V&EtsPXe%7go9#uT+O@_nj#vxhjaIeUs~OgKr(#-$Iks>d4MA1l zfxrVpd7#&=Z`;0BxhOIzPxX#w@Ic^!|3VK`c)u^6_5UdX0KETqpZ~vpmZDq(YvDU*D#|`M2cBH3Ck(tLbw1n!8!0wI2B$wT~Yo5&%>|aX?P62315YK;V$?%d>A^Q zLlHFC4%=W8ybCr!2u^~RPE(W@;dgKpehA-%``|Nh7;c6h)L{=~K!Yh5gN^VGI2~RI zDas$=8Tc_Afk)v1_yQb)o8VelgsWjU?1Ch0hpliPoDFN>^q1$Y*I0*}Fia1Y!C zx5D+X2s)Ht2BHv#b74K40o1540^X^6pja4x*~R@%e&;3n7&>)tuE4YyO{x=Pch;21s1F?Y;%tylGTHz4ir%<)Il z@;g=jbO=M|x~72{;fmE2hOOv3=0J)^PAqR6=o)5AI92$1snV@3sPn$eRaY}1-Gd#2 zwWL~Ivsdk^majhKZ;9v!rxa1dy6ClPhUw+H?aq{Py<%$!`86ntXM^yOYl4?v*#fUx zOpe>k-+#!NJ=cPe9H7jJ;e_OB8!*XJO;H_HMDs{P; zYG}}J*g5F9zTW=4pjs7va26>Yj;PMLpNW;?vwE=FNp+OiX(pol_5lIR~&Q2AyM5>_0 zMLRd?>aoX=Os4iyDKhy2`=XoKlPicGM7g84n9AhSn$JavoIX>?m4)@wg;-qka!IF! z7;-6<%j(m)#QTu)@^S-Ci7HCV*-|R4$J4R0bl#p>jPGZ)bWziBhZsRB*)MloPN{IZ zo+@b>JzMl=-L!Cp|qjw9?LAYb0FT=pwC^JYUOUEh|GhU&zfAVi^|jq+GzIEA@m}bySfo z$T_joXi4X zlnWOz$8)5nW7!#QmqgoGv6!04Y8fqC(#68U*z zq@7ASLoUr~V)D@H)+BP$!J?m>T_cy5opjDCJL8*1q^Eb4b0w!A7N5qcozA%(+XcD2 z+gU6lP61l6THKDsl)7m#(@rPe>`2GjI}HtmYrRZjxzp{ozEUA>7xtHzSW45()|Fy8 zY~^ZXw0cV+c}eDODLk&IVgA*;_>r!f&lOX9)p@hBv{W&b@vzuao!{}Q86O-y>BszIX^pcB( z!o`J3v)(pqeU&3yghtglc;&7_ui%X&wxGrNL!6Yak*jd}V6<<=jz#W*uBe)omNnKk z=P&okJ4vZzOVrim)9EUFeVY@M2yK0h*y(6@70P=#el>mqHU8@8mZ+U|686DW=$CxM z>1fndNlJWZxhjP#^=vDAv(A$+C*8Orp8wbI{PYyhSK|4<$w7Sn#dH6w@Ekk~zky%F zlkfw06z+gSa2r%%4z7Ur!r8D6eoxHc+i*Kv17olrULt<*4>$r}hA+W=@F})=c{8D1t%@F(~Kh#16C zcm|HZ!*D;`19!t`;bU+M+zk6+5w3!rFat>#h0X99F@sm(=Wr){5^`_`JjJvB9gv50 z@HEfwham@R;YU1!ABJ7D6xPcN82N(>N5D75-!4qGgrDik@VnVcO5;;Su6JJ@mi4&=kMi@;? z$h*D1;U4A1T{oJI`tYr5ZE5R}eb?H<_q-ab_b)V>t8iI=j)ok!)ti&|@WYROKR2$! zw<%x5LP$40qa*UG_De5Gx_^)eokI zMD&oX3?7E+y=K$Pv<$0DB+(c8MMbM!GwfKge5*iET||oQbl9?U?7g*+{Zc@7WE!=G z8Is>3Y};$$u~1KJ?ZOr}@+?ltkoa;9s5aY{XIg6@;45|64W;3A(a1K!*3j=oM4B WMeV%Rq;6A9W53zxHd^y?W&Il#l4(T% literal 0 HcmV?d00001 diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 1be71b53..b0613516 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/17 23:18:23 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:06:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -249,11 +249,13 @@ union u_astdata t_ld *token; char **sstr; char *str; - int loop; }; struct s_astnode { + + int nest; + int full; t_type type; t_astdata data; }; diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 6bad207e..c6a6867c 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,4 +1,8 @@ -while ls | cat ; +while ls do - pwd | cat ; + while ls + do + pwd + done + pwd ; ls done diff --git a/42sh/src/parser/.read_stack.c.swn b/42sh/src/parser/.read_stack.c.swn deleted file mode 100644 index 2644ddb72a32e6e9d3b52647d0d621c9feb27d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI3dx%`s9mh|av^v^o&{nX5x$ain-MBlmlZ2#`L^8X3lXT3srAU z8U}CmxVLR-a{I)V_(a1S;QCEJVKna@x}jccHKSYN&G~54t3{WpUbF5+y?S-7(ri_0 z2PbL+@>r8qz$$Qx3M{u8-%?{EyQ~u*Z_;rp-zCD;KM!#a5D^FsU%o`fI4VW`3^#Nk3%3$HPu@;p2aKY?4} z1}H%iHiCdxnOONbJOFor2iHOp#$W?{#N^GZ@Jl!jx5FarhiRCE^WmhL)FE{w;?-Nr z-l8)yly&!|Q(3o?P8CZ-qdP=oq2Y|wmOZb&*m8F5a=PuK-GRw;+T_n}&8@VzQgkyZ zlWSno+>5D9KJ8YfbD2ysJ7bE{J+$EI%uJv?QrqMRs9RWMB%r7u=at!JRe^1%xQG7AE^}zTghH z?R;xb(5mj$NcW(_A!N&$Dc9J2kg;Pow3T-YDRaN`M+V=n1(LB?o+`St=CLj?&$_*1 z-jxM6S?V)_5vI)H*3xdV*gq<;hJ$9>*-RIimVD#s2$8M#Yed?@Z45f9wk;empaE0< zQ@NWEBALneIeIMNL&+5?sXcw%+qQ6k9J=~O_{MO^fZ>M2HH|nj53OgCSGD_bq~~GX z?Xc3^$dKBf%9?M0Zu?3czYb&v%9%&sz|`yBN4A+<*md7*pRtM5ZCf}X_$|_>fxxN- z&E&Y%a%JO{S2isG+4H$FI`?~=X%1Rw$t@Tk26DgVSakErLbAk_%oz`?+ingtDbR@u zg~%siDV0p~9PwLQ`R&)fgr;0=gO=wLd%;mro3DD2NMuaa@wVzCtxEIAO-}G@a+Kfu z3yZZIm*?uvkYDpVF+aqQ>@jETv~A86TS+)|B%w}gr+<38n=LNiV#}}gzM?BeCE1ivnYwbSQ`Y@g@l9r1 z$;fdA*;PW-*JRE3D$+@p#HNJr8T{dYsD!IbqPry$DkXo(4fB7MP*3lF^An!78-<%L zD&+hBw|TFB1LXU^TGxM__x|6&({K!a2sgt#G@uSsup4494rjqh^1Kg!4|2XP^V-cS zU=^?mSOu&CRspMkRlq7>6|f3e1*`&}iUPNY&XiY7u5j`_(r8tdmRoYlYGks#GuYE? zc_V64feEa!_WzGQK0Yerj*7_P`Gp(nPOy7a92Ebd=TTuJ(tr z=0G#cYZdh`pxCy^e9T{r>+EYsinW zCN1Cp8^QJXEAR3zz$0)Md>szJ4sbxe>wn0*{VO2r10H}Mz#+H>cEY7_4tz|lz+d3k z@EF_+%Wwd8!B-&y|D;yn5AZBJ4EMs#FbA@xU@Ke%>)=gl23~>_a13sPo8W5L4i~{1 zc#WEYU%{hrH#Ff|xB@PP2>gR9^b-6Gj=`PK02eNY3*cYW3H%Ly3n$>Ga0}ER4O?I% zMBoGJ1zv`y;2!W`A0**2*Z?0;EAVG{4jzYl;0PRmoiGgR;Uw4P4R{{f*XUEZUu+{* z0jt3OoC3CJXXTlx3Uf@)H)YcvpQq^qMc8w zK+2>#r9E0l3Mz9<9WOA2-BndipAco%!ferwE!wd~JGN*isPQok9lcc`@)>7~c0P-u bozUEXU*M|BdbEL^%4AhMX1b_d=27u)1G-X6 diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 74532346..dbd3ddd9 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:40:13 by ariard ### ########.fr */ +/* Updated: 2017/02/18 18:56:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,9 +25,8 @@ int add_cmd(t_btree **ast, t_list **lst) return (add_file(ast, lst)); else if (isloop(ast)) return (add_loop_cmd(ast, lst)); - else + else if ((node = (*ast)->item)->type != TK_DO) return (add_cmd(&(*ast)->right, lst)); - DG("insert data cmd"); my_tab = NULL; token = (*lst)->content; node = (*ast)->item; @@ -37,7 +36,6 @@ int add_cmd(t_btree **ast, t_list **lst) my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); // ft_ld_pushback(&node->data.token, my_tab); - DG("still alive"); } return (0); } diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c index 23660275..66f13d1b 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_file.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:24:01 by ariard ### ########.fr */ +/* Updated: 2017/02/18 16:43:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,6 @@ int add_file(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; - DG("add file"); token = (*lst)->content; node = (*ast)->item; node->data.redir.n = ft_atoi(token->data); diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 2709e6f6..dbfc7533 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:38:25 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:10:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,12 +19,18 @@ int isloop(t_btree **ast) node = NULL; if (*ast) { - DG("end isloop"); node = (*ast)->item; - if (node->data.loop == 1) + DG("TEST LOOP"); + if (node->type == TK_WHILE && node->full == 1) + { + DG("DON ENTER"); return (2); - if (node->type == TK_WHILE) + } + if (node->type == TK_WHILE && node->full == 0) + { + DG(" NOFULL"); return (1); + } } return (0); } @@ -34,12 +40,26 @@ int add_loop_cmd(t_btree **ast, t_list **lst) t_token *token; t_astnode *node; - DG("add loop cmd"); token = (*lst)->content; node = (*ast)->item; - if (token->type == TK_DONE) - return ((node->data.loop = 1)); - else if (token->type == TK_DO) + DG("add loop cmd"); + if (token->type == TK_WHILE && node->type == TK_WHILE) + { + DG("nest one more"); + node->nest++; + } + if (token->type == TK_DONE && node->type == TK_WHILE && node->nest > 0) + { + node->nest--; + DG("nest one less"); + } + else if (token->type == TK_DONE && node->type == TK_WHILE + && node->nest == 0) + { + DG("WHILE FULL"); + return ((node->full = 1)); + } + if (token->type == TK_DO) return (add_cmd(&(*ast)->right, lst)); else if (!(*ast)->right && isloop(&(*ast)->left) != 2) return (add_cmd(&(*ast)->left, lst)); @@ -50,7 +70,6 @@ int add_loop_cmd(t_btree **ast, t_list **lst) int add_loop_sep(t_btree **ast, t_list **lst) { - DG("add loop sep"); if (!(*ast)->right) return (add_sep(&(*ast)->left, lst)); else diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index a7cb461a..3d7e8923 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:34:43 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:06:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,13 +19,18 @@ int add_sep(t_btree **ast, t_list **lst) t_btree *new_node; DG("add sep"); - if (isloop(&(*ast)->right) == 1 || isloop(ast)) + if (isloop(ast) == 1) return (add_loop_sep(ast, lst)); - new_node = NULL; - gen_node(&new_node); - join_ast(ast, &new_node); + node = (*ast)->item; token = (*lst)->content; - node = (new_node)->item; +// if (node->type != TK_DO) +// { + new_node = NULL; + gen_node(&new_node); + join_ast(ast, &new_node); + node = (new_node)->item; +// } node->type = token->type; + return (0); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 3315be3c..6f6933cc 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/17 21:35:09 by ariard ### ########.fr */ +/* Updated: 2017/02/18 16:58:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -151,6 +151,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, + {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, @@ -187,8 +188,8 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top @@ -200,7 +201,7 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index df2a2152..7fc287f0 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:34:15 by ariard ### ########.fr */ +/* Updated: 2017/02/18 18:43:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,24 +24,36 @@ t_treematch g_treematch[] = {TK_WHILE, &add_cmd}, {TK_DO, &add_cmd}, {TK_DONE, &add_cmd}, + {TK_NEWLINE, &add_sep}, {0, NULL}, }; -int build_tree(t_btree **ast, t_list **lst) +static int isseparator(int type, int cache) { - int i; + if (type == TK_NEWLINE && (cache == TK_WHILE + || cache == TK_DO)) + return (0); + return (1); +} + +int build_tree(t_btree **ast, t_list **lst) +{ + int i; + static int cache; t_token *token; i = 0; token = (*lst)->content; while (g_treematch[i].type) { - if (g_treematch[i].type == token->type) + if (g_treematch[i].type == token->type + && isseparator(token->type, cache)) { DG("func TK : '%s' TK : '%s'", read_state(g_treematch[i].type) ,read_state(token->type)); - return (g_treematch[i].add(ast, lst)); + cache = token->type; + return (g_treematch[i].add(ast, lst)); } i++; } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 77833aa1..e56fce59 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/17 21:35:11 by ariard ### ########.fr */ +/* Updated: 2017/02/18 18:50:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -195,6 +195,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, SEPARATOR_OP}, {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, PIPE_SEMI_SEQUENCE}, + {TK_WHILE, TK_DO}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, @@ -243,6 +244,7 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_WHILE}, {END_COMMAND, TK_DO}, {END_COMMAND, LINEBREAK}, + {END_COMMAND, COMPOUND_LIST}, {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, @@ -387,6 +389,7 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, + {WHILE_CLAUSE, TK_DO}, {ELSE_PART, COMPOUND_LIST}, {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, TK_BANG}, @@ -435,6 +438,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, NEWLINE_LIST}, {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, FUNC}, + {COMPOUND_COMMAND, TK_DO}, {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, {COMMAND, TK_DO}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index f56dd3fb..bd0a89c9 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:39:18 by ariard ### ########.fr */ +/* Updated: 2017/02/18 18:06:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index af01c929..1244505a 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/17 21:29:20 by ariard ### ########.fr */ +/* Updated: 2017/02/18 18:42:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -72,8 +72,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; -// DG("produce stack : %s && token : %s", read_state(stack), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(stack), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -81,7 +81,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { -// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 8068646c..822bb0bb 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:40:50 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:03:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,12 @@ char *read_state(t_sym current) { + if (current == COMPOUND_COMMAND) + return ("COMPOUND_COMMAND"); + if (current == WHILE_CLAUSE) + return ("WHILE_CLAUSE"); + if (current == LOOP) + return ("LOOP"); if (current == TK_DONE) return ("DONE"); if (current == TK_DO) diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 6d3d6d36..fb69e072 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:38:47 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:06:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,10 +25,13 @@ int gen_node(t_btree **ast) if (!*ast) { + DG("node create"); *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; ((t_astnode *)(*ast)->item)->data.redir.word.word = NULL; - ((t_astnode *)(*ast)->item)->data.loop = 0; + ((t_astnode *)(*ast)->item)->nest = 0; + ((t_astnode *)(*ast)->item)->full = 0; + ((t_astnode *)(*ast)->item)->type = 0; } return (0); } diff --git a/42sh/test.sh b/42sh/test.sh deleted file mode 100644 index 27c1ef0f..00000000 --- a/42sh/test.sh +++ /dev/null @@ -1 +0,0 @@ -ls | From fbce14ef34ac245ccee2817e7458a2bd7b61ede8 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 19 Feb 2017 16:55:06 +0100 Subject: [PATCH 063/206] modifs gestion d'erreur --- 42sh/eewfew | 0 42sh/includes/.parser.h.swn | Bin 16384 -> 20480 bytes 42sh/includes/parser.h | 12 +++++- 42sh/sample/error.sh | 1 + 42sh/sample/while.sh | 5 ++- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/.eval_sym.c.swn | Bin 0 -> 24576 bytes 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_sep.c | 4 +- 42sh/src/parser/aggregate_sym.c | 9 ++--- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/error_syntax.c | 67 +++++++++++++++++++++++++------- 42sh/src/parser/eval_sym.c | 6 ++- 42sh/src/parser/ft_parse.c | 4 +- 42sh/src/parser/tree_wrapper.c | 3 +- 42sh/wefwe | 1 + 42sh/wfewef | 0 18 files changed, 89 insertions(+), 31 deletions(-) create mode 100644 42sh/eewfew create mode 100644 42sh/sample/error.sh create mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/wefwe create mode 100644 42sh/wfewef diff --git a/42sh/eewfew b/42sh/eewfew new file mode 100644 index 00000000..e69de29b diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn index ccd9ee3b6c7158678ac574c293719a7fc2be918f..da1db700233da91d73f0d43480a6fea46ebc891d 100644 GIT binary patch delta 392 zcmZo@U~E{xD3xRo=IN_op=ZDV1Of~Ur*^K4_!_Oi@WFnfls21jk#T{M;YRQ6{QS%e z^*|L&AZ0+XVX~lrxF8FJ!ypKymv5F7IL<#wfrYn=k%1u%Bn>oj!)8H+*-Tm-tPBin zK>Qsj{1S+t0r68H-VMaNfOr}ZPX*#Mmd)3cdKg(Ufnf4m6-%MiqN4nw+{BXP49@g; zFlVx#nzSZDSfK!z))+=z?qzpSj4FXQO%D*^Er wpt>VKd>Duq0P%bvt^wjGAdUoLJ0MmAVvu=vc{e)>)bmdMsieR8r_vWj00Nv^JOBUy delta 184 zcmZozz}V2hD3xRo=IN_op=ZDV1Of~UQnOb?aQiASC<#xL(q=O%vM4Yz*yz2TpPz}L z9;ku|qznkQPZksq-|QipCDPF8QV7tD$HimddtGV@CJzY0dXS` zhXJtw5c31^LuLksjX=BshB&zTx=0RRI?C>sC( diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index b0613516..c453cc6f 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/18 20:06:02 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:29:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -163,6 +163,16 @@ typedef struct s_stackmatch t_stackmatch; extern t_stackmatch g_stackmatch[]; +struct s_errormatch +{ + t_type token; + char *error; +}; + +typedef struct s_errormatch t_errormatch; + +extern t_errormatch g_errormatch[]; + int ft_parse2(t_btree **ast, t_list **token); int ft_parse(t_btree **ast, t_list **token); diff --git a/42sh/sample/error.sh b/42sh/sample/error.sh new file mode 100644 index 00000000..0cf7ff3a --- /dev/null +++ b/42sh/sample/error.sh @@ -0,0 +1 @@ +ls ; pwd | | diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index c6a6867c..26568e98 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -4,5 +4,8 @@ do do pwd done - pwd ; ls + while ls + do + pwd + done done diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 5b907c72..32f9899d 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/17 23:27:06 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:02:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..291aa4f1d31b5030e5fdac6377db64f43ce44530 GIT binary patch literal 24576 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 Z-788g$yy?Zitm?Xf$W6VLoe$I{|(u?4W0l1 literal 0 HcmV?d00001 diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index dbd3ddd9..fd7bfaf4 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/18 18:56:15 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:12:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index dbfc7533..0067faa9 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/18 20:10:08 by ariard ### ########.fr */ +/* Updated: 2017/02/18 20:12:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 3d7e8923..fb7dcb1e 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/18 20:06:47 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:48:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,8 @@ int add_sep(t_btree **ast, t_list **lst) DG("add sep"); if (isloop(ast) == 1) return (add_loop_sep(ast, lst)); + if (!*ast) + gen_node(ast); node = (*ast)->item; token = (*lst)->content; // if (node->type != TK_DO) diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 6f6933cc..d1020a8c 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/18 16:58:05 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:48:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -179,7 +179,6 @@ t_aggrematch g_aggrematch[] = {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, 0}, {COMPLETE_COMMANDS, LINEBREAK, PROGRAM, LINEBREAK}, -// voir decoupe separateur au lexer {0, 0, 0, 0}, }; @@ -188,8 +187,8 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top @@ -201,7 +200,7 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 7fc287f0..a5d73447 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/18 18:43:50 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:35:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 9bacf149..83003a69 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,28 +6,67 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/13 22:09:03 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:35:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int error_syntax(t_list **lst) +t_errormatch g_errormatch[] = +{ + {TK_NEWLINE, "newline"}, + {TK_SEMI, ";"}, + {TK_PIPE, "|"}, + {TK_AMP, "&"}, + {TK_LESS, "<"}, + {TK_GREAT, ">"}, + {TK_DGREAT, ">>"}, + {TK_LESSAND, "<&"}, + {TK_GREATAND, ">&"}, + {TK_LESSGREAT, "<>"}, + {TK_CLOBBER, ">|"}, + {TK_DLESS, "<<"}, + {TK_DLESSDASH, "<<-"}, + {TK_AND_IF, "&&"}, + {TK_OR_IF, "||"}, + {TK_DSEMI, ";;"}, + {TK_IF, "if"}, + {TK_THEN, "then"}, + {TK_ELSE, "else"}, + {TK_ELIF, "elif"}, + {TK_FI, "fi"}, + {TK_DO, "do"}, + {TK_DONE, "done"}, + {TK_CASE, "case"}, + {TK_ESAC, "esac"}, + {TK_WHILE, "while"}, + {TK_UNTIL, "until"}, + {TK_FOR, "for"}, + {TK_LBRACE, "{"}, + {TK_RBRACE, "}"}, + {TK_BANG, "!"}, + {TK_IN, "in"}, + {0, NULL}, +}; + +int error_syntax(t_list **lst) { t_token *token; + int i; token = (*lst)->content; - if (token->type == TK_SEMI) - ft_putstr_fd("syntax error near unexepected token ';'", 2); - else if (token->type == TK_WORD) - ft_putstr_fd("syntax error near unexepected token 'word'", 2); - else if (token->type == TK_GREAT) - ft_putstr_fd("syntax error near unexepected token '>'", 2); - else if (token->type == TK_NEWLINE) - ft_putstr_fd("syntax error near unexepected token 'newline'", 2); - else if (token->type == TK_LESS) - ft_putstr_fd("syntax error near unexepected token '<'", 2); - else - ft_putstr_fd("grammar error, notify ariard", 2); + i = 0; + while (g_errormatch[i].token) + { + if (g_errormatch[i].token == token->type) + { + ft_putstr_fd("syntax error near unexpetcted token `", 2); + ft_putstr_fd(g_errormatch[i].error, 2); + ft_putstr_fd("'", 2); + return (1); + } + i++; + } + ft_putstr_fd("grammar error, notify ariard", 2); return (1); } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index e56fce59..6f059bfa 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/18 18:50:18 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:53:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -196,6 +196,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, PIPE_SEMI_SEQUENCE}, {TK_WHILE, TK_DO}, + {TK_WHILE, COMPOUND_LIST}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, @@ -265,6 +266,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, CMD_SUPERIOR}, {LINEBREAK, PIPE_SEMI_SEQUENCE}, {LINEBREAK, COMPOUND_LIST}, + {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, CMD_NAME}, {NEWLINE_LIST, NEWLINE_LIST}, @@ -390,6 +392,7 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, {WHILE_CLAUSE, TK_DO}, + {WHILE_CLAUSE, COMPOUND_LIST}, {ELSE_PART, COMPOUND_LIST}, {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, TK_BANG}, @@ -439,6 +442,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, TK_DO}, + {COMPOUND_COMMAND, COMPOUND_LIST}, {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, {COMMAND, TK_DO}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index bd0a89c9..2410bf7e 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/18 18:06:45 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:54:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,7 +58,7 @@ int ft_parse2(t_btree **ast, t_list **token) ft_putstr("success"); build_tree(ast, token); btree_print(STDBUG, *ast, &ft_putast); - if (end_instruction(*stack) && !(*token)->next) + if ((end_instruction(*stack) && !(*token)->next) || *stack == PROGRAM) insert_linebreak(token); else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index fb69e072..505f2050 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/18 20:06:49 by ariard ### ########.fr */ +/* Updated: 2017/02/19 16:34:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,6 @@ int gen_node(t_btree **ast) if (!*ast) { - DG("node create"); *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; ((t_astnode *)(*ast)->item)->data.redir.word.word = NULL; diff --git a/42sh/wefwe b/42sh/wefwe new file mode 100644 index 00000000..ce09b016 --- /dev/null +++ b/42sh/wefwe @@ -0,0 +1 @@ +/Users/ariard/Projects/42sh diff --git a/42sh/wfewef b/42sh/wfewef new file mode 100644 index 00000000..e69de29b From ccfbf618bcc48c3617ea7f8a7f43fce939a3bf83 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 19 Feb 2017 16:55:33 +0100 Subject: [PATCH 064/206] modifs --- 42sh/eewfew | 0 42sh/file1 | 16 ---------------- 42sh/wefwe | 1 - 42sh/wfewef | 0 4 files changed, 17 deletions(-) delete mode 100644 42sh/eewfew delete mode 100644 42sh/file1 delete mode 100644 42sh/wefwe delete mode 100644 42sh/wfewef diff --git a/42sh/eewfew b/42sh/eewfew deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index 3e9b5839..00000000 --- a/42sh/file1 +++ /dev/null @@ -1,16 +0,0 @@ -42sh -Makefile -blind.text -debug -file1 -grammar -includes -libft -objs -pdf -sample -script.sh -src -test.sh -tofix -update_makefile.sh diff --git a/42sh/wefwe b/42sh/wefwe deleted file mode 100644 index ce09b016..00000000 --- a/42sh/wefwe +++ /dev/null @@ -1 +0,0 @@ -/Users/ariard/Projects/42sh diff --git a/42sh/wfewef b/42sh/wfewef deleted file mode 100644 index e69de29b..00000000 From c90ad14f93f15d0b50539fe64caaf9f94f84a3e6 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 19 Feb 2017 17:53:43 +0100 Subject: [PATCH 065/206] while ok --- 42sh/sample/while.sh | 17 +++++++++-------- 42sh/src/parser/.eval_sym.c.swn | Bin 24576 -> 28672 bytes 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_loop.c | 7 +++++-- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/aggregate_sym.c | 11 ++++++----- 42sh/src/parser/build_tree.c | 6 +++--- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/eval_sym.c | 8 ++++++-- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 3 ++- 11 files changed, 35 insertions(+), 25 deletions(-) diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 26568e98..d0fd226b 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,11 +1,12 @@ -while ls -do - while ls +while + while + while ls | cat + do + ls + done do - pwd - done - while ls - do - pwd + ls | cat done +do + pwd done diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn index 291aa4f1d31b5030e5fdac6377db64f43ce44530..4b984d382a708a47b2e30f23a24f0881405bfa0c 100644 GIT binary patch delta 1859 zcmXxk4@}f$9LMqR4>;g3xI;`rOwLtkB#8fxKRN6!PQ?>}JD_L-2ZY#!K(s8e4k=I9 z8fw2?f|{b~nl+X9F|$pkG;xbkwCs;&EH@XqR#MJCSgYQT9nbc9p67RWzq|dO@8`ZP zr?i%zw8X0P(!6|IW?H&1tRgvI9C~)3)+P@o%g2es7R{uGS|2l;)VmCiKFb7cC^Sve2V?>qaMY`#AJjev)v9wy?? zNRcb(M>lq$6)Uj}X_$Z;5h7os2kr2o0uCf296yJPoWVhCMkN*?3HK=DH$J8=bYK%+ zKoRUngy0$#?uUUrcoQ$81oJT+vG^mDvfwZdU>`d164qcPYB2>9F-qAd-DWz1y=X@O zTi_4bzOPQdJG(t(=1gPToak`6yiOOI^CQAkO$ZCrr~F9=osdd6Au* zT^k3ik~EgZUr5VW_yoJrj2aXn6G;#ZlbG}9K|5YX8Jw7o7>tsbVSI-^9L0Os94!sf z#HJF3coI_)iC;<1IjD5$Sc7~#0Si>BE}|EmP^qed8|jF}EgtGBPU9fjq6{sp(`~aH(E8j26^j2_8or{^b@Gjt%`tRf11jNwY8QV|{7dM?F0^75mLUaJsBjG7 zB;LnXH0i0%B%|8tHrdR<(LA=fzlyoJ*u7lkL+^X~A!%1C@?^*j2+x zWTRoM@$?Xb-SDFkWynPetQa8zm(hn0p_C7#Wy^JLG5xXV8TJ)}stLmq7>Okz+Lil0bK~-RjfcB?05u`xIu<4z`$0lhiX2_ z1xy)8fCd$^UhKeXsBGlYe3EplH{NLTTpbr|IDO?4jQR>)i#IoWU4;&hqqxAcyr7VL Lxjgx=&5-{9Dd-&c delta 1487 zcmXxj3rvk+9LMqhTjz8-T~2QnW(`MD%Vd#~ScHZyb6F}x>tHG*W4Y#)OR_VUvv@9($qm9p`=67Gu2nUdv9 z8X6}oRixzF$-K^aPMKY*oDY8&qF8iab&%a+US(D5!_?l2RWDYfl?ub7E(`ITbJjak zgKde)3GvCpMi`T0ulQ*1x%Imb8$VcKKF4Ye5xId{RALb(BL)_Hbco!=S?q;|`Iv-3 z2*8(Mktb-tacsv@WFrZEVF?yZ+Ji)H;TUvOq6|4m!2np$8YprP7qAcOP=JYufr^d* zUW!K4!Hp86V+ibMw~JiG5mebV5f_I{Bp?DdeD)W4iUu6S78GCtBH@n?o5+2f$6k~p z2Z`v3Zaa(Cy5Q@!b-T1iIIpxPYBvAk|Xz+`W$quMjn#T1Dy=`2=&;HO<0IjL_@__=6Q_EsKa)Y z=&>{U`(>xi$f_7(>_}f>)jJ}sx{(`YbmoTnYkhcqDz}-v+5Gokkymu11zzmLS`=X_ zM#2dj+Udt_oPZlEk&jeFAQ0c^$8+4oF=!}47UIp`^x^P}UYPy4k4rcLH_DNZ@rXbW zzR-^sxPepHg>vL$JfabTZaUJ6JGg*D*owu-fY~EQ0KNH4Pafk6%rb35DW+jK9QZ&_ z9^ewp9#x?jnTUak?J$!NxDn0;D@BFscG2EZ3)mm1-PnVw1%BPxR}9%g(x$UzH^Vio4V%*Hq$ Y&-8Hp_Si&yxvRI4?`jP+@=86*A12u3-v9sr diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index fd7bfaf4..9c89439f 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/18 20:12:23 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:41:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 0067faa9..b6446d8c 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/18 20:12:26 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:52:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,9 @@ int isloop(t_btree **ast) { node = (*ast)->item; DG("TEST LOOP"); + if ((node->type == TK_NEWLINE || node->type == TK_SEMI || + node->type == TK_AMP) && (isloop(&(*ast)->right) == 1)) + return (1); if (node->type == TK_WHILE && node->full == 1) { DG("DON ENTER"); @@ -59,7 +62,7 @@ int add_loop_cmd(t_btree **ast, t_list **lst) DG("WHILE FULL"); return ((node->full = 1)); } - if (token->type == TK_DO) + if (token->type == TK_DO && node->nest == 0) return (add_cmd(&(*ast)->right, lst)); else if (!(*ast)->right && isloop(&(*ast)->left) != 2) return (add_cmd(&(*ast)->left, lst)); diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index fb7dcb1e..2f4b9cb4 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:48:44 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:51:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index d1020a8c..cc54a891 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:48:12 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:35:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,6 +52,7 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, + {NEWLINE_LIST, TK_WHILE, TK_WHILE, TK_WHILE}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0}, @@ -187,20 +188,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index a5d73447..53221db5 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:35:25 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:34:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,8 +30,8 @@ t_treematch g_treematch[] = static int isseparator(int type, int cache) { - if (type == TK_NEWLINE && (cache == TK_WHILE - || cache == TK_DO)) + if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO + || cache == TK_NEWLINE)) return (0); return (1); } diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 83003a69..e08921c7 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:35:56 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:06:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 6f059bfa..02dfd106 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:53:14 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:43:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -196,6 +196,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, PIPE_SEMI_SEQUENCE}, {TK_WHILE, TK_DO}, + {TK_WHILE, TK_WHILE}, {TK_WHILE, COMPOUND_LIST}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, @@ -268,6 +269,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, COMPOUND_LIST}, {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, + {NEWLINE_LIST, TK_WHILE}, {NEWLINE_LIST, CMD_NAME}, {NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NAME}, @@ -392,6 +394,7 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, {WHILE_CLAUSE, TK_DO}, + {WHILE_CLAUSE, TK_WHILE}, {WHILE_CLAUSE, COMPOUND_LIST}, {ELSE_PART, COMPOUND_LIST}, {IF_CLAUSE, LINEBREAK}, @@ -442,6 +445,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, TK_DO}, + {COMPOUND_COMMAND, TK_WHILE}, {COMPOUND_COMMAND, COMPOUND_LIST}, {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, @@ -498,7 +502,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 2410bf7e..e1d746b6 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:54:31 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:32:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 1244505a..d896e8d9 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/18 18:42:55 by ariard ### ########.fr */ +/* Updated: 2017/02/19 17:35:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,6 +50,7 @@ t_prodmatch g_prodmatch[] = {TK_NAME, NEWLINE_LIST, FNAME}, {TK_NAME, TK_FOR, NAME}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, + {TK_NEWLINE, TK_WHILE, NEWLINE_LIST}, {TK_NEWLINE, CMD_NAME, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, From f6aefd77395d73381caf38c57adcc15d5fb7ef9d Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 19 Feb 2017 19:32:45 +0100 Subject: [PATCH 066/206] grammar if then elif part one --- 42sh/Makefile | 3 +- 42sh/includes/.parser.h.swn | Bin 20480 -> 0 bytes 42sh/includes/parser.h | 4 ++- 42sh/sample/if.sh | 20 ++++++------ 42sh/src/parser/.eval_sym.c.swn | Bin 28672 -> 0 bytes 42sh/src/parser/add_cmd.c | 6 ++-- 42sh/src/parser/add_condition.c | 56 ++++++++++++++++++++++++++++++++ 42sh/src/parser/add_loop.c | 6 ++-- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/aggregate_sym.c | 33 ++++++++++++++++--- 42sh/src/parser/build_tree.c | 6 +++- 42sh/src/parser/eval_sym.c | 6 ++-- 42sh/src/parser/ft_parse.c | 7 ++-- 42sh/src/parser/produce_sym.c | 9 ++++- 42sh/src/parser/read_stack.c | 10 +++++- 15 files changed, 137 insertions(+), 31 deletions(-) delete mode 100644 42sh/includes/.parser.h.swn delete mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/add_condition.c diff --git a/42sh/Makefile b/42sh/Makefile index 2012337d..1f930775 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -200,7 +200,8 @@ parser/tree_wrapper.c\ parser/add_sep.c\ parser/add_cmd.c\ parser/add_file.c\ -parser/add_loop.c +parser/add_loop.c\ +parser/add_condition.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn deleted file mode 100644 index da1db700233da91d73f0d43480a6fea46ebc891d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 ZcC-$@f7=lkaD#PTOzAzN7b+U3{Tpt5EEE6$ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index c453cc6f..8414d270 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/19 16:29:14 by ariard ### ########.fr */ +/* Updated: 2017/02/19 18:43:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -214,8 +214,10 @@ int add_cmd(t_btree **ast, t_list **lst); int add_file(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); +int add_condition_cmd(t_btree **ast, t_list **lst); int isloop(t_btree **ast); int isdir(t_btree **ast); +int iscondition(t_btree **ast); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); diff --git a/42sh/sample/if.sh b/42sh/sample/if.sh index cfbccc74..7e2b40d0 100644 --- a/42sh/sample/if.sh +++ b/42sh/sample/if.sh @@ -1,13 +1,13 @@ -while ls -do if ls then - echo hello -else - while ls - do - echo hello world - pwd - done + pwd +elif ls +then + pwd +elif ls +then + pwd +else ls +then + pwd fi -done diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn deleted file mode 100644 index 4b984d382a708a47b2e30f23a24f0881405bfa0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 EFBnD8+W-In diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 9c89439f..b7a5217e 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:41:59 by ariard ### ########.fr */ +/* Updated: 2017/02/19 18:46:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,9 @@ int add_cmd(t_btree **ast, t_list **lst) return (add_file(ast, lst)); else if (isloop(ast)) return (add_loop_cmd(ast, lst)); - else if ((node = (*ast)->item)->type != TK_DO) + else if (iscondition(ast)) + return (add_condition_cmd(ast, lst)); + else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; token = (*lst)->content; diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c new file mode 100644 index 00000000..c4279323 --- /dev/null +++ b/42sh/src/parser/add_condition.c @@ -0,0 +1,56 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_condition.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ +/* Updated: 2017/02/19 18:46:01 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int iscondition(t_btree **ast) +{ + t_astnode *node; + + node = NULL; + if (*ast) + { + node = (*ast)->item; + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && iscondition(&(*ast)->right) == 1) + return (1); + if ((node->type == TK_IF || node->type == TK_ELIF) + && node->full == 1) + return (2); + if ((node->type == TK_IF || node->type == TK_ELIF) + && node->full == 0) + return (1); + } + return (0); +} + +int add_condition_cmd(t_btree **ast, t_list **lst) +{ + t_token *token; + t_astnode *node; + + token = (*lst)->content; + node = (*ast)->item; + if (token->type == TK_IF && node->type == TK_IF) + node->nest++; + if (token->type == TK_FI && node->type == TK_IF && node->nest > 0) + node->nest--; + else if (token->type == TK_FI && node->type == TK_IF && node->nest == 0) + return ((node->full = 1)); + if (token->type == TK_THEN) + return (add_cmd(&(*ast)->right, lst)); + else if (!(*ast)->right && iscondition(&(*ast)->left) != 2) + return (add_cmd(&(*ast)->left, lst)); + else + return (add_cmd(&(*ast)->right, lst)); + return (0); +} diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index b6446d8c..6a82ae1f 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:52:52 by ariard ### ########.fr */ +/* Updated: 2017/02/19 18:38:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ int isloop(t_btree **ast) { node = (*ast)->item; DG("TEST LOOP"); - if ((node->type == TK_NEWLINE || node->type == TK_SEMI || - node->type == TK_AMP) && (isloop(&(*ast)->right) == 1)) + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && isloop(&(*ast)->right) == 1) return (1); if (node->type == TK_WHILE && node->full == 1) { diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 2f4b9cb4..ed591f3a 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:51:51 by ariard ### ########.fr */ +/* Updated: 2017/02/19 18:46:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index cc54a891..506be68a 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:35:28 by ariard ### ########.fr */ +/* Updated: 2017/02/19 19:32:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ t_aggrematch g_aggrematch[] = {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, {TK_FI, COMPOUND_LIST, IF_CLAUSE, TK_IF}, + {TK_FI, CMD_SUPERIOR, IF_CLAUSE, TK_IF}, {TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO}, {TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO}, //Esac ? @@ -52,6 +53,10 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, + {NEWLINE_LIST, TK_THEN, TK_THEN, TK_THEN}, + {NEWLINE_LIST, TK_IF, TK_IF, TK_IF}, + {NEWLINE_LIST, TK_ELIF, TK_ELIF, TK_ELIF}, + {NEWLINE_LIST, TK_ELSE, TK_ELSE, TK_ELSE}, {NEWLINE_LIST, TK_WHILE, TK_WHILE, TK_WHILE}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, @@ -104,6 +109,9 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_DO, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_IF, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_ELIF, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_THEN, CMD_SUPERIOR, 0}, {CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, @@ -143,6 +151,9 @@ t_aggrematch g_aggrematch[] = {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_DO, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_IF, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_THEN, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_ELIF, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, @@ -152,6 +163,9 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_IF, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_THEN, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, @@ -160,9 +174,15 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_IF, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_ELIF, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_THEN, PIPELINE, 0}, {PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0}, {PIPELINE, TK_WHILE, AND_OR, 0}, {PIPELINE, TK_DO, AND_OR, 0}, + {PIPELINE, TK_IF, AND_OR, 0}, + {PIPELINE, TK_ELIF, AND_OR, 0}, + {PIPELINE, TK_THEN, AND_OR, 0}, {PIPELINE, COMPOUND_LIST, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, @@ -171,6 +191,9 @@ t_aggrematch g_aggrematch[] = {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO, COMPOUND_LIST, 0}, {AND_OR, TK_WHILE, COMPOUND_LIST, 0}, + {AND_OR, TK_IF, COMPOUND_LIST, 0}, + {AND_OR, TK_ELIF, COMPOUND_LIST, 0}, + {AND_OR, TK_THEN, COMPOUND_LIST, 0}, {AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, @@ -188,20 +211,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 53221db5..d4497c29 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:34:55 by ariard ### ########.fr */ +/* Updated: 2017/02/19 18:40:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,10 @@ t_treematch g_treematch[] = {TK_WHILE, &add_cmd}, {TK_DO, &add_cmd}, {TK_DONE, &add_cmd}, + {TK_IF, &add_cmd}, + {TK_ELIF, &add_cmd}, + {TK_THEN, &add_cmd}, + {TK_FI, &add_cmd}, {TK_NEWLINE, &add_sep}, {0, NULL}, }; diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 02dfd106..79770694 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:43:42 by ariard ### ########.fr */ +/* Updated: 2017/02/19 19:31:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -175,6 +175,8 @@ t_stackmatch g_stackmatch[] = {TK_ELIF, COMPOUND_LIST}, {TK_FI, ELSE_PART}, {TK_FI, COMPOUND_LIST}, + {TK_FI, CMD_SUPERIOR}, + {TK_FI, END_COMMAND}, {TK_DO, CMD_SUPERIOR}, {TK_DO, COMPOUND_LIST}, {TK_DO, NAME}, @@ -502,7 +504,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; -// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index e1d746b6..54349019 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:32:56 by ariard ### ########.fr */ +/* Updated: 2017/02/19 18:41:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,7 @@ int ft_parse2(t_btree **ast, t_list **token) t_sym *stack; t_parstate state; + (void)ast; state = UNDEFINED; new_sym = ft_memalloc(sizeof(t_sym)); stack = ft_memalloc(sizeof(t_sym) * 1000); @@ -56,8 +57,8 @@ int ft_parse2(t_btree **ast, t_list **token) return (error_syntax(token)); if (state == SUCCESS) ft_putstr("success"); - build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); +// build_tree(ast, token); +// btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*stack) && !(*token)->next) || *stack == PROGRAM) insert_linebreak(token); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index d896e8d9..1773e115 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:35:31 by ariard ### ########.fr */ +/* Updated: 2017/02/19 19:31:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,9 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, AND_OR_MAJOR, CMD_NAME}, {TK_N_WORD, TK_WHILE, CMD_NAME}, {TK_N_WORD, TK_DO, CMD_NAME}, + {TK_N_WORD, TK_IF, CMD_NAME}, + {TK_N_WORD, TK_THEN, CMD_NAME}, + {TK_N_WORD, TK_ELIF, CMD_NAME}, {TK_N_WORD, COMPOUND_LIST, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, @@ -51,6 +54,10 @@ t_prodmatch g_prodmatch[] = {TK_NAME, TK_FOR, NAME}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, {TK_NEWLINE, TK_WHILE, NEWLINE_LIST}, + {TK_NEWLINE, TK_IF, NEWLINE_LIST}, + {TK_NEWLINE, TK_FI, NEWLINE_LIST}, + {TK_NEWLINE, TK_ELIF, NEWLINE_LIST}, + {TK_NEWLINE, TK_ELSE, NEWLINE_LIST}, {TK_NEWLINE, CMD_NAME, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 822bb0bb..a943423b 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/18 20:03:24 by ariard ### ########.fr */ +/* Updated: 2017/02/19 19:31:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,14 @@ char *read_state(t_sym current) { + if (current == TK_FI) + return ("TK_FI"); + if (current == TK_IF) + return ("TK_IF"); + if (current == TK_ELIF) + return ("TK_ELIF"); + if (current == TK_THEN) + return ("TK_THEN"); if (current == COMPOUND_COMMAND) return ("COMPOUND_COMMAND"); if (current == WHILE_CLAUSE) From fea9429e9f76352370b9115fc5fb45e4692c0943 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Mon, 20 Feb 2017 01:05:11 +0100 Subject: [PATCH 067/206] more if elif then else grammar --- 42sh/sample/if.sh | 4 +- 42sh/src/parser/aggregate_sym.c | 8 +++- 42sh/src/parser/eval_sym.c | 69 ++++++++++++++++++++++++++++++++- 42sh/src/parser/produce_sym.c | 2 + 42sh/src/parser/read_stack.c | 6 +++ 42sh/test.sh | 4 ++ 6 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 42sh/test.sh diff --git a/42sh/sample/if.sh b/42sh/sample/if.sh index 7e2b40d0..d5903503 100644 --- a/42sh/sample/if.sh +++ b/42sh/sample/if.sh @@ -1,13 +1,11 @@ if ls then pwd -elif ls +elif ls then pwd elif ls then pwd else ls -then - pwd fi diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 506be68a..1b876c02 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -111,6 +111,7 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, TK_DO, CMD_SUPERIOR, 0}, {CMD_NAME, TK_IF, CMD_SUPERIOR, 0}, {CMD_NAME, TK_ELIF, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_ELSE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_THEN, CMD_SUPERIOR, 0}, {CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, @@ -140,7 +141,7 @@ t_aggrematch g_aggrematch[] = {FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK}, {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, - {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, +// {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, {COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0}, @@ -154,6 +155,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, TK_IF, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_THEN, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_ELIF, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_ELSE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, @@ -166,6 +168,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_IF, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_THEN, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_ELSE, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, @@ -177,12 +180,14 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, TK_IF, PIPELINE, 0}, {PIPE_SEQUENCE, TK_ELIF, PIPELINE, 0}, {PIPE_SEQUENCE, TK_THEN, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_ELSE, PIPELINE, 0}, {PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0}, {PIPELINE, TK_WHILE, AND_OR, 0}, {PIPELINE, TK_DO, AND_OR, 0}, {PIPELINE, TK_IF, AND_OR, 0}, {PIPELINE, TK_ELIF, AND_OR, 0}, {PIPELINE, TK_THEN, AND_OR, 0}, + {PIPELINE, TK_ELSE, AND_OR, 0}, {PIPELINE, COMPOUND_LIST, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, @@ -194,6 +199,7 @@ t_aggrematch g_aggrematch[] = {AND_OR, TK_IF, COMPOUND_LIST, 0}, {AND_OR, TK_ELIF, COMPOUND_LIST, 0}, {AND_OR, TK_THEN, COMPOUND_LIST, 0}, + {AND_OR, TK_ELSE, COMPOUND_LIST, 0}, {AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 79770694..5b3f5135 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -170,9 +170,16 @@ t_stackmatch g_stackmatch[] = {TK_IF, SEPARATOR_OP}, {TK_IF, NEWLINE_LIST}, {TK_IF, PIPE_SEMI_SEQUENCE}, + {TK_IF, TK_WHILE}, + {TK_IF, TK_IF}, + {TK_IF, TK_DO}, + {TK_IF, TK_ELIF}, + {TK_IF, TK_THEN}, + {TK_IF, COMPOUND_LIST}, {TK_THEN, COMPOUND_LIST}, + {TK_THEN, CMD_SUPERIOR}, {TK_ELSE, COMPOUND_LIST}, - {TK_ELIF, COMPOUND_LIST}, + {TK_ELIF, COMPOUND_LIST}, {TK_FI, ELSE_PART}, {TK_FI, COMPOUND_LIST}, {TK_FI, CMD_SUPERIOR}, @@ -200,6 +207,9 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_DO}, {TK_WHILE, TK_WHILE}, {TK_WHILE, COMPOUND_LIST}, + {TK_WHILE, TK_IF}, + {TK_WHILE, TK_ELIF}, + {TK_WHILE, TK_THEN}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, @@ -247,6 +257,10 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, PIPE_SEMI_SEQUENCE}, {END_COMMAND, TK_WHILE}, {END_COMMAND, TK_DO}, + {END_COMMAND, TK_IF}, + {END_COMMAND, TK_THEN}, + {END_COMMAND, TK_ELIF}, + {END_COMMAND, TK_ELSE}, {END_COMMAND, LINEBREAK}, {END_COMMAND, COMPOUND_LIST}, {SEPARATOR, CMD_SUPERIOR}, @@ -272,6 +286,10 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, TK_WHILE}, + {NEWLINE_LIST, TK_IF}, + {NEWLINE_LIST, TK_ELIF}, + {NEWLINE_LIST, TK_THEN}, + {NEWLINE_LIST, TK_ELSE}, {NEWLINE_LIST, CMD_NAME}, {NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NAME}, @@ -341,10 +359,18 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, TK_WHILE}, {CMD_NAME, TK_DO}, + {CMD_NAME, TK_IF}, + {CMD_NAME, TK_ELIF}, + {CMD_NAME, TK_THEN}, + {CMD_NAME, TK_ELSE}, {CMD_NAME, COMPOUND_LIST}, {CMD_SUPERIOR, TK_WHILE}, {CMD_SUPERIOR, TK_DO}, + {CMD_SUPERIOR, TK_IF}, + {CMD_SUPERIOR, TK_ELIF}, + {CMD_SUPERIOR, TK_THEN}, + {CMD_SUPERIOR, TK_ELSE}, {CMD_SUPERIOR, COMPOUND_LIST}, {CMD_SUPERIOR, LINEBREAK,}, {CMD_SUPERIOR, TK_BANG}, @@ -356,6 +382,10 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, TK_WHILE}, {SIMPLE_COMMAND, TK_DO}, + {SIMPLE_COMMAND, TK_IF}, + {SIMPLE_COMMAND, TK_ELIF}, + {SIMPLE_COMMAND, TK_THEN}, + {SIMPLE_COMMAND, TK_ELSE}, {SIMPLE_COMMAND, COMPOUND_LIST}, {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, @@ -397,6 +427,10 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, {WHILE_CLAUSE, TK_DO}, {WHILE_CLAUSE, TK_WHILE}, + {WHILE_CLAUSE, TK_IF}, + {WHILE_CLAUSE, TK_ELIF}, + {WHILE_CLAUSE, TK_THEN}, + {WHILE_CLAUSE, TK_ELSE}, {WHILE_CLAUSE, COMPOUND_LIST}, {ELSE_PART, COMPOUND_LIST}, {IF_CLAUSE, LINEBREAK}, @@ -404,6 +438,13 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, NEWLINE_LIST}, {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, + {IF_CLAUSE, TK_DO}, + {IF_CLAUSE, TK_WHILE}, + {IF_CLAUSE, TK_IF}, + {IF_CLAUSE, TK_ELIF}, + {IF_CLAUSE, TK_THEN}, + {IF_CLAUSE, TK_ELSE}, + {PATTERN, TK_PAREN_OPEN}, {PATTERN, CASE_LIST}, {PATTERN_CASE, CASE_LIST}, @@ -434,6 +475,8 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, TK_ELIF}, {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, TK_IF}, + {COMPOUND_LIST, TK_THEN}, + {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, COMPOUND_LIST}, {SUBSHELL, LINEBREAK}, {SUBSHELL, TK_BANG}, @@ -448,10 +491,18 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, TK_DO}, {COMPOUND_COMMAND, TK_WHILE}, + {COMPOUND_COMMAND, TK_IF}, + {COMPOUND_COMMAND, TK_ELIF}, + {COMPOUND_COMMAND, TK_THEN}, + {COMPOUND_COMMAND, TK_ELSE}, {COMPOUND_COMMAND, COMPOUND_LIST}, {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, {COMMAND, TK_DO}, + {COMMAND, TK_IF}, + {COMMAND, TK_ELIF}, + {COMMAND, TK_THEN}, + {COMMAND, TK_ELSE}, {COMMAND, COMPOUND_LIST}, {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, @@ -463,6 +514,10 @@ t_stackmatch g_stackmatch[] = {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, TK_DO}, + {PIPE_SEQUENCE, TK_IF}, + {PIPE_SEQUENCE, TK_ELIF}, + {PIPE_SEQUENCE, TK_THEN}, + {PIPE_SEQUENCE, TK_ELSE}, {PIPE_SEQUENCE, COMPOUND_LIST}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_BANG}, @@ -471,6 +526,10 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, TK_WHILE}, {PIPE_SEMI_SEQUENCE, TK_DO}, + {PIPE_SEMI_SEQUENCE, TK_IF}, + {PIPE_SEMI_SEQUENCE, TK_ELIF}, + {PIPE_SEMI_SEQUENCE, TK_THEN}, + {PIPE_SEMI_SEQUENCE, TK_ELSE}, {PIPE_SEMI_SEQUENCE, COMPOUND_LIST}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, TK_BANG}, @@ -479,6 +538,10 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, {PIPELINE, TK_WHILE}, {PIPELINE, TK_DO}, + {PIPELINE, TK_IF}, + {PIPELINE, TK_ELIF}, + {PIPELINE, TK_THEN}, + {PIPELINE, TK_ELSE}, {PIPELINE, COMPOUND_LIST}, {PIPELINE, LINEBREAK}, {PIPELINE, SEPARATOR_OP}, @@ -488,6 +551,10 @@ t_stackmatch g_stackmatch[] = {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO}, {AND_OR, TK_WHILE}, + {AND_OR, TK_IF}, + {AND_OR, TK_ELIF}, + {AND_OR, TK_THEN}, + {AND_OR, TK_ELSE}, {AND_OR, COMPOUND_LIST}, {AND_OR, LINEBREAK}, {AND_OR, SEPARATOR_OP}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 1773e115..f52ff681 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -34,6 +34,7 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, TK_IF, CMD_NAME}, {TK_N_WORD, TK_THEN, CMD_NAME}, {TK_N_WORD, TK_ELIF, CMD_NAME}, + {TK_N_WORD, TK_ELSE, CMD_NAME}, {TK_N_WORD, COMPOUND_LIST, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, @@ -58,6 +59,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, TK_FI, NEWLINE_LIST}, {TK_NEWLINE, TK_ELIF, NEWLINE_LIST}, {TK_NEWLINE, TK_ELSE, NEWLINE_LIST}, + {TK_NEWLINE, TK_THEN, NEWLINE_LIST}, {TK_NEWLINE, CMD_NAME, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index a943423b..d5d0c802 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,12 @@ char *read_state(t_sym current) { + if (current == TK_ELSE) + return ("TK_ELSE"); + if (current == TK_FI) + return ("TK_FI"); + if (current == ELSE_PART) + return ("ELSE_PART"); if (current == TK_FI) return ("TK_FI"); if (current == TK_IF) diff --git a/42sh/test.sh b/42sh/test.sh new file mode 100644 index 00000000..36681fe0 --- /dev/null +++ b/42sh/test.sh @@ -0,0 +1,4 @@ +if cat yolo +then ls +else pwd +fi From 3d65d42708583a06a8830df7dd570951a8a1c5ba Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 20 Feb 2017 16:07:54 +0100 Subject: [PATCH 068/206] grammar if stable --- 42sh/includes/.parser.h.swn | Bin 0 -> 20480 bytes 42sh/includes/parser.h | 4 +++- 42sh/sample/if/01_if_easy.sh | 4 ++++ 42sh/sample/if/02_if_elif.sh | 10 +++++++++ 42sh/sample/if/03_if_else.sh | 5 +++++ 42sh/sample/if/04_if_elseelsif.sh | 11 +++++++++ 42sh/src/parser/.eval_sym.c.swn | Bin 0 -> 40960 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 0 -> 16384 bytes 42sh/src/parser/.read_stack.c.swn | Bin 0 -> 20480 bytes 42sh/src/parser/aggregate_sym.c | 27 +++++++++++++++++----- 42sh/src/parser/eval_sym.c | 35 ++++++++++++++++++++++++++--- 42sh/src/parser/produce_sym.c | 8 +++++-- 42sh/src/parser/read_stack.c | 6 ++++- 42sh/test.sh | 4 ---- 14 files changed, 97 insertions(+), 17 deletions(-) create mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/sample/if/01_if_easy.sh create mode 100644 42sh/sample/if/02_if_elif.sh create mode 100644 42sh/sample/if/03_if_else.sh create mode 100644 42sh/sample/if/04_if_elseelsif.sh create mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/.produce_sym.c.swn create mode 100644 42sh/src/parser/.read_stack.c.swn delete mode 100644 42sh/test.sh diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn new file mode 100644 index 0000000000000000000000000000000000000000..dbc833146f12db4969d19374b9554f4e49f21ade GIT binary patch literal 20480 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/19 18:43:02 by ariard ### ########.fr */ +/* Updated: 2017/02/20 14:57:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -121,6 +121,8 @@ enum e_sym AND_OR_MAJOR, AND_OR_MINOR, END_COMMAND, + CONDITION, + COMPLETE_CONDITION, ALL = 200, }; diff --git a/42sh/sample/if/01_if_easy.sh b/42sh/sample/if/01_if_easy.sh new file mode 100644 index 00000000..4676e8ca --- /dev/null +++ b/42sh/sample/if/01_if_easy.sh @@ -0,0 +1,4 @@ +if ls ; +then + pwd +fi diff --git a/42sh/sample/if/02_if_elif.sh b/42sh/sample/if/02_if_elif.sh new file mode 100644 index 00000000..ae93a37e --- /dev/null +++ b/42sh/sample/if/02_if_elif.sh @@ -0,0 +1,10 @@ +if ls ; +then + pwd +elif ls +then + pwd +elif ls +then + pwd +fi diff --git a/42sh/sample/if/03_if_else.sh b/42sh/sample/if/03_if_else.sh new file mode 100644 index 00000000..a02520e0 --- /dev/null +++ b/42sh/sample/if/03_if_else.sh @@ -0,0 +1,5 @@ +if cat yolo ; +then + pwd +else ls +fi diff --git a/42sh/sample/if/04_if_elseelsif.sh b/42sh/sample/if/04_if_elseelsif.sh new file mode 100644 index 00000000..a52c07e3 --- /dev/null +++ b/42sh/sample/if/04_if_elseelsif.sh @@ -0,0 +1,11 @@ +if cat yolo ; +then + pwd +elif ls +then + pwd +elif pwd +then + ls +else ls +fi diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..1835f54b978338ed7ddba52caf1fdabd191064e9 GIT binary patch literal 40960 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 BtIPlZ literal 0 HcmV?d00001 diff --git a/42sh/src/parser/.produce_sym.c.swn b/42sh/src/parser/.produce_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..994916b736c7d6d882fce1be1f88e0dc5c979f36 GIT binary patch literal 16384 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/19 19:32:24 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:06:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,8 +20,10 @@ t_aggrematch g_aggrematch[] = {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, - {TK_FI, COMPOUND_LIST, IF_CLAUSE, TK_IF}, - {TK_FI, CMD_SUPERIOR, IF_CLAUSE, TK_IF}, + {TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION}, + {TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, + {TK_FI, CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, + {TK_THEN, CONDITION, COMPLETE_CONDITION, CONDITION}, {TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO}, {TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO}, //Esac ? @@ -35,8 +37,10 @@ t_aggrematch g_aggrematch[] = //watch this {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, + {SEPARATOR_OP, PIPE_SEMI_SEQUENCE, SEPARATOR, 0}, {SEPARATOR, CMD_SUPERIOR, END_COMMAND, CMD_SUPERIOR}, {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, + {SEPARATOR, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI}, @@ -64,6 +68,8 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, TERM, SEPARATOR, 0}, {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0}, + {NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, + {NEWLINE_LIST, CONDITION, CONDITION, CONDITION}, //to check {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, @@ -94,7 +100,7 @@ t_aggrematch g_aggrematch[] = {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, COMPOUND_COMMAND}, {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, CMD_PREFIX}, {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, CMD_NAME}, - + {CMD_SUFFIX, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, //to abstract {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0}, @@ -114,6 +120,7 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, TK_ELSE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_THEN, CMD_SUPERIOR, 0}, {CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0}, + {CMD_NAME, COMPLETE_CONDITION, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, @@ -129,7 +136,8 @@ t_aggrematch g_aggrematch[] = {LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL}, {UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {WHILE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, - {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF}, +// {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF}, +// {ELSE_PART, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {PATTERN, TK_PAREN_OPEN, PATTERN_CASE, TK_PAREN_OPEN}, {PATTERN, CASE_LIST, PATTERN_CASE, 0}, @@ -140,7 +148,10 @@ t_aggrematch g_aggrematch[] = {CASE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK}, - {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, +// {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, + {COMPOUND_LIST, TK_IF, CONDITION, TK_IF}, + {COMPOUND_LIST, TK_THEN, CONDITION, TK_THEN}, + {COMPOUND_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, // {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, {COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, @@ -169,6 +180,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_THEN, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_ELSE, PIPE_SEQUENCE, 0}, + {END_COMMAND, COMPLETE_CONDITION, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, @@ -182,6 +194,7 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, TK_THEN, PIPELINE, 0}, {PIPE_SEQUENCE, TK_ELSE, PIPELINE, 0}, {PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0}, + {PIPE_SEQUENCE, COMPLETE_CONDITION, PIPELINE, 0}, {PIPELINE, TK_WHILE, AND_OR, 0}, {PIPELINE, TK_DO, AND_OR, 0}, {PIPELINE, TK_IF, AND_OR, 0}, @@ -192,6 +205,7 @@ t_aggrematch g_aggrematch[] = {PIPELINE, LINEBREAK, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, + {PIPELINE, COMPLETE_CONDITION, AND_OR, 0}, {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO, COMPOUND_LIST, 0}, @@ -201,6 +215,7 @@ t_aggrematch g_aggrematch[] = {AND_OR, TK_THEN, COMPOUND_LIST, 0}, {AND_OR, TK_ELSE, COMPOUND_LIST, 0}, {AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0}, + {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 5b3f5135..a37e7558 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/19 19:31:38 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:06:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -176,15 +176,21 @@ t_stackmatch g_stackmatch[] = {TK_IF, TK_ELIF}, {TK_IF, TK_THEN}, {TK_IF, COMPOUND_LIST}, + {TK_THEN, CONDITION}, {TK_THEN, COMPOUND_LIST}, - {TK_THEN, CMD_SUPERIOR}, {TK_ELSE, COMPOUND_LIST}, + {TK_ELSE, CONDITION}, + {TK_ELSE, COMPLETE_CONDITION}, {TK_ELIF, COMPOUND_LIST}, + {TK_ELIF, COMPLETE_CONDITION}, + {TK_ELIF, CONDITION}, {TK_FI, ELSE_PART}, {TK_FI, COMPOUND_LIST}, {TK_FI, CMD_SUPERIOR}, {TK_FI, END_COMMAND}, + {TK_FI, CONDITION}, {TK_DO, CMD_SUPERIOR}, + {TK_FI, COMPLETE_CONDITION}, {TK_DO, COMPOUND_LIST}, {TK_DO, NAME}, {TK_DO, SEQUENTIAL_SEP}, @@ -263,13 +269,16 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_ELSE}, {END_COMMAND, LINEBREAK}, {END_COMMAND, COMPOUND_LIST}, + {END_COMMAND, COMPLETE_CONDITION}, {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, + {SEPARATOR, PIPE_SEMI_SEQUENCE}, {SEPARATOR_OP, CMD_SUPERIOR}, {SEPARATOR_OP, LIST}, {SEPARATOR_OP, TERM}, {SEPARATOR_OP, COMPOUND_LIST}, + {SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, {LINEBREAK, TK_SEMI}, {LINEBREAK, SEPARATOR_OP}, {LINEBREAK, TK_PAREN_CLOSE}, @@ -298,6 +307,8 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, TERM}, {NEWLINE_LIST, COMPOUND_LIST}, {NEWLINE_LIST, COMPLETE_COMMANDS}, + {NEWLINE_LIST, COMPLETE_CONDITION}, + {NEWLINE_LIST, CONDITION}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESSDASH}, {IO_HERE, TK_IO_NUMBER}, @@ -345,6 +356,7 @@ t_stackmatch g_stackmatch[] = {REDIRECT_LIST, COMPOUND_COMMAND}, {CMD_SUFFIX, CMD_WORD}, {CMD_SUFFIX, CMD_NAME}, + {CMD_SUFFIX, CMD_SUPERIOR}, {CMD_PREFIX, LINEBREAK}, {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, @@ -364,6 +376,7 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_THEN}, {CMD_NAME, TK_ELSE}, {CMD_NAME, COMPOUND_LIST}, + {CMD_NAME, COMPLETE_CONDITION}, {CMD_SUPERIOR, TK_WHILE}, {CMD_SUPERIOR, TK_DO}, @@ -372,6 +385,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, TK_THEN}, {CMD_SUPERIOR, TK_ELSE}, {CMD_SUPERIOR, COMPOUND_LIST}, + {CMD_SUPERIOR, COMPLETE_CONDITION}, {CMD_SUPERIOR, LINEBREAK,}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, @@ -387,6 +401,7 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, TK_THEN}, {SIMPLE_COMMAND, TK_ELSE}, {SIMPLE_COMMAND, COMPOUND_LIST}, + {SIMPLE_COMMAND, COMPLETE_CONDITION}, {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, @@ -399,6 +414,9 @@ t_stackmatch g_stackmatch[] = {DO_GROUP, SEQUENTIAL_SEP}, {LOOP, TK_WHILE}, {LOOP, TK_UNTIL}, + {CONDITION, LINEBREAK}, + {CONDITION, COMPOUND_LIST}, + {COMPLETE_CONDITION, LINEBREAK}, {BRACE_GROUP, LINEBREAK}, {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, @@ -432,7 +450,9 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, TK_THEN}, {WHILE_CLAUSE, TK_ELSE}, {WHILE_CLAUSE, COMPOUND_LIST}, - {ELSE_PART, COMPOUND_LIST}, + {WHILE_CLAUSE, COMPLETE_CONDITION}, +// {ELSE_PART, COMPOUND_LIST}, +// {ELSE_PART, COMPLETE_CONDITION}, {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, @@ -444,6 +464,8 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, TK_ELIF}, {IF_CLAUSE, TK_THEN}, {IF_CLAUSE, TK_ELSE}, + {IF_CLAUSE, COMPOUND_LIST}, + {IF_CLAUSE, COMPLETE_COMMAND}, {PATTERN, TK_PAREN_OPEN}, {PATTERN, CASE_LIST}, @@ -478,6 +500,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, TK_THEN}, {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, COMPOUND_LIST}, + {COMPOUND_LIST, COMPLETE_CONDITION}, {SUBSHELL, LINEBREAK}, {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, @@ -496,6 +519,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, TK_THEN}, {COMPOUND_COMMAND, TK_ELSE}, {COMPOUND_COMMAND, COMPOUND_LIST}, + {COMPOUND_COMMAND, COMPLETE_CONDITION}, {COMMAND, TK_WHILE}, {COMMAND, LINEBREAK}, {COMMAND, TK_DO}, @@ -504,6 +528,7 @@ t_stackmatch g_stackmatch[] = {COMMAND, TK_THEN}, {COMMAND, TK_ELSE}, {COMMAND, COMPOUND_LIST}, + {COMMAND, COMPLETE_CONDITION}, {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, {COMMAND, NEWLINE_LIST}, @@ -519,6 +544,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, TK_THEN}, {PIPE_SEQUENCE, TK_ELSE}, {PIPE_SEQUENCE, COMPOUND_LIST}, + {PIPE_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP}, @@ -531,6 +557,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, TK_THEN}, {PIPE_SEMI_SEQUENCE, TK_ELSE}, {PIPE_SEMI_SEQUENCE, COMPOUND_LIST}, + {PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, @@ -543,6 +570,7 @@ t_stackmatch g_stackmatch[] = {PIPELINE, TK_THEN}, {PIPELINE, TK_ELSE}, {PIPELINE, COMPOUND_LIST}, + {PIPELINE, COMPLETE_CONDITION}, {PIPELINE, LINEBREAK}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, @@ -556,6 +584,7 @@ t_stackmatch g_stackmatch[] = {AND_OR, TK_THEN}, {AND_OR, TK_ELSE}, {AND_OR, COMPOUND_LIST}, + {AND_OR, COMPLETE_CONDITION}, {AND_OR, LINEBREAK}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index f52ff681..fc35aea6 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/19 19:31:40 by ariard ### ########.fr */ +/* Updated: 2017/02/20 15:54:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,7 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, TK_CLOBBER, FILENAME}, {TK_N_WORD, CMD_WORD, CMD_SUFFIX}, {TK_N_WORD, CMD_NAME, CMD_SUFFIX}, + {TK_N_WORD, CMD_SUPERIOR, CMD_SUFFIX}, {TK_N_WORD, LINEBREAK, CMD_NAME}, {TK_N_WORD, TK_PIPE, CMD_NAME}, {TK_N_WORD, AND_OR, CMD_NAME}, @@ -36,7 +37,7 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, TK_ELIF, CMD_NAME}, {TK_N_WORD, TK_ELSE, CMD_NAME}, {TK_N_WORD, COMPOUND_LIST, CMD_NAME}, - + {TK_N_WORD, COMPLETE_CONDITION, CMD_NAME}, {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, {TK_N_WORD, TK_BANG, CMD_NAME}, {TK_N_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, @@ -66,9 +67,12 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, {TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST}, + {TK_NEWLINE, COMPLETE_CONDITION, NEWLINE_LIST}, + {TK_NEWLINE, CONDITION, NEWLINE_LIST}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, + {TK_SEMI, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {TK_AMP, CMD_SUPERIOR, SEPARATOR_OP}, {TK_AMP, TERM, SEPARATOR_OP}, {TK_AMP, LIST, SEPARATOR_OP}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index d5d0c802..56435060 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/19 19:31:42 by ariard ### ########.fr */ +/* Updated: 2017/02/20 15:04:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,10 @@ char *read_state(t_sym current) { + if (current == CONDITION) + return ("CONDITION"); + if (current == COMPLETE_CONDITION) + return ("COMPLETE_CONDITION"); if (current == TK_ELSE) return ("TK_ELSE"); if (current == TK_FI) diff --git a/42sh/test.sh b/42sh/test.sh deleted file mode 100644 index 36681fe0..00000000 --- a/42sh/test.sh +++ /dev/null @@ -1,4 +0,0 @@ -if cat yolo -then ls -else pwd -fi From 2e012b3e9139c09602fa40bc6a2596da6c814f25 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 20 Feb 2017 17:20:34 +0100 Subject: [PATCH 069/206] if elif ok, else coming --- 42sh/includes/.parser.h.swn | Bin 20480 -> 0 bytes 42sh/includes/parser.h | 6 ++-- 42sh/sample/if/01_if_easy.sh | 8 ++++- 42sh/src/main/ft_putast.c | 10 ++++-- 42sh/src/parser/.eval_sym.c.swn | Bin 40960 -> 0 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 16384 -> 0 bytes 42sh/src/parser/.read_stack.c.swn | Bin 20480 -> 0 bytes 42sh/src/parser/add_cmd.c | 6 ++-- 42sh/src/parser/add_condition.c | 49 ++++++++++++++++++++++------- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_sep.c | 8 ++--- 42sh/src/parser/aggregate_sym.c | 10 +++--- 42sh/src/parser/build_tree.c | 4 +-- 42sh/src/parser/eval_sym.c | 4 +-- 42sh/src/parser/ft_parse.c | 7 ++--- 42sh/src/parser/produce_sym.c | 8 ++--- 42sh/src/parser/read_stack.c | 2 +- 17 files changed, 81 insertions(+), 43 deletions(-) delete mode 100644 42sh/includes/.parser.h.swn delete mode 100644 42sh/src/parser/.eval_sym.c.swn delete mode 100644 42sh/src/parser/.produce_sym.c.swn delete mode 100644 42sh/src/parser/.read_stack.c.swn diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn deleted file mode 100644 index dbc833146f12db4969d19374b9554f4e49f21ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/20 14:57:52 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:07:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -217,9 +217,11 @@ int add_file(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); int add_condition_cmd(t_btree **ast, t_list **lst); +int add_condition_sep(t_btree **ast, t_list **lst); +int add_branch(t_btree **ast, t_list **lst); int isloop(t_btree **ast); int isdir(t_btree **ast); -int iscondition(t_btree **ast); +int iscondition(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); diff --git a/42sh/sample/if/01_if_easy.sh b/42sh/sample/if/01_if_easy.sh index 4676e8ca..cc8f6b09 100644 --- a/42sh/sample/if/01_if_easy.sh +++ b/42sh/sample/if/01_if_easy.sh @@ -1,4 +1,10 @@ -if ls ; +if ls +then + pwd +elif ls +then + pwd +elif ls then pwd fi diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index c4d1f46c..02ad0f73 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/17 23:41:26 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:42:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,9 +20,13 @@ char *ft_putast(void *nodein) t_type type; }; node = nodein; - if (node->type == TK_DO) + if (node->type == TK_THEN) + return ("THEN"); + else if (node->type == TK_FI) + return ("FI"); + else if (node->type == TK_DO) return ("TK_DO"); - if (node->type == TK_AMP) + else if (node->type == TK_AMP) return (" & "); else if (node->type == TK_N_WORD) return (" TK_N_WORD"); diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn deleted file mode 100644 index 1835f54b978338ed7ddba52caf1fdabd191064e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI533Oe>dB-1XtQg0vZ2*Tn?BE((ShB%3*cgzlC;NdmwAh4A2wMgPV~iw&K@cYm zA!Q4cy_5rmltMxRBv5F9P!=bYt%No7KnN|E0O7F4ENxo)`|ix0JKGh6z-gOY`TVT+ zzW?00GvCaed%u}^PlwkpsZ<994?wPpA3oK0~+;eo;fg$D`` z6dou%PqN{d)uN_s07DUi$a(p1z5G-=Tls;_08! z@2919eS-8nHQIh?n$FWV)%MTn-{11|QQCg8{(XU`Z=~&w`u8YZ;q?64T>L6LP2`OZCfOnV(c>->Q%i%Iu13fSg zc7o5s>rALT2LA|`z%VR=S@3!IQ}|CNEuMw7@I5#ePJ~|A7pB6N@CI`kkHbH}EpQ2( z1ijD%yTH~UZT!BO@TeK?+OMa%(%IS2+E`m|uC`X@byOPmJGr*xD)UDp6r^ zTSsG5Xz!>rRS$?to!w0_siV?Z?WoM}>S?Zab_EAg)@oZ%Yj?}MN(Z7UW8(r!+*Mnq z20d*ZJuMCUwuzXOKh>o8o!#w~j%uj2SKBK+ot2g<|LxyhX`OE>nI7F*SuCD$%9LuI zmG*{?hAvLr*6yE`;?8SmUErGoFQ<9=PPXl~k8Qi_Vq0-NoGMWVr()c{(mfg*Iv3`+ zIFqAZ&g2msoh6F;I+LUB&Sc-?nG!lZ(*nP{lH+<;^1SbgUIS!eybUrvzZphog4%Mf z`)kV|;`-WhuG?$Nxh}6Q$J`wmMH;1Qs(khsVwnRMtJD$qrq#4Z51moITa%K8BgY5> zhn75-*3~UtwQ_m?lHQ@da_@?z<-XNJeJhr#p++B(?`fSN=4ma(Jgp_q)7lzzYHjyB zv}LwEZJAw9TY}q(wGj2R*1XPZZX@xooAnHTcvecjJCz>urcz?gREpiRLWyKYqWs27zKb7G_1qv-x^E$waH-0SQ+q}GB;a9gT2rJhgkL)z%|?WCci z>E*^Mxx@}gHFfh%&tNXK^wjQM*^*;;Gf!IHh+U@3t&EltX8_W)0_ zhdEDjdx$5x-NX{3eWjtZv$~+Q(o$*dN(vJjG+VV2R3;Uq7Is%k?f7MWL#KHbvdq#b zX-lVO)sA{l9xe^_3=Z`!IqK-%p(RJw9AUjV=#cW5DadD_g`^)qKrn^8XegtFS+ zY@K+*gbBRk|Kx|w(OOG0oIlX#W>~+6WH^21>|N`l8I~tZksQ-sI=k}6tMU{w)Bnhb zS0=kG!+9snPOG)2s@^_>Lp0xtA+_6kFYA~zlPR;)oUA<4D!b`F!aK<=%aL;G+|vxR zJ>wrCGnHial-bS;^*+t;BWGhLoIN|ul2`JB_58Mqu_Ps2%d(u@VD@FI1Cm; z7j(iTm_@nl~$)%cs zzM)kEE6S6m?L4Pc!~2^4DN}e=V}yDUYWkOzC#~o^UOw7bo;$bfL`D6FOdUFAWqIPn zauPSi^i?aC_6_XJTvMs$_#^w5_mw9_azO7d&n?$;zQzTU#>-=I`N+QBrRALllgv5w zPJ`oX%Y+0o0ObzXUC*VxiiHkzZFANrKW#QX}F|brw`kci1NrV$)L8Z-lT_? zN+(l>;riNgeG)3ltVMIBtJ1@Z7A6ar4s;_@KS5+lGECxTAyI7PFlBa=s_BYI;#3GG z4N@VVk5#nR#%fo!tu?82dXUKOoK30_WmlSYlx^9%7FOIGl62K3Cs%BtW%0slvx?5G z>>Asw1JztiWM)PkkjidFCFU1PO<2tkg~U z*0IKH+Lcba%;#cu*OGD^<|m4}&QBC|qMwMGn?rR$4==thMx<% z(<~9)X`qO1HC05l8ZDv*&8JoY^II;}^BOJH^V%!bBTbb`(N;>uksHWP6>Xa|LDno1 z|NoHq|0l$`691?B`(Gl)e*mt7GhhYm5A84=wt{zw^`C~j;A%J%2B8~f!B()ISpVlB z^8vTOMQ|b<0`oxj5sZd6iS-|a8{yj^dkNY>_7Y5ot>JxQ{Ab}OAaen-m*7M=1onY1 zKnb2FuK#zC{RFqdm2f&NhXY^%%!CQBIlN2Vp9As1vv56p16F{{1?&m3w_ptX24B4Z z_rncv0h|PV&<-Aj1MA=cxCt(WQ{gCRhdS6EHinnjH}E*z0oTAea3b_TBTRrX z@ILzno`ZYg8aNwP!@;l*>;N0UE9@Qk8Qct4z}c_{`e89tpboZ!8hDRA1kb~La08qN z$H74`2eyax>>qdxWPia0Ao~mYU?Ip)&9GWR@2WO5bD_1@mYvyUU#zNooNu-#&skir zwD!zzZtLXM6At)vVJAg|BE&gmJPRi)Ei!o0WZRmJ;(i^P}lMo~(vIg}D))iJN5VSZjWYt~|T ze@oq#rU>o|R3_D8rAalC*&QP_2gPh^>lmr8CUUF{i4ZG5B6w#{Y{99!Tf3^wBb{6) zh@DxqxD}uHLg-CAK$%?*tXyC}qY919FtA0SpY|+6a%O!g#$PVF^ev-&+`TarX z74wCbV!p^qV0Q*>4SZ4QY?vRpD3sZZ7(K0>X(#oR)GSFyYFDMl%Bz%EC6$7w?20I3 zP>;qo2`wrtG}9~+AEpIULbR>46x-R=Cc9STF(G<--jx}o>#g8{>hS))vbI&M( zJ}h;gHrZF0Hf7g^He}bEHY8ox&M5!Nkt1R~O6;*dsLx>cGcnn{OgWwBh zQ6t70(unz`Hc4VdH)5>(Mx+#WC5+v!Nz%+lk+Rwy+7avx3Xb6JL2x8@2ZE8J`wxsN z-6+_XDLYy8o*;W>A?*T|9CNrO=eyiW6mz;I$J}nop5rYgaJ{AZ&i5qS{hs7DfG4_5 zV2RO2u=Hp%BuzjA#5;Ya#u_10^V=Xx6KjG@jkQ3gdJT{Xf&VkfcfYIH-ggz(`L5>r zKGUME&*Z4*rDbv*Z^W42jhOFtlO*PKBgUL=#LVXs|DR55`5JMk#Q*8%_htS6UqIsj z^I#ATh6S(-YyI26k1^>$licW;1y#1``|{n98QI!p%rGp4zMA-NQ^Ig06H?D zPE|^fRWVDOeWI|Kr8T=9xL~uX(`+_M+w$WmogfxPX(`q>vs2mgHQE|<*+d;Bn@+FlokjL^DE%Rs+>J~RtE0Tc$$V@$|D2@F&BK{x{U{T=-bu6h-gpf%-CfA1 za_M}q*;W-~t>%k!%udOZ{r@`>pRWRm|K*qbyg+<^4_pbua3Jgr6JT?An}pB7LvRyZ z1d_*cXobnJ4QvRn5Z6BnH^HTF0vrI-VKaD+Sbi-?ynhBPhXpVNwt%;Y;pH;`*TID_ z3`?L2b+8SrCw_kl{t2#uGhrpP!XB_AYzFIz+hvXaUic}et$1q z182e@90+^Emq31MhV>w7Z67fUaG_+@2tvu-t7B#7Zqu=ZWMEAuj?sK_lq_AaRLpG!0@KO;gxL z-3YcxyWf~x_Zc(i&e{X3Dx;B&#Vq+7i%H`Z-^&5ju1Bca6$;g?W}!Ax!8vW_0q@YJ z?$-IKvpp%lJ9r6W{lZHU>mXhdN@*TBLdUvI*4aI;b77@9f5kpa5EL$xf`CURWcxu*0VCbW9H;hefodaD&eR>EgaRZh9kK3NF-?-HbM92INFtMU%QIy?qtw39?dD3nFBIVZPR^ik-)-FkmFN7S>RSbLD0f}f~*_L z`v0$pb?+rMmiRyYe*R~O@$ZIf;e3!efWx5*Q(-Lpn%MqfxD76Yli(0&f;t!r68k>} z@?8KI!znNTUxo&l46^S3266u5@FTbYz6#4=KiCzvg%61H<@*5chil<{SOZI;1$F`X z9st?@FZGf6fIC6v1I~q$pby$X_WzHA-%|G%;UTygE`?K|AKGCir0e}J6YD<$w}H$D zd>drlzXxPaU?uo1jMy#FZN z4p+db&de+l=&58zrj2Uf#j&;+%xCA>w<{{+aqz@>09EP=h?i|_>~ z!HdNH55f&_KCFgCusg^PD@k7OcE<`|4KEx&1%1*y{YNx&n~iAZMjO%etu~_QJ8DER zBL&s8ujOS+0OrxQ+Q zc1kLxq!GG^N)YV?N{V&>CHal7tft{jyG!K812M(1_QGXvbMNbRl4uE4c9G>(`$)f( z=|N#R)owghQmKonfGwDfe$E~}>v^9}Vz!jCO*KuHTT3TRP)$b-+QL!oiaLT@Q%4d< znW_egscWEE4H;GF>sVJ`%cQN zwu3UO>zvH)I!4(?sJ5Ke`IxH3w~B7pA+{wl6{GVg6;^uU@kph$VsoSAwP9?)j3M^T9Np_hj{K7iR*~} z)4!i5`~M#V+5dkIEQiI=2(_>^yhD8dEJ*w>d;f<(*8XMB|EBONas5MZ9h?S7LnrJ8 z+knLUPr;AjDv-5*`3}IvFblSXw~6N;hMPh5_EVIottP!Re5+KkoUI ze~PUH$k8G>zC|DB1d%v6-f3bz%}YWl?Jno3?)@>_CXiFeEP?&Bs2*L+ zeukh>*->_3GOJq%<1u-N$bATiq{`_;Dw}8zGE&%mjO6zYBbeuNuPDixa*xVZJ;K8x zoz0xB*tsy`?u%sMKHc3A^i4+%x~HSsJ=77rPMU5M$lHXV8ZL5>*_|+wmYi9#NG`49 z-T#rD3({-#u$~N4Ndc`Dey3OaqJ0rs$6z)Wpldb*w`&0xLGNJ z9%N}j|FJZ?_gH4Tsq5-$hGpomHa-Nm$w(S^a7*fHmh!DOu^%A9L?dNlw~c$G-8_L} zS}0I-BL()vko1f|(oN;sb6U$y6f~GC2W{rccC)#P-EuXGCC~Y*AUFc|noU;Fc?4WS=R|Fn&RNGUIV0%d7|GS7AyNN+1 z{y$U)fG-o@%jf@Zf=gfx906^x2gv6DHUs$%z+b>U@Ete{WFA2F0nCRfusOU-y#EWh z2d;s0U^N^L%`gMXuqnJs-2Wi_0M3R%kU4?5Fabt^{7u0}KtB6_HXH>Vum_9-`P~02 z#QO3bfH%NdFa+|s|0b9Mo5SnG`|>vhe+=J+3t$b%`oH{L!CCMpur<6-yf2^mPyeo< zeD~il90c;cf7`+b#QV>|U2rwXX91Rgtp7KHtp9Hgzro*6!R>Gf3_{WdpK<_RWM6oo z@Ic{#Pt^k-XLC^Sm>OmhKK)1b?wG(iqM0}#qM1j{h^8MlBZ_{ej3~*Io;-;DvFss= zG@!iz6I;J=b)HvD;{}RoxiFDI({#l)rF3_e>Ur+AF15Fb!L`_?WdE^lv-Qaila0|1k@;*@x=qTt z%pI$_#vQA_O-Z&|Wut?dz)bUw_U3HIlYbc~C1_SL_pt1*ZgjE(O#Xg%a;8wi{6E(S BtIPlZ diff --git a/42sh/src/parser/.produce_sym.c.swn b/42sh/src/parser/.produce_sym.c.swn deleted file mode 100644 index 994916b736c7d6d882fce1be1f88e0dc5c979f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/19 18:46:04 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:03:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,8 +25,10 @@ int add_cmd(t_btree **ast, t_list **lst) return (add_file(ast, lst)); else if (isloop(ast)) return (add_loop_cmd(ast, lst)); - else if (iscondition(ast)) + else if (iscondition(ast, lst) == 1) return (add_condition_cmd(ast, lst)); + else if (iscondition(ast, lst) == 2) + return (add_branch(ast, lst)); else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index c4279323..1b790042 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,51 +6,76 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/19 18:46:01 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:17:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int iscondition(t_btree **ast) +int iscondition(t_btree **ast, t_list **lst) { t_astnode *node; + t_token *token; node = NULL; + token = (*lst)->content; if (*ast) { node = (*ast)->item; - if ((node->type == TK_NEWLINE || node->type == TK_SEMI - || node->type == TK_AMP) && iscondition(&(*ast)->right) == 1) - return (1); - if ((node->type == TK_IF || node->type == TK_ELIF) - && node->full == 1) + if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) + && token->type == TK_ELIF && node->full == 0) return (2); if ((node->type == TK_IF || node->type == TK_ELIF) && node->full == 0) return (1); + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && iscondition(&(*ast)->right, lst) == 1) + return (1); } return (0); } -int add_condition_cmd(t_btree **ast, t_list **lst) +int add_condition_cmd(t_btree **ast, t_list **lst) { t_token *token; t_astnode *node; token = (*lst)->content; node = (*ast)->item; - if (token->type == TK_IF && node->type == TK_IF) + if (token->type == TK_IF && (node->type == TK_IF || node->type == TK_ELIF)) node->nest++; - if (token->type == TK_FI && node->type == TK_IF && node->nest > 0) + if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF) + && node->nest > 0) node->nest--; - else if (token->type == TK_FI && node->type == TK_IF && node->nest == 0) + else if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF)) return ((node->full = 1)); if (token->type == TK_THEN) return (add_cmd(&(*ast)->right, lst)); - else if (!(*ast)->right && iscondition(&(*ast)->left) != 2) + else if (!(*ast)->right) return (add_cmd(&(*ast)->left, lst)); else return (add_cmd(&(*ast)->right, lst)); return (0); +} + +int add_condition_sep(t_btree **ast, t_list **lst) +{ + if (!(*ast)->right) + return (add_sep(&(*ast)->left, lst)); + else + return (add_sep(&(*ast)->right, lst)); + return (0); +} + +int add_branch(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_btree *new_node; + + new_node = NULL; + gen_node(&new_node); + join_ast(ast, &new_node); + node = (new_node)->item; + node->type = TK_NEWLINE; + return (add_cmd(ast, lst)); } diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 6a82ae1f..17eb4f5d 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/19 18:38:25 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:18:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index ed591f3a..59335fbf 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/19 18:46:06 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:07:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,9 +21,10 @@ int add_sep(t_btree **ast, t_list **lst) DG("add sep"); if (isloop(ast) == 1) return (add_loop_sep(ast, lst)); + else if (iscondition(ast, lst) == 1) + return (add_condition_sep(ast, lst)); if (!*ast) gen_node(ast); - node = (*ast)->item; token = (*lst)->content; // if (node->type != TK_DO) // { @@ -32,7 +33,6 @@ int add_sep(t_btree **ast, t_list **lst) join_ast(ast, &new_node); node = (new_node)->item; // } - node->type = token->type; - + node->type = token->type; return (0); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index a9d1494c..1d176325 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:06:08 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:10:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -232,20 +232,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index d4497c29..b8a0b4f4 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/19 18:40:15 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:53:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,7 @@ t_treematch g_treematch[] = static int isseparator(int type, int cache) { if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO - || cache == TK_NEWLINE)) + || cache == TK_NEWLINE || cache == TK_THEN)) return (0); return (1); } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index a37e7558..677e0bb8 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:06:15 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:10:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -600,7 +600,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 54349019..09329b2d 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/19 18:41:29 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:32:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,6 @@ int ft_parse2(t_btree **ast, t_list **token) t_sym *stack; t_parstate state; - (void)ast; state = UNDEFINED; new_sym = ft_memalloc(sizeof(t_sym)); stack = ft_memalloc(sizeof(t_sym) * 1000); @@ -57,8 +56,8 @@ int ft_parse2(t_btree **ast, t_list **token) return (error_syntax(token)); if (state == SUCCESS) ft_putstr("success"); -// build_tree(ast, token); -// btree_print(STDBUG, *ast, &ft_putast); + build_tree(ast, token); + btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*stack) && !(*token)->next) || *stack == PROGRAM) insert_linebreak(token); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index fc35aea6..f1c6bf0b 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/20 15:54:45 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:09:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -86,8 +86,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; - DG("produce stack : %s && token : %s", read_state(stack), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(stack), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -95,7 +95,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 56435060..fa73330d 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/20 15:04:21 by ariard ### ########.fr */ +/* Updated: 2017/02/20 16:09:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From d9375e853ae770ce321d2e99248aaaee08019c9c Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 20 Feb 2017 17:25:53 +0100 Subject: [PATCH 070/206] else ok nesting coming --- 42sh/src/parser/add_condition.c | 17 ++++++++++------- 42sh/src/parser/build_tree.c | 3 ++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 1b790042..ff7c7914 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:17:34 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:23:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,9 +23,10 @@ int iscondition(t_btree **ast, t_list **lst) { node = (*ast)->item; if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) - && token->type == TK_ELIF && node->full == 0) + && (token->type == TK_ELIF || token->type == TK_ELSE) + && node->full == 0) return (2); - if ((node->type == TK_IF || node->type == TK_ELIF) + if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE) && node->full == 0) return (1); if ((node->type == TK_NEWLINE || node->type == TK_SEMI @@ -42,12 +43,14 @@ int add_condition_cmd(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; - if (token->type == TK_IF && (node->type == TK_IF || node->type == TK_ELIF)) + if (token->type == TK_IF && (node->type == TK_IF || node->type == TK_ELIF + || node->type == TK_ELSE)) node->nest++; - if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF) - && node->nest > 0) + if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF + || node->type == TK_ELSE) && node->nest > 0) node->nest--; - else if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF)) + else if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF + || node->type == TK_ELSE)) return ((node->full = 1)); if (token->type == TK_THEN) return (add_cmd(&(*ast)->right, lst)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index b8a0b4f4..9b3c6bd4 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:53:55 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:23:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ t_treematch g_treematch[] = {TK_DONE, &add_cmd}, {TK_IF, &add_cmd}, {TK_ELIF, &add_cmd}, + {TK_ELSE, &add_cmd}, {TK_THEN, &add_cmd}, {TK_FI, &add_cmd}, {TK_NEWLINE, &add_sep}, From 597afe06d099aaea255487ef04bfcdb58061cdf9 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 20 Feb 2017 18:17:37 +0100 Subject: [PATCH 071/206] nesting condition ok --- 42sh/sample/if/01_if_easy.sh | 13 ++++++------- 42sh/src/parser/.produce_sym.c.swn | Bin 0 -> 20480 bytes 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_condition.c | 4 ++-- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/aggregate_sym.c | 3 ++- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/eval_sym.c | 8 ++++++-- 42sh/src/parser/ft_parse.c | 7 ++++++- 42sh/src/parser/produce_sym.c | 2 +- 42sh/src/parser/read_stack.c | 4 +++- 12 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 42sh/src/parser/.produce_sym.c.swn diff --git a/42sh/sample/if/01_if_easy.sh b/42sh/sample/if/01_if_easy.sh index cc8f6b09..8d5a9525 100644 --- a/42sh/sample/if/01_if_easy.sh +++ b/42sh/sample/if/01_if_easy.sh @@ -1,10 +1,9 @@ if ls then - pwd -elif ls -then - pwd -elif ls -then - pwd + if ls + then + pwd + else pwd + fi +else ls fi diff --git a/42sh/src/parser/.produce_sym.c.swn b/42sh/src/parser/.produce_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..747572ce8e1c984c0e4916f253c6dbb69b3f304f GIT binary patch literal 20480 zcmeI2OKclO7{{lirCsO)@sJP*X`0a1v0dA70!^K!)Unsew)WcC4rx^t<2nv;n>v=g zQHj#f3y2GF;32gL34tg=>VZ>H54|9S5U2uypaQN1dME;khs3S?XCKZwvDa>?cu3#2 zzpU5u-*3M8@6LL6XATD*Qxbg87hqWKVC*w~cK?-AoGCvsmamrb)k#s{ycGMZeZk6r zZy@NKsyaxYHUj!n)!8G(f>!en1Z&g&TD9P>|6_Eqv z!1XyWr%i1i+`#&SeR@~#>E6umx^w*cVvw2~AP2|+a)2Bl2gm_(fE*wP{?`s@l`eJ? zEx5&O#i+SnwQRlG+`ivj?_E~jWp1xC*Vf~^703LVR^$LVKn{=tl2aj*eg*vQyXa3A<&17lBtZQ#;+#-0Vw zfC`ueX^;Xwunt_gov{zWo8SaE0Q$iuaP>CEJ_c`q6W|~i0{4L5B*wl1=fEqV2GYO- zuHhxax8OW@9!!C~zy(%;FV`}52Gl?p^nkVC$6Fcu2%H7afhWK&a4-0E4PzIu|_*=N!#iYnW9iM(VPZirYoAtk-V;L(r_brFOv+x zFn76UYFh91-G$k*RxE2n43(EPI8Z_wT27Zql3QO7u?40V+NPekG~t|4yO$dqR%68W zOsS@Ew_XWji-@@p@N)5g(Tl1Uviox3M9RzKN+#>&895bBhqK9aE}264QgK#JCmf0+ ziD)h}o|4l_GTmI3krRrSr<9bO6Cd&C(Q#Rg$WH3kIT_JfCI$D}E=J>2c_OZ;$Rd(d zqe@mus$On>mlM@nCfIa|R9w!=x$D^>Ij%qO-OAzTD-qr+dYrSWb-6gR@Ke=V zuo>$7-TN5e;X?ynIYf%Q;z%T9+=%W;9(_H7FLCwsa#Z zN%kAfLwp$b;-zw7W^S^`yNx-&zUgkp{BGP&-K>SX{UYE^T&#fOl}X%bPlk9f(6_@M z2>OEo-ZvNu^o0UJet4c6)0=G-_w@8&3xD+mlcUWtD_{h-!VLifJ9*!Z&_jcv{(+_e zd5=d#v{q&~eq&AcAei|Nf$*swZYki%e8_6nE~9ySY8nn-Su8+~5s{}E-3n;CarYHEhzCi?6EcM62V-Rg>@3DIRVZYI#3!+!{BH$Z7GK{q z0^Y2C;zpnRGX`oxhtR#-&%u@7(vwsEseohF{X;)+Raue#&5Bw zRPuOGqJOjx!P;NMEe#J3>CgXPW1RjF#`DGVzcs)A8$92i2dBUh5CIQ@HDERP6LSIn z0KbFt;C=8mcnzEeC&38V0v-Sx!Oy7UD)<1r4o(5R-W#@xb|eSL0djyGAP2|+a)2Bl k2gm_(;6LI3P1-f)OV literal 0 HcmV?d00001 diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 01e2ab7b..74f17a8c 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:03:15 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:08:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index ff7c7914..4b4dc908 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:23:25 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:17:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ int iscondition(t_btree **ast, t_list **lst) node = (*ast)->item; if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) && (token->type == TK_ELIF || token->type == TK_ELSE) - && node->full == 0) + && node->nest == 0) return (2); if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE) && node->full == 0) diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 17eb4f5d..465f66cb 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:18:49 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:46:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 59335fbf..e9243154 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:07:16 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:46:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 1d176325..c4b7d367 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:10:21 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:03:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -172,6 +172,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 9b3c6bd4..5a0a87cb 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:23:48 by ariard ### ########.fr */ +/* Updated: 2017/02/20 17:46:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 677e0bb8..72b9015a 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:10:06 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:03:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -175,6 +175,7 @@ t_stackmatch g_stackmatch[] = {TK_IF, TK_DO}, {TK_IF, TK_ELIF}, {TK_IF, TK_THEN}, + {TK_IF, COMPLETE_CONDITION}, {TK_IF, COMPOUND_LIST}, {TK_THEN, CONDITION}, {TK_THEN, COMPOUND_LIST}, @@ -416,7 +417,9 @@ t_stackmatch g_stackmatch[] = {LOOP, TK_UNTIL}, {CONDITION, LINEBREAK}, {CONDITION, COMPOUND_LIST}, + {CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, LINEBREAK}, + {COMPLETE_CONDITION, COMPLETE_CONDITION}, {BRACE_GROUP, LINEBREAK}, {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, @@ -466,6 +469,7 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, TK_ELSE}, {IF_CLAUSE, COMPOUND_LIST}, {IF_CLAUSE, COMPLETE_COMMAND}, + {IF_CLAUSE, COMPLETE_CONDITION}, {PATTERN, TK_PAREN_OPEN}, {PATTERN, CASE_LIST}, @@ -600,7 +604,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; -// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 09329b2d..317c5a00 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:32:27 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:16:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,5 +63,10 @@ int ft_parse2(t_btree **ast, t_list **token) else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } + if (state == UNDEFINED) + { + ft_putstr("syntax error: unexpected end of file\n"); + return (0); + } return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index f1c6bf0b..0c78928c 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:09:54 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:01:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index fa73330d..3dd67cd2 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/20 16:09:16 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:03:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == IF_CLAUSE) + return ("IF_CLAUSE"); if (current == CONDITION) return ("CONDITION"); if (current == COMPLETE_CONDITION) From cdfc6c6d557e6ccee5ede6b89697ded6f735c0d6 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 20 Feb 2017 18:58:46 +0100 Subject: [PATCH 072/206] until ok --- 42sh/sample/if/01_if_easy.sh | 5 ++--- 42sh/sample/until/01_until.sh | 11 ++++++++++ 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/parser/.produce_sym.c.swn | Bin 20480 -> 0 bytes 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_loop.c | 16 +++++++------- 42sh/src/parser/aggregate_sym.c | 9 +++++++- 42sh/src/parser/build_tree.c | 3 ++- 42sh/src/parser/eval_sym.c | 31 +++++++++++++++++++++++++++- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 4 +++- 42sh/src/parser/read_stack.c | 6 +++++- 13 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 42sh/sample/until/01_until.sh delete mode 100644 42sh/src/parser/.produce_sym.c.swn diff --git a/42sh/sample/if/01_if_easy.sh b/42sh/sample/if/01_if_easy.sh index 8d5a9525..171c2a03 100644 --- a/42sh/sample/if/01_if_easy.sh +++ b/42sh/sample/if/01_if_easy.sh @@ -2,8 +2,7 @@ if ls then if ls then - pwd - else pwd + ls | cat + pwd ; ls fi -else ls fi diff --git a/42sh/sample/until/01_until.sh b/42sh/sample/until/01_until.sh new file mode 100644 index 00000000..4233c43f --- /dev/null +++ b/42sh/sample/until/01_until.sh @@ -0,0 +1,11 @@ +until ls +do + until ls + do + pwd | cat + done + until ls + do + pwd ; ls + done +done diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index d09cf09e..a99b60db 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/17 17:30:54 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:54:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.produce_sym.c.swn b/42sh/src/parser/.produce_sym.c.swn deleted file mode 100644 index 747572ce8e1c984c0e4916f253c6dbb69b3f304f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI2OKclO7{{lirCsO)@sJP*X`0a1v0dA70!^K!)Unsew)WcC4rx^t<2nv;n>v=g zQHj#f3y2GF;32gL34tg=>VZ>H54|9S5U2uypaQN1dME;khs3S?XCKZwvDa>?cu3#2 zzpU5u-*3M8@6LL6XATD*Qxbg87hqWKVC*w~cK?-AoGCvsmamrb)k#s{ycGMZeZk6r zZy@NKsyaxYHUj!n)!8G(f>!en1Z&g&TD9P>|6_Eqv z!1XyWr%i1i+`#&SeR@~#>E6umx^w*cVvw2~AP2|+a)2Bl2gm_(fE*wP{?`s@l`eJ? zEx5&O#i+SnwQRlG+`ivj?_E~jWp1xC*Vf~^703LVR^$LVKn{=tl2aj*eg*vQyXa3A<&17lBtZQ#;+#-0Vw zfC`ueX^;Xwunt_gov{zWo8SaE0Q$iuaP>CEJ_c`q6W|~i0{4L5B*wl1=fEqV2GYO- zuHhxax8OW@9!!C~zy(%;FV`}52Gl?p^nkVC$6Fcu2%H7afhWK&a4-0E4PzIu|_*=N!#iYnW9iM(VPZirYoAtk-V;L(r_brFOv+x zFn76UYFh91-G$k*RxE2n43(EPI8Z_wT27Zql3QO7u?40V+NPekG~t|4yO$dqR%68W zOsS@Ew_XWji-@@p@N)5g(Tl1Uviox3M9RzKN+#>&895bBhqK9aE}264QgK#JCmf0+ ziD)h}o|4l_GTmI3krRrSr<9bO6Cd&C(Q#Rg$WH3kIT_JfCI$D}E=J>2c_OZ;$Rd(d zqe@mus$On>mlM@nCfIa|R9w!=x$D^>Ij%qO-OAzTD-qr+dYrSWb-6gR@Ke=V zuo>$7-TN5e;X?ynIYf%Q;z%T9+=%W;9(_H7FLCwsa#Z zN%kAfLwp$b;-zw7W^S^`yNx-&zUgkp{BGP&-K>SX{UYE^T&#fOl}X%bPlk9f(6_@M z2>OEo-ZvNu^o0UJet4c6)0=G-_w@8&3xD+mlcUWtD_{h-!VLifJ9*!Z&_jcv{(+_e zd5=d#v{q&~eq&AcAei|Nf$*swZYki%e8_6nE~9ySY8nn-Su8+~5s{}E-3n;CarYHEhzCi?6EcM62V-Rg>@3DIRVZYI#3!+!{BH$Z7GK{q z0^Y2C;zpnRGX`oxhtR#-&%u@7(vwsEseohF{X;)+Raue#&5Bw zRPuOGqJOjx!P;NMEe#J3>CgXPW1RjF#`DGVzcs)A8$92i2dBUh5CIQ@HDERP6LSIn z0KbFt;C=8mcnzEeC&38V0v-Sx!Oy7UD)<1r4o(5R-W#@xb|eSL0djyGAP2|+a)2Bl k2gm_(;6LI3P1-f)OV diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 74f17a8c..31c7ba6e 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:08:21 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:19:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 4b4dc908..b1d43125 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:17:26 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:18:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 465f66cb..fa52c993 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:46:39 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:58:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,12 +24,12 @@ int isloop(t_btree **ast) if ((node->type == TK_NEWLINE || node->type == TK_SEMI || node->type == TK_AMP) && isloop(&(*ast)->right) == 1) return (1); - if (node->type == TK_WHILE && node->full == 1) + if ((node->type == TK_WHILE || node->type == TK_UNTIL) && node->full == 1) { DG("DON ENTER"); return (2); } - if (node->type == TK_WHILE && node->full == 0) + if ((node->type == TK_WHILE || node->type == TK_UNTIL) && node->full == 0) { DG(" NOFULL"); return (1); @@ -46,18 +46,20 @@ int add_loop_cmd(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; DG("add loop cmd"); - if (token->type == TK_WHILE && node->type == TK_WHILE) + if ((token->type == TK_WHILE || token->type == TK_UNTIL) + && (node->type == TK_WHILE || node->type == TK_UNTIL)) { DG("nest one more"); node->nest++; } - if (token->type == TK_DONE && node->type == TK_WHILE && node->nest > 0) + if (token->type == TK_DONE && (node->type == TK_WHILE || node->type == TK_UNTIL) + && node->nest > 0) { node->nest--; DG("nest one less"); } - else if (token->type == TK_DONE && node->type == TK_WHILE - && node->nest == 0) + else if (token->type == TK_DONE && (node->type == TK_WHILE + || node->type == TK_UNTIL) && node->nest == 0) { DG("WHILE FULL"); return ((node->full = 1)); diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index c4b7d367..1181c1e7 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:03:21 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:50:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,6 +62,7 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, TK_ELIF, TK_ELIF, TK_ELIF}, {NEWLINE_LIST, TK_ELSE, TK_ELSE, TK_ELSE}, {NEWLINE_LIST, TK_WHILE, TK_WHILE, TK_WHILE}, + {NEWLINE_LIST, TK_UNTIL, TK_UNTIL, TK_UNTIL}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0}, @@ -114,6 +115,7 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, {CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_UNTIL, CMD_SUPERIOR, 0}, {CMD_NAME, TK_DO, CMD_SUPERIOR, 0}, {CMD_NAME, TK_IF, CMD_SUPERIOR, 0}, {CMD_NAME, TK_ELIF, CMD_SUPERIOR, 0}, @@ -162,6 +164,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_UNTIL, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_DO, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_IF, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_THEN, PIPE_SEMI_SEQUENCE, 0}, @@ -175,6 +178,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_IF, PIPE_SEQUENCE, 0}, @@ -184,6 +188,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, COMPLETE_CONDITION, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_UNTIL, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, @@ -197,6 +202,7 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, COMPLETE_CONDITION, PIPELINE, 0}, {PIPELINE, TK_WHILE, AND_OR, 0}, + {PIPELINE, TK_UNTIL, AND_OR, 0}, {PIPELINE, TK_DO, AND_OR, 0}, {PIPELINE, TK_IF, AND_OR, 0}, {PIPELINE, TK_ELIF, AND_OR, 0}, @@ -211,6 +217,7 @@ t_aggrematch g_aggrematch[] = {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO, COMPOUND_LIST, 0}, {AND_OR, TK_WHILE, COMPOUND_LIST, 0}, + {AND_OR, TK_UNTIL, COMPOUND_LIST, 0}, {AND_OR, TK_IF, COMPOUND_LIST, 0}, {AND_OR, TK_ELIF, COMPOUND_LIST, 0}, {AND_OR, TK_THEN, COMPOUND_LIST, 0}, diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 5a0a87cb..e3792335 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:46:48 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:53:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ t_treematch g_treematch[] = {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, {TK_WHILE, &add_cmd}, + {TK_UNTIL, &add_cmd}, {TK_DO, &add_cmd}, {TK_DONE, &add_cmd}, {TK_IF, &add_cmd}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 72b9015a..ac6775d4 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:03:18 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:50:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -171,6 +171,7 @@ t_stackmatch g_stackmatch[] = {TK_IF, NEWLINE_LIST}, {TK_IF, PIPE_SEMI_SEQUENCE}, {TK_IF, TK_WHILE}, + {TK_IF, TK_UNTIL}, {TK_IF, TK_IF}, {TK_IF, TK_DO}, {TK_IF, TK_ELIF}, @@ -222,6 +223,12 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, NEWLINE_LIST}, {TK_UNTIL, PIPE_SEMI_SEQUENCE}, + {TK_UNTIL, TK_DO}, + {TK_UNTIL, TK_WHILE}, + {TK_UNTIL, COMPOUND_LIST}, + {TK_UNTIL, TK_IF}, + {TK_UNTIL, TK_ELIF}, + {TK_UNTIL, TK_THEN}, {TK_FOR, LINEBREAK}, {TK_FOR, TK_BANG}, {TK_FOR, SEPARATOR_OP}, @@ -263,6 +270,7 @@ t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, WORDLIST}, {END_COMMAND, PIPE_SEMI_SEQUENCE}, {END_COMMAND, TK_WHILE}, + {END_COMMAND, TK_UNTIL}, {END_COMMAND, TK_DO}, {END_COMMAND, TK_IF}, {END_COMMAND, TK_THEN}, @@ -296,6 +304,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, TK_WHILE}, + {NEWLINE_LIST, TK_UNTIL}, {NEWLINE_LIST, TK_IF}, {NEWLINE_LIST, TK_ELIF}, {NEWLINE_LIST, TK_THEN}, @@ -371,6 +380,7 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, PIPE_SEMI_SEQUENCE}, {CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, TK_WHILE}, + {CMD_NAME, TK_UNTIL}, {CMD_NAME, TK_DO}, {CMD_NAME, TK_IF}, {CMD_NAME, TK_ELIF}, @@ -380,6 +390,7 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, COMPLETE_CONDITION}, {CMD_SUPERIOR, TK_WHILE}, + {CMD_SUPERIOR, TK_UNTIL}, {CMD_SUPERIOR, TK_DO}, {CMD_SUPERIOR, TK_IF}, {CMD_SUPERIOR, TK_ELIF}, @@ -396,6 +407,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, AND_OR_MAJOR}, {SIMPLE_COMMAND, TK_WHILE}, + {SIMPLE_COMMAND, TK_UNTIL}, {SIMPLE_COMMAND, TK_DO}, {SIMPLE_COMMAND, TK_IF}, {SIMPLE_COMMAND, TK_ELIF}, @@ -441,6 +453,15 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE}, + {UNTIL_CLAUSE, TK_DO}, + {UNTIL_CLAUSE, TK_WHILE}, + {UNTIL_CLAUSE, TK_UNTIL}, + {UNTIL_CLAUSE, TK_IF}, + {UNTIL_CLAUSE, TK_ELIF}, + {UNTIL_CLAUSE, TK_THEN}, + {UNTIL_CLAUSE, TK_ELSE}, + {UNTIL_CLAUSE, COMPOUND_LIST}, + {UNTIL_CLAUSE, COMPLETE_CONDITION}, {WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, @@ -448,6 +469,7 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, {WHILE_CLAUSE, TK_DO}, {WHILE_CLAUSE, TK_WHILE}, + {WHILE_CLAUSE, TK_UNTIL}, {WHILE_CLAUSE, TK_IF}, {WHILE_CLAUSE, TK_ELIF}, {WHILE_CLAUSE, TK_THEN}, @@ -463,6 +485,7 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, {IF_CLAUSE, TK_DO}, {IF_CLAUSE, TK_WHILE}, + {IF_CLAUSE, TK_UNTIL}, {IF_CLAUSE, TK_IF}, {IF_CLAUSE, TK_ELIF}, {IF_CLAUSE, TK_THEN}, @@ -518,6 +541,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, TK_DO}, {COMPOUND_COMMAND, TK_WHILE}, + {COMPOUND_COMMAND, TK_UNTIL}, {COMPOUND_COMMAND, TK_IF}, {COMPOUND_COMMAND, TK_ELIF}, {COMPOUND_COMMAND, TK_THEN}, @@ -525,6 +549,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, COMPOUND_LIST}, {COMPOUND_COMMAND, COMPLETE_CONDITION}, {COMMAND, TK_WHILE}, + {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, {COMMAND, TK_DO}, {COMMAND, TK_IF}, @@ -542,6 +567,7 @@ t_stackmatch g_stackmatch[] = {AND_OR_MINOR, LINEBREAK}, {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, + {PIPE_SEQUENCE, TK_UNTIL}, {PIPE_SEQUENCE, TK_DO}, {PIPE_SEQUENCE, TK_IF}, {PIPE_SEQUENCE, TK_ELIF}, @@ -555,6 +581,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, NEWLINE_LIST}, {PIPE_SEQUENCE, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, TK_WHILE}, + {PIPE_SEMI_SEQUENCE, TK_UNTIL}, {PIPE_SEMI_SEQUENCE, TK_DO}, {PIPE_SEMI_SEQUENCE, TK_IF}, {PIPE_SEMI_SEQUENCE, TK_ELIF}, @@ -568,6 +595,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, {PIPELINE, TK_WHILE}, + {PIPELINE, TK_UNTIL}, {PIPELINE, TK_DO}, {PIPELINE, TK_IF}, {PIPELINE, TK_ELIF}, @@ -583,6 +611,7 @@ t_stackmatch g_stackmatch[] = {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO}, {AND_OR, TK_WHILE}, + {AND_OR, TK_UNTIL}, {AND_OR, TK_IF}, {AND_OR, TK_ELIF}, {AND_OR, TK_THEN}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 317c5a00..cdd99360 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:16:44 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:57:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 0c78928c..5807c61d 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:01:02 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:50:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ t_prodmatch g_prodmatch[] = {TK_N_WORD, AND_OR, CMD_NAME}, {TK_N_WORD, AND_OR_MAJOR, CMD_NAME}, {TK_N_WORD, TK_WHILE, CMD_NAME}, + {TK_N_WORD, TK_UNTIL, CMD_NAME}, {TK_N_WORD, TK_DO, CMD_NAME}, {TK_N_WORD, TK_IF, CMD_NAME}, {TK_N_WORD, TK_THEN, CMD_NAME}, @@ -56,6 +57,7 @@ t_prodmatch g_prodmatch[] = {TK_NAME, TK_FOR, NAME}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, {TK_NEWLINE, TK_WHILE, NEWLINE_LIST}, + {TK_NEWLINE, TK_UNTIL, NEWLINE_LIST}, {TK_NEWLINE, TK_IF, NEWLINE_LIST}, {TK_NEWLINE, TK_FI, NEWLINE_LIST}, {TK_NEWLINE, TK_ELIF, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 3dd67cd2..b13bc4ca 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:03:26 by ariard ### ########.fr */ +/* Updated: 2017/02/20 18:50:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,10 @@ char *read_state(t_sym current) { + if (current == UNTIL_CLAUSE) + return ("UNTIL_CLAUSE"); + if (current == TK_UNTIL) + return ("TK_UNTIL"); if (current == IF_CLAUSE) return ("IF_CLAUSE"); if (current == CONDITION) From ca56489f13eacc8e35fccd0a4c87581aa5969746 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Mon, 20 Feb 2017 19:52:38 +0100 Subject: [PATCH 073/206] before merge master --- 42sh/blind.text | 19 ------- 42sh/grammar/copie | 87 --------------------------------- 42sh/grammar/here_end | 87 --------------------------------- 42sh/grammar/io_here | 87 --------------------------------- 42sh/grammar/linebreak | 87 --------------------------------- 42sh/grammar/newline_list | 87 --------------------------------- 42sh/grammar/rules | 67 ------------------------- 42sh/grammar/separator | 87 --------------------------------- 42sh/grammar/separator_op | 87 --------------------------------- 42sh/grammar/sequential_sep | 87 --------------------------------- 42sh/sample/20lines.sh | 20 -------- 42sh/sample/2lines.sh | 3 -- 42sh/sample/4lines.sh | 2 - 42sh/sample/mix/mix.sh | 11 +++++ 42sh/sample/test.sh | 6 --- 42sh/sample/test2.sh | 1 - 42sh/sample/{ => yale}/yale0.ex | 0 42sh/sample/{ => yale}/yale1.ex | 0 42sh/sample/{ => yale}/yale2.ex | 0 42sh/sample/{ => yale}/yale3.ex | 0 42sh/sample/{ => yale}/yale5.ex | 0 42sh/script.sh | 15 ------ 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/eval_sym.c | 4 +- 42sh/src/parser/ft_parse.c | 2 +- 42sh/tofix | 13 ----- 27 files changed, 17 insertions(+), 846 deletions(-) delete mode 100644 42sh/blind.text delete mode 100644 42sh/grammar/copie delete mode 100644 42sh/grammar/here_end delete mode 100644 42sh/grammar/io_here delete mode 100644 42sh/grammar/linebreak delete mode 100644 42sh/grammar/newline_list delete mode 100644 42sh/grammar/rules delete mode 100644 42sh/grammar/separator delete mode 100644 42sh/grammar/separator_op delete mode 100644 42sh/grammar/sequential_sep delete mode 100644 42sh/sample/20lines.sh delete mode 100644 42sh/sample/2lines.sh delete mode 100644 42sh/sample/4lines.sh create mode 100644 42sh/sample/mix/mix.sh delete mode 100644 42sh/sample/test.sh delete mode 100644 42sh/sample/test2.sh rename 42sh/sample/{ => yale}/yale0.ex (100%) rename 42sh/sample/{ => yale}/yale1.ex (100%) rename 42sh/sample/{ => yale}/yale2.ex (100%) rename 42sh/sample/{ => yale}/yale3.ex (100%) rename 42sh/sample/{ => yale}/yale5.ex (100%) delete mode 100755 42sh/script.sh delete mode 100644 42sh/tofix diff --git a/42sh/blind.text b/42sh/blind.text deleted file mode 100644 index c5e49f1b..00000000 --- a/42sh/blind.text +++ /dev/null @@ -1,19 +0,0 @@ -do en condition, aller a la fin -verifier les delimiters -impleter erreur syntax : EOF, unexpected do, unexpected done, pareil if - -pipe_sequence - -';;' sep -'; ;' sep-newline_list-sep -' ; ' newline-sep -'ls | cat ; ls | cat' line break and_or separator and_or - -';;' sep-sep -';&' sep-sep -'&&' and_or "no_command" -'||' and_or "no_command" - - -while compound_list do compound_list done - linebreak term diff --git a/42sh/grammar/copie b/42sh/grammar/copie deleted file mode 100644 index e22142e4..00000000 --- a/42sh/grammar/copie +++ /dev/null @@ -1,87 +0,0 @@ -#SEPARATOR - -separator - separator : 0 -separator - sequential_sep : 0 -separator - separator_op : 0 -separator - linebreak : 0 -separator - newline_list : 0 -separator - here_end : 0 -separator - io_here : 0 -separator - filename : 0 -separator - io_file : 0 -separator - io_redirect : 0 -separator - redirect_list : 0 -separator - cmd_suffix : 0 -separator - cmd_prefix : 0 -separator - cmd_word : 0 -separator - cmd_name : 0 -separator - simple_commound : 0 -separator - do_group : 0 -separator - brace_group : 0 -separator - fname : 0 -separator - function_body : 0 -separator - function_definition : 0 -separator - until_clause : 0 -separator - while_clause : 0 -separator - else_part : 0 -separator - if_clause : 0 -separator - pattern : 0 -separator - case_item : 0 -separator - case_item_ns : 0 -separator - case_list : 0 -separator - case_list_ns : 0 -separator - case_clause : 0 -separator - wordlist : 0 -separator - in : 0 -separator - name : 0 -separator - term : 0 -separator - compound_list : 0 -separator - subshell : 0 -separator - compound_command : 0 -separator - command : 0 -separator - pipe_sequence : 0 -separator - pipeline : 0 -separator - and_or : 0 -separator - list : 0 -separator - complete_command : 0 -separator - complete_commands : 0 -separator - program : 0 -separator - In : 0 -#separator - Lbrace : 0 -#separator - Rbrace : 0 -#separator - Bang : 0 -separator - case : 0 -separator - esac : 0 -separator - while : 0 -separator - until : 0 -separator - for : 0 -separator - if : 0 -separator - then : 0 -separator - else : 0 -separator - elif : 0 -separator - fi : 0 -separator - do : 0 -separator - done : 0 -separator - CLOBBER : 0 -separator - DLESS : 0 -separator - DGREAT : 0 -separator - LESSAND : 0 -separator - GREATAND : 0 -separator - LESSGREAT : 0 -separator - DLESSDAH : 0 -separator - AND_IF : 0 -separator - OR_IF : 0 -separator - DSEMI : 0 -separator - WORD : 0 -separator - ASSIGNEMENT_WORD : 0 -separator - NAME : 0 -separator - NEWLINE : 0 -separator - IO_NUMER : 0 -separator - SEMI : 0 -separator - AMP : 0 -separator - EMPTY : 0 -separator - GREAT : 0 -separator - LESS : 0 -separator - PAREN_OPEN : 0 -separator - PIPE : 0 -separator - PAREN_CLOSE : 0 diff --git a/42sh/grammar/here_end b/42sh/grammar/here_end deleted file mode 100644 index 0a969177..00000000 --- a/42sh/grammar/here_end +++ /dev/null @@ -1,87 +0,0 @@ -#HERE_END - -here_end - here_end : 0 -here_end - sequential_sep : 0 -here_end - separator_op : 0 -here_end - linebreak : 0 -here_end - newline_list : 0 -here_end - separator : 0 -here_end - io_here : 0 -here_end - filename : 0 -here_end - io_file : 0 -here_end - io_redirect : 0 -here_end - redirect_list : 0 -here_end - cmd_suffix : 0 -here_end - cmd_prefix : 0 -here_end - cmd_word : 0 -here_end - cmd_name : 0 -here_end - simple_commound : 0 -here_end - do_group : 0 -here_end - brace_group : 0 -here_end - fname : 0 -here_end - function_body : 0 -here_end - function_definition : 0 -here_end - until_clause : 0 -here_end - while_clause : 0 -here_end - else_part : 0 -here_end - if_clause : 0 -here_end - pattern : 0 -here_end - case_item : 0 -here_end - case_item_ns : 0 -here_end - case_list : 0 -here_end - case_list_ns : 0 -here_end - case_clause : 0 -here_end - wordlist : 0 -here_end - in : 0 -here_end - name : 0 -here_end - term : 0 -here_end - compound_list : 0 -here_end - subshell : 0 -here_end - compound_command : 0 -here_end - command : 0 -here_end - pipe_sequence : 0 -here_end - pipeline : 0 -here_end - and_or : 0 -here_end - list : 0 -here_end - complete_command : 0 -here_end - complete_commands : 0 -here_end - program : 0 -here_end - In : 0 -#here_end - Lbrace : 0 -#here_end - Rbrace : 0 -#here_end - Bang : 0 -here_end - case : 0 -here_end - esac : 0 -here_end - while : 0 -here_end - until : 0 -here_end - for : 0 -here_end - if : 0 -here_end - then : 0 -here_end - else : 0 -here_end - elif : 0 -here_end - fi : 0 -here_end - do : 0 -here_end - done : 0 -here_end - CLOBBER : 0 - here_end - DLESS : VALID - AGGREGATION k = 1, new = io_here -here_end - DGREAT : 0 -here_end - LESSAND : 0 -here_end - GREATAND : 0 -here_end - LESSGREAT : 0 - here_end - DLESSDAH : VALID - AGGREGATION k = 1, new = io_here -here_end - AND_IF : 0 -here_end - OR_IF : 0 -here_end - DSEMI : 0 -here_end - WORD : 0 -here_end - ASSIGNEMENT_WORD : 0 -here_end - NAME : 0 -here_end - NEWLINE : 0 -here_end - IO_NUMER : 0 -here_end - SEMI : 0 -here_end - AMP : 0 -here_end - EMPTY : 0 -here_end - GREAT : 0 -here_end - LESS : 0 -here_end - PAREN_OPEN : 0 -here_end - PIPE : 0 -here_end - PAREN_CLOSE : 0 diff --git a/42sh/grammar/io_here b/42sh/grammar/io_here deleted file mode 100644 index 654ba9e7..00000000 --- a/42sh/grammar/io_here +++ /dev/null @@ -1,87 +0,0 @@ -#IO_HERE - -io_here - io_here : 0 -io_here - sequential_sep : 0 -io_here - separator_op : 0 - io_here - linebreak : VALID - AGGREGATION k = 1, new = program -io_here - newline_list : 0 -io_here - here_end : 0 -io_here - separator : 0 -io_here - filename : 0 -io_here - io_file : 0 -io_here - io_redirect : 0 - io_here - redirect_list : VALID - NOTHING - io_here - cmd_suffix : VALID - NOTHING - io_here - cmd_prefix : VALID - NOTHING - io_here - cmd_word : VALID - AGGREGATION k = 0, new = cmd_suffix - io_here - cmd_name : VALID - AGGREGATION k = 0, new = cmd_suffix -io_here - simple_command : 0 -io_here - do_group : 0 -io_here - brace_group : 0 -io_here - fname : 0 -io_here - function_body : 0 -io_here - function_definition : 0 -io_here - until_clause : 0 -io_here - while_clause : 0 -io_here - else_part : 0 -io_here - if_clause : 0 -io_here - pattern : 0 -io_here - case_item : 0 -io_here - case_item_ns : 0 -io_here - case_list : 0 -io_here - case_list_ns : 0 -io_here - case_clause : 0 -io_here - wordlist : 0 -io_here - in : 0 -io_here - name : 0 -io_here - term : 0 -io_here - compound_list : 0 -io_here - subshell : 0 -io_here - compound_command : 0 -io_here - command : 0 -io_here - pipe_sequence : 0 -io_here - pipeline : 0 -io_here - and_or : 0 -io_here - list : 0 -io_here - complete_command : 0 -io_here - complete_commands : 0 -io_here - program : 0 -io_here - In : 0 -#io_here - Lbrace : 0 -#io_here - Rbrace : 0 -#io_here - Bang : 0 -io_here - case : 0 -io_here - esac : 0 -io_here - while : 0 -io_here - until : 0 -io_here - for : 0 -io_here - if : 0 -io_here - then : 0 -io_here - else : 0 -io_here - elif : 0 -io_here - fi : 0 -io_here - do : 0 -io_here - done : 0 -io_here - CLOBBER : 0 -io_here - DLESS : 0 -io_here - DGREAT : 0 -io_here - LESSAND : 0 -io_here - GREATAND : 0 -io_here - LESSGREAT : 0 -io_here - DLESSDAH : 0 -io_here - AND_IF : 0 -io_here - OR_IF : 0 -io_here - DSEMI : 0 -io_here - WORD : 0 -io_here - ASSIGNEMENT_WORD : 0 -io_here - NAME : 0 -io_here - NEWLINE : 0 - io_here - IO_NUMBER : VALID - AGREGATION k = 1, new = io_redirect -io_here - SEMI : 0 -io_here - AMP : 0 -io_here - EMPTY : 0 -io_here - GREAT : 0 -io_here - LESS : 0 -io_here - PAREN_OPEN : 0 -io_here - PIPE : 0 -io_here - PAREN_CLOSE : 0 diff --git a/42sh/grammar/linebreak b/42sh/grammar/linebreak deleted file mode 100644 index 4e8becad..00000000 --- a/42sh/grammar/linebreak +++ /dev/null @@ -1,87 +0,0 @@ -#LINEBREAK# - - linebreak - linebreak : NOTHING -linebreak - sequential_sep : 0 - linebreak - separator_op : AGGREGATION, k = 1, new = separator -linebreak - separator : 0 -linebreak - newline_list : 0 -linebreak - here_end : 0 -linebreak - io_here : 0 -linebreak - filename : 0 -linebreak - io_file : 0 -linebreak - io_redirect : 0 -linebreak - redirect_list : 0 -linebreak - cmd_suffix : 0 -linebreak - cmd_prefix : 0 -linebreak - cmd_word : 0 -linebreak - cmd_name : 0 -linebreak - simple_commound : 0 -linebreak - do_group : 0 -linebreak - brace_group : 0 -linebreak - fname : 0 -linebreak - function_body : 0 -linebreak - function_definition : 0 -linebreak - until_clause : 0 -linebreak - while_clause : 0 -linebreak - else_part : 0 -linebreak - if_clause : 0 -linebreak - pattern : 0 -linebreak - case_item : 0 -linebreak - case_item_ns : 0 -linebreak - case_list : 0 -linebreak - case_list_ns : 0 -linebreak - case_clause : 0 -linebreak - wordlist : 0 - linebreak - in : VALID - linebreak - name : VALID -linebreak - term : 0 - linebreak - compound_list : VALID -linebreak - subshell : 0 -linebreak - compound_command : 0 -linebreak - command : 0 -linebreak - pipe_sequence : 0 -linebreak - pipeline : 0 -linebreak - and_or : 0 -linebreak - list : 0 -linebreak - complete_command : 0 - linebreak - complete_commands : VALID -linebreak - program : 0 -linebreak - In : 0 -#linebreak - Lbrace : 0 -#linebreak - Rbrace : 0 -#linebreak - Bang : 0 -linebreak - case : 0 -linebreak - esac : 0 -linebreak - while : 0 -linebreak - until : 0 -linebreak - for : 0 -linebreak - if : 0 -linebreak - then : 0 -linebreak - else : 0 -linebreak - elif : 0 -linebreak - fi : 0 -linebreak - do : 0 -linebreak - done : 0 -linebreak - CLOBBER : 0 -linebreak - DLESS : 0 -linebreak - DGREAT : 0 -linebreak - LESSAND : 0 -linebreak - GREATAND : 0 -linebreak - LESSGREAT : 0 -linebreak - DLESSDAH : 0 -i linebreak - AND_IF : VALID - linebreak - OR_IF : VALID -linebreak - DSEMI : 0 - linebreak - WORD : VALID -linebreak - ASSIGNEMENT_WORD : 0 -linebreak - NAME : 0 -linebreak - NEWLINE : 0 -linebreak - IO_NUMER : 0 - linebreak - SEMI : AGGREGATION, k = 1 new = sequential_sep -linebreak - AMP : 0 - linebreak - EMPTY : VALID -linebreak - GREAT : 0 -linebreak - LESS : 0 -linebreak - PAREN_OPEN : 0 -linebreak - PIPE : 0 - linebreak - PAREN_CLOSE : VALID diff --git a/42sh/grammar/newline_list b/42sh/grammar/newline_list deleted file mode 100644 index 94dc6b8e..00000000 --- a/42sh/grammar/newline_list +++ /dev/null @@ -1,87 +0,0 @@ -#NEWLINE_LIST - - newline_list - newline_list : VALID - NOTHING -newline_list - sequential_sep : 0 -newline_list - separator_op : 0 - newline_list - separator : VALID - NOTHNG !!! - newline_list - linebreak : VALID - NOTHING -newline_list - here_end : 0 -newline_list - io_here : 0 -newline_list - filename : 0 -newline_list - io_file : 0 -newline_list - io_redirect : 0 -newline_list - redirect_list : 0 -newline_list - cmd_suffix : 0 -newline_list - cmd_prefix : 0 -newline_list - cmd_word : 0 -newline_list - cmd_name : 0 -newline_list - simple_commound : 0 -newline_list - do_group : 0 -newline_list - brace_group : 0 -newline_list - fname : 0 -newline_list - function_body : 0 -newline_list - function_definition : 0 -newline_list - until_clause : 0 -newline_list - while_clause : 0 -newline_list - else_part : 0 -newline_list - if_clause : 0 -newline_list - pattern : 0 -newline_list - case_item : 0 -newline_list - case_item_ns : 0 -newline_list - case_list : 0 -newline_list - case_list_ns : 0 -newline_list - case_clause : 0 -newline_list - wordlist : 0 -newline_list - in : 0 -newline_list - name : 0 - newline_list - term : AGGREGATION k - 0, new = separator -newline_list - compound_list : 0 -newline_list - subshell : 0 -newline_list - compound_command : 0 -newline_list - command : 0 -newline_list - pipe_sequence : 0 -newline_list - pipeline : 0 -newline_list - and_or : 0 -newline_list - list : 0 -newline_list - complete_command : 0 -newline_list - complete_commands : 0 -newline_list - program : 0 -newline_list - In : 0 -#newline_list - Lbrace : 0 -#newline_list - Rbrace : 0 -#newline_list - Bang : 0 -newline_list - case : 0 -newline_list - esac : 0 -newline_list - while : 0 -newline_list - until : 0 -newline_list - for : 0 -newline_list - if : 0 -newline_list - then : 0 -newline_list - else : 0 -newline_list - elif : 0 -newline_list - fi : 0 -newline_list - do : 0 -newline_list - done : 0 -newline_list - CLOBBER : 0 -newline_list - DLESS : 0 -newline_list - DGREAT : 0 -newline_list - LESSAND : 0 -newline_list - GREATAND : 0 -newline_list - LESSGREAT : 0 -newline_list - DLESSDAH : 0 -newline_list - AND_IF : 0 -newline_list - OR_IF : 0 -newline_list - DSEMI : 0 -newline_list - WORD : 0 -newline_list - ASSIGNEMENT_WORD : 0 -newline_list - NAME : 0 -newline_list - NEWLINE : 0 -newline_list - IO_NUMER : 0 -newline_list - SEMI : 0 -newline_list - AMP : 0 - newline_list - EMPTY : AGGREGATION k = 1, new = linebreak; -newline_list - GREAT : 0 -newline_list - LESS : 0 -newline_list - PAREN_OPEN : 0 -newline_list - PIPE : 0 -newline_list - PAREN_CLOSE : 0 diff --git a/42sh/grammar/rules b/42sh/grammar/rules deleted file mode 100644 index 22b5afae..00000000 --- a/42sh/grammar/rules +++ /dev/null @@ -1,67 +0,0 @@ -sequential_sep - wordlist : VALID -sequential_sep - in : VALID -sequential_sep - name : VALID - -separator - term : VALID -separator - compound_list : VALID - NOTHING !!!!! - -separator_op - complete_commands : VALID - NOTHING !!!! - -linebreak - linebreak : VALID - NOTHING -linebreak - separator_op : VALID - ASSIGNATION, k = 1, new = separator -linebreak - in : VALID -linebreak - name : VALID -linebreak - compound_list : VALID -linebreak - complete_commands : VALID -linebreak - AND_IF : VALID -linebreak - OR_IF : VALID -linebreak - WORD : VALID -linebreak - SEMI : VALID - AGGREGATION k = 1, new = sequential_sep -linebreak - PAREN_CLOSE : VALID - -newline_list - newline_list : VALID - NOTHING -newline_list - separator : VALID - NOTHING !!! -newline_list - linebreak : VALID - NOTHING -newline_list - term : VALID - AGGREGATION k = 0, new = separator - -here_end - DLESS : VALID - AGGREGATION k = 1, new = io_here -here_end - DLESSDAH : VALID - AGGREGATION k = 1, new = io_here - -io_here - linebreak : VALID - AGGREGATION k = 1, new = program -io_here - redirect_list : VALID - NOTHING -io_here - cmd_suffix : VALID - NOTHING -io_here - cmd_prefix : VALID - NOTHING -io_here - cmd_word : VALID - AGGREGATION k = 0, new = cmd_suffix -io_here - cmd_name : VALID - AGGREGATION k = 0, new = cd_suffix -io_here - IO_NUMBER : VALID - AGGREGATION k = 1, new = io_redirect -io_here - compound_command : VALID - AGGREGATION k = 0, new = io_redirect - -filename - LESS : VALID - AGGREGATION k = 1, new = io_file -filename - LESSAND : VALID - AGGREGATION k = 1, new = io_file -filename - GREAT : VALID - AGGREGATION k = 1, new = io_file -filename - GREATAND : VALID - AGGREGATION k = 1, new = io_file -filename - DGREAT : VALID - AGGREGATION k = 1, new = io_file -filename - LESSGREAT : VALID - AGGREGATION k = 1, new = io_file -filename - CLOBBER : VALID - AGGREGATION k = 1, new = io_file - -io_file - redirect_list : VALID - NOTHING -io_file - cmd_suffix : VALID - NOTHING -io_file - cmd_prefix : VALID - NOTHING -io_file - cmd_name : VALID - NOTHING -io_file - cmd_word : VALID - NOTHING -io_file - linebreak : VALID - AGGREGATION k = 1, new = program -io_file - IO_NUMBER : VALID - AGGREGATION k = 1, new = io_redirect -io_file - compound_command : VALID - AGGREGATION k = 0, new = io_redirect - -io_redirect - redirect_list : VALID - NOTHING -io_redirect - compound_command : VALID - AGGREGATION k = 0, new = redirect_list -io_redirect - cmd_suffix : VALID - NOTHING -io_redirect - cmd_prefix : VALID - NOTHING -io_redirect - cmd_word : VALID - NOTHING -io_redirect - cmd_name : VALID - NOTHING - - - -// si transparence continuer remontee, -// si dernier membre aurait pu aussi constitue membre actuel, ne rien fiare, ainsi que transparence -//push un dernier caracter linebreak diff --git a/42sh/grammar/separator b/42sh/grammar/separator deleted file mode 100644 index b5d7c30a..00000000 --- a/42sh/grammar/separator +++ /dev/null @@ -1,87 +0,0 @@ -#SEPARATOR - -separator - separator : 0 -separator - sequential_sep : 0 -separator - separator_op : 0 -separator - linebreak : 0 -separator - newline_list : 0 -separator - here_end : 0 -separator - io_here : 0 -separator - filename : 0 -separator - io_file : 0 -separator - io_redirect : 0 -separator - redirect_list : 0 -separator - cmd_suffix : 0 -separator - cmd_prefix : 0 -separator - cmd_word : 0 -separator - cmd_name : 0 -separator - simple_commound : 0 -separator - do_group : 0 -separator - brace_group : 0 -separator - fname : 0 -separator - function_body : 0 -separator - function_definition : 0 -separator - until_clause : 0 -separator - while_clause : 0 -separator - else_part : 0 -separator - if_clause : 0 -separator - pattern : 0 -separator - case_item : 0 -separator - case_item_ns : 0 -separator - case_list : 0 -separator - case_list_ns : 0 -separator - case_clause : 0 -separator - wordlist : 0 -separator - in : 0 -separator - name : 0 - separator - term : VALID - separator - compound_list : NOTHING !!!!!! -separator - subshell : 0 -separator - compound_command : 0 -separator - command : 0 -separator - pipe_sequence : 0 -separator - pipeline : 0 -separator - and_or : 0 -separator - list : 0 -separator - complete_command : 0 -separator - complete_commands : 0 -separator - program : 0 -separator - In : 0 -#separator - Lbrace : 0 -#separator - Rbrace : 0 -#separator - Bang : 0 -separator - case : 0 -separator - esac : 0 -separator - while : 0 -separator - until : 0 -separator - for : 0 -separator - if : 0 -separator - then : 0 -separator - else : 0 -separator - elif : 0 -separator - fi : 0 -separator - do : 0 -separator - done : 0 -separator - CLOBBER : 0 -separator - DLESS : 0 -separator - DGREAT : 0 -separator - LESSAND : 0 -separator - GREATAND : 0 -separator - LESSGREAT : 0 -separator - DLESSDAH : 0 -separator - AND_IF : 0 -separator - OR_IF : 0 -separator - DSEMI : 0 -separator - WORD : 0 -separator - ASSIGNEMENT_WORD : 0 -separator - NAME : 0 -separator - NEWLINE : 0 -separator - IO_NUMER : 0 -separator - SEMI : 0 -separator - AMP : 0 -separator - EMPTY : 0 -separator - GREAT : 0 -separator - LESS : 0 -separator - PAREN_OPEN : 0 -separator - PIPE : 0 -separator - PAREN_CLOSE : 0 diff --git a/42sh/grammar/separator_op b/42sh/grammar/separator_op deleted file mode 100644 index 398998b4..00000000 --- a/42sh/grammar/separator_op +++ /dev/null @@ -1,87 +0,0 @@ -#SEPARATOR_OP - -separator_op - separator_op : 0 -separator_op - sequential_sep : 0 -separator_op - separator_op_op : 0 -separator_op - linebreak : 0 -separator_op - newline_list : 0 -separator_op - here_end : 0 -separator_op - io_here : 0 -separator_op - filename : 0 -separator_op - io_file : 0 -separator_op - io_redirect : 0 -separator_op - redirect_list : 0 -separator_op - cmd_suffix : 0 -separator_op - cmd_prefix : 0 -separator_op - cmd_word : 0 -separator_op - cmd_name : 0 -separator_op - simple_commound : 0 -separator_op - do_group : 0 -separator_op - brace_group : 0 -separator_op - fname : 0 -separator_op - function_body : 0 -separator_op - function_definition : 0 -separator_op - until_clause : 0 -separator_op - while_clause : 0 -separator_op - else_part : 0 -separator_op - if_clause : 0 -separator_op - pattern : 0 -separator_op - case_item : 0 -separator_op - case_item_ns : 0 -separator_op - case_list : 0 -separator_op - case_list_ns : 0 -separator_op - case_clause : 0 -separator_op - wordlist : 0 -separator_op - in : 0 -separator_op - name : 0 -separator_op - term : 0 -separator_op - compound_list : 0 -separator_op - subshell : 0 -separator_op - compound_command : 0 -separator_op - command : 0 -separator_op - pipe_sequence : 0 -separator_op - pipeline : 0 -separator_op - and_or : 0 - separator_op - list : 0 !!!!! -separator_op - complete_command : 0 -separator_op - complete_commands : 0 -separator_op - program : 0 -separator_op - In : 0 - #separator_op - Lbrace : 0 - #separator_op - Rbrace : 0 - #separator_op - Bang : 0 -separator_op - case : 0 -separator_op - esac : 0 -separator_op - while : 0 -separator_op - until : 0 -separator_op - for : 0 -separator_op - if : 0 -separator_op - then : 0 -separator_op - else : 0 -separator_op - elif : 0 -separator_op - fi : 0 -separator_op - do : 0 -separator_op - done : 0 -separator_op - CLOBBER : 0 -separator_op - DLESS : 0 -separator_op - DGREAT : 0 -separator_op - LESSAND : 0 -separator_op - GREATAND : 0 -separator_op - LESSGREAT : 0 -separator_op - DLESSDAH : 0 -separator_op - AND_IF : 0 -separator_op - OR_IF : 0 -separator_op - DSEMI : 0 -separator_op - WORD : 0 -separator_op - ASSIGNEMENT_WORD : 0 -separator_op - NAME : 0 -separator_op - NEWLINE : 0 -separator_op - IO_NUMER : 0 -separator_op - SEMI : 0 -separator_op - AMP : 0 -separator_op - EMPTY : 0 -separator_op - GREAT : 0 -separator_op - LESS : 0 -separator_op - PAREN_OPEN : 0 -separator_op - PIPE : 0 -separator_op - PAREN_CLOSE : 0 diff --git a/42sh/grammar/sequential_sep b/42sh/grammar/sequential_sep deleted file mode 100644 index 7b3ac7cc..00000000 --- a/42sh/grammar/sequential_sep +++ /dev/null @@ -1,87 +0,0 @@ -#SEQUENTIAL_SEP - -sequential_sep - sequential_sep : 0 -sequential_sep - separator : 0 -sequential_sep - separator_op : 0 -sequential_sep - linebreak : 0 -sequential_sep - newline_list : 0 -sequential_sep - here_end : 0 -sequential_sep - io_here : 0 -sequential_sep - filename : 0 -sequential_sep - io_file : 0 -sequential_sep - io_redirect : 0 -sequential_sep - redirect_list : 0 -sequential_sep - cmd_suffix : 0 -sequential_sep - cmd_prefix : 0 -sequential_sep - cmd_word : 0 -sequential_sep - cmd_name : 0 -sequential_sep - simple_commound : 0 -sequential_sep - do_group : 0 -sequential_sep - brace_group : 0 -sequential_sep - fname : 0 -sequential_sep - function_body : 0 -sequential_sep - function_definition : 0 -sequential_sep - until_clause : 0 -sequential_sep - while_clause : 0 -sequential_sep - else_part : 0 -sequential_sep - if_clause : 0 -sequential_sep - pattern : 0 -sequential_sep - case_item : 0 -sequential_sep - case_item_ns : 0 -sequential_sep - case_list : 0 -sequential_sep - case_list_ns : 0 -sequential_sep - case_clause : 0 - sequential_sep - wordlist : VALID - sequential_sep - in : VALID - sequential_sep - name : VALID -sequential_sep - term : 0 -sequential_sep - compound_list : 0 -sequential_sep - subshell : 0 -sequential_sep - compound_command : 0 -sequential_sep - command : 0 -sequential_sep - pipe_sequence : 0 -sequential_sep - pipeline : 0 -sequential_sep - and_or : 0 -sequential_sep - list : 0 -sequential_sep - complete_command : 0 -sequential_sep - complete_commands : 0 -sequential_sep - program : 0 -sequential_sep - In : 0 -#sequential_sep - Lbrace : 0 -#sequential_sep - Rbrace : 0 -#sequential_sep - Bang : 0 -sequential_sep - case : 0 -sequential_sep - esac : 0 -sequential_sep - while : 0 -sequential_sep - until : 0 -sequential_sep - for : 0 -sequential_sep - if : 0 -sequential_sep - then : 0 -sequential_sep - else : 0 -sequential_sep - elif : 0 -sequential_sep - fi : 0 -sequential_sep - do : 0 -sequential_sep - done : 0 -sequential_sep - CLOBBER : 0 -sequential_sep - DLESS : 0 -sequential_sep - DGREAT : 0 -sequential_sep - LESSAND : 0 -sequential_sep - GREATAND : 0 -sequential_sep - LESSGREAT : 0 -sequential_sep - DLESSDAH : 0 -sequential_sep - AND_IF : 0 -sequential_sep - OR_IF : 0 -sequential_sep - DSEMI : 0 -sequential_sep - WORD : 0 -sequential_sep - ASSIGNEMENT_WORD : 0 -sequential_sep - NAME : 0 -sequential_sep - NEWLINE : 0 -sequential_sep - IO_NUMER : 0 -sequential_sep - SEMI : 0 -sequential_sep - AMP : 0 -sequential_sep - EMPTY : 0 -sequential_sep - GREAT : 0 -sequential_sep - LESS : 0 -sequential_sep - PAREN_OPEN : 0 -sequential_sep - PIPE : 0 -sequential_sep - PAREN_CLOSE : 0 diff --git a/42sh/sample/20lines.sh b/42sh/sample/20lines.sh deleted file mode 100644 index 0e08c1ea..00000000 --- a/42sh/sample/20lines.sh +++ /dev/null @@ -1,20 +0,0 @@ -ls -pwd -mkdir -cd -ls -pwd -mkdir -cd -ls -pwd -mkdir -cd -ls -pwd -mkdir -cd -ls -pwd -mkdir -cd diff --git a/42sh/sample/2lines.sh b/42sh/sample/2lines.sh deleted file mode 100644 index 22372171..00000000 --- a/42sh/sample/2lines.sh +++ /dev/null @@ -1,3 +0,0 @@ -ls ; pwd > file1 -ls | cat -echo hello world diff --git a/42sh/sample/4lines.sh b/42sh/sample/4lines.sh deleted file mode 100644 index d6610634..00000000 --- a/42sh/sample/4lines.sh +++ /dev/null @@ -1,2 +0,0 @@ -ls | cat -pwd | cat > file1 diff --git a/42sh/sample/mix/mix.sh b/42sh/sample/mix/mix.sh new file mode 100644 index 00000000..d9e02158 --- /dev/null +++ b/42sh/sample/mix/mix.sh @@ -0,0 +1,11 @@ +if ls +then + ls | cat + while ls + do + until ls + do + pwd + done + done +fi diff --git a/42sh/sample/test.sh b/42sh/sample/test.sh deleted file mode 100644 index ad942dcb..00000000 --- a/42sh/sample/test.sh +++ /dev/null @@ -1,6 +0,0 @@ -test=10 -while [ $test -gt 1 ] -do - echo hello - ((test--)) -done > file1 > file2 diff --git a/42sh/sample/test2.sh b/42sh/sample/test2.sh deleted file mode 100644 index ecbddfc1..00000000 --- a/42sh/sample/test2.sh +++ /dev/null @@ -1 +0,0 @@ -ewf wefwe wf diff --git a/42sh/sample/yale0.ex b/42sh/sample/yale/yale0.ex similarity index 100% rename from 42sh/sample/yale0.ex rename to 42sh/sample/yale/yale0.ex diff --git a/42sh/sample/yale1.ex b/42sh/sample/yale/yale1.ex similarity index 100% rename from 42sh/sample/yale1.ex rename to 42sh/sample/yale/yale1.ex diff --git a/42sh/sample/yale2.ex b/42sh/sample/yale/yale2.ex similarity index 100% rename from 42sh/sample/yale2.ex rename to 42sh/sample/yale/yale2.ex diff --git a/42sh/sample/yale3.ex b/42sh/sample/yale/yale3.ex similarity index 100% rename from 42sh/sample/yale3.ex rename to 42sh/sample/yale/yale3.ex diff --git a/42sh/sample/yale5.ex b/42sh/sample/yale/yale5.ex similarity index 100% rename from 42sh/sample/yale5.ex rename to 42sh/sample/yale/yale5.ex diff --git a/42sh/script.sh b/42sh/script.sh deleted file mode 100755 index a09fa173..00000000 --- a/42sh/script.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -echo "debut script" - -VALUE=3 -while [ $VALUE -gt 1 ] -do - sleep 1 - ((VALUE--)) - echo "a" -done > file1 | cat ; ls - -ls -l > file2 | cat - -echo "fin script" diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index fa52c993..22c7865b 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:58:28 by ariard ### ########.fr */ +/* Updated: 2017/02/20 19:03:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index e3792335..1718fdad 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:53:00 by ariard ### ########.fr */ +/* Updated: 2017/02/20 19:03:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index ac6775d4..53ee98e6 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:50:14 by ariard ### ########.fr */ +/* Updated: 2017/02/20 19:26:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -218,6 +218,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_IF}, {TK_WHILE, TK_ELIF}, {TK_WHILE, TK_THEN}, + {TK_WHILE, COMPLETE_CONDITION}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, @@ -229,6 +230,7 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, TK_IF}, {TK_UNTIL, TK_ELIF}, {TK_UNTIL, TK_THEN}, + {TK_UNTIL, COMPLETE_CONDITION}, {TK_FOR, LINEBREAK}, {TK_FOR, TK_BANG}, {TK_FOR, SEPARATOR_OP}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index cdd99360..60ed5f26 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 14:30:22 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:57:14 by ariard ### ########.fr */ +/* Updated: 2017/02/20 19:03:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/tofix b/42sh/tofix deleted file mode 100644 index f031f6a3..00000000 --- a/42sh/tofix +++ /dev/null @@ -1,13 +0,0 @@ -valeur all, all_separator, paren_case, -integrer decoupe temporaire -soigner les regles avec les separateurs -ajouter linebreak sur token needed - -pour jack, jerter les separateurs a la formation -rajouter les noms de tous les tokens pour la sortie d erreur - -->passer a une stack infinie -->construire if, while, else if -->tester les combinaisons deja existantes -->integrer erreurs -->erreur speciale : EOF From c04006a4715fd0203b821c1c1ce41ededda57b4c Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Mon, 20 Feb 2017 22:41:02 +0100 Subject: [PATCH 074/206] fixed some merging problems : it compiles now --- 42sh/Makefile | 26 ------- 42sh/includes/lexer.h | 37 +--------- 42sh/includes/minishell.h | 3 +- 42sh/includes/parser.h | 19 +++--- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/exec_elif.c | 7 +- 42sh/src/exec/exec_if.c | 3 +- 42sh/src/exec/exec_redir.c | 2 +- 42sh/src/exec/ft_exec.c | 19 +++--- 42sh/src/job-control/put_job_in_background.c | 2 +- 42sh/src/lexer/.ft_post_tokenize.c.swp | Bin 12288 -> 0 bytes 42sh/src/lexer/.ft_tokenize.c.swp | Bin 12288 -> 0 bytes 42sh/src/lexer/.reduce_bquotes.c.swp | Bin 12288 -> 0 bytes 42sh/src/lexer/get_reserved_words.c | 8 +-- 42sh/src/lexer/lexer_backslash.c | 2 +- 42sh/src/lexer/lexer_comment.c~HEAD | 24 ------- 42sh/src/lexer/lexer_lex.c | 7 +- 42sh/src/lexer/lexer_newline.c~HEAD | 33 --------- 42sh/src/lexer/lexer_special.c | 38 ----------- 42sh/src/lexer/lexer_then.c | 31 --------- 42sh/src/lexer/reduce_bquotes.c | 56 ---------------- 42sh/src/lexer/reduce_parens.c | 50 -------------- 42sh/src/lexer/stack_to_prompt.c | 2 +- 42sh/src/main/.main.c.swp | Bin 12288 -> 0 bytes 42sh/src/main/ft_cleanup.c | 31 --------- 42sh/src/main/ft_putast.c | 6 +- 42sh/src/main/ft_putast2.c | 4 +- 42sh/src/main/lib_expansion.c | 28 -------- 42sh/src/main/main.c | 2 +- 42sh/src/main/read_script.c | 67 ------------------- 42sh/src/main/remove_trailing_esc_nl.c | 26 ------- 42sh/src/main/shell_script.c | 43 ------------ 42sh/src/main/sig_handler.c | 27 -------- 42sh/src/parser/add_cmd.c | 6 +- 42sh/src/parser/build_tree.c | 16 ++--- 42sh/src/parser/eval_sym.c | 22 +++--- 42sh/src/parser/ft_parse.c | 4 +- 42sh/src/parser/old_parse.c | 58 ---------------- 42sh/src/parser/produce_sym.c | 66 +++++++++--------- 42sh/src/parser/read_stack.c | 10 +-- 40 files changed, 102 insertions(+), 685 deletions(-) delete mode 100644 42sh/src/lexer/.ft_post_tokenize.c.swp delete mode 100644 42sh/src/lexer/.ft_tokenize.c.swp delete mode 100644 42sh/src/lexer/.reduce_bquotes.c.swp delete mode 100644 42sh/src/lexer/lexer_comment.c~HEAD delete mode 100644 42sh/src/lexer/lexer_newline.c~HEAD delete mode 100644 42sh/src/lexer/lexer_special.c delete mode 100644 42sh/src/lexer/lexer_then.c delete mode 100644 42sh/src/lexer/reduce_bquotes.c delete mode 100644 42sh/src/lexer/reduce_parens.c delete mode 100644 42sh/src/main/.main.c.swp delete mode 100644 42sh/src/main/ft_cleanup.c delete mode 100644 42sh/src/main/lib_expansion.c delete mode 100644 42sh/src/main/read_script.c delete mode 100644 42sh/src/main/remove_trailing_esc_nl.c delete mode 100644 42sh/src/main/shell_script.c delete mode 100644 42sh/src/main/sig_handler.c delete mode 100644 42sh/src/parser/old_parse.c diff --git a/42sh/Makefile b/42sh/Makefile index c5061dff..f7785ee8 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -167,10 +167,6 @@ job-control/sigint_handler.c\ job-control/sigtstp_handler.c\ job-control/sigttin_handler.c\ job-control/sigttou_handler.c\ -lexer/.ft_post_tokenize.c.swp\ -lexer/.ft_tokenize.c.swp\ -lexer/.reduce_bquotes.c.swp\ -lexer/ft_post_tokenize.c\ lexer/get_lexer_stack.c\ lexer/get_reserved_words.c\ lexer/get_state_global.c\ @@ -178,7 +174,6 @@ lexer/get_state_redir.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ lexer/lexer_comment.c\ -lexer/lexer_comment.c~HEAD\ lexer/lexer_default.c\ lexer/lexer_delim.c\ lexer/lexer_dless.c\ @@ -191,16 +186,11 @@ lexer/lexer_less.c\ lexer/lexer_lessand.c\ lexer/lexer_lex.c\ lexer/lexer_newline.c\ -lexer/lexer_newline.c~HEAD\ lexer/lexer_number.c\ lexer/lexer_paren.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ -lexer/lexer_special.c\ -lexer/lexer_then.c\ lexer/lexer_word.c\ -lexer/reduce_bquotes.c\ -lexer/reduce_parens.c\ lexer/stack_to_prompt.c\ lexer/token_append.c\ lexer/token_cmp_type.c\ @@ -225,31 +215,16 @@ line-editing/move_up_and_down.c\ line-editing/print_and_del.c\ line-editing/queue.c\ line-editing/readline.c\ -main/.main.c.swp\ main/data_exit.c\ main/data_init.c\ main/data_singleton.c\ -main/ft_cleanup.c\ -main/ft_print_all_ast.c\ main/ft_putast.c\ main/ft_putast2.c\ -main/lib_expansion.c\ main/main.c\ -main/read_script.c\ -main/remove_trailing_esc_nl.c\ main/shell_exit.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ -main/shell_script.c\ -main/sig_handler.c\ -parser/.eval_sym.c.swo\ -parser/.eval_sym.c.swp\ -parser/.ft_parse.c.swo\ -parser/.produce_sym.c.swo\ -parser/.produce_sym.c.swp\ -parser/.read_stack.c.swo\ -parser/.read_stack.c.swp\ parser/add_cmd.c\ parser/add_condition.c\ parser/add_file.c\ @@ -262,7 +237,6 @@ parser/eval_sym.c\ parser/ft_parse.c\ parser/get_instruction.c\ parser/get_sub_instruction.c\ -parser/old_parse.c\ parser/parse.c\ parser/parse_dgreat.c\ parser/parse_dless.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 348bf334..042aed97 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:20:07 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:26:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,13 +41,6 @@ enum e_lexstate BACKSLASH, VAR, SPECIAL, - WHILE, - DO, - DONE, - IF, - THEN, - FI, - COMMENT, PAREN, COMMENT, END, @@ -94,34 +87,7 @@ char *command_getoutput(char *command); int ft_is_delim(char c); int ft_is_delim_list(char c); -t_lexstate get_lexer_state(char *str); -int get_reserved_words(t_list **alst); -int lexer_default(t_list **alst, char *str); -int lexer_newline(t_list **alst, char *str); -int lexer_delim(t_list **alst, char *str); -int lexer_sep(t_list **alst, char *str); -int lexer_word(t_list **alst, char *str); -int lexer_number(t_list **alst, char *str); -int lexer_less(t_list **alst, char *str); -int lexer_great(t_list **alst, char *str); -int lexer_lessand(t_list **alst, char *str); -int lexer_greatand(t_list **alst, char *str); -int lexer_quote(t_list **alst, char *str); -int lexer_dquote(t_list **alst, char *str); -int lexer_backslash(t_list **alst, char *str); -int lexer_var(t_list **alst, char *str); -int lexer_special(t_list **alst, char *str); -int lexer_while(t_list **alst, char *str); -int lexer_do(t_list **alst, char *str); -int lexer_done(t_list **alst, char *str); -int lexer_if(t_list **alst, char *str); -int lexer_then(t_list **alst, char *str); -int lexer_fi(t_list **alst, char *str); -int lexer_list(t_list **alst, char *str); -int lexer_comment(t_list **alst, char *str); -======= char *stack_to_prompt(t_list *stack); - t_lexstate get_state_global(t_lexer *lexer); t_lexstate get_state_redir(t_lexer *lexer); int get_lexer_stack(t_lexer lexer); @@ -145,6 +111,5 @@ int lexer_backslash(t_list **alst, t_lexer *lexer); int lexer_paren(t_list **alst, t_lexer *lexer); int lexer_comment(t_list **alst, t_lexer *lexer); int lexer_end(t_list **alst, t_lexer *lexer); ->>>>>>> master #endif diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index c3368eed..ea79fd25 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:23:20 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:39:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,7 +65,6 @@ struct s_data t_comp *comp; t_exec exec; t_jobc jobc; - t_script script; }; extern t_stof g_builtins[]; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 3cfa52c8..625551d7 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:26:50 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:39:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ * */ - enum e_sym { LINEBREAK = 1, @@ -50,11 +49,9 @@ enum e_sym TK_ELIF, TK_ELSE, TK_UNTIL, - TK_N_WORD, - TK_Q_WORD, - TK_DQ_WORD, + TK_WORD, TK_ASSIGNEMENT_WORD = 50, - TK_BANG, + TK_BANG, TK_NAME, TK_FOR, TK_IO_NUMBER, @@ -126,6 +123,8 @@ enum e_sym ALL = 200, }; +# define TK_REDIR(x) (TK_LESS <= x && x <= TK_GREATAND) + typedef int t_sym; # define MATCH_STACK(x, y) (x == y || y == ALL) @@ -175,7 +174,7 @@ typedef struct s_errormatch t_errormatch; extern t_errormatch g_errormatch[]; -int ft_parse2(t_btree **ast, t_list **token); +int ft_parse(t_btree **ast, t_list **token); int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); @@ -187,7 +186,7 @@ int pop_stack(t_sym **stack, t_sym erase_sym); int error_syntax(t_list **token); -int ft_read_stack(t_sym *stack); +int ft_read_stack(t_sym *stack); char *read_state(t_sym current); #define UNDEFINED (1 << 0) @@ -228,7 +227,7 @@ int gen_node(t_btree **ast); /* * Build AST - * + * */ typedef struct s_parser t_parser; @@ -270,8 +269,6 @@ struct s_astnode t_astdata data; }; -extern t_parser g_parser[]; - int parse(t_btree **ast, t_list **token); int get_instruction(t_list **lst); diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index c6ddecb2..9b42f3f9 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:32:10 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:21:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_elif.c b/42sh/src/exec/exec_elif.c index c248e434..235b1938 100644 --- a/42sh/src/exec/exec_elif.c +++ b/42sh/src/exec/exec_elif.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:08:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:26:00 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:35:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,10 @@ int exec_elif(t_btree **ast) int test; (void)ast; - test = 1; - if (test && data_singleton()->script.lc == 0) + test = 0; + if (test) { ft_exec(&(*ast)->right); - data_singleton()->script.lc = 1; } // btree_delone(ast, &ast_free); return (0); diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index 43c7aa87..667c32de 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:39:25 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:31:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ int exec_if(t_btree **ast) { ft_exec(&(*ast)->right); - data_singleton()->script.lc = 0; // btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_redir.c b/42sh/src/exec/exec_redir.c index e8245a67..6be7340c 100644 --- a/42sh/src/exec/exec_redir.c +++ b/42sh/src/exec/exec_redir.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:51 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:33:34 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:00:03 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index dd19e60d..a2d83114 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:03:42 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:01:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,18 +20,19 @@ t_execmap g_execmap[] = {TK_SEMI, &exec_semi}, {TK_AMP, &exec_ampersand}, {TK_PIPE, &exec_pipe}, - {TK_LESS, &exec_less}, - {TK_GREAT, &exec_great}, - {TK_DGREAT, &exec_dgreat}, + {TK_LESS, &exec_redir}, + {TK_GREAT, &exec_redir}, + {TK_DLESS, &exec_redir}, + {TK_DGREAT, &exec_redir}, + {TK_LESSAND, &exec_redir}, + {TK_GREATAND, &exec_redir}, {TK_WHILE, &exec_while}, {TK_IF, &exec_if}, {TK_ELIF, &exec_elif}, {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, - {TK_COMMAND, &exec_command}, {TK_SUBSHELL, &exec_command}, - {TK_REDIR, &exec_redir}, - {TK_COMMAND | TK_SUBSHELL, &exec_command}, + {TK_COMMAND, &exec_command}, {0, 0}, }; @@ -48,7 +49,7 @@ int ft_exec(t_btree **ast) { if (item->type == g_execmap[i].type) { - DG("match : %s and %s", + DG("match : %s and %s", read_state(item->type), read_state(g_execmap[i].type)); /* return ((*g_execmap[i].f)(ast)); */ (*g_execmap[i].f)(ast); @@ -56,4 +57,4 @@ int ft_exec(t_btree **ast) i++; } return (0); - +} diff --git a/42sh/src/job-control/put_job_in_background.c b/42sh/src/job-control/put_job_in_background.c index 02357157..09f1b482 100644 --- a/42sh/src/job-control/put_job_in_background.c +++ b/42sh/src/job-control/put_job_in_background.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 15:03:29 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:09:06 by jhalford ### ########.fr */ +/* Updated: 2017/02/20 21:52:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/.ft_post_tokenize.c.swp b/42sh/src/lexer/.ft_post_tokenize.c.swp deleted file mode 100644 index a6c9da13d5dd5f006f103c2758d6bff711b4e57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2Pj1sd6o+3}AOZvstO|=h5<%0XwPU9cW^j65{?S>6*Fw=p>*_)*cVc7 zsCq95Rb2&b;d{@8=1hR`DK@|cW;f7RjpaKzsG3G4T2#ni$19h&W?#>hY=8~00XDz} z*Z><~18jf|oOlDOmx0&xE>0!y<~18jf|umLu}2G{@_U;}L6 z1RAjE|NZZ00qW=I=IQ_c^!NYAivZh{9OcUefHvhS`a zddCYDmP+wmI89q(DOyh(4?W-M^j(4Z!KPoWnFr8IRC-(uOL_!6#+CxNdakX6YoS>& zYI?=c%?cW~t!m9OZ{f}X#@m}mE?g)S=!jkijW$Oo=ThK(DSihUMg%krdPcxj)9y3^ z=^i2r<%oz$H=Iv_!--i2WuhbxDyPxNq7-=Vz&gB(yDi&kZ#dHSLoJZc)<^1-;Q&&$ zQql-B1^&5a%1lH%B+`8*^b|P$+0&dUKt!u-#Wl$w?o!~?< O1|HY5LZ7{{lANYtt*zFwSm!De6FY<5d4(TY?QJqUs*f-lQ#cD9=~&2E!yty&d) z`3fEcuO7U35%f3hQBKL3++3S+>{Fp(%2J9N44-y|8uq%qXi>%}R7-ZhVX%I(T!FA{0&z zkOSlZIY17O1LOcXKn{=t+u4DzJHnpf06XGCRO5PNsE)f-kptuaIY17O1LOcXKn{=t z4C=US1b&5SDll`uY4>rXf@-L_>UrBc~G$Pd?C9YA1q_-PvjB1=UsInrb3e)pf^n zLOqgs%rvLP^)V%thi0;VC7SI|MN2ZK#fhU@U-c||%p5P&v`j*&j(s@TQ9-GdxZM^$ zFW~YL$BbN2C&3AD9tdU*Yx9{IK7r5bD(|=NhS`ocf!(C*IYGTCU1w2O3)qnsHhW6h zRS&w-c7$6R3@i&j?KFhF5V#^}r$f!9UMG}kf2ixqAP`%#~LWbtkuGd>^ z$jlBNbo`81AiHU(I#jmX5|jW!~+R1y1()f2(YJ6^UoCTbO}eqh|_ iSBc=pG=`!qE0IJiDwzK-!6ALs?F(+zds4tlXRzN8#fX{! diff --git a/42sh/src/lexer/.reduce_bquotes.c.swp b/42sh/src/lexer/.reduce_bquotes.c.swp deleted file mode 100644 index 1f2cadf37f75e3babd6de5051868b74e783e77be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHN&u<$=6rLb~SRe$^3!;~4ES2@z@p|p3k+w}r3q?YJ04b>|6=AJ+$Mwd}+8K|P zq!k6kk3WP9;=~^Se*j43niFTlg%bzF3BH+~-Plc)wjx5R^v3!;Ki+%ad-KisV0*jG z>u!08F=AT#Cy=N9!B-2PH+Hi6cZP^~Tg2rmA(UT{*-pvX959DZD z#A@QNwkCalB4d9j_J#DNNT#vqba$sCB_@sd1S&F-0;IrWE3nAgt)QvHD$D2inU}X7 zn}GsI0aAbzAO%PPQh*d71xNu>;K@}$jThLbDE}$D1@k)q#tU{{^ma-eDL@L40;B*b zKnjooqyQ;E3XlS%04YEUJb?;C_<#TIvyAl|6p#P^i|_y6FEREpun7G4B4Y#KRp94E z#`b~NfWsFU`wI9H*agPG72q=90~}Zao(BGYp0PiGUx8nMd%zFC7r#u>uT{0PG3qVM*R6x^0DJv(D7dTlgqh7~YqkmDrnBHE za0Fn2wm9WZFU=Cy%WuMYHK_Akym)8a(UnxIAXEeRm-Sp^%!&Jvbi7QxM_2QLBN9x;p&C3wWbNT`_ZsBlF1QerKTCV?aK9nuv~bQ zK@BYS1$T^Qf(pW`2jNi_m$svL@OmtxY| +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:54:01 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:06:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,12 +21,12 @@ int get_reserved_words(t_list **alst) temp = *alst; previous_token = NULL; while (temp) - { + { token = temp->content; if (!previous_token || (previous_token->type & RW_SEP)) { - if (token->type == TK_N_WORD) - { + if (token->type == TK_WORD) + { if (ft_strncmp(token->data, "while", 5) == 0) token->type = TK_WHILE; else if (ft_strncmp(token->data, "done", 4) == 0) diff --git a/42sh/src/lexer/lexer_backslash.c b/42sh/src/lexer/lexer_backslash.c index 4a8a8e4a..abd2a95c 100644 --- a/42sh/src/lexer/lexer_backslash.c +++ b/42sh/src/lexer/lexer_backslash.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:49 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:49:19 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:04:36 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_comment.c~HEAD b/42sh/src/lexer/lexer_comment.c~HEAD deleted file mode 100644 index 844bf507..00000000 --- a/42sh/src/lexer/lexer_comment.c~HEAD +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_comment.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/24 18:22:35 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:22:48 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_comment(t_list **alst, char *str) -{ - t_token *token; - - (void)str; - token = (*alst)->content; - if (!token->type) - ft_lstdel(alst, &token_free); - return (0); -} diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 9e888bcf..8e9a7720 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -5,13 +5,8 @@ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -<<<<<<< HEAD:src/lexer/ft_tokenize.c -/* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/17 17:28:23 by ariard ### ########.fr */ -======= /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/02/09 22:58:48 by jhalford ### ########.fr */ ->>>>>>> master:src/lexer/lexer_lex.c +/* Updated: 2017/02/20 21:55:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_newline.c~HEAD b/42sh/src/lexer/lexer_newline.c~HEAD deleted file mode 100644 index c18ac827..00000000 --- a/42sh/src/lexer/lexer_newline.c~HEAD +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_newline.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/02/03 19:53:03 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_newline(t_list **alst, char *str) -{ - t_token *token; - - if (*alst) - { - token = (*alst)->content; - if (*token->data) - return (lexer_newline(&(*alst)->next, str)); - } - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_NEWLINE; - return (ft_tokenize(&(*alst)->next, str + 1, DEFAULT)); -} diff --git a/42sh/src/lexer/lexer_special.c b/42sh/src/lexer/lexer_special.c deleted file mode 100644 index 53f35075..00000000 --- a/42sh/src/lexer/lexer_special.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_special.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/11 15:35:38 by jhalford #+# #+# */ -/* Updated: 2017/01/25 22:53:15 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_special(t_list **alst, char *str) -{ - t_token *token; - t_list **lst; - - lst = alst; - if (*alst) - { - token = (*alst)->content; - if (token->type) - lst = &(*alst)->next; - } - token = token_init(); - *lst = ft_lstnew(token, sizeof(*token)); - token = (*lst)->content; - if (*str == '(') - token->type = TK_PAREN_OPEN; - else if (*str == ')') - token->type = TK_PAREN_CLOSE; - else if (*str == '`') - token->type = TK_BQUOTE; - token->data = str; - return (ft_tokenize(&(*lst)->next, str + 1, DEFAULT)); -} diff --git a/42sh/src/lexer/lexer_then.c b/42sh/src/lexer/lexer_then.c deleted file mode 100644 index c00c521c..00000000 --- a/42sh/src/lexer/lexer_then.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_then.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 23:29:49 by ariard #+# #+# */ -/* Updated: 2017/02/10 01:15:01 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_then(t_list **alst, char *str) -{ - t_token *token; - t_lexstate state; - - if (*alst) - return (lexer_then(&(*alst)->next, str)); - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_THEN; - state = TK_WORD; - return (ft_tokenize(&(*alst)->next, str + 4, state)); -} diff --git a/42sh/src/lexer/reduce_bquotes.c b/42sh/src/lexer/reduce_bquotes.c deleted file mode 100644 index 60915dcb..00000000 --- a/42sh/src/lexer/reduce_bquotes.c +++ /dev/null @@ -1,56 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* reduce_bquotes.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/11 16:46:27 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:36:25 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int reduce_bquotes(t_list **alst, char **str) -{ - t_list *start; - t_list **end; - t_token *token; - int tk; - char *new; - char *fit; - char *bq_start; - char *bq_end; - - tk = TK_BQUOTE; - DG("check 0"); - if ((start = ft_lst_find(*alst, &tk, token_cmp_type))) - { - DG("check 1"); - end = &start->next; - while (end && *end) - { - token = (*end)->content; - if (token->type == TK_BQUOTE) - break ; - end = &(*end)->next; - } - if (!*end) - { - DG("check 42"); - return (-1); - } - bq_start = ((t_token*)start->content)->data; - bq_end = ((t_token*)(*end)->content)->data; - ft_lstdel(end, token_free); - fit = command_getoutput(ft_strbetween(bq_start + 1, bq_end)); - new = ft_strreplace(str, bq_start, bq_end, fit); - ft_strdel(str); - *str = new; - ft_lstdel(alst, token_free); - ft_tokenize(alst, new, DEFAULT); - return (1); - } - return (0); -} diff --git a/42sh/src/lexer/reduce_parens.c b/42sh/src/lexer/reduce_parens.c deleted file mode 100644 index 9df6e40d..00000000 --- a/42sh/src/lexer/reduce_parens.c +++ /dev/null @@ -1,50 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* reduce_parens.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/11 16:13:31 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:55:06 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int reduce_parens(t_list **alst, char *str) -{ - t_list *start; - t_list *end; - t_token *token; - int num_p; - int tk; - - (void)str; - tk = TK_PAREN_OPEN; - if ((start = ft_lst_find(*alst, &tk, token_cmp_type))) - { - end = start->next; - num_p = 1; - while (end) - { - token = end->content; - if (token->type == TK_PAREN_OPEN) - num_p++; - else if (token->type == TK_PAREN_CLOSE) - num_p--; - if (num_p == 0) - break ; - end = end->next; - ft_lst_delif(alst, token, ft_addrcmp, token_free); - } - if (!end) - return (-1); - token = start->content; - token->type = TK_SUBSHELL; - token->data = ft_strbetween(token->data + 1, ((t_token*)end->content)->data); - ft_lst_delif(alst, end->content, ft_addrcmp, token_free); - return (1); - } - return (0); -} diff --git a/42sh/src/lexer/stack_to_prompt.c b/42sh/src/lexer/stack_to_prompt.c index 3a5cc8ff..77defb31 100644 --- a/42sh/src/lexer/stack_to_prompt.c +++ b/42sh/src/lexer/stack_to_prompt.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 21:25:26 by jhalford #+# #+# */ -/* Updated: 2017/02/17 14:41:08 by jhalford ### ########.fr */ +/* Updated: 2017/02/20 22:13:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/.main.c.swp b/42sh/src/main/.main.c.swp deleted file mode 100644 index cb0bbd5e35f9decaff9cb252b1ad9066390ffcff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2%WvaE9LJ|fJPee_vIm4fnkL%Tb=x>j%Xaay3w=`v?XrEaNGq(VGfCV!c4WJy zB?<@xcO;J7_y-X8J#a!=3GE5NUx0+Ph$9yc@Et#rw3~J-wU?DkF>B7cY#N=A(fOJ4Q zARUknNC%_?(gEp!bl?$lAZiYf&yn+EY2Me;>%fs~+LRaRfOJ4QARUknNC%_?(gEp! zbU->F9gq%42OdEO7=GWMev*)-r;t2;|Ihya|KWK;J_du}&U1w9fLFlXK|=Py2>9(; zLcRuHfd+8F9GC$H$blhn0Xz==d4`Zb!5#1o_!8`b8n_8G@G2nS{?mlq13!Up!3W?q zpn!iBLjDGSf&1Vd_yuf&8E_H22>!r5{SJNwcfrr#NANwUgO9)_SO(($7lAC&0qKBr zKsq2DkPe*Mfi_VB9_`*179iq2twDZrOgL!MuuEVG&FF zBHvR-C$77W#|w_v+>J&@`wLYgE8wgmCaPjiizuJe9hXzpKubhFl#bFjaMD@hk;V2z z5>P^-kP@jrn3dm*LOM*>-dQM@t<@XrYgTy7_6?PEQl~-PPGS`WDTtuH>kR%i>}V zQCr0EB1I7|Q>v&@k&azw0o62QMaa>I)bS{OK;ouhE8pj~I?Te@dR?Qsq0y}<;M`)( zrh8yHUe(!GF+NU*F&)nc_0s57su?=fbfTndFji>>NTaH*t?f-bKt zF5jZFHy38!n_vBKg`)4ahx~gLl8Ev8&hjHM#R7!udlO9-ggm|rWEuH8+!LE5u2_j^ z(wROfR*iT-n|>Hsali8^7k(b2-8)T9)ZufonU4+ANi#kk!t0?Vg=3;*c^nNePUjaE zXEw^~B2sskHCU}(^P?;cI&vu-!CuO;>b;k40@)~0U@g5yS2oIJ%#1^KnrK_`(@-?b z62q43gps1f(>j~3?*U6TUndO7JD%wqS&H}?e2=ksXcGcI^JIvvXd=kOht30~HXl3u(_ zjVtC<(R}@i5Ztaax9SI#u4H~pDAM%O>CXf^9jB>`K_&gebkuqlWrDK@W;csBx0${3 zwjD4pEcij~de8i{8jFmXnNp8tCivi*hx7=wt|IbG)iXiyZC9`#B64`x95a)Sw31vh e!NYS;*)q*c5;akh2 diff --git a/42sh/src/main/ft_cleanup.c b/42sh/src/main/ft_cleanup.c deleted file mode 100644 index 7cf6aa3b..00000000 --- a/42sh/src/main/ft_cleanup.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_cleanup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/01 14:42:42 by jhalford #+# #+# */ -/* Updated: 2016/12/09 21:50:38 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -extern char **environ; -extern char PC; -extern char *UP; -extern char *BC; - -void ft_cleanup(void) -{ - struct termios term; - - DG("cleanup. char * UP at %p", UP); - DG("cleanup. char * BC at %p", BC); - if (tcgetattr(0, &term) == -1) - return ; - term.c_lflag |= ICANON | ISIG | ECHO; - if (tcsetattr(0, TCSANOW, &term) == -1) - return ; -} diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 02ad0f73..cd109ab4 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/20 16:42:40 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:19:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,8 +28,8 @@ char *ft_putast(void *nodein) return ("TK_DO"); else if (node->type == TK_AMP) return (" & "); - else if (node->type == TK_N_WORD) - return (" TK_N_WORD"); + else if (node->type == TK_WORD) + return (" TK_WORD"); else if (node->type == TK_SEMI) return (" ; "); else if (node->type == TK_AND_IF) diff --git a/42sh/src/main/ft_putast2.c b/42sh/src/main/ft_putast2.c index 35668b46..d1bcb89b 100644 --- a/42sh/src/main/ft_putast2.c +++ b/42sh/src/main/ft_putast2.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/05 22:48:44 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:08:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,7 +27,7 @@ void ft_putast2(void *nodein) ft_sstrprint_fd(2, node->data.sstr, ','); ft_putchar_fd('\n', 2); } - else if (node->type & TK_REDIR) + else if (TK_REDIR(node->type)) { ft_putnbr_fd(node->data.redir.n, 2); if (node->type == TK_GREATAND || node->type == TK_LESSAND) diff --git a/42sh/src/main/lib_expansion.c b/42sh/src/main/lib_expansion.c deleted file mode 100644 index 8905c284..00000000 --- a/42sh/src/main/lib_expansion.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lib_expansion.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/03 13:37:41 by jhalford #+# #+# */ -/* Updated: 2016/12/03 13:37:41 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_expand_dollar(char **av, char **env) -{ - char *dollar; - - while (*av) - { - if ((dollar = ft_strchr(*av, '$'))) - { - *dollar = '\0'; - *av = ft_strjoin(*av, ft_getenv(env, dollar + 1)); - } - av++; - } -} diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 2db727e0..5bce1e37 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:59:49 by ariard ### ########.fr */ +/* Updated: 2017/02/20 21:52:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c deleted file mode 100644 index 71e39750..00000000 --- a/42sh/src/main/read_script.c +++ /dev/null @@ -1,67 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_read_script.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:05:31 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int get_script_content(t_script *script) -{ - char *line; - - line = NULL; - while (((get_next_line(script->fd, &line))) > 0) - { - ft_strappend(&script->buffer, line); - ft_strappend(&script->buffer, "\n"); - ft_strdel(&line); - script->size += ft_strlen(script->buffer); - } - if (script->size) - script->buffer[ft_strlen(script->buffer) - 1] = 0; - return (script->size); -} - -static int rs_read(char *file, t_script *script) -{ - if ((script->fd = open(file, O_RDONLY)) == -1) - return (0); - get_script_content(script); - if (script->size > 0) - { - data_singleton()->opts &= ~SHELL_MODE_MASK; - data_singleton()->opts |= SHELL_MODE_SCRIPT; - } - return (0); -} - -static int rs_setup(t_script *script) -{ - ft_bzero(script, sizeof(script)); - script->buffer = NULL; - script->size = 0; - script->fd = -1; - return (0); -} - -int read_script(char *file) -{ - t_script *script; - - script = &data_singleton()->script; - if (!file) - return (0); - if (rs_setup(script) < 0) - return (-1); - if (rs_read(file, script) < 0) - return (-1); - DG("{inv}{bol}{gre}read of script{eoc} script detected"); - return (1); -} diff --git a/42sh/src/main/remove_trailing_esc_nl.c b/42sh/src/main/remove_trailing_esc_nl.c deleted file mode 100644 index 9d6fb232..00000000 --- a/42sh/src/main/remove_trailing_esc_nl.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* remove_trailing_esc_nl.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/09 16:52:34 by jhalford #+# #+# */ -/* Updated: 2017/02/09 17:00:33 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int remove_trailing_esc_nl(char *str) -{ - char *last; - - last = str + ft_strlen(str) - 1; - if (*last == '\\') - { - *last = 0; - return (1); - } - return (0); -} diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c deleted file mode 100644 index 32f9899d..00000000 --- a/42sh/src/main/shell_script.c +++ /dev/null @@ -1,43 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* shell_script.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:02:17 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int shell_script() -{ - t_list *token; - t_btree *ast; - t_list *list_ast; - t_script *script; - - token = NULL; - ast = NULL; - list_ast = NULL; - script = &data_singleton()->script; - while (script->size) - { - if (ft_lexer(&token, &data_singleton()->script.buffer) || !token) - return (1); - DG("after post_tokenize"); - token_print(token); - if (ft_parse2(&ast, &token)) - return (1); -// btree_print(STDBUG, ast, &ft_putast); -// if (ft_exec(&ast)) -// return (1); - ast = NULL; - script->size = 0; - get_script_content(script); - } - close(script->fd); - return (0); -} diff --git a/42sh/src/main/sig_handler.c b/42sh/src/main/sig_handler.c deleted file mode 100644 index d56b03ee..00000000 --- a/42sh/src/main/sig_handler.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* sig_handler.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/01 12:43:22 by jhalford #+# #+# */ -/* Updated: 2016/12/03 13:31:33 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -pid_t g_pid; - -void sig_handler(int signo) -{ - (void)signo; - if (signo == SIGINT) - { - if (g_pid) - kill(g_pid, SIGINT); - if (kill(g_pid, 0) == 0) - ft_putendl(""); - } -} diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 31c7ba6e..23bf28bf 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:19:04 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:27:06 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ int add_cmd(t_btree **ast, t_list **lst) if (!*ast) gen_node(ast); else if (isdir(ast)) - return (add_file(ast, lst)); + return (add_file(ast, lst)); else if (isloop(ast)) return (add_loop_cmd(ast, lst)); else if (iscondition(ast, lst) == 1) @@ -35,7 +35,7 @@ int add_cmd(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; node->type = token->type; - if (token->type == TK_N_WORD) + if (token->type == TK_WORD) { my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 1718fdad..b602bead 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/20 19:03:03 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:16:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_treematch g_treematch[] = { - {TK_N_WORD, &add_cmd}, + {TK_WORD, &add_cmd}, {TK_PIPE, &add_sep}, {TK_SEMI, &add_sep}, {TK_GREAT, &add_sep}, @@ -36,8 +36,8 @@ t_treematch g_treematch[] = static int isseparator(int type, int cache) { - if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO - || cache == TK_NEWLINE || cache == TK_THEN)) + if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO + || cache == TK_NEWLINE || cache == TK_THEN)) return (0); return (1); } @@ -53,13 +53,13 @@ int build_tree(t_btree **ast, t_list **lst) while (g_treematch[i].type) { if (g_treematch[i].type == token->type - && isseparator(token->type, cache)) + && isseparator(token->type, cache)) { - + DG("func TK : '%s' TK : '%s'", - read_state(g_treematch[i].type) ,read_state(token->type)); + read_state(g_treematch[i].type) ,read_state(token->type)); cache = token->type; - return (g_treematch[i].add(ast, lst)); + return (g_treematch[i].add(ast, lst)); } i++; } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 53ee98e6..f1184bb5 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/20 19:26:28 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:20:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,11 +14,11 @@ t_stackmatch g_stackmatch[] = { - {TK_N_WORD, CMD_SUFFIX}, - {TK_N_WORD, TK_PIPE}, - {TK_N_WORD, TK_CASE}, - {TK_N_WORD, WORDLIST}, - {TK_N_WORD, LINEBREAK}, + {TK_WORD, CMD_SUFFIX}, + {TK_WORD, TK_PIPE}, + {TK_WORD, TK_CASE}, + {TK_WORD, WORDLIST}, + {TK_WORD, LINEBREAK}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, {TK_IO_NUMBER, REDIRECT_LIST}, {TK_IO_NUMBER, CMD_SUFFIX}, @@ -187,7 +187,7 @@ t_stackmatch g_stackmatch[] = {TK_ELIF, COMPLETE_CONDITION}, {TK_ELIF, CONDITION}, {TK_FI, ELSE_PART}, - {TK_FI, COMPOUND_LIST}, + {TK_FI, COMPOUND_LIST}, {TK_FI, CMD_SUPERIOR}, {TK_FI, END_COMMAND}, {TK_FI, CONDITION}, @@ -291,7 +291,7 @@ t_stackmatch g_stackmatch[] = {SEPARATOR_OP, COMPOUND_LIST}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, {LINEBREAK, TK_SEMI}, - {LINEBREAK, SEPARATOR_OP}, + {LINEBREAK, SEPARATOR_OP}, {LINEBREAK, TK_PAREN_CLOSE}, {LINEBREAK, WORD}, {LINEBREAK, IN}, @@ -318,7 +318,7 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, WORDLIST}, {NEWLINE_LIST, TERM}, {NEWLINE_LIST, COMPOUND_LIST}, - {NEWLINE_LIST, COMPLETE_COMMANDS}, + {NEWLINE_LIST, COMPLETE_COMMANDS}, {NEWLINE_LIST, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION}, {HERE_END, TK_DLESS}, @@ -390,7 +390,7 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_ELSE}, {CMD_NAME, COMPOUND_LIST}, {CMD_NAME, COMPLETE_CONDITION}, - + {CMD_SUPERIOR, TK_WHILE}, {CMD_SUPERIOR, TK_UNTIL}, {CMD_SUPERIOR, TK_DO}, @@ -407,7 +407,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, TK_PIPE}, {CMD_SUPERIOR, PIPE_SEMI_SEQUENCE}, {CMD_SUPERIOR, AND_OR_MAJOR}, - + {SIMPLE_COMMAND, TK_WHILE}, {SIMPLE_COMMAND, TK_UNTIL}, {SIMPLE_COMMAND, TK_DO}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 4d1a3c7d..dc8a97c3 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:01:51 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:39:39 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ static int end_instruction(t_sym sym) return (0); } -int ft_parse2(t_btree **ast, t_list **token) +int ft_parse(t_btree **ast, t_list **token) { t_sym *new_sym; t_sym *stack; diff --git a/42sh/src/parser/old_parse.c b/42sh/src/parser/old_parse.c deleted file mode 100644 index af5cb658..00000000 --- a/42sh/src/parser/old_parse.c +++ /dev/null @@ -1,58 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_parse.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/15 19:56:09 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -t_parser g_parser[] = -{ - {TK_AND_IF | TK_OR_IF, &parse_separator}, - {TK_AMP, &parse_separator}, - {TK_PIPE, &parse_separator}, - {TK_LESS, &parse_less}, - {TK_GREAT, &parse_great}, - {TK_DLESS, &parse_dless}, - {TK_DGREAT, &parse_dgreat}, - {TK_LESSAND, &parse_lessand}, - {TK_GREATAND, &parse_greatand}, - {TK_SUBSHELL, &parse_subshell}, - {TK_N_WORD, &parse_word}, - {0, 0}, -}; - -int ft_parse(t_btree **ast, t_list **start) -{ - t_list *lst; - t_astnode item; - int i; - - DG("old parser"); - i = 0; - if (!*start) - return (0); - if (!*ast) - { - *ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*ast)->item)->data.token = NULL; - ((t_astnode *)(*ast)->item)->type = 0; - } - while (g_parser[i].type) - { - if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) - { - if (g_parser[i].f) - (*g_parser[i].f)(ast, start, &lst); - return (0); - } - i++; - } - return (0); -} diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 5807c61d..306c9db1 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:50:16 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:37:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,38 +14,38 @@ t_prodmatch g_prodmatch[] = { - {TK_N_WORD, TK_DLESS, HERE_END}, - {TK_N_WORD, TK_DLESSDASH, HERE_END}, - {TK_N_WORD, TK_LESS, FILENAME}, - {TK_N_WORD, TK_LESSAND, FILENAME}, - {TK_N_WORD, TK_GREAT, FILENAME}, - {TK_N_WORD, TK_GREATAND, FILENAME}, - {TK_N_WORD, TK_DGREAT, FILENAME}, - {TK_N_WORD, TK_LESSGREAT, FILENAME}, - {TK_N_WORD, TK_CLOBBER, FILENAME}, - {TK_N_WORD, CMD_WORD, CMD_SUFFIX}, - {TK_N_WORD, CMD_NAME, CMD_SUFFIX}, - {TK_N_WORD, CMD_SUPERIOR, CMD_SUFFIX}, - {TK_N_WORD, LINEBREAK, CMD_NAME}, - {TK_N_WORD, TK_PIPE, CMD_NAME}, - {TK_N_WORD, AND_OR, CMD_NAME}, - {TK_N_WORD, AND_OR_MAJOR, CMD_NAME}, - {TK_N_WORD, TK_WHILE, CMD_NAME}, - {TK_N_WORD, TK_UNTIL, CMD_NAME}, - {TK_N_WORD, TK_DO, CMD_NAME}, - {TK_N_WORD, TK_IF, CMD_NAME}, - {TK_N_WORD, TK_THEN, CMD_NAME}, - {TK_N_WORD, TK_ELIF, CMD_NAME}, - {TK_N_WORD, TK_ELSE, CMD_NAME}, - {TK_N_WORD, COMPOUND_LIST, CMD_NAME}, - {TK_N_WORD, COMPLETE_CONDITION, CMD_NAME}, - {TK_N_WORD, NEWLINE_LIST, CMD_NAME}, - {TK_N_WORD, TK_BANG, CMD_NAME}, - {TK_N_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, - {TK_N_WORD, SEPARATOR_OP, CMD_NAME}, - {TK_N_WORD, IN, WORDLIST}, - {TK_N_WORD, CASE_LIST, PATTERN}, - {TK_N_WORD, TK_PAREN_OPEN, PATTERN}, + {TK_WORD, TK_DLESS, HERE_END}, + {TK_WORD, TK_DLESSDASH, HERE_END}, + {TK_WORD, TK_LESS, FILENAME}, + {TK_WORD, TK_LESSAND, FILENAME}, + {TK_WORD, TK_GREAT, FILENAME}, + {TK_WORD, TK_GREATAND, FILENAME}, + {TK_WORD, TK_DGREAT, FILENAME}, + {TK_WORD, TK_LESSGREAT, FILENAME}, + {TK_WORD, TK_CLOBBER, FILENAME}, + {TK_WORD, CMD_WORD, CMD_SUFFIX}, + {TK_WORD, CMD_NAME, CMD_SUFFIX}, + {TK_WORD, CMD_SUPERIOR, CMD_SUFFIX}, + {TK_WORD, LINEBREAK, CMD_NAME}, + {TK_WORD, TK_PIPE, CMD_NAME}, + {TK_WORD, AND_OR, CMD_NAME}, + {TK_WORD, AND_OR_MAJOR, CMD_NAME}, + {TK_WORD, TK_WHILE, CMD_NAME}, + {TK_WORD, TK_UNTIL, CMD_NAME}, + {TK_WORD, TK_DO, CMD_NAME}, + {TK_WORD, TK_IF, CMD_NAME}, + {TK_WORD, TK_THEN, CMD_NAME}, + {TK_WORD, TK_ELIF, CMD_NAME}, + {TK_WORD, TK_ELSE, CMD_NAME}, + {TK_WORD, COMPOUND_LIST, CMD_NAME}, + {TK_WORD, COMPLETE_CONDITION, CMD_NAME}, + {TK_WORD, NEWLINE_LIST, CMD_NAME}, + {TK_WORD, TK_BANG, CMD_NAME}, + {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, + {TK_WORD, SEPARATOR_OP, CMD_NAME}, + {TK_WORD, IN, WORDLIST}, + {TK_WORD, CASE_LIST, PATTERN}, + {TK_WORD, TK_PAREN_OPEN, PATTERN}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index b13bc4ca..95f5c3a1 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:50:22 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:38:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -73,7 +73,7 @@ char *read_state(t_sym current) if (current == AND_OR_MINOR) return("AND_OR_MINOR"); if (current == AND_OR_MAJOR) - return ("AND_OR_MAJOR"); + return ("AND_OR_MAJOR"); if (current == TK_COMMAND) return ("TK_COMMAND"); if (current == TK_AND_IF) @@ -104,7 +104,7 @@ char *read_state(t_sym current) return ("CMD_SUPERIOR"); if (current == TK_IO_NUMBER) return ("IO_NUMBER"); - if (current == CMD_SUFFIX) + if (current == CMD_SUFFIX) return ("CMD_SUFFIX"); if (current == CMD_PREFIX) return ("CMD_PREFIX"); @@ -132,7 +132,7 @@ char *read_state(t_sym current) return ("COMPLETE_COMMAND"); if (current == COMPLETE_COMMANDS) return ("COMPLETE_COMMANDS"); - if (current == TK_N_WORD) + if (current == TK_WORD) return ("TK_WORD"); if (current == CMD_NAME) return ("CMD_NAME"); @@ -159,7 +159,7 @@ char *read_state(t_sym current) return ("NULL"); } -int ft_read_stack(t_sym *stack) +int ft_read_stack(t_sym *stack) { while (*stack) { From 661cb0eb8b4b0da771a2153d04715228ebd26ae1 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 21 Feb 2017 14:35:14 +0100 Subject: [PATCH 075/206] get_fd --- 42sh/includes/ft_readline.h | 4 +- 42sh/includes/minishell.h | 2 +- 42sh/includes/parser.h | 2 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/line-editing/readline.c | 9 ++++- 42sh/src/main/main.c | 64 ++++++++++++-------------------- 6 files changed, 35 insertions(+), 48 deletions(-) diff --git a/42sh/includes/ft_readline.h b/42sh/includes/ft_readline.h index 2522979b..9c6f2810 100644 --- a/42sh/includes/ft_readline.h +++ b/42sh/includes/ft_readline.h @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */ -/* Updated: 2017/02/20 20:21:45 by ariard ### ########.fr */ +/* Updated: 2017/02/21 14:27:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -178,7 +178,7 @@ void ft_c(void); void ft_x(void); void ft_v(void); void ft_read_it(int input, size_t *pos, char **str); -char *readline(char *); +char *readline(int fd, char *prompt); int ft_completion(int ret); struct termios *ft_save_termios(int save); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index ea79fd25..1b77b4c1 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:39:18 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 14:28:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 625551d7..f21a70b1 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:39:45 by jhalford ### ########.fr */ +/* Updated: 2017/02/20 22:43:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 9b42f3f9..558804af 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:21:35 by jhalford ### ########.fr */ +/* Updated: 2017/02/20 22:43:53 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index 5d9795ec..a90789c9 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/02/16 12:45:32 by gwojda ### ########.fr */ +/* Updated: 2017/02/21 14:20:16 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -95,10 +95,15 @@ void readline_init(char *prompt) prompt ? ft_putstr(prompt) : ft_prompt(); } -char *readline(char *prompt) +char *readline(int fd, char *prompt) { char *input; + if (fd != STDIN) + { + get_next_line(fd, &input); + return (input); + } readline_init(prompt); input = ft_read_stdin(); ft_putchar('\n'); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 5bce1e37..cf710d51 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,54 +6,25 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:52:34 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 14:29:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int non_interactive_shell(char *command) -{ - t_list *token; - t_lexer lexer; - t_btree *ast; - - lexer_init(&lexer); - lexer.str = command; - token = NULL; - ast = NULL; - while (lexer.str[lexer.pos]) - { - if (lexer.stack && *(int*)lexer.stack->content == BACKSLASH) - pop(&lexer.stack); - do { - lexer_lex(&token, &lexer); - } while (lexer.str[lexer.pos] == '\n'); - if (!token) - return (0); -// if (bquotes_expand(&token)) -// return (1); - //token_print(token); - if (ft_parse(&ast, &token)) - return (1); - if (ft_exec(&ast)) - return (1); - } - return (0); -} - -int interactive_shell() +int handle_instruction(int fd) { t_list *token; t_list *ltoken; t_lexer lexer; t_btree *ast; + char *str; lexer_init(&lexer); token = NULL; ast = NULL; do { - char *str = readline(stack_to_prompt(lexer.stack)); + str = readline(fd, stack_to_prompt(lexer.stack)); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); @@ -64,8 +35,6 @@ int interactive_shell() return (1); //token_print(token); } while (get_lexer_stack(lexer)); -// if (bquotes_expand(&token)) -// return (1); if (!token) return (0); ft_add_str_in_history(lexer.str); @@ -78,20 +47,33 @@ int interactive_shell() return (0); } -int main(int ac, char **av) +int get_input_fd() { t_data *data; data = data_singleton(); + if (SH_IS_INTERACTIVE(data->opts)) + return (STDIN); + /* else if (data->opts & SHELL_OPTS_LC) */ + /* { */ + /* } */ + else + { + return (open(shell_get_avdata(), O_RDONLY)); + } +} + +int main(int ac, char **av) +{ + int fd; + setlocale(LC_ALL, ""); shell_init(ac, av); // DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", SH_HAS_JOBC(data->opts)?"ON":"OFF"); - if (SH_IS_INTERACTIVE(data->opts)) + fd = get_input_fd(); + while (handle_instruction(fd)) { - while (1) - interactive_shell(); + ; } - else - non_interactive_shell(shell_get_avdata()); return (0); } From 62a883282309656a34dba40a1e93e1a444c3033d Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 21 Feb 2017 14:36:32 +0100 Subject: [PATCH 076/206] before pull --- 42sh/.gitignore | 1 + 42sh/includes/parser.h | 2 +- 42sh/objs/builtin/is_builtin.d | 10 ++++++++++ 42sh/objs/completion/c_binary.d | 10 ++++++++++ 42sh/objs/completion/c_clear.d | 9 +++++++++ 42sh/objs/completion/c_files.d | 9 +++++++++ 42sh/objs/completion/c_init.d | 9 +++++++++ 42sh/objs/completion/c_matching.d | 10 ++++++++++ 42sh/objs/completion/c_misc.d | 9 +++++++++ 42sh/objs/completion/c_output.d | 10 ++++++++++ 42sh/objs/completion/c_parser.d | 10 ++++++++++ 42sh/objs/completion/c_pathsolver.d | 10 ++++++++++ 42sh/objs/completion/c_printer.d | 10 ++++++++++ 42sh/objs/completion/c_rematch.d | 10 ++++++++++ 42sh/objs/completion/c_sizing.d | 10 ++++++++++ 42sh/objs/completion/c_terminal.d | 10 ++++++++++ 42sh/objs/completion/completion.d | 10 ++++++++++ 42sh/objs/exec/ast_free.d | 10 ++++++++++ 42sh/objs/exec/bad_fd.d | 10 ++++++++++ 42sh/objs/exec/exec_ampersand.d | 10 ++++++++++ 42sh/objs/exec/exec_and_if.d | 10 ++++++++++ 42sh/objs/exec/exec_command.d | 10 ++++++++++ 42sh/objs/exec/exec_default.d | 10 ++++++++++ 42sh/objs/exec/exec_elif.d | 10 ++++++++++ 42sh/objs/exec/exec_else.d | 10 ++++++++++ 42sh/objs/exec/exec_if.d | 10 ++++++++++ 42sh/objs/exec/exec_less.d | 10 ++++++++++ 42sh/objs/exec/exec_or_if.d | 10 ++++++++++ 42sh/objs/exec/exec_pipe.d | 10 ++++++++++ 42sh/objs/exec/exec_redir.d | 10 ++++++++++ 42sh/objs/exec/exec_semi.d | 10 ++++++++++ 42sh/objs/exec/exec_until.d | 10 ++++++++++ 42sh/src/builtin/builtin_cd.c | 2 +- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/eval_sym.c | 2 +- 35 files changed, 301 insertions(+), 4 deletions(-) create mode 100644 42sh/objs/builtin/is_builtin.d create mode 100644 42sh/objs/completion/c_binary.d create mode 100644 42sh/objs/completion/c_clear.d create mode 100644 42sh/objs/completion/c_files.d create mode 100644 42sh/objs/completion/c_init.d create mode 100644 42sh/objs/completion/c_matching.d create mode 100644 42sh/objs/completion/c_misc.d create mode 100644 42sh/objs/completion/c_output.d create mode 100644 42sh/objs/completion/c_parser.d create mode 100644 42sh/objs/completion/c_pathsolver.d create mode 100644 42sh/objs/completion/c_printer.d create mode 100644 42sh/objs/completion/c_rematch.d create mode 100644 42sh/objs/completion/c_sizing.d create mode 100644 42sh/objs/completion/c_terminal.d create mode 100644 42sh/objs/completion/completion.d create mode 100644 42sh/objs/exec/ast_free.d create mode 100644 42sh/objs/exec/bad_fd.d create mode 100644 42sh/objs/exec/exec_ampersand.d create mode 100644 42sh/objs/exec/exec_and_if.d create mode 100644 42sh/objs/exec/exec_command.d create mode 100644 42sh/objs/exec/exec_default.d create mode 100644 42sh/objs/exec/exec_elif.d create mode 100644 42sh/objs/exec/exec_else.d create mode 100644 42sh/objs/exec/exec_if.d create mode 100644 42sh/objs/exec/exec_less.d create mode 100644 42sh/objs/exec/exec_or_if.d create mode 100644 42sh/objs/exec/exec_pipe.d create mode 100644 42sh/objs/exec/exec_redir.d create mode 100644 42sh/objs/exec/exec_semi.d create mode 100644 42sh/objs/exec/exec_until.d diff --git a/42sh/.gitignore b/42sh/.gitignore index 77f4c561..c762ce48 100644 --- a/42sh/.gitignore +++ b/42sh/.gitignore @@ -10,3 +10,4 @@ debug *.swp *.swo *.o +*.swn diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 3cfa52c8..60a99466 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:26:50 by ariard ### ########.fr */ +/* Updated: 2017/02/20 22:26:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d new file mode 100644 index 00000000..40071c79 --- /dev/null +++ b/42sh/objs/builtin/is_builtin.d @@ -0,0 +1,10 @@ +objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_binary.d b/42sh/objs/completion/c_binary.d new file mode 100644 index 00000000..017f6e2a --- /dev/null +++ b/42sh/objs/completion/c_binary.d @@ -0,0 +1,10 @@ +objs/completion/c_binary.o: src/completion/c_binary.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_clear.d b/42sh/objs/completion/c_clear.d new file mode 100644 index 00000000..51457990 --- /dev/null +++ b/42sh/objs/completion/c_clear.d @@ -0,0 +1,9 @@ +objs/completion/c_clear.o: src/completion/c_clear.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_files.d b/42sh/objs/completion/c_files.d new file mode 100644 index 00000000..d611d285 --- /dev/null +++ b/42sh/objs/completion/c_files.d @@ -0,0 +1,9 @@ +objs/completion/c_files.o: src/completion/c_files.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_init.d b/42sh/objs/completion/c_init.d new file mode 100644 index 00000000..42812396 --- /dev/null +++ b/42sh/objs/completion/c_init.d @@ -0,0 +1,9 @@ +objs/completion/c_init.o: src/completion/c_init.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_matching.d b/42sh/objs/completion/c_matching.d new file mode 100644 index 00000000..265147a1 --- /dev/null +++ b/42sh/objs/completion/c_matching.d @@ -0,0 +1,10 @@ +objs/completion/c_matching.o: src/completion/c_matching.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_misc.d b/42sh/objs/completion/c_misc.d new file mode 100644 index 00000000..3dde2e26 --- /dev/null +++ b/42sh/objs/completion/c_misc.d @@ -0,0 +1,9 @@ +objs/completion/c_misc.o: src/completion/c_misc.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_output.d b/42sh/objs/completion/c_output.d new file mode 100644 index 00000000..c58c0475 --- /dev/null +++ b/42sh/objs/completion/c_output.d @@ -0,0 +1,10 @@ +objs/completion/c_output.o: src/completion/c_output.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_parser.d b/42sh/objs/completion/c_parser.d new file mode 100644 index 00000000..20e78c29 --- /dev/null +++ b/42sh/objs/completion/c_parser.d @@ -0,0 +1,10 @@ +objs/completion/c_parser.o: src/completion/c_parser.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_pathsolver.d b/42sh/objs/completion/c_pathsolver.d new file mode 100644 index 00000000..a43db912 --- /dev/null +++ b/42sh/objs/completion/c_pathsolver.d @@ -0,0 +1,10 @@ +objs/completion/c_pathsolver.o: src/completion/c_pathsolver.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_printer.d b/42sh/objs/completion/c_printer.d new file mode 100644 index 00000000..f5c0111d --- /dev/null +++ b/42sh/objs/completion/c_printer.d @@ -0,0 +1,10 @@ +objs/completion/c_printer.o: src/completion/c_printer.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_rematch.d b/42sh/objs/completion/c_rematch.d new file mode 100644 index 00000000..4402b27d --- /dev/null +++ b/42sh/objs/completion/c_rematch.d @@ -0,0 +1,10 @@ +objs/completion/c_rematch.o: src/completion/c_rematch.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_sizing.d b/42sh/objs/completion/c_sizing.d new file mode 100644 index 00000000..6d931b50 --- /dev/null +++ b/42sh/objs/completion/c_sizing.d @@ -0,0 +1,10 @@ +objs/completion/c_sizing.o: src/completion/c_sizing.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_terminal.d b/42sh/objs/completion/c_terminal.d new file mode 100644 index 00000000..e2fc7d30 --- /dev/null +++ b/42sh/objs/completion/c_terminal.d @@ -0,0 +1,10 @@ +objs/completion/c_terminal.o: src/completion/c_terminal.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/completion.d b/42sh/objs/completion/completion.d new file mode 100644 index 00000000..2e7aca1d --- /dev/null +++ b/42sh/objs/completion/completion.d @@ -0,0 +1,10 @@ +objs/completion/completion.o: src/completion/completion.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d new file mode 100644 index 00000000..a938bba4 --- /dev/null +++ b/42sh/objs/exec/ast_free.d @@ -0,0 +1,10 @@ +objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/bad_fd.d b/42sh/objs/exec/bad_fd.d new file mode 100644 index 00000000..10582e42 --- /dev/null +++ b/42sh/objs/exec/bad_fd.d @@ -0,0 +1,10 @@ +objs/exec/bad_fd.o: src/exec/bad_fd.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d new file mode 100644 index 00000000..a099a3a2 --- /dev/null +++ b/42sh/objs/exec/exec_ampersand.d @@ -0,0 +1,10 @@ +objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d new file mode 100644 index 00000000..e94f2cac --- /dev/null +++ b/42sh/objs/exec/exec_and_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d new file mode 100644 index 00000000..d0f0225c --- /dev/null +++ b/42sh/objs/exec/exec_command.d @@ -0,0 +1,10 @@ +objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d new file mode 100644 index 00000000..e2f12d17 --- /dev/null +++ b/42sh/objs/exec/exec_default.d @@ -0,0 +1,10 @@ +objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d new file mode 100644 index 00000000..31a808b1 --- /dev/null +++ b/42sh/objs/exec/exec_elif.d @@ -0,0 +1,10 @@ +objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d new file mode 100644 index 00000000..7fbf18af --- /dev/null +++ b/42sh/objs/exec/exec_else.d @@ -0,0 +1,10 @@ +objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d new file mode 100644 index 00000000..bfc49041 --- /dev/null +++ b/42sh/objs/exec/exec_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_less.d b/42sh/objs/exec/exec_less.d new file mode 100644 index 00000000..80163f71 --- /dev/null +++ b/42sh/objs/exec/exec_less.d @@ -0,0 +1,10 @@ +objs/exec/exec_less.o: src/exec/exec_less.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d new file mode 100644 index 00000000..e47e7589 --- /dev/null +++ b/42sh/objs/exec/exec_or_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d new file mode 100644 index 00000000..f0e75e4a --- /dev/null +++ b/42sh/objs/exec/exec_pipe.d @@ -0,0 +1,10 @@ +objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_redir.d b/42sh/objs/exec/exec_redir.d new file mode 100644 index 00000000..e38c21e1 --- /dev/null +++ b/42sh/objs/exec/exec_redir.d @@ -0,0 +1,10 @@ +objs/exec/exec_redir.o: src/exec/exec_redir.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d new file mode 100644 index 00000000..a4e14789 --- /dev/null +++ b/42sh/objs/exec/exec_semi.d @@ -0,0 +1,10 @@ +objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d new file mode 100644 index 00000000..892f8a85 --- /dev/null +++ b/42sh/objs/exec/exec_until.d @@ -0,0 +1,10 @@ +objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/src/builtin/builtin_cd.c b/42sh/src/builtin/builtin_cd.c index c7924678..b827f88c 100644 --- a/42sh/src/builtin/builtin_cd.c +++ b/42sh/src/builtin/builtin_cd.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:57:53 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:29:26 by ariard ### ########.fr */ +/* Updated: 2017/02/21 11:13:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 1181c1e7..96a82d56 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:50:20 by ariard ### ########.fr */ +/* Updated: 2017/02/21 10:49:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 53ee98e6..0c0d26eb 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/20 19:26:28 by ariard ### ########.fr */ +/* Updated: 2017/02/21 10:49:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 71e8d28263d44fc6d40a0b07168feccb98490886 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 21 Feb 2017 15:25:37 +0100 Subject: [PATCH 077/206] libft change --- 42sh/libft | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/42sh/libft b/42sh/libft index 9aa3049d..bfc8ca20 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 9aa3049dd23424807316a6f027589a95cdf1fcdd +Subproject commit bfc8ca207ab4d39f0140322c0f1d368137304a3c From d05cec496246cb946141c6aa192edcd1cb5492d8 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 21 Feb 2017 16:46:13 +0100 Subject: [PATCH 078/206] include + parser state --- 42sh/Makefile | 24 +--- 42sh/STDEBUG | 37 ++++++ 42sh/includes/parser.h | 43 +++---- 42sh/includes/types.h | 53 +++++---- 42sh/src/lexer/lexer_init.c | 12 ++ 42sh/src/main/main.c | 41 ++++--- 42sh/src/main/shell_get_opts.c | 4 +- 42sh/src/parser/ft_parse.c | 41 ++----- 42sh/src/parser/get_instruction.c | 111 ----------------- 42sh/src/parser/get_sub_instruction.c | 33 ------ 42sh/src/parser/parse_dgreat.c | 35 ------ 42sh/src/parser/parse_dless.c | 35 ------ 42sh/src/parser/parse_do.c | 26 ---- 42sh/src/parser/parse_done.c | 26 ---- 42sh/src/parser/parse_elif.c | 79 ------------ 42sh/src/parser/parse_else.c | 42 ------- 42sh/src/parser/parse_great.c | 35 ------ 42sh/src/parser/parse_greatand.c | 32 ----- 42sh/src/parser/parse_if.c | 79 ------------ 42sh/src/parser/parse_less.c | 35 ------ 42sh/src/parser/parse_lessand.c | 32 ----- 42sh/src/parser/parse_redir.c | 34 ------ 42sh/src/parser/parse_separator.c | 28 ----- 42sh/src/parser/parse_subshell.c | 37 ------ 42sh/src/parser/parse_while.c | 132 --------------------- 42sh/src/parser/parse_word.c | 36 ------ 42sh/src/parser/{parse.c => parser_init.c} | 20 ++-- 27 files changed, 147 insertions(+), 995 deletions(-) create mode 100644 42sh/STDEBUG delete mode 100644 42sh/src/parser/get_instruction.c delete mode 100644 42sh/src/parser/get_sub_instruction.c delete mode 100644 42sh/src/parser/parse_dgreat.c delete mode 100644 42sh/src/parser/parse_dless.c delete mode 100644 42sh/src/parser/parse_do.c delete mode 100644 42sh/src/parser/parse_done.c delete mode 100644 42sh/src/parser/parse_elif.c delete mode 100644 42sh/src/parser/parse_else.c delete mode 100644 42sh/src/parser/parse_great.c delete mode 100644 42sh/src/parser/parse_greatand.c delete mode 100644 42sh/src/parser/parse_if.c delete mode 100644 42sh/src/parser/parse_less.c delete mode 100644 42sh/src/parser/parse_lessand.c delete mode 100644 42sh/src/parser/parse_redir.c delete mode 100644 42sh/src/parser/parse_separator.c delete mode 100644 42sh/src/parser/parse_subshell.c delete mode 100644 42sh/src/parser/parse_while.c delete mode 100644 42sh/src/parser/parse_word.c rename 42sh/src/parser/{parse.c => parser_init.c} (64%) diff --git a/42sh/Makefile b/42sh/Makefile index f7785ee8..64335c15 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/20 20:02:23 by ariard ### ########.fr # +# Updated: 2017/02/21 16:38:00 by ariard ### ########.fr # # # # **************************************************************************** # @@ -235,30 +235,12 @@ parser/build_tree.c\ parser/error_syntax.c\ parser/eval_sym.c\ parser/ft_parse.c\ -parser/get_instruction.c\ -parser/get_sub_instruction.c\ -parser/parse.c\ -parser/parse_dgreat.c\ -parser/parse_dless.c\ -parser/parse_do.c\ -parser/parse_done.c\ -parser/parse_elif.c\ -parser/parse_else.c\ -parser/parse_great.c\ -parser/parse_greatand.c\ -parser/parse_if.c\ -parser/parse_less.c\ -parser/parse_lessand.c\ -parser/parse_redir.c\ -parser/parse_separator.c\ -parser/parse_subshell.c\ -parser/parse_while.c\ -parser/parse_word.c\ parser/pop_stack.c\ parser/produce_sym.c\ parser/push_stack.c\ parser/read_stack.c\ -parser/tree_wrapper.c +parser/tree_wrapper.c\ +parser/parser_init.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/STDEBUG b/42sh/STDEBUG new file mode 100644 index 00000000..e10d17e6 --- /dev/null +++ b/42sh/STDEBUG @@ -0,0 +1,37 @@ + ft_parse.c 42 new sym CMD_NAME + eval_sym.c 637eval head LINEBREAK && sym CMD_NAME + eval_sym.c 637eval head LINEBREAK && sym CMD_SUPERIOR + build_tree.c 60 func TK : 'TK_WORD' TK : 'TK_WORD' + add_cmd.c 21 add cmd + ft_parse.c 42 new sym CMD_SUFFIX + eval_sym.c 637eval head CMD_SUPERIOR && sym CMD_SUFFIX + eval_sym.c 637eval head LINEBREAK && sym SIMPLE_COMMAND + eval_sym.c 637eval head LINEBREAK && sym COMMAND + eval_sym.c 637eval head LINEBREAK && sym PIPE_SEMI_SEQUENCE + build_tree.c 60 func TK : 'TK_WORD' TK : 'TK_WORD' + add_cmd.c 21 add cmd + add_loop.c 23 TEST LOOP + add_cmd.c 21 add cmd + TK_W + +----+ + TK_W + ft_parse.c 42 new sym LINEBREAK + eval_sym.c 637eval head PIPE_SEMI_SEQUENCE && sym LINEBREAK + eval_sym.c 637eval head LINEBREAK && sym PIPE_SEQUENCE + eval_sym.c 637eval head LINEBREAK && sym PIPELINE + eval_sym.c 637eval head LINEBREAK && sym AND_OR + eval_sym.c 637eval head LINEBREAK && sym LIST + eval_sym.c 637eval head LINEBREAK && sym COMPLETE_COMMAND + eval_sym.c 637eval head LINEBREAK && sym COMPLETE_COMMANDS + eval_sym.c 637eval head NULL && sym PROGRAM + TK_W + +----+ + TK_W + ft_parse.c 42 new sym LINEBREAK + eval_sym.c 637eval head PROGRAM && sym LINEBREAK + TK_W + +----+ + TK_W + TK_W + +----+ + TK_W diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 761c3415..f11e925c 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/21 15:20:26 by ariard ### ########.fr */ +/* Updated: 2017/02/21 16:39:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,13 @@ * */ +enum e_parstate +{ + UNDEFINED, + SUCCESS, + ERROR, +}; + enum e_sym { LINEBREAK = 1, @@ -125,11 +132,14 @@ enum e_sym # define TK_REDIR(x) (TK_LESS <= x && x <= TK_GREATAND) -typedef int t_sym; - # define MATCH_STACK(x, y) (x == y || y == ALL) -typedef int t_parstate; +struct s_parser +{ + t_parstate state; + t_sym *stack; + t_sym *new_sym; +}; struct s_aggrematch { @@ -139,8 +149,6 @@ struct s_aggrematch int erase_sym; }; -typedef struct s_aggrematch t_aggrematch; - extern t_aggrematch g_aggrematch[]; struct s_prodmatch @@ -150,8 +158,6 @@ struct s_prodmatch t_sym new_sym; }; -typedef struct s_prodmatch t_prodmatch; - extern t_prodmatch g_prodmatch[]; struct s_stackmatch @@ -160,8 +166,6 @@ struct s_stackmatch t_sym under; }; -typedef struct s_stackmatch t_stackmatch; - extern t_stackmatch g_stackmatch[]; struct s_errormatch @@ -170,13 +174,11 @@ struct s_errormatch char *error; }; -typedef struct s_errormatch t_errormatch; - extern t_errormatch g_errormatch[]; -int ft_parse(t_btree **ast, t_list **token); +void parser_init(t_parser *parser); +int ft_parse(t_btree **ast, t_list **token, t_parser *parser); -int ft_parse(t_btree **ast, t_list **token); int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); int eval_sym(t_sym stack, t_sym new_sym); int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state); @@ -189,9 +191,6 @@ int error_syntax(t_list **token); int ft_read_stack(t_sym *stack); char *read_state(t_sym current); -#define UNDEFINED (1 << 0) -#define ERROR (1 << 1) -#define SUCCESS (1 << 2) /* * Build AST - rewriting @@ -204,8 +203,6 @@ struct s_treematch int (*add)(t_btree **ast, t_list **lst); }; -typedef struct s_treematch t_treematch; - extern t_treematch g_treematch[]; int build_tree(t_btree **ast, t_list **lst); @@ -230,14 +227,6 @@ int gen_node(t_btree **ast); * */ -typedef struct s_parser t_parser; -typedef struct s_ld t_ld; -typedef struct s_astnode t_astnode; -typedef struct s_redir t_redir; -typedef union u_astdata t_astdata; -typedef union u_word t_word; -typedef long long t_type; - union u_word { char *word; diff --git a/42sh/includes/types.h b/42sh/includes/types.h index f2175ab8..f365bd63 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,40 +6,49 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:03:25 by ariard ### ########.fr */ +/* Updated: 2017/02/21 16:15:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef TYPES_H # define TYPES_H -typedef struct s_data t_data; +typedef struct s_data t_data; -typedef long long t_type; -typedef long long t_flag; -typedef struct s_line t_line; -typedef struct s_comp t_comp; -typedef struct s_exec t_exec; -typedef struct s_jobc t_jobc; -typedef enum e_mode t_mode; +typedef long long t_type; +typedef long long t_flag; +typedef struct s_line t_line; +typedef struct s_comp t_comp; +typedef struct s_exec t_exec; +typedef struct s_jobc t_jobc; +typedef enum e_mode t_mode; -typedef struct s_lexer t_lexer; -typedef enum e_lexstate t_lexstate; -typedef struct s_token t_token; +typedef struct s_lexer t_lexer; +typedef enum e_lexstate t_lexstate; +typedef struct s_token t_token; -typedef struct s_parser t_parser; -typedef struct s_ld t_ld; -typedef struct s_astnode t_astnode; -typedef struct s_redir t_redir; -typedef union u_astdata t_astdata; -typedef union u_word t_word; +typedef struct s_ld t_ld; +typedef struct s_astnode t_astnode; +typedef struct s_redir t_redir; +typedef union u_astdata t_astdata; +typedef union u_word t_word; +typedef long long t_type; -typedef struct s_job t_job; -typedef struct s_execmap t_execmap; -typedef struct s_redirmap t_redirmap; -typedef struct s_process t_process; +typedef struct s_job t_job; +typedef struct s_execmap t_execmap; +typedef struct s_redirmap t_redirmap; +typedef struct s_process t_process; typedef int (t_execf)(const char *path, char *const argv[], char *const envp[]); +typedef int t_sym; +typedef struct s_parser t_parser; +typedef enum e_parstate t_parstate; +typedef struct s_aggrematch t_aggrematch; +typedef struct s_prodmatch t_prodmatch; +typedef struct s_stackmatch t_stackmatch; +typedef struct s_errormatch t_errormatch; +typedef struct s_treematch t_treematch; + t_data *data_singleton(); #endif diff --git a/42sh/src/lexer/lexer_init.c b/42sh/src/lexer/lexer_init.c index 230ee3f6..2c4a0c2f 100644 --- a/42sh/src/lexer/lexer_init.c +++ b/42sh/src/lexer/lexer_init.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_init.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/21 16:14:08 by ariard #+# #+# */ +/* Updated: 2017/02/21 16:19:34 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "lexer.h" void lexer_init(t_lexer *lexer) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index cf710d51..b8148e1f 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 14:29:13 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 16:40:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,17 +14,22 @@ int handle_instruction(int fd) { - t_list *token; - t_list *ltoken; - t_lexer lexer; - t_btree *ast; - char *str; + t_list *token; + t_list *ltoken; + t_lexer lexer; + t_parser parser; + t_btree *ast; + char *str; lexer_init(&lexer); + parser_init(&parser); token = NULL; ast = NULL; - do { + while (1) + { str = readline(fd, stack_to_prompt(lexer.stack)); +// if (parser.state == UNDEFINED && !str) +// return ((int)ft_putstr_fd("syntax error near unexpected EOF", 2)); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); @@ -34,17 +39,23 @@ int handle_instruction(int fd) if (lexer_lex(token ? <oken : &token, &lexer)) return (1); //token_print(token); - } while (get_lexer_stack(lexer)); - if (!token) - return (0); - ft_add_str_in_history(lexer.str); - if (ft_parse(&ast, &token)) - return (1); + if (get_lexer_stack(lexer)) + return (1); + if (!token) + return (0); + ft_add_str_in_history(lexer.str); + if (ft_parse(&ast, &token, &parser)) + return (1); + if (parser.state == SUCCESS) + break; + if (parser.state == ERROR) + return (error_syntax(&token)); + } btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); ft_strdel(&lexer.str); - return (0); + return (1); } int get_input_fd() @@ -69,7 +80,7 @@ int main(int ac, char **av) setlocale(LC_ALL, ""); shell_init(ac, av); -// DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", SH_HAS_JOBC(data->opts)?"ON":"OFF"); + // DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", SH_HAS_JOBC(data->opts)?"ON":"OFF"); fd = get_input_fd(); while (handle_instruction(fd)) { diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index c5a08dab..215f2145 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:00:13 by ariard ### ########.fr */ +/* Updated: 2017/02/21 15:37:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,7 @@ void shell_get_opts(int ac, char **av) int i; i = 1; - if (isatty(STDIN)) + if (isatty(STDIN) && !av[1]) data_singleton()->opts |= SH_INTERACTIVE; while (i < ac && av[i][0] == '-') { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index dc8a97c3..a03801f6 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:39:39 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 16:40:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,46 +26,29 @@ static int end_instruction(t_sym sym) return (0); } -int ft_parse(t_btree **ast, t_list **token) +int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { - t_sym *new_sym; - t_sym *stack; - t_parstate state; - - state = UNDEFINED; - new_sym = ft_memalloc(sizeof(t_sym)); - stack = ft_memalloc(sizeof(t_sym) * 1000); - push_stack(stack, LINEBREAK); while (*token) { - produce_sym(*stack, new_sym, token); - DG("new sym %s", read_state(*new_sym)); - if (eval_sym(*stack, *new_sym)) - state = ERROR; + produce_sym(*parser->stack, parser->new_sym, token); + DG("new sym %s", read_state(*parser->new_sym)); + if (eval_sym(*parser->stack, *parser->new_sym)) + parser->state = ERROR; else { - aggregate_sym(&stack, new_sym, &state); - push_stack(++stack, *new_sym); + aggregate_sym(&parser->stack, parser->new_sym, &parser->state); + push_stack(++parser->stack, *parser->new_sym); } ft_putstr("\n"); - ft_read_stack(stack); - if (*stack == PROGRAM) - state = SUCCESS; - if (state == ERROR) - return (error_syntax(token)); - if (state == SUCCESS) - ft_putstr("success"); + if (*parser->stack == PROGRAM) + parser->state = SUCCESS; build_tree(ast, token); btree_print(STDBUG, *ast, &ft_putast); - if ((end_instruction(*stack) && !(*token)->next) || *stack == PROGRAM) + if ((end_instruction(*parser->stack) && !(*token)->next) + || *parser->stack == PROGRAM) insert_linebreak(token); else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } - if (state == UNDEFINED) - { - ft_putstr("syntax error: unexpected end of file\n"); - return (0); - } return (0); } diff --git a/42sh/src/parser/get_instruction.c b/42sh/src/parser/get_instruction.c deleted file mode 100644 index 09910fd3..00000000 --- a/42sh/src/parser/get_instruction.c +++ /dev/null @@ -1,111 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_instruction.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:30:13 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -static int get_simple_instruction(t_list **start, t_list **lst) -{ - t_list *temp; - - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - (*lst) = temp; - return (0); -} - -static int get_loop_instruction(t_list **start, t_list **lst) -{ - t_list *temp; - t_token *token; - int nest; - - nest = 0; - while (((*lst) = (*lst)->next)) - { - token = (*lst)->content; - if (token->type & TK_DO) - nest++; - else if (token->type & TK_DONE) - nest--; - if (nest == 0 && token->type & TK_DONE) - break; - } - while (((*lst) = (*lst)->next)) - { - token = (*lst)->content; - if (token->type & (TK_NEWLINE | TK_SEMI)) - break; - } - if ((*lst)) - { - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - *lst = temp; - } - return (0); -} - -static int get_condition_instruction(t_list **start, t_list **lst) -{ - t_list *temp; - t_token *token; - int nest; - - nest = 0; - while (*lst) - { - token = (*lst)->content; - if (token->type & TK_IF) - nest++; - else if (token->type & TK_FI) - nest--; - if (nest == 0 && token->type & TK_FI) - break; - *lst = (*lst)->next; - } - while (((*lst) = (*lst)->next)) - { - token = (*lst)->content; - if (token->type & (TK_NEWLINE | TK_SEMI)) - break; - } - if ((*lst)) - { - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - *lst = temp; - } - return (0); -} - -int get_instruction(t_list **lst) -{ - t_token *token; - t_list *start; - - start = *lst; - while ((*lst)) - { - token = (*lst)->content; - if (token->type & TK_NEWLINE) - return (get_simple_instruction(&start, lst)); - else if (token->type & (TK_WHILE | TK_UNTIL)) - return (get_loop_instruction(&start, lst)); - else if (token->type & TK_IF) - return (get_condition_instruction(&start, lst)); - (*lst) = (*lst)->next; - } - return (0); -} diff --git a/42sh/src/parser/get_sub_instruction.c b/42sh/src/parser/get_sub_instruction.c deleted file mode 100644 index c5935ce3..00000000 --- a/42sh/src/parser/get_sub_instruction.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_instruction2.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/05 22:05:26 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:37:24 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *token; - - token = (*lst)->content; - if (token->type & TK_NEWLINE) - return (parse_separator(ast, start, lst)); - else if (token->type & (TK_WHILE | TK_UNTIL)) - return (parse_while(ast, start, lst)); - else if (token->type & TK_IF) - return (parse_if(ast, start, lst)); - else if (token->type & TK_ELIF) - return (parse_elif(ast, start, lst)); - else if (token->type & TK_ELSE) - return (parse_else(ast, start, lst)); - else if (token->type & TK_SEMI) - return (parse_separator(ast, start, lst)); - return (0); -} diff --git a/42sh/src/parser/parse_dgreat.c b/42sh/src/parser/parse_dgreat.c deleted file mode 100644 index d1f19571..00000000 --- a/42sh/src/parser/parse_dgreat.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_dgreat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:01 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_dgreat(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *tok; - t_token *next_tok; - - node = (*ast)->item; - node->type = TK_DGREAT; - if (!(*lst)->next) - return (1); - tok = (*lst)->content; - next_tok = (*lst)->next->content; - if (!(next_tok->type & TK_WORD)) - return (1); - node->data.redir.n = ft_atoi(tok->data); - node->data.redir.word.word = ft_strdup(next_tok->data); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_dless.c b/42sh/src/parser/parse_dless.c deleted file mode 100644 index 77c671e9..00000000 --- a/42sh/src/parser/parse_dless.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_dless.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/03 13:31:40 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:10 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_dless(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *tok; - t_token *next_tok; - - node = (*ast)->item; - node->type = TK_DLESS; - if (!(*lst)->next) - return (1); - tok = (*lst)->content; - next_tok = (*lst)->next->content; - if (next_tok->type != TK_WORD) - return (1); - node->data.redir.word.word = ft_strdup(tok->data); - node->data.redir.n = 0; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_do.c b/42sh/src/parser/parse_do.c deleted file mode 100644 index 1c0051c1..00000000 --- a/42sh/src/parser/parse_do.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_do.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 16:28:41 by ariard #+# #+# */ -/* Updated: 2017/02/15 19:08:49 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_do(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *token; - - token = (*lst)->content; - node = (*ast)->item; - node->type = TK_DO; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(ast, start); - return (0); -} diff --git a/42sh/src/parser/parse_done.c b/42sh/src/parser/parse_done.c deleted file mode 100644 index 93301b12..00000000 --- a/42sh/src/parser/parse_done.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_done.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 16:36:28 by ariard #+# #+# */ -/* Updated: 2017/02/03 16:47:12 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_done(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *token; - - token = (*lst)->content; - node = (*ast)->item; - node->type = TK_DONE; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(ast, start); - return (0); -} diff --git a/42sh/src/parser/parse_elif.c b/42sh/src/parser/parse_elif.c deleted file mode 100644 index 4867a3b9..00000000 --- a/42sh/src/parser/parse_elif.c +++ /dev/null @@ -1,79 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_elif.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 14:50:54 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:22:58 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static int parse_after_elif(t_btree **ast, t_list **lst) -{ - t_list *temp; - t_list *prev_prev; - t_list *prev; - t_token *token; - int nest; - - temp = (*lst); - nest = 0; - while ((temp = temp->next)) - { - token = temp->content; - if (nest == 0 && (token->type & (TK_ELIF | TK_ELSE))) - break; - else if (token->type & TK_IF) - nest++; - else if (token->type & TK_FI) - nest--; - prev_prev = prev; - prev = temp; - } - prev_prev->next = NULL; - if (prev) - ft_parse(ast, &prev); - return (0); -} - -static int parse_loop(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *token; - t_list *temp; - int nest; - - nest = 0; - while ((*lst)) - { - token = (*lst)->content; - if (token->type & TK_THEN) - nest++; - else if (token->type & (TK_ELIF | TK_ELSE)) - nest--; - if (nest == 1 && (token->type & TK_THEN)) - break; - *lst = (*lst)->next; - } - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - delete_newline(start, &temp); - ft_parse(&(*ast)->right, &temp); - ft_parse(&(*ast)->left, start); - return (0); -} - -int parse_elif(t_btree **ast, t_list **start, t_list **lst) -{ - t_btree *new_ast; - - parse_after_elif(ast, lst); - parse_head(ast, &new_ast, start, lst); - *start = *lst; - parse_loop(&new_ast, start, lst); - return (0); -} diff --git a/42sh/src/parser/parse_else.c b/42sh/src/parser/parse_else.c deleted file mode 100644 index b343eb9b..00000000 --- a/42sh/src/parser/parse_else.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_elif.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 14:50:54 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:22:56 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -static int parse_after_else(t_btree **ast, t_list **lst) -{ - t_list *temp; - - temp = (*lst); - while ((temp = temp->next)); - if (temp) - ft_parse(ast, &temp); - return (0); -} - -static int parse_loop(t_btree **ast, t_list **start, t_list **lst) -{ - delete_newline(start, lst); - ft_parse(&(*ast)->right, lst); - return (0); -} - -int parse_else(t_btree **ast, t_list **start, t_list **lst) -{ - t_btree *new_ast; - - parse_after_else(ast, lst); - parse_head(ast, &new_ast, start, lst); - *start = *lst; - parse_loop(&new_ast, start, lst); - return (0); -} diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c deleted file mode 100644 index d4a77383..00000000 --- a/42sh/src/parser/parse_great.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_great.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:17 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_great(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *tok; - t_token *next_tok; - - node = (*ast)->item; - node->type = TK_GREAT; - if (!(*lst)->next) - return (1); - tok = (*lst)->content; - next_tok = (*lst)->next->content; - if (!(next_tok->type & TK_WORD)) - return (1); - node->data.redir.n = *tok->data == '>' ? 1 : ft_atoi(tok->data); - node->data.redir.word.word = ft_strdup(next_tok->data); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_greatand.c b/42sh/src/parser/parse_greatand.c deleted file mode 100644 index eb93503d..00000000 --- a/42sh/src/parser/parse_greatand.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_greatand.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:27 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_greatand(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *tok; - char *and; - - node = (*ast)->item; - node->type = TK_GREATAND; - tok = (*lst)->content; - and = ft_strchr(tok->data, '&'); - node->data.redir.n = *tok->data == '>' ? 1 : ft_atoi(tok->data); - node->data.redir.word.fd = ft_atoi(and + 1); - node->data.redir.close = - tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_if.c b/42sh/src/parser/parse_if.c deleted file mode 100644 index f1e13014..00000000 --- a/42sh/src/parser/parse_if.c +++ /dev/null @@ -1,79 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_if.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/05 23:15:23 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:20:47 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -static int parse_after_condition(t_btree **ast, t_list **start, t_list **lst) -{ - t_list *temp; - t_list *del; - t_token *token; - int nest; - - temp = (*lst); - nest = 0; - while (temp) - { - token = temp->content; - if (token->type & TK_IF) - nest++; - else if (token->type & TK_FI) - nest--; - if (nest == 0 && (token->type & TK_FI)) - break; - temp = temp->next; - } - del = temp; - temp = temp->next; - del->next = NULL; - ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); - if (temp) - ft_parse(ast, &temp); - return (0); -} - -static int parse_head_condition(t_btree **ast, - t_btree **new_ast, t_list **start, t_list **lst) -{ - t_btree *father; - t_token *token; - t_astnode *node; - t_astnode item; - - father = *ast; - while (father->left) - father = father->left; - *new_ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*new_ast)->item)->data.token = NULL; - node = (*ast)->item; - if (node->type > 0) - father->left = *new_ast; - else - *new_ast = *ast; - - token = (*lst)->content; - node = (*new_ast)->item; - node->type = token->type; - token->type = TK_ELIF; - ft_parse(&(*new_ast)->right, start); - return (0); -} - - -int parse_if(t_btree **ast, t_list **start, t_list **lst) -{ - t_btree *new_ast; - - parse_after_condition(ast, start, lst); - parse_head_condition(ast, &new_ast, start, lst); - return (0); -} diff --git a/42sh/src/parser/parse_less.c b/42sh/src/parser/parse_less.c deleted file mode 100644 index ea34770c..00000000 --- a/42sh/src/parser/parse_less.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_less.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:38 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_less(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *tok; - t_token *next_tok; - - node = (*ast)->item; - node->type = TK_LESS; - if (!(*lst)->next) - return (1); - tok = (*lst)->content; - next_tok = (*lst)->next->content; - if (!(next_tok->type & TK_WORD)) - return (1); - node->data.redir.n = *tok->data == '>' ? 0 : ft_atoi(tok->data); - node->data.redir.word.word = ft_strdup(next_tok->data); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_lessand.c b/42sh/src/parser/parse_lessand.c deleted file mode 100644 index 636421ba..00000000 --- a/42sh/src/parser/parse_lessand.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_lessand.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:46 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_lessand(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *tok; - char *and; - - node = (*ast)->item; - node->type = TK_LESSAND; - tok = (*lst)->content; - and = ft_strchr(tok->data, '&'); - node->data.redir.n = *tok->data == '<' ? 0 : ft_atoi(tok->data); - node->data.redir.word.fd = ft_atoi(and + 1); - node->data.redir.close = - tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_redir.c b/42sh/src/parser/parse_redir.c deleted file mode 100644 index 4d209f62..00000000 --- a/42sh/src/parser/parse_redir.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_redir.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/02 18:58:27 by jhalford #+# #+# */ -/* Updated: 2017/02/06 16:07:08 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_redir(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *tok; - - tok = (*lst)->content; - if (tok->type == TK_LESS) - return (parse_less(ast, start, lst)); - else if (tok->type == TK_GREAT) - return (parse_great(ast, start, lst)); - else if (tok->type == TK_DLESS) - return (parse_dless(ast, start, lst)); - else if (tok->type == TK_DGREAT) - return (parse_dgreat(ast, start, lst)); - else if (tok->type == TK_LESSAND) - return (parse_lessand(ast, start, lst)); - else if (tok->type == TK_GREATAND) - return (parse_greatand(ast, start, lst)); - else - return (-42); -} diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c deleted file mode 100644 index ca1e0387..00000000 --- a/42sh/src/parser/parse_separator.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_separator.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/02/15 19:34:57 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_separator(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *token; - t_astnode *node; - - token = (*lst)->content; - node = (*ast)->item; - node->type = token->type; - ft_parse(&(*ast)->right, &(*lst)->next); - (*lst)->next = NULL; - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(&(*ast)->left, start); - return (0); -} diff --git a/42sh/src/parser/parse_subshell.c b/42sh/src/parser/parse_subshell.c deleted file mode 100644 index 2177a919..00000000 --- a/42sh/src/parser/parse_subshell.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_subshell.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/11 16:52:44 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:02:58 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_subshell(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *token; - - (void)start; - token = (*lst)->content; - if ((*lst)->next && ((t_token*)(*lst)->next->content)->type & TK_WORD) - { - ft_dprintf(2, "{red}%s: parse error near ')'{eoc}\n", SHELL_NAME); - return (-1); - } - node = (*ast)->item; - node->type = TK_SUBSHELL; - node->data.sstr = malloc(4 * sizeof(char *)); - node->data.sstr[0] = ft_strdup(data_singleton()->argv[0]); - node->data.sstr[1] = ft_strdup("-c"); - node->data.sstr[2] = ft_strdup(token->data); - node->data.sstr[3] = NULL; - ft_parse(ast, &(*lst)->next); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - return (0); -} diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c deleted file mode 100644 index 6206e152..00000000 --- a/42sh/src/parser/parse_while.c +++ /dev/null @@ -1,132 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_while.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* UpdatGed: 2017/02/05 18:28:11 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int delete_newline(t_list **start, t_list **lst) -{ - t_token *token; - t_list *del; - - while ((*lst)) - { - token = (*lst)->content; - del = *lst; - if (token->type & TK_NEWLINE) - ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); - else - break; - *lst = (*lst)->next; - } - return (0); -} - -static int parse_after_loop(t_btree **ast, t_list **start, t_list **lst) -{ - t_list *temp; - t_list *del; - t_token *token; - int nest; - - temp = (*lst); - nest = 0; - while ((temp = temp->next)) - { - token = temp->content; - if (token->type & TK_DO) - nest++; - else if (token->type & TK_DONE) - nest--; - if (nest == 0 && (token->type & TK_DONE)) - break; - } - del = temp; - temp = temp->next; - del->next = NULL; - ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); - if (temp) - ft_parse(ast, &temp); - return (0); -} - -int parse_head(t_btree **ast, - t_btree **new_ast, t_list **start, t_list **lst) -{ - t_btree *father; - t_token *token; - t_list *del; - t_astnode *node; - t_astnode item; - - father = *ast; - while (father->left) - father = father->left; - *new_ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*new_ast)->item)->data.token = NULL; - node = (*ast)->item; - if (node->type > 0) - father->left = *new_ast; - else - *new_ast = *ast; - token = (*lst)->content; - node = (*new_ast)->item; - node->type = token->type; - del = (*lst); - *lst = (*lst)->next; - ft_lst_delif(start, del->content, &ft_addrcmp, &token_free); - delete_newline(start, lst); - return (0); -} - -static int parse_loop(t_btree **ast, t_list **start, t_list **lst) -{ - t_token *token; - t_list *temp; - t_list *new_start; - int nest; - - nest = 0; - while ((*lst)->next) - *lst = (*lst)->next; - new_start = *start; - ft_lst_reverse(start); - temp = *lst; - while ((*lst)) - { - token = (*lst)->content; - if (token->type & TK_DO) - nest++; - else if (token->type & TK_DONE) - nest--; - if (nest == 1 && (token->type & TK_DO)) - break; - *lst = (*lst)->next; - } - ft_lst_reverse(&temp); - temp = (*lst)->next; - (*lst)->next = NULL; - ft_lst_delif(&new_start, (*lst)->content, &ft_addrcmp, &token_free); - delete_newline(start, &temp); - ft_parse(&(*ast)->right, &temp); - ft_parse(&(*ast)->left, &new_start); - return (0); -} - -int parse_while(t_btree **ast, t_list **start, t_list **lst) -{ - t_btree *new_ast; - - parse_after_loop(ast, start, lst); - parse_head(ast, &new_ast, start, lst); - parse_loop(&new_ast, start, lst); - return (0); -} diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c deleted file mode 100644 index 95a79202..00000000 --- a/42sh/src/parser/parse_word.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse_word.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:03:20 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int parse_word(t_btree **ast, t_list **start, t_list **lst) -{ - t_astnode *node; - t_token *token; - char **the_tab; - - token = (*lst)->content; - node = (*ast)->item; - node->type = TK_COMMAND; - if ((the_tab = (char **)malloc(sizeof(char *) * 4))) - { - the_tab[0] = ft_strdup(token->data); - the_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); - the_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); - the_tab[3] = NULL; - } - ft_ld_pushback(&node->data.token, the_tab); - ft_parse(ast, &(*lst)->next); - ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - DG("parse word end"); - return (0); -} diff --git a/42sh/src/parser/parse.c b/42sh/src/parser/parser_init.c similarity index 64% rename from 42sh/src/parser/parse.c rename to 42sh/src/parser/parser_init.c index f21dacab..2869bea3 100644 --- a/42sh/src/parser/parse.c +++ b/42sh/src/parser/parser_init.c @@ -1,25 +1,21 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* parse.c :+: :+: :+: */ +/* parser_init.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/04 16:52:51 by ariard #+# #+# */ -/* Updated: 2017/02/14 17:48:58 by ariard ### ########.fr */ +/* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ +/* Updated: 2017/02/21 16:38:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse(t_btree **ast, t_list **token) +void parser_init(t_parser *parser) { - t_list *start; - - start = *token; -// if (get_instruction(token)) -// return (1); - if (ft_parse(ast, &start)) - return (1); - return (0); + parser->state = UNDEFINED; + parser->new_sym = ft_memalloc(sizeof(t_sym)); + parser->stack = ft_memalloc(sizeof(t_sym) * 1000); + push_stack(parser->stack, LINEBREAK); } From 07c2101df4c65cd6117cb7688ba6c74deca9f2b5 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 21 Feb 2017 18:15:21 +0100 Subject: [PATCH 079/206] EOF error add --- 42sh/STDEBUG | 34 +++++++++------------------------- 42sh/includes/parser.h | 3 ++- 42sh/src/exec/ft_exec.c | 4 ++-- 42sh/src/main/main.c | 6 +++--- 42sh/src/parser/error_syntax.c | 8 +++++++- 5 files changed, 23 insertions(+), 32 deletions(-) diff --git a/42sh/STDEBUG b/42sh/STDEBUG index e10d17e6..4f628983 100644 --- a/42sh/STDEBUG +++ b/42sh/STDEBUG @@ -1,22 +1,14 @@ - ft_parse.c 42 new sym CMD_NAME + shell_init.c 28 interactive shell settings + ft_parse.c 34 new sym CMD_NAME  eval_sym.c 637eval head LINEBREAK && sym CMD_NAME  eval_sym.c 637eval head LINEBREAK && sym CMD_SUPERIOR  build_tree.c 60 func TK : 'TK_WORD' TK : 'TK_WORD'  add_cmd.c 21 add cmd - ft_parse.c 42 new sym CMD_SUFFIX - eval_sym.c 637eval head CMD_SUPERIOR && sym CMD_SUFFIX - eval_sym.c 637eval head LINEBREAK && sym SIMPLE_COMMAND - eval_sym.c 637eval head LINEBREAK && sym COMMAND - eval_sym.c 637eval head LINEBREAK && sym PIPE_SEMI_SEQUENCE - build_tree.c 60 func TK : 'TK_WORD' TK : 'TK_WORD' - add_cmd.c 21 add cmd - add_loop.c 23 TEST LOOP - add_cmd.c 21 add cmd - TK_W - +----+ - TK_W - ft_parse.c 42 new sym LINEBREAK - eval_sym.c 637eval head PIPE_SEMI_SEQUENCE && sym LINEBREAK + ft_parse.c 34 new sym LINEBREAK + eval_sym.c 637eval head CMD_SUPERIOR && sym LINEBREAK + eval_sym.c 637eval head CMD_SUPERIOR && sym SEPARATOR_OP + eval_sym.c 637eval head CMD_SUPERIOR && sym SEPARATOR + eval_sym.c 637eval head LINEBREAK && sym END_COMMAND  eval_sym.c 637eval head LINEBREAK && sym PIPE_SEQUENCE  eval_sym.c 637eval head LINEBREAK && sym PIPELINE  eval_sym.c 637eval head LINEBREAK && sym AND_OR @@ -24,14 +16,6 @@  eval_sym.c 637eval head LINEBREAK && sym COMPLETE_COMMAND  eval_sym.c 637eval head LINEBREAK && sym COMPLETE_COMMANDS  eval_sym.c 637eval head NULL && sym PROGRAM - TK_W - +----+ - TK_W - ft_parse.c 42 new sym LINEBREAK + ft_parse.c 34 new sym LINEBREAK  eval_sym.c 637eval head PROGRAM && sym LINEBREAK - TK_W - +----+ - TK_W - TK_W - +----+ - TK_W + ft_exec.c 53 match : TK_WORD and TK_WORD diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index f11e925c..e87b47b1 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/21 16:39:07 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:13:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -187,6 +187,7 @@ int push_stack(t_sym *stack, t_sym new_sym); int pop_stack(t_sym **stack, t_sym erase_sym); int error_syntax(t_list **token); +int error_EOF(void); int ft_read_stack(t_sym *stack); char *read_state(t_sym current); diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index a2d83114..9a4888c1 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:01:33 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 18:11:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,7 @@ t_execmap g_execmap[] = {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, {TK_SUBSHELL, &exec_command}, - {TK_COMMAND, &exec_command}, + {TK_WORD, &exec_command}, {0, 0}, }; diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index b8148e1f..ee5d90b3 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 16:40:17 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:13:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,8 +28,8 @@ int handle_instruction(int fd) while (1) { str = readline(fd, stack_to_prompt(lexer.stack)); -// if (parser.state == UNDEFINED && !str) -// return ((int)ft_putstr_fd("syntax error near unexpected EOF", 2)); + if (parser.state == UNDEFINED && !str) + return (error_EOF()); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index e08921c7..7bee58f9 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/19 17:06:08 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:13:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,3 +70,9 @@ int error_syntax(t_list **lst) ft_putstr_fd("grammar error, notify ariard", 2); return (1); } + +int error_EOF(void) +{ + ft_putstr_fd("syntax error near unexpected EOF", 2); + return (1); +} From 7856564ecb358b8019523c6147c6810e1bbaa95e Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 21 Feb 2017 18:34:31 +0100 Subject: [PATCH 080/206] main clean --- 42sh/.gitignore | 2 ++ 42sh/STDEBUG | 21 --------------------- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/main/main.c | 15 ++++++--------- 4 files changed, 9 insertions(+), 31 deletions(-) delete mode 100644 42sh/STDEBUG diff --git a/42sh/.gitignore b/42sh/.gitignore index c762ce48..cfd0396b 100644 --- a/42sh/.gitignore +++ b/42sh/.gitignore @@ -11,3 +11,5 @@ debug *.swo *.o *.swn +STDBUG +STDEBUG diff --git a/42sh/STDEBUG b/42sh/STDEBUG deleted file mode 100644 index 4f628983..00000000 --- a/42sh/STDEBUG +++ /dev/null @@ -1,21 +0,0 @@ - shell_init.c 28 interactive shell settings - ft_parse.c 34 new sym CMD_NAME - eval_sym.c 637eval head LINEBREAK && sym CMD_NAME - eval_sym.c 637eval head LINEBREAK && sym CMD_SUPERIOR - build_tree.c 60 func TK : 'TK_WORD' TK : 'TK_WORD' - add_cmd.c 21 add cmd - ft_parse.c 34 new sym LINEBREAK - eval_sym.c 637eval head CMD_SUPERIOR && sym LINEBREAK - eval_sym.c 637eval head CMD_SUPERIOR && sym SEPARATOR_OP - eval_sym.c 637eval head CMD_SUPERIOR && sym SEPARATOR - eval_sym.c 637eval head LINEBREAK && sym END_COMMAND - eval_sym.c 637eval head LINEBREAK && sym PIPE_SEQUENCE - eval_sym.c 637eval head LINEBREAK && sym PIPELINE - eval_sym.c 637eval head LINEBREAK && sym AND_OR - eval_sym.c 637eval head LINEBREAK && sym LIST - eval_sym.c 637eval head LINEBREAK && sym COMPLETE_COMMAND - eval_sym.c 637eval head LINEBREAK && sym COMPLETE_COMMANDS - eval_sym.c 637eval head NULL && sym PROGRAM - ft_parse.c 34 new sym LINEBREAK - eval_sym.c 637eval head PROGRAM && sym LINEBREAK - ft_exec.c 53 match : TK_WORD and TK_WORD diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 9a4888c1..d2916952 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:11:01 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:15:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index ee5d90b3..785ed302 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:13:49 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:33:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,12 +40,9 @@ int handle_instruction(int fd) return (1); //token_print(token); if (get_lexer_stack(lexer)) - return (1); - if (!token) - return (0); - ft_add_str_in_history(lexer.str); + continue; if (ft_parse(&ast, &token, &parser)) - return (1); + continue; if (parser.state == SUCCESS) break; if (parser.state == ERROR) @@ -54,7 +51,7 @@ int handle_instruction(int fd) btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); - ft_strdel(&lexer.str); + ft_add_str_in_history(lexer.str); return (1); } @@ -69,9 +66,7 @@ int get_input_fd() /* { */ /* } */ else - { return (open(shell_get_avdata(), O_RDONLY)); - } } int main(int ac, char **av) @@ -84,6 +79,8 @@ int main(int ac, char **av) fd = get_input_fd(); while (handle_instruction(fd)) { +// lexer_clean; +// parser_clean; ; } return (0); From ec79b05131143e1c2c2a5dc070ee5c5cf2085b2c Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 21 Feb 2017 20:21:52 +0100 Subject: [PATCH 081/206] new instruction handler looks good --- 42sh/Makefile | 6 +-- 42sh/includes/ft_readline.h | 4 +- 42sh/includes/minishell.h | 2 +- 42sh/includes/parser.h | 2 +- 42sh/src/exec/exec_redir.c | 2 +- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/job-control/builtin_fg.c | 2 +- 42sh/src/lexer/stack_to_prompt.c | 38 ------------------- 42sh/src/line-editing/readline.c | 25 ++++++------- 42sh/src/main/ft_putast.c | 6 +-- 42sh/src/main/ft_putast2.c | 59 ------------------------------ 42sh/src/main/main.c | 61 ++++++++++++++++++++++--------- 42sh/src/main/shell_exit.c | 12 ++++-- 42sh/src/main/shell_init.c | 4 +- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/ft_parse.c | 14 ++++--- 42sh/src/parser/parser_init.c | 4 +- 17 files changed, 86 insertions(+), 159 deletions(-) delete mode 100644 42sh/src/lexer/stack_to_prompt.c delete mode 100644 42sh/src/main/ft_putast2.c diff --git a/42sh/Makefile b/42sh/Makefile index 64335c15..e647c32f 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -191,7 +191,6 @@ lexer/lexer_paren.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ lexer/lexer_word.c\ -lexer/stack_to_prompt.c\ lexer/token_append.c\ lexer/token_cmp_type.c\ lexer/token_free.c\ @@ -219,7 +218,6 @@ main/data_exit.c\ main/data_init.c\ main/data_singleton.c\ main/ft_putast.c\ -main/ft_putast2.c\ main/main.c\ main/shell_exit.c\ main/shell_get_avdata.c\ @@ -235,12 +233,12 @@ parser/build_tree.c\ parser/error_syntax.c\ parser/eval_sym.c\ parser/ft_parse.c\ +parser/parser_init.c\ parser/pop_stack.c\ parser/produce_sym.c\ parser/push_stack.c\ parser/read_stack.c\ -parser/tree_wrapper.c\ -parser/parser_init.c +parser/tree_wrapper.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) diff --git a/42sh/includes/ft_readline.h b/42sh/includes/ft_readline.h index 9c6f2810..92c78218 100644 --- a/42sh/includes/ft_readline.h +++ b/42sh/includes/ft_readline.h @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */ -/* Updated: 2017/02/21 14:27:57 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 19:51:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -178,7 +178,7 @@ void ft_c(void); void ft_x(void); void ft_v(void); void ft_read_it(int input, size_t *pos, char **str); -char *readline(int fd, char *prompt); +int readline(int fd, int prompt, char **input); int ft_completion(int ret); struct termios *ft_save_termios(int save); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 1b77b4c1..23c31ae2 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/21 14:28:48 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 18:51:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index e87b47b1..3cc848c9 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:13:10 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:13:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_redir.c b/42sh/src/exec/exec_redir.c index 6be7340c..c5816600 100644 --- a/42sh/src/exec/exec_redir.c +++ b/42sh/src/exec/exec_redir.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:51 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:00:03 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:14:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 204a76bb..098c44c4 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:03:48 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:09:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/builtin_fg.c b/42sh/src/job-control/builtin_fg.c index 373ba8a9..50d9cb69 100644 --- a/42sh/src/job-control/builtin_fg.c +++ b/42sh/src/job-control/builtin_fg.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/08 14:30:07 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:05:31 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:09:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/stack_to_prompt.c b/42sh/src/lexer/stack_to_prompt.c deleted file mode 100644 index 77defb31..00000000 --- a/42sh/src/lexer/stack_to_prompt.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* stack_to_prompt.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/09 21:25:26 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:13:54 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -char *stack_to_prompt(t_list *stack) -{ - t_flag top; - - if (!stack) - return (NULL); - top = *(int*)stack->content; - if (top == BACKSLASH) - return ("> "); - else if (top == QUOTE) - return ("quote> "); - else if (top == DQUOTE) - return ("dquote> "); - else if (top == BQUOTE) - return ("bquote> "); - else if (top == DQUOTE_BQUOTE) - return ("dquote bquote> "); - else if (top == PAREN) - return ("subsh> "); - else if (top == DLESS) - return ("heredoc> "); - else - return ("error> "); -} diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index a90789c9..383a4001 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/02/21 14:20:16 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:04:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -76,7 +76,7 @@ void ft_init_termios(void) tcsetattr(0, TCSANOW, &term); } -void readline_init(char *prompt) +void readline_init(int prompt) { static int beg = 0; @@ -92,24 +92,23 @@ void readline_init(char *prompt) ft_strdel(&STR); data_singleton()->line.list_cur = data_singleton()->line.list_beg; POS = 0; - prompt ? ft_putstr(prompt) : ft_prompt(); + prompt ? ft_putstr("> ") : ft_prompt(); } -char *readline(int fd, char *prompt) +int readline(int fd, int prompt, char **input) { - char *input; - - if (fd != STDIN) + if (!SH_IS_INTERACTIVE(data_singleton()->opts)) { - get_next_line(fd, &input); - return (input); + if (get_next_line(fd, input) == 0) + return (1); + return (0); } readline_init(prompt); - input = ft_read_stdin(); + *input = ft_read_stdin(); ft_putchar('\n'); if (!prompt) - input = ft_history_parsing(); + *input = ft_history_parsing(); if (tcsetattr(0, TCSANOW, ft_save_termios(0)) == -1) - return (NULL); - return (input); + return (-1); + return (0); } diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index cd109ab4..43f53e0a 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:19:40 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 19:20:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,10 +15,6 @@ char *ft_putast(void *nodein) { t_astnode *node; - struct s_tmp{ - char str[5]; - t_type type; - }; node = nodein; if (node->type == TK_THEN) return ("THEN"); diff --git a/42sh/src/main/ft_putast2.c b/42sh/src/main/ft_putast2.c deleted file mode 100644 index d1bcb89b..00000000 --- a/42sh/src/main/ft_putast2.c +++ /dev/null @@ -1,59 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* tree_type.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:08:42 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void ft_putast2(void *nodein) -{ - t_astnode *node; - - node = nodein; - if (node->type == TK_SEMI) - ft_putendl_fd("SEMI", 2); - else if (node->type == TK_PIPE) - ft_putendl_fd("PIPE", 2); - else if (node->type == TK_COMMAND) - { - ft_putstr_fd("COMMAND: ", 2); - ft_sstrprint_fd(2, node->data.sstr, ','); - ft_putchar_fd('\n', 2); - } - else if (TK_REDIR(node->type)) - { - ft_putnbr_fd(node->data.redir.n, 2); - if (node->type == TK_GREATAND || node->type == TK_LESSAND) - { - if (node->type == TK_GREATAND) - ft_putstr_fd(">&:", 2); - else - ft_putstr_fd("<&:", 2); - ft_putnbr_fd(node->data.redir.word.fd, 2); - if (node->data.redir.close) - ft_putstr_fd(" (closed)", 2); - } - else - { - if (node->type == TK_GREAT) - ft_putendl_fd(">:", 2); - else if (node->type == TK_LESS) - ft_putstr_fd("<:", 2); - else if (node->type == TK_DGREAT) - ft_putstr_fd(">>:", 2); - else if (node->type == TK_DLESS) - ft_putstr_fd("<<:", 2); - ft_putstr_fd(node->data.redir.word.word, 2); - } - ft_putchar_fd('\n', 2); - } - else - ft_putendl_fd("OTHER", 2); -} diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 785ed302..6619b322 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:33:24 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:07:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,16 +20,24 @@ int handle_instruction(int fd) t_parser parser; t_btree *ast; char *str; + int ret; lexer_init(&lexer); parser_init(&parser); token = NULL; ast = NULL; + /* str = NULL; */ + DG("START: state=%i", parser.state); while (1) { - str = readline(fd, stack_to_prompt(lexer.stack)); - if (parser.state == UNDEFINED && !str) - return (error_EOF()); + if ((ret = readline(fd, get_lexer_stack(lexer), &str))) + { + DG("ret=%i, str=%s, state=%i", ret, str, parser.state); + if (ret == -1) + return (-1); + return (parser.state == UNDEFINED ? error_EOF() : 1); + } + DG("ret=%i, str=%s", ret, str); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); @@ -40,33 +48,48 @@ int handle_instruction(int fd) return (1); //token_print(token); if (get_lexer_stack(lexer)) - continue; + continue ; if (ft_parse(&ast, &token, &parser)) - continue; + continue ; + DG("AFTER PARSING: state=%i", parser.state); if (parser.state == SUCCESS) - break; - if (parser.state == ERROR) + break ; + else if (parser.state == ERROR) return (error_syntax(&token)); } + DG("succesful parsing:"); btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); + /* if (ft_exec(&ast)) */ + /* return (1); */ ft_add_str_in_history(lexer.str); - return (1); + return (0); } int get_input_fd() { t_data *data; + char *file; + int fds[2]; + int fd; data = data_singleton(); + fd = STDIN; if (SH_IS_INTERACTIVE(data->opts)) - return (STDIN); - /* else if (data->opts & SHELL_OPTS_LC) */ - /* { */ - /* } */ + return (fd); + else if (data->opts & SH_OPTS_LC) + { + pipe(fds); + fd = fds[PIPE_READ]; + file = shell_get_avdata(); + write(fds[PIPE_WRITE], file, ft_strlen(file)); + close(fds[PIPE_WRITE]); + fcntl(fd, F_SETFD, FD_CLOEXEC); + return (fd); + } + else if ((file = shell_get_avdata())) + return (open(file, O_RDONLY)); else - return (open(shell_get_avdata(), O_RDONLY)); + return (STDIN); } int main(int ac, char **av) @@ -75,13 +98,15 @@ int main(int ac, char **av) setlocale(LC_ALL, ""); shell_init(ac, av); - // DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", SH_HAS_JOBC(data->opts)?"ON":"OFF"); + DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", + SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF"); fd = get_input_fd(); - while (handle_instruction(fd)) + while (handle_instruction(fd) == 0) { // lexer_clean; // parser_clean; ; } + shell_exit(); return (0); } diff --git a/42sh/src/main/shell_exit.c b/42sh/src/main/shell_exit.c index e1f7e052..30d4ab43 100644 --- a/42sh/src/main/shell_exit.c +++ b/42sh/src/main/shell_exit.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:37:04 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:04:01 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:14:43 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,13 @@ void shell_exit(void) { -// DG("shell_exit()"); + t_data *data; + + /* DG("shell_exit()"); */ + data = data_singleton(); data_exit(); - if (SH_HAS_JOBC(data_singleton()->opts)) + if (SH_HAS_JOBC(data->opts)) job_kill_all(); - tcsetattr(STDIN, TCSANOW, &data_singleton()->jobc.shell_tmodes); + if (SH_IS_INTERACTIVE(data->opts)) + tcsetattr(STDIN, TCSANOW, &data_singleton()->jobc.shell_tmodes); } diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index 26c73eb6..4e64df18 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:00:32 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:14:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ void shell_init(int ac, char **av) data = data_singleton(); data->argc = ac; data->argv = ft_sstrdup(av); - atexit(&shell_exit); + /* atexit(&shell_exit); */ shell_get_opts(ac, av); if (SH_IS_INTERACTIVE(data->opts)) { diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 7bee58f9..ab5655ca 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/21 18:13:47 by ariard ### ########.fr */ +/* Updated: 2017/02/21 19:27:59 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index a03801f6..35ff1972 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 16:40:24 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:09:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,25 +30,27 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { while (*token) { - produce_sym(*parser->stack, parser->new_sym, token); + produce_sym(*parser->stack, parser->new_sym, token); DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(*parser->stack, *parser->new_sym)) parser->state = ERROR; else - { + { aggregate_sym(&parser->stack, parser->new_sym, &parser->state); push_stack(++parser->stack, *parser->new_sym); } - ft_putstr("\n"); if (*parser->stack == PROGRAM) parser->state = SUCCESS; + else + parser->state = UNDEFINED; build_tree(ast, token); btree_print(STDBUG, *ast, &ft_putast); - if ((end_instruction(*parser->stack) && !(*token)->next) - || *parser->stack == PROGRAM) + if ((end_instruction(*parser->stack) && !(*token)->next)) + /* || *parser->stack == PROGRAM) */ insert_linebreak(token); else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } + ft_read_stack(parser->stack); return (0); } diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 2869bea3..49998c26 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/02/21 16:38:13 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:01:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ void parser_init(t_parser *parser) { - parser->state = UNDEFINED; + parser->state = SUCCESS; parser->new_sym = ft_memalloc(sizeof(t_sym)); parser->stack = ft_memalloc(sizeof(t_sym) * 1000); push_stack(parser->stack, LINEBREAK); From fffb8c74a5acd2c61f4e6032629636339e1c961d Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 21 Feb 2017 20:29:46 +0100 Subject: [PATCH 082/206] before pull main clean --- 42sh/includes/parser.h | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/main/main.c | 6 +++--- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/ft_parse.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index e87b47b1..7708a4d1 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:13:10 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:28:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index d2916952..ed9ec0bb 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:15:31 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:50:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 785ed302..13178f42 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:33:24 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:51:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,8 +49,8 @@ int handle_instruction(int fd) return (error_syntax(&token)); } btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); +// if (ft_exec(&ast)) +// return (1); ft_add_str_in_history(lexer.str); return (1); } diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index b602bead..fa58745c 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:16:04 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:28:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index a03801f6..8cc4e169 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 16:40:24 by ariard ### ########.fr */ +/* Updated: 2017/02/21 18:52:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 8084ffb6a1360d9c091c3add5e5bd7853b690338 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 21 Feb 2017 22:42:13 +0100 Subject: [PATCH 083/206] pipes done --- 42sh/Makefile | 1 - 42sh/includes/exec.h | 25 +++++++++++---------- 42sh/includes/lexer.h | 2 +- 42sh/src/builtin/is_builtin.c | 4 +++- 42sh/src/exec/exec_command.c | 20 ++++++++++++++--- 42sh/src/exec/exec_pipe.c | 31 +++++---------------------- 42sh/src/exec/ft_exec.c | 6 +++--- 42sh/src/exec/launch_process.c | 4 ++-- 42sh/src/exec/process_redirect.c | 9 ++++---- 42sh/src/exec/process_reset.c | 5 +++-- 42sh/src/exec/process_resetfds.c | 23 -------------------- 42sh/src/exec/process_setexec.c | 2 +- 42sh/src/job-control/job_addprocess.c | 6 +++--- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_lex.c | 2 +- 42sh/src/line-editing/readline.c | 2 +- 42sh/src/main/data_init.c | 7 +++--- 42sh/src/main/main.c | 14 ++++-------- 42sh/src/parser/add_cmd.c | 2 +- 19 files changed, 66 insertions(+), 101 deletions(-) delete mode 100644 42sh/src/exec/process_resetfds.c diff --git a/42sh/Makefile b/42sh/Makefile index e647c32f..0585fe4c 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -82,7 +82,6 @@ exec/loop_del.c\ exec/loop_exec.c\ exec/process_redirect.c\ exec/process_reset.c\ -exec/process_resetfds.c\ exec/process_setexec.c\ exec/process_setgroup.c\ exec/process_setsig.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 74e303ee..d5666a6e 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:20:15 by ariard ### ########.fr */ +/* Updated: 2017/02/21 21:41:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,19 +21,17 @@ # define PROCESS_SCRIPT (1 << 2) # define PROCESS_SUBSHELL (1 << 3) # define PROCESS_UNKNOWN (1 << 4) -# define PROCESS_PIPESTART (1 << 5) -# define PROCESS_PIPEEND (1 << 6) -# define PROCESS_COMPLETED (1 << 7) -# define PROCESS_SUSPENDED (1 << 8) -# define PROCESS_RUNNING (1 << 9) -# define PROCESS_CONTINUED (1 << 10) +# define PROCESS_COMPLETED (1 << 5) +# define PROCESS_SUSPENDED (1 << 6) +# define PROCESS_RUNNING (1 << 7) +# define PROCESS_CONTINUED (1 << 8) # define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4) -# define PROCESS_STATE_MASK (1 << 7 | 1 << 8 | 1 << 9 | 1 << 10) +# define PROCESS_STATE_MASK (1 << 5 | 1 << 6 | 1 << 7 | 1 << 8) -# define IS_PIPESTART(a) (a & PROCESS_PIPESTART) -# define IS_PIPEEND(a) (a & PROCESS_PIPEEND) -# define IS_PIPESINGLE(a) ((a & PROCESS_PIPESTART) && (a & PROCESS_PIPEEND)) +# define IS_PIPESTART(p) (p->fdin == STDIN) +# define IS_PIPEEND(p) (p->fdout == STDOUT) +# define IS_PIPESINGLE(p) (IS_PIPESTART(p) && IS_PIPEEND(p)) # define SCRIPT_LOOP (1 << 0) @@ -49,8 +47,9 @@ struct s_process pid_t pid; int fdin; int fdout; + int pipe_count; + int to_close; t_list *redirs; - int toclose; int status; t_flag attributes; t_flag script; @@ -96,7 +95,7 @@ int exec_pipe(t_btree **ast); int exec_redir(t_btree **ast); int exec_command(t_btree **ast); -int exec_while(t_btree **ast); +int exec_while(t_btree **ast); int exec_if(t_btree **ast); int exec_elif(t_btree **ast); int exec_else(t_btree **ast); diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 042aed97..f9d7f709 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:26:26 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 22:39:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index 597dcb1f..2725127f 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:30:54 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:40:59 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,7 +36,9 @@ t_execf *is_builtin(t_process *p) i = -1; while (g_builtin[++i].name) + { if (ft_strcmp(g_builtin[i].name, p->av[0]) == 0) return (g_builtin[i].f); + } return (NULL); } diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 558804af..37d8153a 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:43:53 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 22:41:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,16 +48,28 @@ int exec_command(t_btree **ast) t_astnode *node; t_process *p; t_job *job; + int fds[2]; node = (*ast)->item; p = &data_singleton()->exec.process; job = &data_singleton()->exec.job; - p->av = token_to_argv(node); + if (!(p->av = token_to_argv(node))) + { + DG("globbing error"); + return (1); + } process_setexec(node->type, p); + if (p->pipe_count) + { + pipe(fds); + p->fdout = fds[PIPE_WRITE]; + p->to_close = fds[PIPE_READ]; + p->pipe_count--; + } if (!(launch_process(p))) { job_addprocess(p); - if (IS_PIPEEND(p->attributes)) + if (IS_PIPEEND(p)) { JOB_IS_FG(job->attributes) ? put_job_in_foreground(job, 0): @@ -65,6 +77,8 @@ int exec_command(t_btree **ast) job->pgid = 0; } } + if (p->fdout == fds[PIPE_WRITE]) + p->fdin = fds[PIPE_READ]; process_reset(p); // btree_delone(ast, &ast_free); return (0); diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index 142f18c3..9a1a90bc 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 21:13:23 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:32:52 by ariard ### ########.fr */ +/* Updated: 2017/02/21 21:47:43 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,36 +14,15 @@ int exec_pipe(t_btree **ast) { - int fds[2]; - int start; t_data *data; t_process *p; + DG("exec pipe"); data = data_singleton(); - p = &data_singleton()->exec.process; - pipe(fds); - /* DG("pipe %i->%i", fds[PIPE_WRITE], fds[PIPE_READ]); */ - p->fdout = fds[PIPE_WRITE]; - start = IS_PIPESTART(p->attributes); - p->toclose = fds[PIPE_READ]; - - p->attributes &= ~PROCESS_PIPEEND; + p = &data->exec.process; + p->pipe_count++; ft_exec(&(*ast)->left); - p->attributes &= ~PROCESS_PIPESTART; - - p->toclose = STDIN; - close(fds[PIPE_WRITE]); - p->fdout = STDOUT; - p->fdin = fds[PIPE_READ]; - - p->attributes |= PROCESS_PIPEEND; ft_exec(&(*ast)->right); - if (start) - p->attributes |= PROCESS_PIPESTART; - - close(fds[PIPE_READ]); - p->fdin = STDIN; - - btree_delone(ast, &ast_free); + /* btree_delone(ast, &ast_free); */ return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index d2916952..6313a504 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:15:31 by ariard ### ########.fr */ +/* Updated: 2017/02/21 21:37:58 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,8 +49,8 @@ int ft_exec(t_btree **ast) { if (item->type == g_execmap[i].type) { - DG("match : %s and %s", - read_state(item->type), read_state(g_execmap[i].type)); + /* DG("match : %s and %s", */ + /* read_state(item->type), read_state(g_execmap[i].type)); */ /* return ((*g_execmap[i].f)(ast)); */ (*g_execmap[i].f)(ast); } diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 098c44c4..1676f69f 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/02/21 20:09:54 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 21:39:15 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ int launch_process(t_process *p) ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); set_exitstatus(127, 1); } - else if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(p->attributes)) + else if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(p)) { if (process_redirect(p)) return (1); diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index 33654306..a4253467 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/02/07 17:36:46 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 21:44:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,12 +48,11 @@ int process_redirect(t_process *p) } redirs = redirs->next; } - if (p->toclose != STDIN) - close(p->toclose); + if (p->to_close != 0) + close(p->to_close); if (p->fdin != STDIN) - dup2_close(p->fdin, STDIN); + dup2_close(p->fdout, STDOUT); if (p->fdout != STDOUT) dup2_close(p->fdout, STDOUT); - ft_lstdel(&p->redirs, ft_lst_cfree); return (0); } diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index b90a131e..853325b4 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */ -/* Updated: 2017/02/07 17:48:22 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 21:42:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,8 @@ void process_reset(t_process *p) { - process_resetfds(); + p->fdout = STDOUT; + p->to_close = 0; p->av = NULL; p->pid = 0; p->redirs = NULL; diff --git a/42sh/src/exec/process_resetfds.c b/42sh/src/exec/process_resetfds.c deleted file mode 100644 index dbc9403a..00000000 --- a/42sh/src/exec/process_resetfds.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* process_resetfds.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/07 17:39:14 by jhalford #+# #+# */ -/* Updated: 2017/02/07 17:50:52 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void process_resetfds(void) -{ - t_exec *exec; - - exec = &data_singleton()->exec; - dup2(exec->fd0save, 0); - dup2(exec->fd1save, 1); - dup2(exec->fd2save, 2); -} diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index d184531f..f54afb2c 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:42:02 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:41:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_addprocess.c b/42sh/src/job-control/job_addprocess.c index 171df690..2e946d6a 100644 --- a/42sh/src/job-control/job_addprocess.c +++ b/42sh/src/job-control/job_addprocess.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:07:16 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 21:42:53 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int job_addprocess(t_process *p) jobc = &data_singleton()->jobc; job = &data_singleton()->exec.job; - if (IS_PIPESTART(p->attributes)) + if (IS_PIPESTART(p)) { job_update_id(); job->id = jobc->current_id; @@ -31,7 +31,7 @@ int job_addprocess(t_process *p) { ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p))); } - if (JOB_IS_BG(job->attributes) && IS_PIPEEND(p->attributes)) + if (JOB_IS_BG(job->attributes) && IS_PIPEEND(p)) job_notify_new(job); return (0); } diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 4c7f4eb7..3809a674 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:52:10 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:14:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 8e9a7720..a8e8818f 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:55:26 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 22:14:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index 383a4001..8ccc2fdb 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/02/21 20:04:31 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:30:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 12c47e05..95e59dec 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:57:14 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:41:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,12 +26,13 @@ int data_init(void) data->exec.process.path = NULL; data->exec.process.av = NULL; - data->exec.process.toclose = STDIN; + data->exec.process.to_close = 0; data->exec.process.fdin = STDIN; data->exec.process.fdout = STDOUT; data->exec.process.pid = 0; - data->exec.process.attributes = PROCESS_PIPESTART | PROCESS_PIPEEND; + data->exec.process.attributes = 0; data->exec.process.redirs = NULL; + data->exec.process.pipe_count = 0; data->exec.fd0save = fcntl(0, F_DUPFD_CLOEXEC); data->exec.fd1save = fcntl(1, F_DUPFD_CLOEXEC); data->exec.fd2save = fcntl(2, F_DUPFD_CLOEXEC); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 6619b322..d0b607d1 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 20:07:27 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:32:39 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,18 +26,14 @@ int handle_instruction(int fd) parser_init(&parser); token = NULL; ast = NULL; - /* str = NULL; */ - DG("START: state=%i", parser.state); while (1) { if ((ret = readline(fd, get_lexer_stack(lexer), &str))) { - DG("ret=%i, str=%s, state=%i", ret, str, parser.state); if (ret == -1) return (-1); return (parser.state == UNDEFINED ? error_EOF() : 1); } - DG("ret=%i, str=%s", ret, str); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); @@ -46,22 +42,20 @@ int handle_instruction(int fd) ltoken = ft_lstlast(token); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); - //token_print(token); if (get_lexer_stack(lexer)) continue ; if (ft_parse(&ast, &token, &parser)) continue ; - DG("AFTER PARSING: state=%i", parser.state); if (parser.state == SUCCESS) break ; else if (parser.state == ERROR) return (error_syntax(&token)); } - DG("succesful parsing:"); + DG("Before execution:"); btree_print(STDBUG, ast, &ft_putast); - /* if (ft_exec(&ast)) */ - /* return (1); */ ft_add_str_in_history(lexer.str); + if (ft_exec(&ast)) + return (1); return (0); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 23bf28bf..bf8038ce 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:27:06 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 22:40:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 49b79603b374d29ee2ccfdeaabd9085c8a278a04 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 21 Feb 2017 22:45:59 +0100 Subject: [PATCH 084/206] insert newline add --- 42sh/Makefile | 3 ++- 42sh/case.sh | 8 ++++++++ 42sh/includes/lexer.h | 4 +++- 42sh/includes/parser.h | 2 +- 42sh/sample/case/case.sh | 8 ++++++++ 42sh/sample/mix/mix.sh | 2 +- 42sh/src/hash_table/hash.c | 2 +- 42sh/src/hash_table/hash_str.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/lexer/insert_newline.c | 23 +++++++++++++++++++++++ 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_delim.c | 4 +--- 42sh/src/lexer/lexer_great.c | 2 +- 42sh/src/lexer/lexer_lex.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/lexer/token_print.c | 13 +++---------- 42sh/src/main/main.c | 15 +++++++++------ 42sh/src/parser/aggregate_sym.c | 10 +++++----- 42sh/src/parser/ft_parse.c | 6 ++++-- 42sh/src/parser/produce_sym.c | 8 ++++---- 42sh/src/parser/read_stack.c | 10 +++++----- 21 files changed, 84 insertions(+), 46 deletions(-) create mode 100644 42sh/case.sh create mode 100644 42sh/sample/case/case.sh create mode 100644 42sh/src/lexer/insert_newline.c diff --git a/42sh/Makefile b/42sh/Makefile index e647c32f..88ecb85b 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/21 16:38:00 by ariard ### ########.fr # +# Updated: 2017/02/21 21:32:36 by ariard ### ########.fr # # # # **************************************************************************** # @@ -171,6 +171,7 @@ lexer/get_lexer_stack.c\ lexer/get_reserved_words.c\ lexer/get_state_global.c\ lexer/get_state_redir.c\ +lexer/insert_newline.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ lexer/lexer_comment.c\ diff --git a/42sh/case.sh b/42sh/case.sh new file mode 100644 index 00000000..d415d6aa --- /dev/null +++ b/42sh/case.sh @@ -0,0 +1,8 @@ +case $rental in + ("car") echo "For $rental rental is Rs.20 per k/m.";; + ("van") echo "For $rental rental is Rs.10 per k/m.";; + ("jeep") echo "For $rental rental is Rs.5 per k/m.";; + ("bicycle") echo "For $rental rental 20 paisa per k/m.";; + ("enfield") echo "For $rental rental Rs.3 per k/m.";; + ("thunderbird") echo "For $rental rental Rs.5 per k/m.";; +esac diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 042aed97..28b0962a 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:26:26 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 21:12:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -91,6 +91,8 @@ char *stack_to_prompt(t_list *stack); t_lexstate get_state_global(t_lexer *lexer); t_lexstate get_state_redir(t_lexer *lexer); int get_lexer_stack(t_lexer lexer); +int get_reserved_words(t_list **alst); +int insert_newline(t_list **alst); void lexer_init(t_lexer *lexer); int lexer_lex(t_list **alst, t_lexer *lexer); int lexer_default(t_list **alst, t_lexer *lexer); diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 4960d21f..503a37f9 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -21,9 +21,9 @@ enum e_parstate { + ERROR = 0, UNDEFINED, SUCCESS, - ERROR, }; enum e_sym diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh new file mode 100644 index 00000000..d415d6aa --- /dev/null +++ b/42sh/sample/case/case.sh @@ -0,0 +1,8 @@ +case $rental in + ("car") echo "For $rental rental is Rs.20 per k/m.";; + ("van") echo "For $rental rental is Rs.10 per k/m.";; + ("jeep") echo "For $rental rental is Rs.5 per k/m.";; + ("bicycle") echo "For $rental rental 20 paisa per k/m.";; + ("enfield") echo "For $rental rental Rs.3 per k/m.";; + ("thunderbird") echo "For $rental rental Rs.5 per k/m.";; +esac diff --git a/42sh/sample/mix/mix.sh b/42sh/sample/mix/mix.sh index d9e02158..36437d5c 100644 --- a/42sh/sample/mix/mix.sh +++ b/42sh/sample/mix/mix.sh @@ -1,6 +1,6 @@ if ls then - ls | cat + ls ; cat while ls do until ls diff --git a/42sh/src/hash_table/hash.c b/42sh/src/hash_table/hash.c index fa3604fd..8a9a1eea 100644 --- a/42sh/src/hash_table/hash.c +++ b/42sh/src/hash_table/hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:06:19 by gwojda #+# #+# */ -/* Updated: 2017/02/18 14:16:35 by gwojda ### ########.fr */ +/* Updated: 2017/02/21 20:57:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/hash_table/hash_str.c b/42sh/src/hash_table/hash_str.c index f7e70f11..a7aa38f1 100644 --- a/42sh/src/hash_table/hash_str.c +++ b/42sh/src/hash_table/hash_str.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:32:18 by gwojda #+# #+# */ -/* Updated: 2017/02/19 12:58:47 by gwojda ### ########.fr */ +/* Updated: 2017/02/21 20:57:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 7a24e372..413b4c35 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:06:20 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 21:06:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/insert_newline.c b/42sh/src/lexer/insert_newline.c new file mode 100644 index 00000000..1057c24e --- /dev/null +++ b/42sh/src/lexer/insert_newline.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* insert_newline.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/21 21:05:23 by ariard #+# #+# */ +/* Updated: 2017/02/21 21:12:13 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int insert_newline(t_list **alst) +{ + t_token *token; + + token = token_init(); + token->type = TK_NEWLINE; + ft_lsteadd(alst, ft_lstnew(token, sizeof(*token))); + return (0); +} diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 4d67d8cc..200bdec0 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:50:30 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:40:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 4c7f4eb7..c7e789f1 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:52:10 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:42:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,9 +21,7 @@ int lexer_delim(t_list **alst, t_lexer *lexer) lexer->pos++; lexer->state = DEFAULT; if (token->type) - { return (lexer_lex(&(*alst)->next, lexer)); - } else { if (lexer->str[lexer->pos] == 0) diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 48c1a33b..cce8f831 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:52:38 by ariard ### ########.fr */ +/* Updated: 2017/02/21 21:09:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 8e9a7720..222b5616 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:55:26 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 22:44:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 8a65c2b5..6d83ee13 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:03:57 by ariard ### ########.fr */ +/* Updated: 2017/02/21 21:34:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index 18d9b38e..d4f1f901 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:55:43 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:20:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,19 +15,12 @@ void token_print(t_list *lst) { t_token *token; - int i; - t_type type; - int index; while (lst) { - i = -1; + token = lst->content; - type = token->type; - while (type >> (i++ + 2)) - ; - DG("%02i:[%s]", i, token->data); - index = -1; + DG("token : %s data [%s]\n", read_state(token->type), token->data); lst = lst->next; } } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 2568d77e..ddee0ec0 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 20:31:43 by ariard ### ########.fr */ +/* Updated: 2017/02/21 22:44:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,13 +31,11 @@ int handle_instruction(int fd) while (1) { if ((ret = readline(fd, get_lexer_stack(lexer), &str))) - { - DG("ret=%i, str=%s, state=%i", ret, str, parser.state); + { if (ret == -1) return (-1); return (parser.state == UNDEFINED ? error_EOF() : 1); } - DG("ret=%i, str=%s", ret, str); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); @@ -46,11 +44,16 @@ int handle_instruction(int fd) ltoken = ft_lstlast(token); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); - //token_print(token); if (get_lexer_stack(lexer)) - continue ; + continue ; + lexer.state = DEFAULT; + if (get_reserved_words(&token)) + return (1); + if (insert_newline(&token)) + return (1); if (ft_parse(&ast, &token, &parser)) continue ; + token = NULL; DG("AFTER PARSING: state=%i", parser.state); if (parser.state == SUCCESS) break ; diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 96a82d56..2f509444 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/21 10:49:53 by ariard ### ########.fr */ +/* Updated: 2017/02/21 20:40:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -240,20 +240,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 1818c48c..acc024b8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -14,6 +14,7 @@ static void insert_linebreak(t_list **lst) { t_token *token; + token = (*lst)->content; token->type = LINEBREAK; } @@ -32,12 +33,14 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) produce_sym(*parser->stack, parser->new_sym, token); DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(*parser->stack, *parser->new_sym)) - parser->state = ERROR; + return ((parser->state = ERROR)); else { aggregate_sym(&parser->stack, parser->new_sym, &parser->state); push_stack(++parser->stack, *parser->new_sym); } + ft_read_stack(parser->stack); + DG("\n"); if (*parser->stack == PROGRAM) parser->state = SUCCESS; else @@ -50,6 +53,5 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } - ft_read_stack(parser->stack); return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 306c9db1..332e6bf6 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:37:22 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 22:21:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,8 +88,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; -// DG("produce stack : %s && token : %s", read_state(stack), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(stack), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -97,7 +97,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { -// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 95f5c3a1..e8fb06c2 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:38:48 by jhalford ### ########.fr */ +/* Updated: 2017/02/21 20:39:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == 0) + return ("NULL"); if (current == UNTIL_CLAUSE) return ("UNTIL_CLAUSE"); if (current == TK_UNTIL) @@ -161,10 +163,8 @@ char *read_state(t_sym current) int ft_read_stack(t_sym *stack) { + DG("read stack :"); while (*stack) - { - ft_putstr(read_state(*stack--)); - ft_putchar(10); - } + DG("%s", read_state(*stack--)); return (0); } From 5976d0d281d766418e7f12e66fb13c646de2c4f5 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 22 Feb 2017 01:43:25 +0100 Subject: [PATCH 085/206] grammar case part 1 motherfucker --- 42sh/case.sh | 8 -------- 42sh/includes/exec.h | 4 ++-- 42sh/sample/case/case.sh | 12 ++++++------ 42sh/src/lexer/get_reserved_words.c | 8 ++++++++ 42sh/src/main/main.c | 8 ++++---- 42sh/src/parser/aggregate_sym.c | 1 + 42sh/src/parser/eval_sym.c | 3 +++ 42sh/src/parser/ft_parse.c | 5 +++-- 42sh/src/parser/produce_sym.c | 3 ++- 42sh/src/parser/read_stack.c | 8 ++++++++ 10 files changed, 37 insertions(+), 23 deletions(-) delete mode 100644 42sh/case.sh diff --git a/42sh/case.sh b/42sh/case.sh deleted file mode 100644 index d415d6aa..00000000 --- a/42sh/case.sh +++ /dev/null @@ -1,8 +0,0 @@ -case $rental in - ("car") echo "For $rental rental is Rs.20 per k/m.";; - ("van") echo "For $rental rental is Rs.10 per k/m.";; - ("jeep") echo "For $rental rental is Rs.5 per k/m.";; - ("bicycle") echo "For $rental rental 20 paisa per k/m.";; - ("enfield") echo "For $rental rental Rs.3 per k/m.";; - ("thunderbird") echo "For $rental rental Rs.5 per k/m.";; -esac diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 74e303ee..58aabc7a 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -128,7 +128,7 @@ void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); -int loop_exec(t_list *list_ast); -int loop_del(t_list *list_ast); + + #endif diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index d415d6aa..3828871c 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -1,8 +1,8 @@ case $rental in - ("car") echo "For $rental rental is Rs.20 per k/m.";; - ("van") echo "For $rental rental is Rs.10 per k/m.";; - ("jeep") echo "For $rental rental is Rs.5 per k/m.";; - ("bicycle") echo "For $rental rental 20 paisa per k/m.";; - ("enfield") echo "For $rental rental Rs.3 per k/m.";; - ("thunderbird") echo "For $rental rental Rs.5 per k/m.";; + "cat") echo "For $rental rental is Rs.20 per k/m.";; + "van") echo "For $rental rental is Rs.10 per k/m.";; + "jeep") echo "For $rental rental is Rs.5 per k/m.";; + "bicycle") echo "For $rental rental 20 paisa per k/m.";; + "enfield") echo "For $rental rental Rs.3 per k/m.";; + "thunderbird") echo "For $rental rental Rs.5 per k/m.";; esac diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 413b4c35..84c2f493 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -16,10 +16,12 @@ int get_reserved_words(t_list **alst) { t_token *token; t_token *previous_token; + t_token *ante_token; t_list *temp; temp = *alst; previous_token = NULL; + ante_token = NULL; while (temp) { token = temp->content; @@ -45,8 +47,14 @@ int get_reserved_words(t_list **alst) token->type = TK_ELSE; else if (ft_strncmp(token->data, "until", 5) == 0) token->type = TK_UNTIL; + else if (ft_strncmp(token->data, "case", 4) == 0) + token->type = TK_CASE; } } + if (ante_token && ante_token->type == TK_CASE + && ft_strncmp(token->data, "in", 2) == 0) + token->type = TK_IN; + ante_token = previous_token; previous_token = token; temp = temp->next; } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index ddee0ec0..88606518 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -30,6 +30,7 @@ int handle_instruction(int fd) DG("START: state=%i", parser.state); while (1) { + DG("get input"); if ((ret = readline(fd, get_lexer_stack(lexer), &str))) { if (ret == -1) @@ -47,21 +48,20 @@ int handle_instruction(int fd) if (get_lexer_stack(lexer)) continue ; lexer.state = DEFAULT; + token_print(token); if (get_reserved_words(&token)) return (1); if (insert_newline(&token)) return (1); if (ft_parse(&ast, &token, &parser)) continue ; - token = NULL; - DG("AFTER PARSING: state=%i", parser.state); if (parser.state == SUCCESS) break ; else if (parser.state == ERROR) - return (error_syntax(&token)); + return (error_syntax(&token)); } DG("succesful parsing:"); - btree_print(STDBUG, ast, &ft_putast); +// btree_print(STDBUG, ast, &ft_putast); /* if (ft_exec(&ast)) */ /* return (1); */ ft_add_str_in_history(lexer.str); diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 2f509444..b4beb401 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -57,6 +57,7 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, + {NEWLINE_LIST, TK_IN, TK_IN, TK_IN}, {NEWLINE_LIST, TK_THEN, TK_THEN, TK_THEN}, {NEWLINE_LIST, TK_IF, TK_IF, TK_IF}, {NEWLINE_LIST, TK_ELIF, TK_ELIF, TK_ELIF}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b082ed21..db4e1fcb 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -203,6 +203,7 @@ t_stackmatch g_stackmatch[] = {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, {TK_CASE, PIPE_SEMI_SEQUENCE}, + {TK_IN, TK_WORD}, {TK_ESAC, CASE_LIST}, {TK_ESAC, CASE_LIST_NS}, {TK_ESAC, LINEBREAK}, @@ -304,6 +305,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, COMPOUND_LIST}, {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, + {NEWLINE_LIST, TK_IN}, {NEWLINE_LIST, TK_WHILE}, {NEWLINE_LIST, TK_UNTIL}, {NEWLINE_LIST, TK_IF}, @@ -497,6 +499,7 @@ t_stackmatch g_stackmatch[] = {PATTERN, TK_PAREN_OPEN}, {PATTERN, CASE_LIST}, + {PATTERN, TK_IN}, {PATTERN_CASE, CASE_LIST}, {CASE_ITEM, CASE_LIST}, {CASE_ITEM, LINEBREAK}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index acc024b8..f54351ed 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -28,6 +28,7 @@ static int end_instruction(t_sym sym) int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { + (void)ast; while (*token) { produce_sym(*parser->stack, parser->new_sym, token); @@ -45,8 +46,8 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) parser->state = SUCCESS; else parser->state = UNDEFINED; - build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); +// build_tree(ast, token); +// btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*parser->stack) && !(*token)->next)) /* || *parser->stack == PROGRAM) */ insert_linebreak(token); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 332e6bf6..9164cb58 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -43,7 +43,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, TK_BANG, CMD_NAME}, {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, {TK_WORD, SEPARATOR_OP, CMD_NAME}, - {TK_WORD, IN, WORDLIST}, + {TK_WORD, TK_IN, PATTERN}, {TK_WORD, CASE_LIST, PATTERN}, {TK_WORD, TK_PAREN_OPEN, PATTERN}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, @@ -56,6 +56,7 @@ t_prodmatch g_prodmatch[] = {TK_NAME, NEWLINE_LIST, FNAME}, {TK_NAME, TK_FOR, NAME}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, + {TK_NEWLINE, TK_IN, NEWLINE_LIST}, {TK_NEWLINE, TK_WHILE, NEWLINE_LIST}, {TK_NEWLINE, TK_UNTIL, NEWLINE_LIST}, {TK_NEWLINE, TK_IF, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index e8fb06c2..2806b159 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -16,6 +16,14 @@ char *read_state(t_sym current) { if (current == 0) return ("NULL"); + if (current == PATTERN) + return ("PATTERN"); + if (current == TK_CASE) + return ("TK_CASE"); + if (current == TK_IN) + return ("TK_IN"); + if (current == TK_ESAC) + return ("TK_ESAC"); if (current == UNTIL_CLAUSE) return ("UNTIL_CLAUSE"); if (current == TK_UNTIL) From 268c5fb46e2047c2e0e7c14bad665f5819ec3da4 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 22 Feb 2017 18:36:32 +0100 Subject: [PATCH 086/206] syntax error + coordination parser etat --- 42sh/src/main/main.c | 7 ++- 42sh/src/parser/aggregate_sym.c | 20 ++++++- 42sh/src/parser/error_syntax.c | 4 +- 42sh/src/parser/eval_sym.c | 101 +++++++++++++++++++++++++++++++- 42sh/src/parser/ft_parse.c | 6 +- 42sh/src/parser/produce_sym.c | 1 + 42sh/test.sh | 2 + 7 files changed, 132 insertions(+), 9 deletions(-) create mode 100644 42sh/test.sh diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 88606518..e75da56e 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -48,7 +48,7 @@ int handle_instruction(int fd) if (get_lexer_stack(lexer)) continue ; lexer.state = DEFAULT; - token_print(token); +// token_print(token); if (get_reserved_words(&token)) return (1); if (insert_newline(&token)) @@ -57,8 +57,9 @@ int handle_instruction(int fd) continue ; if (parser.state == SUCCESS) break ; - else if (parser.state == ERROR) - return (error_syntax(&token)); + else if (parser.state == ERROR) + error_syntax(&token); + token = NULL; } DG("succesful parsing:"); // btree_print(STDBUG, ast, &ft_putast); diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index b4beb401..788623aa 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -55,6 +55,7 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, CMD_SUPERIOR, SEPARATOR_OP, 0}, {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, + {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, {NEWLINE_LIST, TK_IN, TK_IN, TK_IN}, @@ -72,6 +73,8 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0}, {NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION, CONDITION, CONDITION}, + {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, + {NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK}, //to check {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, @@ -96,6 +99,7 @@ t_aggrematch g_aggrematch[] = {IO_REDIRECT, CMD_WORD, CMD_SUFFIX, 0}, {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, CMD_PREFIX}, {IO_REDIRECT, LINEBREAK, CMD_PREFIX, 0}, + {IO_REDIRECT, COMPLETE_COMMANDS, CMD_PREFIX, 0}, {IO_REDIRECT, TK_BANG, CMD_PREFIX, 0}, {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, 0}, {IO_REDIRECT, NEWLINE_LIST, CMD_PREFIX, 0}, @@ -105,6 +109,7 @@ t_aggrematch g_aggrematch[] = {CMD_SUFFIX, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, //to abstract {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, + {CMD_PREFIX, COMPLETE_COMMANDS, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0}, {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, 0}, {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, 0}, @@ -112,6 +117,7 @@ t_aggrematch g_aggrematch[] = {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, CMD_PREFIX}, //to check {CMD_NAME, LINEBREAK, CMD_SUPERIOR, 0}, + {CMD_NAME, COMPLETE_COMMANDS, CMD_SUPERIOR, 0}, {CMD_NAME, TK_BANG, CMD_SUPERIOR, 0}, {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, {CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0}, @@ -161,6 +167,7 @@ t_aggrematch g_aggrematch[] = {COMPOUND_COMMAND, ALL, COMMAND, 0}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, @@ -175,12 +182,18 @@ t_aggrematch g_aggrematch[] = {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {END_COMMAND, AND_OR_MAJOR, LIST, AND_OR_MAJOR}, + {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, + {END_COMMAND, COMPLETE_COMMANDS, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_IF, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0}, @@ -194,6 +207,7 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, + {PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, {PIPE_SEQUENCE, TK_IF, PIPELINE, 0}, @@ -211,6 +225,7 @@ t_aggrematch g_aggrematch[] = {PIPELINE, TK_ELSE, AND_OR, 0}, {PIPELINE, COMPOUND_LIST, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, + {PIPELINE, COMPLETE_COMMANDS, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, {PIPELINE, COMPLETE_CONDITION, AND_OR, 0}, @@ -228,11 +243,14 @@ t_aggrematch g_aggrematch[] = {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, + {AND_OR, COMPLETE_COMMANDS, LIST, 0}, {LIST, NEWLINE_LIST, COMPLETE_COMMAND, 0}, {LIST, LINEBREAK, COMPLETE_COMMAND, 0}, + {LIST, COMPLETE_COMMANDS, COMPLETE_COMMAND, 0}, {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, 0}, - {COMPLETE_COMMANDS, LINEBREAK, PROGRAM, LINEBREAK}, + {COMPLETE_COMMAND, COMPLETE_COMMANDS, COMPLETE_COMMANDS, 0}, + {COMPLETE_COMMANDS, COMPLETE_COMMANDS, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {0, 0, 0, 0}, }; diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index ab5655ca..827807be 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -60,9 +60,9 @@ int error_syntax(t_list **lst) { if (g_errormatch[i].token == token->type) { - ft_putstr_fd("syntax error near unexpetcted token `", 2); + ft_putstr_fd("syntax error near unexpected token `", 2); ft_putstr_fd(g_errormatch[i].error, 2); - ft_putstr_fd("'", 2); + ft_putstr_fd("'\n", 2); return (1); } i++; diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index db4e1fcb..8bbcb499 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -18,6 +18,7 @@ t_stackmatch g_stackmatch[] = {TK_WORD, TK_CASE}, {TK_WORD, WORDLIST}, {TK_WORD, LINEBREAK}, + {TK_WORD, COMPLETE_COMMANDS}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, {TK_IO_NUMBER, REDIRECT_LIST}, {TK_IO_NUMBER, CMD_SUFFIX}, @@ -25,6 +26,7 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, CMD_NAME}, {TK_IO_NUMBER, CMD_WORD}, {TK_IO_NUMBER, LINEBREAK}, + {TK_IO_NUMBER, COMPLETE_COMMANDS}, {TK_IO_NUMBER, TK_BANG}, {TK_IO_NUMBER, SEPARATOR_OP}, {TK_IO_NUMBER, NEWLINE_LIST}, @@ -37,6 +39,7 @@ t_stackmatch g_stackmatch[] = {TK_OR_IF, CMD_SUPERIOR}, {TK_OR_IF, AND_OR}, {TK_DSEMI, LINEBREAK}, + {TK_DSEMI, COMPLETE_COMMANDS}, {TK_DSEMI, COMPOUND_LIST}, {TK_LESS, TK_IO_NUMBER}, {TK_LESS, REDIRECT_LIST}, @@ -45,6 +48,7 @@ t_stackmatch g_stackmatch[] = {TK_LESS, CMD_WORD}, {TK_LESS, CMD_NAME}, {TK_LESS, LINEBREAK}, + {TK_LESS, COMPLETE_COMMANDS}, {TK_LESS, TK_BANG}, {TK_LESS, SEPARATOR_OP}, {TK_LESS, NEWLINE_LIST}, @@ -58,6 +62,7 @@ t_stackmatch g_stackmatch[] = {TK_GREAT, CMD_WORD}, {TK_GREAT, CMD_NAME}, {TK_GREAT, LINEBREAK}, + {TK_GREAT, COMPLETE_COMMANDS}, {TK_GREAT, TK_BANG}, {TK_GREAT, SEPARATOR_OP}, {TK_GREAT, NEWLINE_LIST}, @@ -73,6 +78,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, CMD_WORD}, {TK_DLESS, CMD_NAME}, {TK_DLESS, LINEBREAK}, + {TK_DLESS, COMPLETE_COMMANDS}, {TK_DLESS, TK_BANG}, {TK_DLESS, SEPARATOR_OP}, {TK_DLESS, NEWLINE_LIST}, @@ -87,6 +93,8 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, CMD_WORD}, {TK_DLESSDASH, CMD_NAME}, {TK_DLESSDASH, LINEBREAK}, + {TK_DLESSDASH, COMPLETE_COMMANDS}, + {TK_DLESSDASH, TK_BANG}, {TK_DLESSDASH, TK_BANG}, {TK_DLESSDASH, SEPARATOR_OP}, {TK_DLESSDASH, NEWLINE_LIST}, @@ -101,6 +109,8 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, CMD_WORD}, {TK_DGREAT, CMD_NAME}, {TK_DGREAT, LINEBREAK}, + {TK_DGREAT, COMPLETE_COMMANDS}, + {TK_DGREAT, TK_BANG}, {TK_DGREAT, TK_BANG}, {TK_DGREAT, SEPARATOR_OP}, {TK_DGREAT, NEWLINE_LIST}, @@ -115,6 +125,8 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, CMD_WORD}, {TK_LESSAND, CMD_NAME}, {TK_LESSAND, LINEBREAK}, + {TK_LESSAND, COMPLETE_COMMANDS}, + {TK_LESSAND, TK_BANG}, {TK_LESSAND, TK_BANG}, {TK_LESSAND, SEPARATOR_OP}, {TK_LESSAND, NEWLINE_LIST}, @@ -129,6 +141,8 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, CMD_WORD}, {TK_GREATAND, CMD_NAME}, {TK_GREATAND, LINEBREAK}, + {TK_GREATAND, COMPLETE_COMMANDS}, + {TK_LESSAND, TK_BANG}, {TK_GREATAND, TK_BANG}, {TK_GREATAND, SEPARATOR_OP}, {TK_GREATAND, NEWLINE_LIST}, @@ -143,6 +157,8 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, CMD_WORD}, {TK_LESSGREAT, CMD_NAME}, {TK_LESSGREAT, LINEBREAK}, + {TK_LESSGREAT, COMPLETE_COMMANDS}, + {TK_LESSGREAT, TK_BANG}, {TK_LESSGREAT, TK_BANG}, {TK_LESSGREAT, SEPARATOR_OP}, {TK_LESSGREAT, NEWLINE_LIST}, @@ -157,6 +173,8 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, CMD_WORD}, {TK_CLOBBER, CMD_NAME}, {TK_CLOBBER, LINEBREAK}, + {TK_CLOBBER, COMPLETE_COMMANDS}, + {TK_CLOBBER, TK_BANG}, {TK_CLOBBER, TK_BANG}, {TK_CLOBBER, SEPARATOR_OP}, {TK_CLOBBER, NEWLINE_LIST}, @@ -165,6 +183,8 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, + {TK_IF, COMPLETE_COMMANDS}, + {TK_IF, TK_BANG}, {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, {TK_IF, NEWLINE_LIST}, @@ -199,6 +219,8 @@ t_stackmatch g_stackmatch[] = {TK_DONE, COMPOUND_LIST}, {TK_DONE, END_COMMAND}, {TK_CASE, LINEBREAK}, + {TK_CASE, COMPLETE_COMMANDS}, + {TK_CASE, TK_BANG}, {TK_CASE, TK_BANG}, {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, @@ -208,6 +230,8 @@ t_stackmatch g_stackmatch[] = {TK_ESAC, CASE_LIST_NS}, {TK_ESAC, LINEBREAK}, {TK_WHILE, LINEBREAK}, + {TK_WHILE, COMPLETE_COMMANDS}, + {TK_WHILE, TK_BANG}, {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, {TK_WHILE, NEWLINE_LIST}, @@ -220,6 +244,8 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_THEN}, {TK_WHILE, COMPLETE_CONDITION}, {TK_UNTIL, LINEBREAK}, + {TK_UNTIL, COMPLETE_COMMANDS}, + {TK_UNTIL, TK_BANG}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, NEWLINE_LIST}, @@ -232,17 +258,23 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, TK_THEN}, {TK_UNTIL, COMPLETE_CONDITION}, {TK_FOR, LINEBREAK}, + {TK_FOR, COMPLETE_COMMANDS}, + {TK_FOR, TK_BANG}, {TK_FOR, TK_BANG}, {TK_FOR, SEPARATOR_OP}, {TK_FOR, NEWLINE_LIST}, {TK_FOR, PIPE_SEMI_SEQUENCE}, {TK_LBRACE, LINEBREAK}, + {TK_LBRACE, COMPLETE_COMMANDS}, + {TK_LBRACE, TK_BANG}, {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, PIPE_SEMI_SEQUENCE}, {TK_RBRACE, COMPOUND_LIST}, {TK_BANG, LINEBREAK}, + {TK_BANG, COMPLETE_COMMANDS}, + {TK_BANG, SEPARATOR_OP}, {TK_BANG, SEPARATOR_OP}, {TK_BANG, NEWLINE_LIST}, {TK_IN, LINEBREAK}, @@ -260,6 +292,8 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, FNAME}, {TK_PAREN_OPEN, CASE_LIST}, {TK_PAREN_OPEN, LINEBREAK}, + {TK_PAREN_OPEN, COMPLETE_COMMANDS}, + {TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, NEWLINE_LIST}, @@ -271,6 +305,8 @@ t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, {END_COMMAND, PIPE_SEMI_SEQUENCE}, + {END_COMMAND, AND_OR_MAJOR}, + {END_COMMAND, TK_WHILE}, {END_COMMAND, TK_WHILE}, {END_COMMAND, TK_UNTIL}, {END_COMMAND, TK_DO}, @@ -279,6 +315,8 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_ELIF}, {END_COMMAND, TK_ELSE}, {END_COMMAND, LINEBREAK}, + {END_COMMAND, COMPLETE_COMMANDS}, + {END_COMMAND, COMPOUND_LIST}, {END_COMMAND, COMPOUND_LIST}, {END_COMMAND, COMPLETE_CONDITION}, {SEPARATOR, CMD_SUPERIOR}, @@ -291,6 +329,8 @@ t_stackmatch g_stackmatch[] = {SEPARATOR_OP, COMPOUND_LIST}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, {LINEBREAK, TK_SEMI}, + {LINEBREAK, END_COMMAND}, + {LINEBREAK, SEPARATOR_OP}, {LINEBREAK, SEPARATOR_OP}, {LINEBREAK, TK_PAREN_CLOSE}, {LINEBREAK, WORD}, @@ -322,6 +362,8 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, COMPLETE_COMMANDS}, {NEWLINE_LIST, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION}, + {NEWLINE_LIST, LINEBREAK}, + {HERE_END, TK_DLESS}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESSDASH}, {IO_HERE, TK_IO_NUMBER}, @@ -332,6 +374,8 @@ t_stackmatch g_stackmatch[] = {IO_HERE, CMD_WORD}, {IO_HERE, CMD_NAME}, {IO_HERE, LINEBREAK}, + {IO_HERE, COMPLETE_COMMANDS}, + {IO_HERE, TK_BANG}, {IO_HERE, TK_BANG}, {IO_HERE, SEPARATOR_OP}, {IO_HERE, NEWLINE_LIST}, @@ -351,6 +395,8 @@ t_stackmatch g_stackmatch[] = {IO_FILE, CMD_WORD}, {IO_FILE, CMD_NAME}, {IO_FILE, LINEBREAK}, + {IO_FILE, COMPLETE_COMMANDS}, + {IO_FILE, TK_BANG}, {IO_FILE, TK_BANG}, {IO_FILE, SEPARATOR_OP}, {IO_FILE, NEWLINE_LIST}, @@ -362,6 +408,8 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, CMD_WORD}, {IO_REDIRECT, CMD_NAME}, {IO_REDIRECT, LINEBREAK}, + {IO_REDIRECT, COMPLETE_COMMANDS}, + {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, SEPARATOR_OP}, {IO_REDIRECT, NEWLINE_LIST}, @@ -371,13 +419,17 @@ t_stackmatch g_stackmatch[] = {CMD_SUFFIX, CMD_NAME}, {CMD_SUFFIX, CMD_SUPERIOR}, {CMD_PREFIX, LINEBREAK}, + {CMD_PREFIX, COMPLETE_COMMANDS}, + {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, {CMD_PREFIX, NEWLINE_LIST}, {CMD_PREFIX, PIPE_SEMI_SEQUENCE}, {CMD_WORD, CMD_PREFIX}, + {CMD_NAME, COMPLETE_COMMANDS}, {CMD_NAME, LINEBREAK}, {CMD_NAME, TK_BANG}, + {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, PIPE_SEMI_SEQUENCE}, @@ -401,7 +453,9 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, TK_ELSE}, {CMD_SUPERIOR, COMPOUND_LIST}, {CMD_SUPERIOR, COMPLETE_CONDITION}, - {CMD_SUPERIOR, LINEBREAK,}, + {CMD_SUPERIOR, LINEBREAK}, + {CMD_SUPERIOR, COMPLETE_COMMANDS}, + {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, {CMD_SUPERIOR, NEWLINE_LIST}, @@ -419,6 +473,8 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, COMPOUND_LIST}, {SIMPLE_COMMAND, COMPLETE_CONDITION}, {SIMPLE_COMMAND, LINEBREAK}, + {SIMPLE_COMMAND, COMPLETE_COMMANDS}, + {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, @@ -431,27 +487,39 @@ t_stackmatch g_stackmatch[] = {LOOP, TK_WHILE}, {LOOP, TK_UNTIL}, {CONDITION, LINEBREAK}, + {CONDITION, COMPLETE_COMMANDS}, + {CONDITION, COMPOUND_LIST}, {CONDITION, COMPOUND_LIST}, {CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, LINEBREAK}, + {COMPLETE_CONDITION, COMPLETE_COMMANDS}, + {COMPLETE_CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, COMPLETE_CONDITION}, {BRACE_GROUP, LINEBREAK}, + {BRACE_GROUP, COMPLETE_COMMANDS}, + {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, {BRACE_GROUP, NEWLINE_LIST}, {BRACE_GROUP, PIPE_SEMI_SEQUENCE}, {FNAME, LINEBREAK}, + {FNAME, COMPLETE_COMMANDS}, + {FNAME, TK_BANG}, {FNAME, TK_BANG}, {FNAME, SEPARATOR_OP}, {FNAME, NEWLINE_LIST}, {FNAME, PIPE_SEMI_SEQUENCE}, {FUNCTION_BODY, FUNC}, {FUNCTION_DEFINITION, LINEBREAK}, + {FUNCTION_DEFINITION, COMPLETE_COMMANDS}, + {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, SEPARATOR_OP}, {FUNCTION_DEFINITION, NEWLINE_LIST}, {FUNCTION_DEFINITION, PIPE_SEMI_SEQUENCE}, {UNTIL_CLAUSE, LINEBREAK}, + {UNTIL_CLAUSE, COMPLETE_COMMANDS}, + {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, @@ -466,6 +534,8 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, COMPOUND_LIST}, {UNTIL_CLAUSE, COMPLETE_CONDITION}, {WHILE_CLAUSE, LINEBREAK}, + {WHILE_CLAUSE, COMPLETE_COMMANDS}, + {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, NEWLINE_LIST}, @@ -482,6 +552,8 @@ t_stackmatch g_stackmatch[] = // {ELSE_PART, COMPOUND_LIST}, // {ELSE_PART, COMPLETE_CONDITION}, {IF_CLAUSE, LINEBREAK}, + {IF_CLAUSE, COMPLETE_COMMANDS}, + {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, NEWLINE_LIST}, @@ -508,6 +580,8 @@ t_stackmatch g_stackmatch[] = {CASE_LIST, LINEBREAK}, {CASE_LIST_NS, LINEBREAK}, {CASE_CLAUSE, LINEBREAK}, + {CASE_CLAUSE, COMPLETE_COMMANDS}, + {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, SEPARATOR_OP}, {CASE_CLAUSE, NEWLINE_LIST}, @@ -516,11 +590,15 @@ t_stackmatch g_stackmatch[] = {IN, LINEBREAK}, {NAME, TK_FOR}, {FOR_CLAUSE, LINEBREAK}, + {FOR_CLAUSE, COMPLETE_COMMANDS}, + {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, SEPARATOR_OP}, {FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, PIPE_SEMI_SEQUENCE}, {TERM, LINEBREAK}, + {TERM, COMPLETE_COMMANDS}, + {COMPOUND_LIST, TK_DO}, {COMPOUND_LIST, TK_DO}, {COMPOUND_LIST, TK_LBRACE}, {COMPOUND_LIST, TK_WHILE}, @@ -533,11 +611,15 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, COMPOUND_LIST}, {COMPOUND_LIST, COMPLETE_CONDITION}, {SUBSHELL, LINEBREAK}, + {SUBSHELL, COMPLETE_COMMANDS}, + {SUBSHELL, TK_BANG}, {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, {SUBSHELL, NEWLINE_LIST}, {SUBSHELL, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, LINEBREAK}, + {COMPOUND_COMMAND, COMPLETE_COMMANDS}, + {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, SEPARATOR_OP}, {COMPOUND_COMMAND, NEWLINE_LIST}, @@ -555,6 +637,8 @@ t_stackmatch g_stackmatch[] = {COMMAND, TK_WHILE}, {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, + {COMMAND, COMPLETE_COMMANDS}, + {COMMAND, TK_DO}, {COMMAND, TK_DO}, {COMMAND, TK_IF}, {COMMAND, TK_ELIF}, @@ -569,6 +653,8 @@ t_stackmatch g_stackmatch[] = {COMMAND, AND_OR_MAJOR}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK}, + {AND_OR_MINOR, COMPLETE_COMMANDS}, + {AND_OR_MINOR, AND_OR_MAJOR}, {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, TK_UNTIL}, @@ -580,6 +666,8 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, COMPOUND_LIST}, {PIPE_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEQUENCE, LINEBREAK}, + {PIPE_SEQUENCE, COMPLETE_COMMANDS}, + {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, NEWLINE_LIST}, @@ -594,6 +682,8 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, COMPOUND_LIST}, {PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, + {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, + {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, @@ -608,10 +698,14 @@ t_stackmatch g_stackmatch[] = {PIPELINE, COMPOUND_LIST}, {PIPELINE, COMPLETE_CONDITION}, {PIPELINE, LINEBREAK}, + {PIPELINE, COMPLETE_COMMANDS}, + {PIPELINE, SEPARATOR_OP}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, {PIPELINE, AND_OR_MAJOR}, {AND_OR_MAJOR, LINEBREAK}, + {AND_OR_MAJOR, COMPLETE_COMMANDS}, + {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO}, {AND_OR, TK_WHILE}, @@ -623,13 +717,18 @@ t_stackmatch g_stackmatch[] = {AND_OR, COMPOUND_LIST}, {AND_OR, COMPLETE_CONDITION}, {AND_OR, LINEBREAK}, + {AND_OR, COMPLETE_COMMANDS}, + {AND_OR, SEPARATOR_OP}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, {LIST, LINEBREAK}, + {LIST, COMPLETE_COMMANDS}, {LIST, NEWLINE_LIST}, {COMPLETE_COMMAND, LINEBREAK}, + {COMPLETE_COMMAND, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, NEWLINE_LIST}, {COMPLETE_COMMANDS, LINEBREAK}, + {COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {0, 0}, }; diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index f54351ed..42f0b249 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -21,7 +21,8 @@ static void insert_linebreak(t_list **lst) static int end_instruction(t_sym sym) { - if (sym == CMD_SUPERIOR || sym == PIPE_SEMI_SEQUENCE) + if (sym == CMD_SUPERIOR || sym == PIPE_SEMI_SEQUENCE + || sym == COMPLETE_COMMANDS || sym == END_COMMAND) return (1); return (0); } @@ -29,6 +30,8 @@ static int end_instruction(t_sym sym) int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { (void)ast; + if (parser->state == SUCCESS || parser->state == ERROR) + parser_init(parser); while (*token) { produce_sym(*parser->stack, parser->new_sym, token); @@ -49,7 +52,6 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) // build_tree(ast, token); // btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*parser->stack) && !(*token)->next)) - /* || *parser->stack == PROGRAM) */ insert_linebreak(token); else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 9164cb58..9722088f 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -46,6 +46,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, TK_IN, PATTERN}, {TK_WORD, CASE_LIST, PATTERN}, {TK_WORD, TK_PAREN_OPEN, PATTERN}, + {TK_WORD, COMPLETE_COMMANDS, CMD_NAME}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, diff --git a/42sh/test.sh b/42sh/test.sh new file mode 100644 index 00000000..b113c751 --- /dev/null +++ b/42sh/test.sh @@ -0,0 +1,2 @@ +> > +ls | cat From 7a849b360a0905df445e2990c7ce952388028475 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 22 Feb 2017 18:36:42 +0100 Subject: [PATCH 087/206] syntax error + coordination parser etat --- 42sh/test.sh | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 42sh/test.sh diff --git a/42sh/test.sh b/42sh/test.sh deleted file mode 100644 index b113c751..00000000 --- a/42sh/test.sh +++ /dev/null @@ -1,2 +0,0 @@ -> > -ls | cat From 2fbea4837d4b524b88f45544ab9d6235c613e164 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 22 Feb 2017 19:50:29 +0100 Subject: [PATCH 088/206] gramamr for --- 42sh/includes/parser.h | 1 + 42sh/src/lexer/get_reserved_words.c | 6 +++++- 42sh/src/lexer/insert_newline.c | 1 + 42sh/src/main/main.c | 7 ++++--- 42sh/src/parser/aggregate_sym.c | 9 +++++++-- 42sh/src/parser/eval_sym.c | 27 +++++++++++++++++++++++---- 42sh/src/parser/produce_sym.c | 4 +++- 42sh/src/parser/read_stack.c | 10 ++++++++++ 8 files changed, 54 insertions(+), 11 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 503a37f9..66f9a5cd 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -126,6 +126,7 @@ enum e_sym END_COMMAND, CONDITION, COMPLETE_CONDITION, + FOR_WORDLIST, ALL = 200, }; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 84c2f493..0dc99e4b 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -49,11 +49,15 @@ int get_reserved_words(t_list **alst) token->type = TK_UNTIL; else if (ft_strncmp(token->data, "case", 4) == 0) token->type = TK_CASE; + else if (ft_strncmp(token->data, "for", 3) == 0) + token->type = TK_FOR; } } - if (ante_token && ante_token->type == TK_CASE + if (ante_token && (ante_token->type == TK_CASE || ante_token->type == TK_FOR) && ft_strncmp(token->data, "in", 2) == 0) token->type = TK_IN; + if (previous_token && previous_token->type == TK_FOR && token->type == TK_WORD) + token->type = TK_NAME; ante_token = previous_token; previous_token = token; temp = temp->next; diff --git a/42sh/src/lexer/insert_newline.c b/42sh/src/lexer/insert_newline.c index 1057c24e..ea17e055 100644 --- a/42sh/src/lexer/insert_newline.c +++ b/42sh/src/lexer/insert_newline.c @@ -16,6 +16,7 @@ int insert_newline(t_list **alst) { t_token *token; + DG("insert newline"); token = token_init(); token->type = TK_NEWLINE; ft_lsteadd(alst, ft_lstnew(token, sizeof(*token))); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index e75da56e..5c98209b 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -30,7 +30,6 @@ int handle_instruction(int fd) DG("START: state=%i", parser.state); while (1) { - DG("get input"); if ((ret = readline(fd, get_lexer_stack(lexer), &str))) { if (ret == -1) @@ -48,7 +47,7 @@ int handle_instruction(int fd) if (get_lexer_stack(lexer)) continue ; lexer.state = DEFAULT; -// token_print(token); + token_print(token); if (get_reserved_words(&token)) return (1); if (insert_newline(&token)) @@ -57,7 +56,9 @@ int handle_instruction(int fd) continue ; if (parser.state == SUCCESS) break ; - else if (parser.state == ERROR) + else if (parser.state == ERROR && !SH_IS_INTERACTIVE(data_singleton()->opts)) + return (error_syntax(&token)); + else if (parser.state == ERROR) error_syntax(&token); token = NULL; } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 788623aa..06546c3b 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -16,7 +16,9 @@ t_aggrematch g_aggrematch[] = { {TK_WORD, CMD_SUFFIX, CMD_SUFFIX, 0}, {TK_WORD, TK_PIPE, PATTERN, 0}, - {TK_WORD, WORDLIST, WORDLIST, 0}, + {TK_WORD, TK_IN, FOR_WORDLIST, TK_IN}, + {TK_WORD, FOR_WORDLIST, FOR_WORDLIST, FOR_WORDLIST}, + {TK_SEMI, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, @@ -57,6 +59,8 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, + {NEWLINE_LIST, SEQUENTIAL_SEP, SEQUENTIAL_SEP, SEQUENTIAL_SEP}, + {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, {NEWLINE_LIST, TK_IN, TK_IN, TK_IN}, {NEWLINE_LIST, TK_THEN, TK_THEN, TK_THEN}, @@ -68,13 +72,13 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0}, - {NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, TERM, SEPARATOR, 0}, {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0}, {NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION, CONDITION, CONDITION}, {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, {NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK}, + {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, //to check {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, @@ -135,6 +139,7 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, {SIMPLE_COMMAND, ALL, COMMAND, 0}, {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, + {DO_GROUP, IN, FOR_CLAUSE, TK_FOR}, {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, TK_FOR}, {DO_GROUP, CMD_SUPERIOR, LOOP, CMD_SUPERIOR}, {DO_GROUP, COMPOUND_LIST, LOOP, COMPOUND_LIST}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 8bbcb499..bfb3137c 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -19,6 +19,8 @@ t_stackmatch g_stackmatch[] = {TK_WORD, WORDLIST}, {TK_WORD, LINEBREAK}, {TK_WORD, COMPLETE_COMMANDS}, + {TK_WORD, TK_IN}, + {TK_WORD, FOR_WORDLIST}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, {TK_IO_NUMBER, REDIRECT_LIST}, {TK_IO_NUMBER, CMD_SUFFIX}, @@ -226,13 +228,13 @@ t_stackmatch g_stackmatch[] = {TK_CASE, SEPARATOR_OP}, {TK_CASE, PIPE_SEMI_SEQUENCE}, {TK_IN, TK_WORD}, + {TK_IN, NAME}, {TK_ESAC, CASE_LIST}, {TK_ESAC, CASE_LIST_NS}, {TK_ESAC, LINEBREAK}, {TK_WHILE, LINEBREAK}, {TK_WHILE, COMPLETE_COMMANDS}, {TK_WHILE, TK_BANG}, - {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, PIPE_SEMI_SEQUENCE}, @@ -264,10 +266,16 @@ t_stackmatch g_stackmatch[] = {TK_FOR, SEPARATOR_OP}, {TK_FOR, NEWLINE_LIST}, {TK_FOR, PIPE_SEMI_SEQUENCE}, + {TK_FOR, TK_DO}, + {TK_FOR, TK_WHILE}, + {TK_FOR, COMPOUND_LIST}, + {TK_FOR, TK_IF}, + {TK_FOR, TK_ELIF}, + {TK_FOR, TK_THEN}, + {TK_FOR, COMPLETE_CONDITION}, {TK_LBRACE, LINEBREAK}, {TK_LBRACE, COMPLETE_COMMANDS}, {TK_LBRACE, TK_BANG}, - {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, PIPE_SEMI_SEQUENCE}, @@ -285,6 +293,7 @@ t_stackmatch g_stackmatch[] = {TK_SEMI, TERM}, {TK_SEMI, CMD_NAME}, {TK_SEMI, PROGRAM}, + {TK_SEMI, FOR_WORDLIST}, {TK_AMP, LIST}, {TK_AMP, TERM}, {TK_PIPE, PATTERN}, @@ -345,6 +354,8 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, COMPOUND_LIST}, {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, + {NEWLINE_LIST, SEQUENTIAL_SEP}, + {NEWLINE_LIST, FOR_WORDLIST}, {NEWLINE_LIST, TK_IN}, {NEWLINE_LIST, TK_WHILE}, {NEWLINE_LIST, TK_UNTIL}, @@ -536,7 +547,6 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, COMPLETE_COMMANDS}, {WHILE_CLAUSE, TK_BANG}, - {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, @@ -554,7 +564,6 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, COMPLETE_COMMANDS}, {IF_CLAUSE, TK_BANG}, - {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, NEWLINE_LIST}, {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, @@ -589,6 +598,7 @@ t_stackmatch g_stackmatch[] = {WORDLIST, IN}, {IN, LINEBREAK}, {NAME, TK_FOR}, + {FOR_WORDLIST, NAME}, {FOR_CLAUSE, LINEBREAK}, {FOR_CLAUSE, COMPLETE_COMMANDS}, {FOR_CLAUSE, TK_BANG}, @@ -596,6 +606,15 @@ t_stackmatch g_stackmatch[] = {FOR_CLAUSE, SEPARATOR_OP}, {FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, PIPE_SEMI_SEQUENCE}, + {FOR_CLAUSE, TK_DO}, + {FOR_CLAUSE, TK_WHILE}, + {FOR_CLAUSE, TK_UNTIL}, + {FOR_CLAUSE, TK_IF}, + {FOR_CLAUSE, TK_ELIF}, + {FOR_CLAUSE, TK_THEN}, + {FOR_CLAUSE, TK_ELSE}, + {FOR_CLAUSE, COMPOUND_LIST}, + {FOR_CLAUSE, COMPLETE_CONDITION}, {TERM, LINEBREAK}, {TERM, COMPLETE_COMMANDS}, {COMPOUND_LIST, TK_DO}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 9722088f..75d3329a 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -43,7 +43,6 @@ t_prodmatch g_prodmatch[] = {TK_WORD, TK_BANG, CMD_NAME}, {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, {TK_WORD, SEPARATOR_OP, CMD_NAME}, - {TK_WORD, TK_IN, PATTERN}, {TK_WORD, CASE_LIST, PATTERN}, {TK_WORD, TK_PAREN_OPEN, PATTERN}, {TK_WORD, COMPLETE_COMMANDS, CMD_NAME}, @@ -73,6 +72,9 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_CONDITION, NEWLINE_LIST}, {TK_NEWLINE, CONDITION, NEWLINE_LIST}, + {TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST}, + {TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST}, + {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 2806b159..35b9399e 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,16 @@ char *read_state(t_sym current) { + if (current == FOR_WORDLIST) + return ("FOR_WORDLIST"); + if (current == FOR_CLAUSE) + return ("FOR_CLAUSE"); + if (current == TK_NAME) + return ("TK_NAME"); + if (current == TK_FOR) + return ("FOR"); + if (current == NAME) + return ("NAME"); if (current == 0) return ("NULL"); if (current == PATTERN) From 50da96bbd689a559b129422d98fb1afcbdd21689 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 22 Feb 2017 20:25:51 +0100 Subject: [PATCH 089/206] on a retrpuve la compagnie TK_PAREN --- 42sh/includes/lexer.h | 4 ++-- 42sh/src/parser/read_stack.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 28b0962a..61c31a2c 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -39,9 +39,9 @@ enum e_lexstate BQUOTE, DQUOTE_BQUOTE, BACKSLASH, - VAR, - SPECIAL, PAREN, +// VAR, +// SPECIAL, COMMENT, END, }; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 35b9399e..8b262b95 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,10 @@ char *read_state(t_sym current) { + if (current == TK_PAREN_OPEN) + return ("TK_PAREN_OPEN"); + if (current == TK_PAREN_CLOSE) + return ("TK_PAREN_CLOSE"); if (current == FOR_WORDLIST) return ("FOR_WORDLIST"); if (current == FOR_CLAUSE) From 03238b20421f3ca7aad6295f6c6e1ec63bf33bc5 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Wed, 22 Feb 2017 22:04:45 +0100 Subject: [PATCH 090/206] fucking case grammar done --- 42sh/sample/case/case.sh | 16 +++-- 42sh/src/lexer/get_reserved_words.c | 2 + 42sh/src/lexer/lexer_sep.c | 1 + 42sh/src/parser/aggregate_sym.c | 35 ++++++++--- 42sh/src/parser/eval_sym.c | 96 ++++++++++++++++++++++++----- 42sh/src/parser/produce_sym.c | 5 ++ 42sh/src/parser/read_stack.c | 6 ++ 7 files changed, 131 insertions(+), 30 deletions(-) diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index 3828871c..f84e34fc 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -1,8 +1,12 @@ case $rental in - "cat") echo "For $rental rental is Rs.20 per k/m.";; - "van") echo "For $rental rental is Rs.10 per k/m.";; - "jeep") echo "For $rental rental is Rs.5 per k/m.";; - "bicycle") echo "For $rental rental 20 paisa per k/m.";; - "enfield") echo "For $rental rental Rs.3 per k/m.";; - "thunderbird") echo "For $rental rental Rs.5 per k/m.";; + ("bus") case yolo in + ("bonjour") echo hello ;; + ("hello") echo bonjour ;; + esac + case yala in + ("bonjour") echo hello ;; + ("hello") echo yolo ;; + esac ;; + ("van") echo "For $rental rental is Rs.10 per k/m.";; + ("jeep") echo "For $rental rental is Rs.5 per k/m.";; esac diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 0dc99e4b..139d4c1f 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -49,6 +49,8 @@ int get_reserved_words(t_list **alst) token->type = TK_UNTIL; else if (ft_strncmp(token->data, "case", 4) == 0) token->type = TK_CASE; + else if (ft_strncmp(token->data, "esac", 4) == 0) + token->type = TK_ESAC; else if (ft_strncmp(token->data, "for", 3) == 0) token->type = TK_FOR; } diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index eb4420a6..08fb1d1a 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -38,6 +38,7 @@ int lexer_sep(t_list **alst, t_lexer *lexer) else if (c == '|') token->type = cn == '|' ? TK_OR_IF : TK_PIPE; token->type = (c == ';') ? TK_SEMI : token->type; + token->type = (c == ';') && (cn == ';') ? TK_DSEMI : token->type; lexer->pos += 1 + (token->type & (TK_AND_IF | TK_OR_IF) ? 1 : 0); return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 06546c3b..1ba587c6 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -18,7 +18,8 @@ t_aggrematch g_aggrematch[] = {TK_WORD, TK_PIPE, PATTERN, 0}, {TK_WORD, TK_IN, FOR_WORDLIST, TK_IN}, {TK_WORD, FOR_WORDLIST, FOR_WORDLIST, FOR_WORDLIST}, - {TK_SEMI, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, + {TK_SEMI, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, + {TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, @@ -29,9 +30,8 @@ t_aggrematch g_aggrematch[] = {TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO}, {TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO}, //Esac ? - {TK_ESAC, CASE_LIST, CASE_CLAUSE, TK_CASE}, + {TK_ESAC, TK_IN, CASE_CLAUSE, TK_CASE}, {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, - {TK_ESAC, LINEBREAK, CASE_CLAUSE, TK_CASE}, {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, TK_LBRACE}, {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, @@ -39,8 +39,10 @@ t_aggrematch g_aggrematch[] = //watch this {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, + {SEPARATOR_OP, CASE_LIST_NS, SEPARATOR, 0}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE, SEPARATOR, 0}, {SEPARATOR, CMD_SUPERIOR, END_COMMAND, CMD_SUPERIOR}, + {SEPARATOR, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {SEPARATOR, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, @@ -57,11 +59,12 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, CMD_SUPERIOR, SEPARATOR_OP, 0}, {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, + {LINEBREAK, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, SEQUENTIAL_SEP, SEQUENTIAL_SEP, SEQUENTIAL_SEP}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, - {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, + {NEWLINE_LIST, TK_PAREN_CLOSE, TK_PAREN_CLOSE, TK_PAREN_CLOSE}, {NEWLINE_LIST, TK_IN, TK_IN, TK_IN}, {NEWLINE_LIST, TK_THEN, TK_THEN, TK_THEN}, {NEWLINE_LIST, TK_IF, TK_IF, TK_IF}, @@ -69,11 +72,13 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, TK_ELSE, TK_ELSE, TK_ELSE}, {NEWLINE_LIST, TK_WHILE, TK_WHILE, TK_WHILE}, {NEWLINE_LIST, TK_UNTIL, TK_UNTIL, TK_UNTIL}, + {NEWLINE_LIST, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE}, {NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, TERM, SEPARATOR, 0}, {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0}, + {NEWLINE_LIST, CASE_LIST_NS, SEPARATOR, 0}, {NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION, CONDITION, CONDITION}, {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, @@ -128,11 +133,13 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_UNTIL, CMD_SUPERIOR, 0}, {CMD_NAME, TK_DO, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_PAREN_CLOSE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_IF, CMD_SUPERIOR, 0}, {CMD_NAME, TK_ELIF, CMD_SUPERIOR, 0}, {CMD_NAME, TK_ELSE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_THEN, CMD_SUPERIOR, 0}, {CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0}, + {CMD_NAME, CASE_LIST_NS, CMD_SUPERIOR, 0}, {CMD_NAME, COMPLETE_CONDITION, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, @@ -153,21 +160,19 @@ t_aggrematch g_aggrematch[] = // {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF}, // {ELSE_PART, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, ALL, COMPOUND_COMMAND, 0}, - {PATTERN, TK_PAREN_OPEN, PATTERN_CASE, TK_PAREN_OPEN}, {PATTERN, CASE_LIST, PATTERN_CASE, 0}, - {CASE_ITEM, CASE_LIST, CASE_LIST, CASE_LIST}, - {CASE_ITEM, LINEBREAK, CASE_LIST, CASE_LIST}, - {CASE_ITEM_NS, CASE_LIST, CASE_LIST_NS, CASE_LIST}, - {CASE_ITEM_NS, LINEBREAK, CASE_LIST_NS, CASE_LIST}, + {CASE_LIST_NS, TK_IN, TK_IN, TK_IN}, {CASE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK}, // {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, {COMPOUND_LIST, TK_IF, CONDITION, TK_IF}, {COMPOUND_LIST, TK_THEN, CONDITION, TK_THEN}, + {COMPOUND_LIST, TK_PAREN_CLOSE, CASE_LIST_NS, TK_PAREN_OPEN}, {COMPOUND_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, // {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, {COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, + {COMPOUND_LIST, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, @@ -176,9 +181,11 @@ t_aggrematch g_aggrematch[] = {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, CASE_LIST_NS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_UNTIL, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_DO, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_IF, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_THEN, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_ELIF, PIPE_SEMI_SEQUENCE, 0}, @@ -199,13 +206,14 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPLETE_COMMANDS, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, - {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_PAREN_CLOSE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_IF, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_THEN, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_ELSE, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPLETE_CONDITION, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, + {END_COMMAND, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_UNTIL, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, @@ -215,20 +223,25 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_PAREN_CLOSE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_IF, PIPELINE, 0}, {PIPE_SEQUENCE, TK_ELIF, PIPELINE, 0}, {PIPE_SEQUENCE, TK_THEN, PIPELINE, 0}, {PIPE_SEQUENCE, TK_ELSE, PIPELINE, 0}, {PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0}, + {PIPE_SEQUENCE, CASE_LIST_NS, PIPELINE, 0}, {PIPE_SEQUENCE, COMPLETE_CONDITION, PIPELINE, 0}, {PIPELINE, TK_WHILE, AND_OR, 0}, {PIPELINE, TK_UNTIL, AND_OR, 0}, {PIPELINE, TK_DO, AND_OR, 0}, + {PIPELINE, TK_PAREN_CLOSE, AND_OR, 0}, + {PIPELINE, TK_IF, AND_OR, 0}, {PIPELINE, TK_IF, AND_OR, 0}, {PIPELINE, TK_ELIF, AND_OR, 0}, {PIPELINE, TK_THEN, AND_OR, 0}, {PIPELINE, TK_ELSE, AND_OR, 0}, {PIPELINE, COMPOUND_LIST, AND_OR, 0}, + {PIPELINE, CASE_LIST_NS, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, {PIPELINE, COMPLETE_COMMANDS, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, @@ -237,6 +250,7 @@ t_aggrematch g_aggrematch[] = {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO, COMPOUND_LIST, 0}, + {AND_OR, TK_PAREN_CLOSE, COMPOUND_LIST, 0}, {AND_OR, TK_WHILE, COMPOUND_LIST, 0}, {AND_OR, TK_UNTIL, COMPOUND_LIST, 0}, {AND_OR, TK_IF, COMPOUND_LIST, 0}, @@ -244,6 +258,7 @@ t_aggrematch g_aggrematch[] = {AND_OR, TK_THEN, COMPOUND_LIST, 0}, {AND_OR, TK_ELSE, COMPOUND_LIST, 0}, {AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0}, + {AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0}, {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index bfb3137c..ad767ee5 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -43,6 +43,8 @@ t_stackmatch g_stackmatch[] = {TK_DSEMI, LINEBREAK}, {TK_DSEMI, COMPLETE_COMMANDS}, {TK_DSEMI, COMPOUND_LIST}, + {TK_DSEMI, CASE_LIST_NS}, + {TK_DSEMI, PIPE_SEMI_SEQUENCE}, {TK_LESS, TK_IO_NUMBER}, {TK_LESS, REDIRECT_LIST}, {TK_LESS, CMD_SUFFIX}, @@ -185,9 +187,9 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, + {TK_IF, TK_PAREN_CLOSE}, {TK_IF, COMPLETE_COMMANDS}, {TK_IF, TK_BANG}, - {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, {TK_IF, NEWLINE_LIST}, {TK_IF, PIPE_SEMI_SEQUENCE}, @@ -196,9 +198,12 @@ t_stackmatch g_stackmatch[] = {TK_IF, TK_IF}, {TK_IF, TK_DO}, {TK_IF, TK_ELIF}, + {TK_IF, TK_ELSE}, {TK_IF, TK_THEN}, + {TK_IF, TK_PAREN_CLOSE}, {TK_IF, COMPLETE_CONDITION}, {TK_IF, COMPOUND_LIST}, + {TK_IF, CASE_LIST_NS}, {TK_THEN, CONDITION}, {TK_THEN, COMPOUND_LIST}, {TK_ELSE, COMPOUND_LIST}, @@ -223,15 +228,25 @@ t_stackmatch g_stackmatch[] = {TK_CASE, LINEBREAK}, {TK_CASE, COMPLETE_COMMANDS}, {TK_CASE, TK_BANG}, - {TK_CASE, TK_BANG}, + {TK_CASE, TK_DO}, + {TK_CASE, TK_THEN}, + {TK_CASE, TK_PAREN_CLOSE}, + {TK_CASE, TK_WHILE}, + {TK_CASE, TK_UNTIL}, + {TK_CASE, TK_IF}, + {TK_CASE, TK_ELIF}, + {TK_CASE, TK_ELSE}, + {TK_CASE, COMPLETE_CONDITION}, + {TK_CASE, CASE_LIST_NS}, + {TK_CASE, COMPOUND_LIST}, {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, {TK_CASE, PIPE_SEMI_SEQUENCE}, {TK_IN, TK_WORD}, {TK_IN, NAME}, - {TK_ESAC, CASE_LIST}, {TK_ESAC, CASE_LIST_NS}, {TK_ESAC, LINEBREAK}, + {TK_ESAC, TK_IN}, {TK_WHILE, LINEBREAK}, {TK_WHILE, COMPLETE_COMMANDS}, {TK_WHILE, TK_BANG}, @@ -239,25 +254,32 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, NEWLINE_LIST}, {TK_WHILE, PIPE_SEMI_SEQUENCE}, {TK_WHILE, TK_DO}, + {TK_WHILE, TK_PAREN_CLOSE}, {TK_WHILE, TK_WHILE}, {TK_WHILE, COMPOUND_LIST}, + {TK_WHILE, CASE_LIST_NS}, {TK_WHILE, TK_IF}, {TK_WHILE, TK_ELIF}, + {TK_WHILE, TK_ELSE}, + {TK_WHILE, TK_PAREN_CLOSE}, {TK_WHILE, TK_THEN}, {TK_WHILE, COMPLETE_CONDITION}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, COMPLETE_COMMANDS}, {TK_UNTIL, TK_BANG}, - {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, NEWLINE_LIST}, {TK_UNTIL, PIPE_SEMI_SEQUENCE}, {TK_UNTIL, TK_DO}, + {TK_UNTIL, TK_PAREN_CLOSE}, {TK_UNTIL, TK_WHILE}, {TK_UNTIL, COMPOUND_LIST}, + {TK_UNTIL, CASE_LIST_NS}, {TK_UNTIL, TK_IF}, {TK_UNTIL, TK_ELIF}, + {TK_UNTIL, TK_ELSE}, {TK_UNTIL, TK_THEN}, + {TK_UNTIL, TK_PAREN_CLOSE}, {TK_UNTIL, COMPLETE_CONDITION}, {TK_FOR, LINEBREAK}, {TK_FOR, COMPLETE_COMMANDS}, @@ -267,11 +289,15 @@ t_stackmatch g_stackmatch[] = {TK_FOR, NEWLINE_LIST}, {TK_FOR, PIPE_SEMI_SEQUENCE}, {TK_FOR, TK_DO}, + {TK_FOR, TK_PAREN_CLOSE}, {TK_FOR, TK_WHILE}, {TK_FOR, COMPOUND_LIST}, + {TK_FOR, CASE_LIST_NS}, {TK_FOR, TK_IF}, {TK_FOR, TK_ELIF}, {TK_FOR, TK_THEN}, + {TK_FOR, TK_ELSE}, + {TK_FOR, TK_PAREN_CLOSE}, {TK_FOR, COMPLETE_CONDITION}, {TK_LBRACE, LINEBREAK}, {TK_LBRACE, COMPLETE_COMMANDS}, @@ -280,6 +306,7 @@ t_stackmatch g_stackmatch[] = {TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, PIPE_SEMI_SEQUENCE}, {TK_RBRACE, COMPOUND_LIST}, + {TK_RBRACE, CASE_LIST_NS}, {TK_BANG, LINEBREAK}, {TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, SEPARATOR_OP}, @@ -299,6 +326,8 @@ t_stackmatch g_stackmatch[] = {TK_PIPE, PATTERN}, {TK_PIPE, CMD_SUPERIOR}, {TK_PAREN_OPEN, FNAME}, + {TK_PAREN_OPEN, CASE_LIST_NS}, + {TK_PAREN_OPEN, TK_IN}, {TK_PAREN_OPEN, CASE_LIST}, {TK_PAREN_OPEN, LINEBREAK}, {TK_PAREN_OPEN, COMPLETE_COMMANDS}, @@ -319,6 +348,7 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_WHILE}, {END_COMMAND, TK_UNTIL}, {END_COMMAND, TK_DO}, + {END_COMMAND, TK_PAREN_CLOSE}, {END_COMMAND, TK_IF}, {END_COMMAND, TK_THEN}, {END_COMMAND, TK_ELIF}, @@ -326,15 +356,17 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, LINEBREAK}, {END_COMMAND, COMPLETE_COMMANDS}, {END_COMMAND, COMPOUND_LIST}, - {END_COMMAND, COMPOUND_LIST}, + {END_COMMAND, CASE_LIST_NS}, {END_COMMAND, COMPLETE_CONDITION}, {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, + {SEPARATOR, CASE_LIST_NS}, {SEPARATOR, PIPE_SEMI_SEQUENCE}, {SEPARATOR_OP, CMD_SUPERIOR}, {SEPARATOR_OP, LIST}, {SEPARATOR_OP, TERM}, + {SEPARATOR_OP, CASE_LIST_NS}, {SEPARATOR_OP, COMPOUND_LIST}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, {LINEBREAK, TK_SEMI}, @@ -352,8 +384,11 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, CMD_SUPERIOR}, {LINEBREAK, PIPE_SEMI_SEQUENCE}, {LINEBREAK, COMPOUND_LIST}, + {LINEBREAK, CASE_LIST_NS}, {LINEBREAK, PROGRAM}, {NEWLINE_LIST, TK_DO}, + {NEWLINE_LIST, CASE_LIST_NS}, + {NEWLINE_LIST, TK_PAREN_CLOSE}, {NEWLINE_LIST, SEQUENTIAL_SEP}, {NEWLINE_LIST, FOR_WORDLIST}, {NEWLINE_LIST, TK_IN}, @@ -370,6 +405,7 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, WORDLIST}, {NEWLINE_LIST, TERM}, {NEWLINE_LIST, COMPOUND_LIST}, + {NEWLINE_LIST, CASE_LIST_NS}, {NEWLINE_LIST, COMPLETE_COMMANDS}, {NEWLINE_LIST, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION}, @@ -448,21 +484,25 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_WHILE}, {CMD_NAME, TK_UNTIL}, {CMD_NAME, TK_DO}, + {CMD_NAME, TK_PAREN_CLOSE}, {CMD_NAME, TK_IF}, {CMD_NAME, TK_ELIF}, {CMD_NAME, TK_THEN}, {CMD_NAME, TK_ELSE}, {CMD_NAME, COMPOUND_LIST}, + {CMD_NAME, CASE_LIST_NS}, {CMD_NAME, COMPLETE_CONDITION}, {CMD_SUPERIOR, TK_WHILE}, {CMD_SUPERIOR, TK_UNTIL}, {CMD_SUPERIOR, TK_DO}, + {CMD_SUPERIOR, TK_PAREN_CLOSE}, {CMD_SUPERIOR, TK_IF}, {CMD_SUPERIOR, TK_ELIF}, {CMD_SUPERIOR, TK_THEN}, {CMD_SUPERIOR, TK_ELSE}, {CMD_SUPERIOR, COMPOUND_LIST}, + {CMD_SUPERIOR, CASE_LIST_NS}, {CMD_SUPERIOR, COMPLETE_CONDITION}, {CMD_SUPERIOR, LINEBREAK}, {CMD_SUPERIOR, COMPLETE_COMMANDS}, @@ -477,11 +517,13 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, TK_WHILE}, {SIMPLE_COMMAND, TK_UNTIL}, {SIMPLE_COMMAND, TK_DO}, + {SIMPLE_COMMAND, TK_PAREN_CLOSE}, {SIMPLE_COMMAND, TK_IF}, {SIMPLE_COMMAND, TK_ELIF}, {SIMPLE_COMMAND, TK_THEN}, {SIMPLE_COMMAND, TK_ELSE}, {SIMPLE_COMMAND, COMPOUND_LIST}, + {SIMPLE_COMMAND, CASE_LIST_NS}, {SIMPLE_COMMAND, COMPLETE_CONDITION}, {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, COMPLETE_COMMANDS}, @@ -500,7 +542,7 @@ t_stackmatch g_stackmatch[] = {CONDITION, LINEBREAK}, {CONDITION, COMPLETE_COMMANDS}, {CONDITION, COMPOUND_LIST}, - {CONDITION, COMPOUND_LIST}, + {CONDITION, CASE_LIST_NS}, {CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, LINEBREAK}, {COMPLETE_CONDITION, COMPLETE_COMMANDS}, @@ -536,6 +578,7 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE}, {UNTIL_CLAUSE, TK_DO}, + {UNTIL_CLAUSE, TK_PAREN_CLOSE}, {UNTIL_CLAUSE, TK_WHILE}, {UNTIL_CLAUSE, TK_UNTIL}, {UNTIL_CLAUSE, TK_IF}, @@ -543,6 +586,7 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, TK_THEN}, {UNTIL_CLAUSE, TK_ELSE}, {UNTIL_CLAUSE, COMPOUND_LIST}, + {UNTIL_CLAUSE, CASE_LIST_NS}, {UNTIL_CLAUSE, COMPLETE_CONDITION}, {WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, COMPLETE_COMMANDS}, @@ -551,6 +595,7 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, {WHILE_CLAUSE, TK_DO}, + {WHILE_CLAUSE, TK_PAREN_CLOSE}, {WHILE_CLAUSE, TK_WHILE}, {WHILE_CLAUSE, TK_UNTIL}, {WHILE_CLAUSE, TK_IF}, @@ -558,6 +603,7 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, TK_THEN}, {WHILE_CLAUSE, TK_ELSE}, {WHILE_CLAUSE, COMPOUND_LIST}, + {WHILE_CLAUSE, CASE_LIST_NS}, {WHILE_CLAUSE, COMPLETE_CONDITION}, // {ELSE_PART, COMPOUND_LIST}, // {ELSE_PART, COMPLETE_CONDITION}, @@ -568,6 +614,7 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, NEWLINE_LIST}, {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, {IF_CLAUSE, TK_DO}, + {IF_CLAUSE, TK_PAREN_CLOSE}, {IF_CLAUSE, TK_WHILE}, {IF_CLAUSE, TK_UNTIL}, {IF_CLAUSE, TK_IF}, @@ -575,6 +622,7 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, TK_THEN}, {IF_CLAUSE, TK_ELSE}, {IF_CLAUSE, COMPOUND_LIST}, + {IF_CLAUSE, CASE_LIST_NS}, {IF_CLAUSE, COMPLETE_COMMAND}, {IF_CLAUSE, COMPLETE_CONDITION}, @@ -582,19 +630,26 @@ t_stackmatch g_stackmatch[] = {PATTERN, CASE_LIST}, {PATTERN, TK_IN}, {PATTERN_CASE, CASE_LIST}, - {CASE_ITEM, CASE_LIST}, - {CASE_ITEM, LINEBREAK}, - {CASE_ITEM_NS, CASE_LIST}, - {CASE_ITEM_NS, LINEBREAK}, - {CASE_LIST, LINEBREAK}, {CASE_LIST_NS, LINEBREAK}, {CASE_CLAUSE, LINEBREAK}, {CASE_CLAUSE, COMPLETE_COMMANDS}, {CASE_CLAUSE, TK_BANG}, - {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, SEPARATOR_OP}, {CASE_CLAUSE, NEWLINE_LIST}, {CASE_CLAUSE, PIPE_SEMI_SEQUENCE}, + {CASE_CLAUSE, TK_PAREN_CLOSE}, + {CASE_CLAUSE, CASE_LIST_NS}, + {CASE_CLAUSE, TK_DO}, + {CASE_CLAUSE, TK_WHILE}, + {CASE_CLAUSE, TK_UNTIL}, + {CASE_CLAUSE, TK_IF}, + {CASE_CLAUSE, TK_ELIF}, + {CASE_CLAUSE, TK_THEN}, + {CASE_CLAUSE, TK_ELSE}, + {CASE_CLAUSE, COMPOUND_LIST}, + {CASE_CLAUSE, CASE_LIST_NS}, + {CASE_CLAUSE, COMPLETE_COMMAND}, + {WORDLIST, IN}, {IN, LINEBREAK}, {NAME, TK_FOR}, @@ -607,6 +662,7 @@ t_stackmatch g_stackmatch[] = {FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, PIPE_SEMI_SEQUENCE}, {FOR_CLAUSE, TK_DO}, + {FOR_CLAUSE, TK_PAREN_CLOSE}, {FOR_CLAUSE, TK_WHILE}, {FOR_CLAUSE, TK_UNTIL}, {FOR_CLAUSE, TK_IF}, @@ -614,11 +670,12 @@ t_stackmatch g_stackmatch[] = {FOR_CLAUSE, TK_THEN}, {FOR_CLAUSE, TK_ELSE}, {FOR_CLAUSE, COMPOUND_LIST}, + {FOR_CLAUSE, CASE_LIST_NS}, {FOR_CLAUSE, COMPLETE_CONDITION}, {TERM, LINEBREAK}, {TERM, COMPLETE_COMMANDS}, {COMPOUND_LIST, TK_DO}, - {COMPOUND_LIST, TK_DO}, + {COMPOUND_LIST, TK_PAREN_CLOSE}, {COMPOUND_LIST, TK_LBRACE}, {COMPOUND_LIST, TK_WHILE}, {COMPOUND_LIST, TK_UNTIL}, @@ -645,6 +702,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, {COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, TK_DO}, + {COMPOUND_COMMAND, TK_PAREN_CLOSE}, {COMPOUND_COMMAND, TK_WHILE}, {COMPOUND_COMMAND, TK_UNTIL}, {COMPOUND_COMMAND, TK_IF}, @@ -652,18 +710,20 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, TK_THEN}, {COMPOUND_COMMAND, TK_ELSE}, {COMPOUND_COMMAND, COMPOUND_LIST}, + {COMPOUND_COMMAND, CASE_LIST_NS}, {COMPOUND_COMMAND, COMPLETE_CONDITION}, {COMMAND, TK_WHILE}, {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, {COMMAND, COMPLETE_COMMANDS}, {COMMAND, TK_DO}, - {COMMAND, TK_DO}, + {COMMAND, TK_PAREN_CLOSE}, {COMMAND, TK_IF}, {COMMAND, TK_ELIF}, {COMMAND, TK_THEN}, {COMMAND, TK_ELSE}, {COMMAND, COMPOUND_LIST}, + {COMMAND, CASE_LIST_NS}, {COMMAND, COMPLETE_CONDITION}, {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, @@ -678,11 +738,13 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, TK_UNTIL}, {PIPE_SEQUENCE, TK_DO}, + {PIPE_SEQUENCE, TK_PAREN_CLOSE}, {PIPE_SEQUENCE, TK_IF}, {PIPE_SEQUENCE, TK_ELIF}, {PIPE_SEQUENCE, TK_THEN}, {PIPE_SEQUENCE, TK_ELSE}, {PIPE_SEQUENCE, COMPOUND_LIST}, + {PIPE_SEQUENCE, CASE_LIST_NS}, {PIPE_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, COMPLETE_COMMANDS}, @@ -694,11 +756,13 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, TK_WHILE}, {PIPE_SEMI_SEQUENCE, TK_UNTIL}, {PIPE_SEMI_SEQUENCE, TK_DO}, + {PIPE_SEMI_SEQUENCE, TK_PAREN_CLOSE}, {PIPE_SEMI_SEQUENCE, TK_IF}, {PIPE_SEMI_SEQUENCE, TK_ELIF}, {PIPE_SEMI_SEQUENCE, TK_THEN}, {PIPE_SEMI_SEQUENCE, TK_ELSE}, {PIPE_SEMI_SEQUENCE, COMPOUND_LIST}, + {PIPE_SEMI_SEQUENCE, CASE_LIST_NS}, {PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, @@ -710,11 +774,13 @@ t_stackmatch g_stackmatch[] = {PIPELINE, TK_WHILE}, {PIPELINE, TK_UNTIL}, {PIPELINE, TK_DO}, + {PIPELINE, TK_PAREN_CLOSE}, {PIPELINE, TK_IF}, {PIPELINE, TK_ELIF}, {PIPELINE, TK_THEN}, {PIPELINE, TK_ELSE}, {PIPELINE, COMPOUND_LIST}, + {PIPELINE, CASE_LIST_NS}, {PIPELINE, COMPLETE_CONDITION}, {PIPELINE, LINEBREAK}, {PIPELINE, COMPLETE_COMMANDS}, @@ -727,6 +793,7 @@ t_stackmatch g_stackmatch[] = {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR, TK_DO}, + {AND_OR, TK_PAREN_CLOSE}, {AND_OR, TK_WHILE}, {AND_OR, TK_UNTIL}, {AND_OR, TK_IF}, @@ -734,6 +801,7 @@ t_stackmatch g_stackmatch[] = {AND_OR, TK_THEN}, {AND_OR, TK_ELSE}, {AND_OR, COMPOUND_LIST}, + {AND_OR, CASE_LIST_NS}, {AND_OR, COMPLETE_CONDITION}, {AND_OR, LINEBREAK}, {AND_OR, COMPLETE_COMMANDS}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 75d3329a..bcbef58d 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -33,11 +33,13 @@ t_prodmatch g_prodmatch[] = {TK_WORD, TK_WHILE, CMD_NAME}, {TK_WORD, TK_UNTIL, CMD_NAME}, {TK_WORD, TK_DO, CMD_NAME}, + {TK_WORD, TK_PAREN_CLOSE, CMD_NAME}, {TK_WORD, TK_IF, CMD_NAME}, {TK_WORD, TK_THEN, CMD_NAME}, {TK_WORD, TK_ELIF, CMD_NAME}, {TK_WORD, TK_ELSE, CMD_NAME}, {TK_WORD, COMPOUND_LIST, CMD_NAME}, + {TK_WORD, CASE_LIST_NS, CMD_NAME}, {TK_WORD, COMPLETE_CONDITION, CMD_NAME}, {TK_WORD, NEWLINE_LIST, CMD_NAME}, {TK_WORD, TK_BANG, CMD_NAME}, @@ -55,7 +57,9 @@ t_prodmatch g_prodmatch[] = {TK_NAME, SEPARATOR_OP, FNAME}, {TK_NAME, NEWLINE_LIST, FNAME}, {TK_NAME, TK_FOR, NAME}, + {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, + {TK_NEWLINE, TK_PAREN_CLOSE, NEWLINE_LIST}, {TK_NEWLINE, TK_IN, NEWLINE_LIST}, {TK_NEWLINE, TK_WHILE, NEWLINE_LIST}, {TK_NEWLINE, TK_UNTIL, NEWLINE_LIST}, @@ -69,6 +73,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, + {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, {TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_CONDITION, NEWLINE_LIST}, {TK_NEWLINE, CONDITION, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 8b262b95..3371958e 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,12 @@ char *read_state(t_sym current) { + if (current == CASE_CLAUSE) + return ("CASE_CLAUSE"); + if (current == CASE_LIST_NS) + return ("CASE_LIST_NS"); + if (current == TK_DSEMI) + return ("TK_DSEMI"); if (current == TK_PAREN_OPEN) return ("TK_PAREN_OPEN"); if (current == TK_PAREN_CLOSE) From 79bceb05a96e93a0ca99ca98a8720c18a5729b03 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Thu, 23 Feb 2017 01:55:09 +0100 Subject: [PATCH 091/206] trop fatigue pour debug les case nesting, fuck it, todo tomorrow --- 42sh/Makefile | 1 + 42sh/includes/parser.h | 5 ++ 42sh/sample/case/case.sh | 15 ++---- 42sh/sample/for/for.sh | 11 +++++ 42sh/sample/if/01_if_easy.sh | 12 +++-- 42sh/src/main/ft_putast.c | 12 ++++- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_case.c | 81 +++++++++++++++++++++++++++++++++ 42sh/src/parser/add_cmd.c | 18 +++++++- 42sh/src/parser/add_loop.c | 1 - 42sh/src/parser/add_sep.c | 2 + 42sh/src/parser/aggregate_sym.c | 8 ++-- 42sh/src/parser/build_tree.c | 11 +++-- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 6 +-- 42sh/src/parser/produce_sym.c | 6 +-- 42sh/src/parser/tree_wrapper.c | 3 ++ 17 files changed, 163 insertions(+), 33 deletions(-) create mode 100644 42sh/sample/for/for.sh create mode 100644 42sh/src/parser/add_case.c diff --git a/42sh/Makefile b/42sh/Makefile index 88ecb85b..d6ca50db 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -229,6 +229,7 @@ parser/add_condition.c\ parser/add_file.c\ parser/add_loop.c\ parser/add_sep.c\ +parser/add_case.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 66f9a5cd..3f418fbe 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -216,8 +216,12 @@ int add_loop_sep(t_btree **ast, t_list **lst); int add_condition_cmd(t_btree **ast, t_list **lst); int add_condition_sep(t_btree **ast, t_list **lst); int add_branch(t_btree **ast, t_list **lst); +int add_case_cmd(t_btree **ast, t_list **lst); +int add_case_sep(t_btree **ast, t_list **lst); +int add_pattern(t_btree **ast, t_list **lst); int isloop(t_btree **ast); int isdir(t_btree **ast); +int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); @@ -255,6 +259,7 @@ struct s_astnode int nest; int full; + int pattern; t_type type; t_astdata data; }; diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index f84e34fc..90d45405 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -1,12 +1,7 @@ case $rental in - ("bus") case yolo in - ("bonjour") echo hello ;; - ("hello") echo bonjour ;; - esac - case yala in - ("bonjour") echo hello ;; - ("hello") echo yolo ;; - esac ;; - ("van") echo "For $rental rental is Rs.10 per k/m.";; - ("jeep") echo "For $rental rental is Rs.5 per k/m.";; + ("bus") case $rental in + ("yolo") echo hello ;; + ("bonjour") echo yolo ;; + esac ;; + ("van") echo yolo ;; esac diff --git a/42sh/sample/for/for.sh b/42sh/sample/for/for.sh new file mode 100644 index 00000000..676abb4b --- /dev/null +++ b/42sh/sample/for/for.sh @@ -0,0 +1,11 @@ +for i in ls + do + for i in echo + do + pwd + done + for i in cd + do + cat + done +done diff --git a/42sh/sample/if/01_if_easy.sh b/42sh/sample/if/01_if_easy.sh index 171c2a03..f7d0a10c 100644 --- a/42sh/sample/if/01_if_easy.sh +++ b/42sh/sample/if/01_if_easy.sh @@ -1,8 +1,10 @@ if ls then - if ls - then - ls | cat - pwd ; ls - fi + ls +elif ls +then + ls +elif ls +then + ls fi diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 43f53e0a..8720b1df 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -16,7 +16,17 @@ char *ft_putast(void *nodein) { t_astnode *node; node = nodein; - if (node->type == TK_THEN) + if (node->type == TK_CASE) + return ("TK_CASE"); + else if (node->type == TK_PAREN_OPEN) + return ("TK_OPE"); + else if (node->type == TK_PAREN_CLOSE) + return ("TK_CLO"); + else if (node->type == TK_IN) + return ("TK_IN"); + else if (node->type ==TK_ESAC) + return ("TK_ESAC"); + else if (node->type == TK_THEN) return ("THEN"); else if (node->type == TK_FI) return ("FI"); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 5c98209b..f321b2a8 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -63,7 +63,7 @@ int handle_instruction(int fd) token = NULL; } DG("succesful parsing:"); -// btree_print(STDBUG, ast, &ft_putast); + btree_print(STDBUG, ast, &ft_putast); /* if (ft_exec(&ast)) */ /* return (1); */ ft_add_str_in_history(lexer.str); diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c new file mode 100644 index 00000000..8ee56bc8 --- /dev/null +++ b/42sh/src/parser/add_case.c @@ -0,0 +1,81 @@ +#include "parser.h" + +int iscase(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type == TK_PAREN_OPEN && node->full == 0) + { + // DG("go right"); + return (1); + } + if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN + || iscase(&(*ast)->right, lst) == 1) && token->type == TK_WORD + && node->pattern == 0) + { + // DG("add pattern"); + return (2); + } + if ((node->type == TK_CASE || iscase(&(*ast)->right, lst) == 4) + && token->type == TK_PAREN_OPEN) + { + // DG("new branch"); + return (3); + } + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && iscase(&(*ast)->right, lst) == 1) + { +// DG(" go right"); + return (1); + } + if (node->type == TK_PAREN_OPEN && node->nest == 0) + return (4); + } + return (0); +} + +int add_case_cmd(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + DG("add case cmd"); + if (token->type == TK_CASE && node->type == TK_PAREN_OPEN) + { + DG("nesting"); + node->nest++; + } + if (token->type == TK_ESAC && node->type == TK_PAREN_OPEN && node->nest > 0) + { + DG("nesting less"); + node->nest--; + } + else if (token->type == TK_DSEMI && node->type == TK_PAREN_OPEN) + return ((node->full = 1)); + return (add_cmd(&(*ast)->right, lst)); +} + +int add_case_sep(t_btree **ast, t_list **lst) +{ + return (add_sep(&(*ast)->right, lst)); +} + +int add_pattern(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + node->data.redir.word.word = ft_strdup(token->data); + node->pattern = 1; + return (0); +} diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 23bf28bf..b8d1112c 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -29,8 +29,24 @@ int add_cmd(t_btree **ast, t_list **lst) return (add_condition_cmd(ast, lst)); else if (iscondition(ast, lst) == 2) return (add_branch(ast, lst)); - else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN) + else if (iscase(ast, lst) == 1) + { + DG("go add cmd"); + return (add_case_cmd(ast, lst)); + } + else if (iscase(ast, lst) == 2) + return (add_pattern(ast, lst)); + else if (iscase(ast, lst) == 3) + { + DG("add branc"); + return (add_branch(ast, lst)); + } + else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN + && node->type != TK_PAREN_CLOSE && node->type != TK_ESAC) + { + DG("return cmd : %s", read_state(node->type)); return (add_cmd(&(*ast)->right, lst)); + } my_tab = NULL; token = (*lst)->content; node = (*ast)->item; diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 22c7865b..81d9e016 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -20,7 +20,6 @@ int isloop(t_btree **ast) if (*ast) { node = (*ast)->item; - DG("TEST LOOP"); if ((node->type == TK_NEWLINE || node->type == TK_SEMI || node->type == TK_AMP) && isloop(&(*ast)->right) == 1) return (1); diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index e9243154..950b17f5 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -23,6 +23,8 @@ int add_sep(t_btree **ast, t_list **lst) return (add_loop_sep(ast, lst)); else if (iscondition(ast, lst) == 1) return (add_condition_sep(ast, lst)); + else if (iscase(ast, lst)) + return (add_case_sep(ast, lst)); if (!*ast) gen_node(ast); token = (*lst)->content; diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 1ba587c6..e33fa3a5 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -279,20 +279,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index fa58745c..cbebde17 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -31,13 +31,17 @@ t_treematch g_treematch[] = {TK_THEN, &add_cmd}, {TK_FI, &add_cmd}, {TK_NEWLINE, &add_sep}, + {TK_CASE, &add_cmd}, + {TK_ESAC, &add_cmd}, + {TK_PAREN_OPEN, &add_cmd}, + {TK_PAREN_CLOSE, &add_cmd}, {0, NULL}, }; static int isseparator(int type, int cache) { if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO - || cache == TK_NEWLINE || cache == TK_THEN)) + || cache == TK_NEWLINE || cache == TK_THEN || cache == TK_IN)) return (0); return (1); } @@ -50,6 +54,8 @@ int build_tree(t_btree **ast, t_list **lst) i = 0; token = (*lst)->content; +//check bug de cache + cache = token->type; while (g_treematch[i].type) { if (g_treematch[i].type == token->type @@ -57,8 +63,7 @@ int build_tree(t_btree **ast, t_list **lst) { DG("func TK : '%s' TK : '%s'", - read_state(g_treematch[i].type) ,read_state(token->type)); - cache = token->type; + read_state(g_treematch[i].type) ,read_state(token->type)); return (g_treematch[i].add(ast, lst)); } i++; diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index ad767ee5..eeb9b093 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -823,7 +823,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 42f0b249..714d5b4e 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -43,14 +43,14 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) aggregate_sym(&parser->stack, parser->new_sym, &parser->state); push_stack(++parser->stack, *parser->new_sym); } - ft_read_stack(parser->stack); +// ft_read_stack(parser->stack); DG("\n"); if (*parser->stack == PROGRAM) parser->state = SUCCESS; else parser->state = UNDEFINED; -// build_tree(ast, token); -// btree_print(STDBUG, *ast, &ft_putast); + build_tree(ast, token); + btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index bcbef58d..505a21a6 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -97,8 +97,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; - DG("produce stack : %s && token : %s", read_state(stack), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(stack), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -106,7 +106,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 505f2050..7fbc3c2a 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -31,6 +31,9 @@ int gen_node(t_btree **ast) ((t_astnode *)(*ast)->item)->nest = 0; ((t_astnode *)(*ast)->item)->full = 0; ((t_astnode *)(*ast)->item)->type = 0; + ((t_astnode *)(*ast)->item)->pattern = 0; } return (0); } + + From ecc058dd11f0b3c2c9cc2fc1d4137547d0d2b830 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Thu, 23 Feb 2017 22:55:17 +0100 Subject: [PATCH 092/206] still case --- 42sh/src/parser/add_case.c | 23 ++++------------------- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_sep.c | 4 ++-- 42sh/src/parser/build_tree.c | 2 +- 4 files changed, 8 insertions(+), 23 deletions(-) diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 8ee56bc8..234fd46f 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -9,33 +9,18 @@ int iscase(t_btree **ast, t_list **lst) token = (*lst)->content; if (*ast) { - node = (*ast)->item; + node = (*ast)->item; + if (node->type == TK_PAREN_OPEN && node->full == 0 && node->nest > 0) + return (4); if (node->type == TK_PAREN_OPEN && node->full == 0) - { - // DG("go right"); return (1); - } if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN || iscase(&(*ast)->right, lst) == 1) && token->type == TK_WORD && node->pattern == 0) - { - // DG("add pattern"); return (2); - } - if ((node->type == TK_CASE || iscase(&(*ast)->right, lst) == 4) + if ((node->type == TK_CASE || iscase(&(*ast)->right, lst) == 1) && token->type == TK_PAREN_OPEN) - { - // DG("new branch"); return (3); - } - if ((node->type == TK_NEWLINE || node->type == TK_SEMI - || node->type == TK_AMP) && iscase(&(*ast)->right, lst) == 1) - { -// DG(" go right"); - return (1); - } - if (node->type == TK_PAREN_OPEN && node->nest == 0) - return (4); } return (0); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index b8d1112c..bdc8fe11 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:27:06 by jhalford ### ########.fr */ +/* Updated: 2017/02/23 18:04:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 950b17f5..faa49b14 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/20 17:46:54 by ariard ### ########.fr */ +/* Updated: 2017/02/23 18:04:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ int add_sep(t_btree **ast, t_list **lst) return (add_loop_sep(ast, lst)); else if (iscondition(ast, lst) == 1) return (add_condition_sep(ast, lst)); - else if (iscase(ast, lst)) + else if (iscase(ast, lst) == 1) return (add_case_sep(ast, lst)); if (!*ast) gen_node(ast); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index cbebde17..05ab6407 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/21 20:28:38 by ariard ### ########.fr */ +/* Updated: 2017/02/23 18:03:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From d251474db9a648e1b8c4672e3cdb692f3ee1e6a4 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 14:52:04 +0100 Subject: [PATCH 093/206] erase error --- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_condition.c | 19 +++++++++---------- 42sh/src/parser/add_loop.c | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index bdc8fe11..38565bea 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/23 18:04:26 by ariard ### ########.fr */ +/* Updated: 2017/02/24 14:51:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index b1d43125..769f4425 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/20 18:18:56 by ariard ### ########.fr */ +/* Updated: 2017/02/24 14:51:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,16 +22,15 @@ int iscondition(t_btree **ast, t_list **lst) if (*ast) { node = (*ast)->item; - if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) - && (token->type == TK_ELIF || token->type == TK_ELSE) - && node->nest == 0) + if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN) + && node->pattern = 0 && token->type == TK_WORD) return (2); - if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE) - && node->full == 0) - return (1); - if ((node->type == TK_NEWLINE || node->type == TK_SEMI - || node->type == TK_AMP) && iscondition(&(*ast)->right, lst) == 1) - return (1); + if (node->type == TK_CASE) + return (3); + if (node->type == TK_PAREN_OPEN && nest == 0) + return (3); + if (node->type == TK_PAREN_OPEN && nest > 0) + return (0); } return (0); } diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 81d9e016..9d892675 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/20 19:03:04 by ariard ### ########.fr */ +/* Updated: 2017/02/24 14:41:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 5f596310e1cd08e0773f6557cfcda2c4381a0e95 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 15:32:56 +0100 Subject: [PATCH 094/206] nesting case ok --- 42sh/sample/case/case.sh | 6 +++--- 42sh/src/parser/add_case.c | 37 ++++++++++++++------------------- 42sh/src/parser/add_cmd.c | 17 ++++----------- 42sh/src/parser/add_condition.c | 19 +++++++++-------- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_sep.c | 4 ++-- 42sh/src/parser/build_tree.c | 2 +- 7 files changed, 37 insertions(+), 50 deletions(-) diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index 90d45405..3642f40b 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -1,7 +1,7 @@ case $rental in ("bus") case $rental in - ("yolo") echo hello ;; - ("bonjour") echo yolo ;; - esac ;; + ("yolo") echo bonjour + esac ;; ("van") echo yolo ;; + ("bicycle") echo hola ;; esac diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 234fd46f..ff0d1532 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -9,18 +9,15 @@ int iscase(t_btree **ast, t_list **lst) token = (*lst)->content; if (*ast) { - node = (*ast)->item; - if (node->type == TK_PAREN_OPEN && node->full == 0 && node->nest > 0) - return (4); - if (node->type == TK_PAREN_OPEN && node->full == 0) + node = (*ast)->item; + if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN) + && token->type == TK_WORD && node->pattern == 0) return (1); - if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN - || iscase(&(*ast)->right, lst) == 1) && token->type == TK_WORD - && node->pattern == 0) - return (2); - if ((node->type == TK_CASE || iscase(&(*ast)->right, lst) == 1) - && token->type == TK_PAREN_OPEN) + if ((node->type == TK_PAREN_OPEN || node->type == TK_CASE) + && node->nest == 0 && token->type == TK_PAREN_OPEN) return (3); + if (node->type == TK_CASE || node->type == TK_PAREN_OPEN) + return (2); } return (0); } @@ -32,19 +29,17 @@ int add_case_cmd(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; - DG("add case cmd"); - if (token->type == TK_CASE && node->type == TK_PAREN_OPEN) - { - DG("nesting"); + if (token->type == TK_CASE && (node->type == TK_PAREN_OPEN + || node->type == TK_CASE)) node->nest++; - } - if (token->type == TK_ESAC && node->type == TK_PAREN_OPEN && node->nest > 0) - { - DG("nesting less"); - node->nest--; - } - else if (token->type == TK_DSEMI && node->type == TK_PAREN_OPEN) + if (token->type == TK_ESAC && (node->type == TK_PAREN_OPEN + || node->type == TK_CASE) && node->nest > 0) + return ((node->nest--)); + else if (token->type == TK_DSEMI && node->type == TK_PAREN_OPEN + && node->nest == 0) return ((node->full = 1)); + else if (token->type == TK_ESAC) + return (0); return (add_cmd(&(*ast)->right, lst)); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 38565bea..40da190d 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/24 14:51:47 by ariard ### ########.fr */ +/* Updated: 2017/02/24 15:30:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,23 +30,14 @@ int add_cmd(t_btree **ast, t_list **lst) else if (iscondition(ast, lst) == 2) return (add_branch(ast, lst)); else if (iscase(ast, lst) == 1) - { - DG("go add cmd"); - return (add_case_cmd(ast, lst)); - } - else if (iscase(ast, lst) == 2) return (add_pattern(ast, lst)); + else if (iscase(ast, lst) == 2) + return (add_case_cmd(ast, lst)); else if (iscase(ast, lst) == 3) - { - DG("add branc"); return (add_branch(ast, lst)); - } else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN && node->type != TK_PAREN_CLOSE && node->type != TK_ESAC) - { - DG("return cmd : %s", read_state(node->type)); return (add_cmd(&(*ast)->right, lst)); - } my_tab = NULL; token = (*lst)->content; node = (*ast)->item; @@ -55,7 +46,7 @@ int add_cmd(t_btree **ast, t_list **lst) { my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); -// ft_ld_pushback(&node->data.token, my_tab); + ft_ld_pushback(&node->data.token, my_tab); } return (0); } diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 769f4425..4c2af18c 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/24 14:51:05 by ariard ### ########.fr */ +/* Updated: 2017/02/24 14:53:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,15 +22,16 @@ int iscondition(t_btree **ast, t_list **lst) if (*ast) { node = (*ast)->item; - if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN) - && node->pattern = 0 && token->type == TK_WORD) + if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) + && (token->type == TK_ELIF || token->type == TK_ELSE) + && node->nest == 0) return (2); - if (node->type == TK_CASE) - return (3); - if (node->type == TK_PAREN_OPEN && nest == 0) - return (3); - if (node->type == TK_PAREN_OPEN && nest > 0) - return (0); + if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE) + && node->full == 0) + return (1); + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && iscondition(&(*ast)->right, lst) == 1) + return (1); } return (0); } diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 9d892675..c830f5b4 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/24 14:41:20 by ariard ### ########.fr */ +/* Updated: 2017/02/24 15:08:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index faa49b14..a30ccb71 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/23 18:04:24 by ariard ### ########.fr */ +/* Updated: 2017/02/24 15:15:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ int add_sep(t_btree **ast, t_list **lst) return (add_loop_sep(ast, lst)); else if (iscondition(ast, lst) == 1) return (add_condition_sep(ast, lst)); - else if (iscase(ast, lst) == 1) + else if (iscase(ast, lst) == 2) return (add_case_sep(ast, lst)); if (!*ast) gen_node(ast); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 05ab6407..a0c573a7 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/23 18:03:35 by ariard ### ########.fr */ +/* Updated: 2017/02/24 15:21:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From d50a0d1b1374a797dd3d5a31ff3e021a621f143c Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 16:29:51 +0100 Subject: [PATCH 095/206] parsing for ok --- 42sh/includes/parser.h | 31 ++---------------- 42sh/sample/for/for.sh | 8 ++--- 42sh/sample/while/while01.sh | 11 +++++++ 42sh/src/lexer/insert_newline.c | 2 +- 42sh/src/main/ft_putast.c | 6 +++- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_case.c | 2 +- 42sh/src/parser/add_cmd.c | 6 ++-- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_loop.c | 57 ++++++++++++++++++--------------- 42sh/src/parser/add_sep.c | 16 ++++----- 42sh/src/parser/build_tree.c | 13 +++++--- 42sh/src/parser/tree_wrapper.c | 2 +- 13 files changed, 78 insertions(+), 80 deletions(-) create mode 100644 42sh/sample/while/while01.sh diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 3f418fbe..f3c28da4 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -213,13 +213,14 @@ int add_cmd(t_btree **ast, t_list **lst); int add_file(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); +int add_loop_condition(t_btree **ast, t_list **lst); int add_condition_cmd(t_btree **ast, t_list **lst); int add_condition_sep(t_btree **ast, t_list **lst); int add_branch(t_btree **ast, t_list **lst); int add_case_cmd(t_btree **ast, t_list **lst); int add_case_sep(t_btree **ast, t_list **lst); int add_pattern(t_btree **ast, t_list **lst); -int isloop(t_btree **ast); +int isloop(t_btree **ast, t_list **lst); int isdir(t_btree **ast); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); @@ -250,6 +251,7 @@ union u_astdata { t_redir redir; t_ld *token; + t_list *wordlist; char **sstr; char *str; }; @@ -264,31 +266,4 @@ struct s_astnode t_astdata data; }; -int parse(t_btree **ast, t_list **token); - -int get_instruction(t_list **lst); -int get_sub_instruction(t_btree **ast, t_list **start, t_list **lst); - -int parse_newline(t_btree **ast, t_list **start, t_list **lst); -int parse_separator(t_btree **ast, t_list **start, t_list **lst); -int parse_redir(t_btree **ast, t_list **start, t_list **lst); -int parse_less(t_btree **ast, t_list **start, t_list **lst); -int parse_great(t_btree **ast, t_list **start, t_list **lst); -int parse_dless(t_btree **ast, t_list **start, t_list **lst); -int parse_dgreat(t_btree **ast, t_list **start, t_list **lst); -int parse_lessand(t_btree **ast, t_list **start, t_list **lst); -int parse_greatand(t_btree **ast, t_list **start, t_list **lst); -int parse_word(t_btree **ast, t_list **start, t_list **lst); -int parse_subshell(t_btree **ast, t_list **start, t_list **lst); -int parse_newline(t_btree **ast, t_list **start, t_list **lst); -int parse_while(t_btree **ast, t_list **start, t_list **lst); -int parse_if(t_btree **ast, t_list **start, t_list **lst); -int parse_do(t_btree **ast, t_list **start, t_list **lst); -int parse_done(t_btree **ast, t_list **start, t_list **lst); -int parse_elif(t_btree **ast, t_list **start, t_list **lst); -int parse_else(t_btree **ast, t_list **start, t_list **lst); - -int delete_newline(t_list **start, t_list **lst); -int parse_head(t_btree **ast, t_btree **new_ast, t_list **start, t_list **lst); - #endif diff --git a/42sh/sample/for/for.sh b/42sh/sample/for/for.sh index 676abb4b..90cfffe6 100644 --- a/42sh/sample/for/for.sh +++ b/42sh/sample/for/for.sh @@ -1,11 +1,11 @@ -for i in ls - do +for i in hello bonjour salut comment +do for i in echo do pwd done - for i in cd + for i in echo do - cat + pwd done done diff --git a/42sh/sample/while/while01.sh b/42sh/sample/while/while01.sh new file mode 100644 index 00000000..f2897742 --- /dev/null +++ b/42sh/sample/while/while01.sh @@ -0,0 +1,11 @@ +while ls +do + while ls + do + pwd + done + while ls + do + pwd + done +done diff --git a/42sh/src/lexer/insert_newline.c b/42sh/src/lexer/insert_newline.c index ea17e055..6d39ec5d 100644 --- a/42sh/src/lexer/insert_newline.c +++ b/42sh/src/lexer/insert_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 21:05:23 by ariard #+# #+# */ -/* Updated: 2017/02/21 21:12:13 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:22:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 8720b1df..a535e33d 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/21 19:20:20 by jhalford ### ########.fr */ +/* Updated: 2017/02/24 16:24:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,10 @@ char *ft_putast(void *nodein) { t_astnode *node; node = nodein; + if (node->type == TK_NAME) + return ("TK_NAME"); + if (node->type == TK_FOR) + return ("TK_FOR"); if (node->type == TK_CASE) return ("TK_CASE"); else if (node->type == TK_PAREN_OPEN) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index f321b2a8..03b10ea2 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:44:41 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:17:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index ff0d1532..7eba9636 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -55,7 +55,7 @@ int add_pattern(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; - node->data.redir.word.word = ft_strdup(token->data); + node->data.str = ft_strdup(token->data); node->pattern = 1; return (0); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 40da190d..f976f875 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/24 15:30:23 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:29:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,9 @@ int add_cmd(t_btree **ast, t_list **lst) gen_node(ast); else if (isdir(ast)) return (add_file(ast, lst)); - else if (isloop(ast)) + else if (isloop(ast, lst) == 3) + return (add_loop_condition(ast, lst)); + else if (isloop(ast, lst)) return (add_loop_cmd(ast, lst)); else if (iscondition(ast, lst) == 1) return (add_condition_cmd(ast, lst)); diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 4c2af18c..b95c45ab 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/24 14:53:49 by ariard ### ########.fr */ +/* Updated: 2017/02/24 15:45:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index c830f5b4..7a03b988 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,33 +6,33 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/24 15:08:08 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:28:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int isloop(t_btree **ast) +int isloop(t_btree **ast, t_list **lst) { t_astnode *node; + t_token *token; node = NULL; + token = (*lst)->content; if (*ast) { node = (*ast)->item; + if (node->type == TK_FOR && token->type == TK_WORD && node->pattern == 0) + return (3); if ((node->type == TK_NEWLINE || node->type == TK_SEMI - || node->type == TK_AMP) && isloop(&(*ast)->right) == 1) + || node->type == TK_AMP) && isloop(&(*ast)->right, lst) == 1) return (1); - if ((node->type == TK_WHILE || node->type == TK_UNTIL) && node->full == 1) - { - DG("DON ENTER"); + if ((node->type == TK_WHILE || node->type == TK_UNTIL + || node->type == TK_FOR) && node->full == 1) return (2); - } - if ((node->type == TK_WHILE || node->type == TK_UNTIL) && node->full == 0) - { - DG(" NOFULL"); + if ((node->type == TK_WHILE || node->type == TK_UNTIL + || node->type == TK_FOR) && node->full == 0) return (1); - } } return (0); } @@ -45,27 +45,20 @@ int add_loop_cmd(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; DG("add loop cmd"); - if ((token->type == TK_WHILE || token->type == TK_UNTIL) - && (node->type == TK_WHILE || node->type == TK_UNTIL)) - { - DG("nest one more"); + if (token->type == TK_DO && node->type == TK_FOR) + node->pattern = 1; + if ((token->type == TK_WHILE || token->type == TK_UNTIL || token->type == TK_FOR) + && (node->type == TK_WHILE || node->type == TK_UNTIL || node->type == TK_FOR)) node->nest++; - } - if (token->type == TK_DONE && (node->type == TK_WHILE || node->type == TK_UNTIL) - && node->nest > 0) - { + if (token->type == TK_DONE && (node->type == TK_WHILE + || node->type == TK_UNTIL || node->type == TK_FOR) && node->nest > 0) node->nest--; - DG("nest one less"); - } else if (token->type == TK_DONE && (node->type == TK_WHILE - || node->type == TK_UNTIL) && node->nest == 0) - { - DG("WHILE FULL"); + || node->type == TK_UNTIL || node->type == TK_FOR) && node->nest == 0) return ((node->full = 1)); - } if (token->type == TK_DO && node->nest == 0) return (add_cmd(&(*ast)->right, lst)); - else if (!(*ast)->right && isloop(&(*ast)->left) != 2) + else if (!(*ast)->right && isloop(&(*ast)->left, lst) != 2) return (add_cmd(&(*ast)->left, lst)); else return (add_cmd(&(*ast)->right, lst)); @@ -80,3 +73,15 @@ int add_loop_sep(t_btree **ast, t_list **lst) return (add_sep(&(*ast)->right, lst)); return (0); } + +int add_loop_condition(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + ft_lsteadd(&node->data.wordlist, ft_lstnew(ft_strdup(token->data), + ft_strlen(token->data))); + return (0); +} diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index a30ccb71..7dbbb270 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/24 15:15:33 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:08:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int add_sep(t_btree **ast, t_list **lst) t_btree *new_node; DG("add sep"); - if (isloop(ast) == 1) + if (isloop(ast, lst) == 1) return (add_loop_sep(ast, lst)); else if (iscondition(ast, lst) == 1) return (add_condition_sep(ast, lst)); @@ -28,13 +28,11 @@ int add_sep(t_btree **ast, t_list **lst) if (!*ast) gen_node(ast); token = (*lst)->content; -// if (node->type != TK_DO) -// { - new_node = NULL; - gen_node(&new_node); - join_ast(ast, &new_node); - node = (new_node)->item; -// } +//watch != TK_DO + new_node = NULL; + gen_node(&new_node); + join_ast(ast, &new_node); + node = (new_node)->item; node->type = token->type; return (0); } diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index a0c573a7..021aef29 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/24 15:21:16 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:24:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,13 +35,15 @@ t_treematch g_treematch[] = {TK_ESAC, &add_cmd}, {TK_PAREN_OPEN, &add_cmd}, {TK_PAREN_CLOSE, &add_cmd}, + {TK_FOR, &add_cmd}, {0, NULL}, }; static int isseparator(int type, int cache) { if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO - || cache == TK_NEWLINE || cache == TK_THEN || cache == TK_IN)) + || cache == TK_NEWLINE || cache == TK_THEN || cache == TK_IN + || cache == TK_WORD)) return (0); return (1); } @@ -54,8 +56,8 @@ int build_tree(t_btree **ast, t_list **lst) i = 0; token = (*lst)->content; -//check bug de cache - cache = token->type; +//check bug de cache case ? +// cache = token->type; while (g_treematch[i].type) { if (g_treematch[i].type == token->type @@ -63,7 +65,8 @@ int build_tree(t_btree **ast, t_list **lst) { DG("func TK : '%s' TK : '%s'", - read_state(g_treematch[i].type) ,read_state(token->type)); + read_state(g_treematch[i].type) ,read_state(token->type)); + cache = token->type; return (g_treematch[i].add(ast, lst)); } i++; diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 7fbc3c2a..f667a6fe 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/19 16:34:17 by ariard ### ########.fr */ +/* Updated: 2017/02/24 16:00:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 0461285d9559f613845ee641a811369fabee51cc Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 19:30:20 +0100 Subject: [PATCH 096/206] subshell et case ok --- 42sh/Makefile | 3 +- 42sh/includes/parser.h | 7 +- 42sh/sample/case/case.sh | 1 - 42sh/sample/subshell/subshell01.sh | 1 + 42sh/src/lexer/lexer_sep.c | 4 +- 42sh/src/main/ft_putast.c | 4 +- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_cmd.c | 11 ++- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_sep.c | 4 +- 42sh/src/parser/add_subshell.c | 48 +++++++++++ 42sh/src/parser/aggregate_sym.c | 34 +++++--- 42sh/src/parser/build_tree.c | 16 ++-- 42sh/src/parser/error_syntax.c | 3 +- 42sh/src/parser/eval_sym.c | 126 +++++++++++++++++++++++++---- 42sh/src/parser/ft_parse.c | 4 +- 42sh/src/parser/produce_sym.c | 14 ++-- 17 files changed, 228 insertions(+), 56 deletions(-) create mode 100644 42sh/sample/subshell/subshell01.sh create mode 100644 42sh/src/parser/add_subshell.c diff --git a/42sh/Makefile b/42sh/Makefile index d6ca50db..4193e6da 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/21 21:32:36 by ariard ### ########.fr # +# Updated: 2017/02/24 18:49:55 by ariard ### ########.fr # # # # **************************************************************************** # @@ -225,6 +225,7 @@ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ parser/add_cmd.c\ +parser/add_subshell.c\ parser/add_condition.c\ parser/add_file.c\ parser/add_loop.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index f3c28da4..2f840910 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -44,7 +44,6 @@ enum e_sym TK_PAREN_OPEN, TK_PAREN_CLOSE, TK_BQUOTE, - TK_SUBSHELL, TK_NEWLINE, TK_WHILE, TK_DO, @@ -63,6 +62,7 @@ enum e_sym TK_IO_NUMBER, TK_DLESSDASH, TK_LESSGREAT, + TK_SUBSHELL, TK_CASE, TK_IN, TK_ESAC, @@ -119,7 +119,6 @@ enum e_sym LOOP, FUNC, PIPE_SEMI_SEQUENCE, - PATTERN_CASE, CMD_SUPERIOR, AND_OR_MAJOR, AND_OR_MINOR, @@ -127,6 +126,7 @@ enum e_sym CONDITION, COMPLETE_CONDITION, FOR_WORDLIST, + PATTERN_CASE, ALL = 200, }; @@ -220,10 +220,13 @@ int add_branch(t_btree **ast, t_list **lst); int add_case_cmd(t_btree **ast, t_list **lst); int add_case_sep(t_btree **ast, t_list **lst); int add_pattern(t_btree **ast, t_list **lst); +int add_subshell_cmd(t_btree **ast, t_list **lst); +int add_subshell_sep(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); int isdir(t_btree **ast); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); +int issubshell(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index 3642f40b..d89cd66d 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -3,5 +3,4 @@ case $rental in ("yolo") echo bonjour esac ;; ("van") echo yolo ;; - ("bicycle") echo hola ;; esac diff --git a/42sh/sample/subshell/subshell01.sh b/42sh/sample/subshell/subshell01.sh new file mode 100644 index 00000000..244aeed7 --- /dev/null +++ b/42sh/sample/subshell/subshell01.sh @@ -0,0 +1 @@ +(ls | cat && pwd) diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 08fb1d1a..2c12ea8b 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:54:07 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:14:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,6 +39,6 @@ int lexer_sep(t_list **alst, t_lexer *lexer) token->type = cn == '|' ? TK_OR_IF : TK_PIPE; token->type = (c == ';') ? TK_SEMI : token->type; token->type = (c == ';') && (cn == ';') ? TK_DSEMI : token->type; - lexer->pos += 1 + (token->type & (TK_AND_IF | TK_OR_IF) ? 1 : 0); + lexer->pos += 1 + (token->type & (TK_AND_IF | TK_OR_IF | TK_DSEMI) ? 1 : 0); return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index a535e33d..65e550aa 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/24 16:24:19 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:06:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,8 @@ char *ft_putast(void *nodein) { t_astnode *node; node = nodein; + if (node->type == SUBSHELL) + return ("SUBSHELL"); if (node->type == TK_NAME) return ("TK_NAME"); if (node->type == TK_FOR) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 03b10ea2..032b4529 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/24 16:17:54 by ariard ### ########.fr */ +/* Updated: 2017/02/24 18:39:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index f976f875..9b26dd7c 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/24 16:29:21 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:29:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,8 @@ int add_cmd(t_btree **ast, t_list **lst) DG("add cmd"); if (!*ast) gen_node(ast); + else if ((token = (*lst)->content)->type == TK_IN) + return (0); else if (isdir(ast)) return (add_file(ast, lst)); else if (isloop(ast, lst) == 3) @@ -37,11 +39,12 @@ int add_cmd(t_btree **ast, t_list **lst) return (add_case_cmd(ast, lst)); else if (iscase(ast, lst) == 3) return (add_branch(ast, lst)); - else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != TK_ESAC) + else if (issubshell(ast, lst)) + return (add_subshell_cmd(ast, lst)); + else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN + && node->type != TK_PAREN_CLOSE) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; - token = (*lst)->content; node = (*ast)->item; node->type = token->type; if (token->type == TK_WORD) diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 7a03b988..5f7ae736 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/24 16:28:27 by ariard ### ########.fr */ +/* Updated: 2017/02/24 18:47:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 7dbbb270..4fef29e4 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/24 16:08:47 by ariard ### ########.fr */ +/* Updated: 2017/02/24 18:54:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,8 @@ int add_sep(t_btree **ast, t_list **lst) return (add_condition_sep(ast, lst)); else if (iscase(ast, lst) == 2) return (add_case_sep(ast, lst)); + else if (issubshell(ast, lst)) + return (add_subshell_sep(ast, lst)); if (!*ast) gen_node(ast); token = (*lst)->content; diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c new file mode 100644 index 00000000..b42b8fad --- /dev/null +++ b/42sh/src/parser/add_subshell.c @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_subshell.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ +/* Updated: 2017/02/24 19:16:06 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int issubshell(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + DG("test loop"); + if (*ast) + { + node = (*ast)->item; + if (node->type == SUBSHELL && node->full == 0) + return (1); + } + return (0); +} + +int add_subshell_cmd(t_btree **ast, t_list **lst) +{ + t_token *token; + t_astnode *node; + + DG("add subshell"); + token = (*lst)->content; + node = (*ast)->item; + if (token->type == TK_PAREN_CLOSE && node->type == SUBSHELL) + return ((node->full = 1)); + return (add_cmd(&(*ast)->right, lst)); +} + +int add_subshell_sep(t_btree **ast, t_list **lst) +{ + return (add_sep(&(*ast)->right, lst)); +} diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index e33fa3a5..d97e3261 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/21 20:40:31 by ariard ### ########.fr */ +/* Updated: 2017/02/24 18:25:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,8 @@ t_aggrematch g_aggrematch[] = {TK_WORD, FOR_WORDLIST, FOR_WORDLIST, FOR_WORDLIST}, {TK_SEMI, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, {TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, + {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, @@ -34,6 +36,9 @@ t_aggrematch g_aggrematch[] = {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, TK_LBRACE}, {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, CMD_SUPERIOR, SUBSHELL, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, SUBSHELL, TK_PAREN_OPEN}, + {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, {TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, //watch this @@ -49,11 +54,8 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI}, //to abstract TK_ESAC - {LINEBREAK, TK_PAREN_CLOSE, CASE_ITEM_NS, PATTERN_CASE}, {LINEBREAK, TK_PAREN_CLOSE, FUNC, FNAME}, //paren open - {LINEBREAK, TK_DSEMI, CASE_ITEM, PATTERN_CASE}, - {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {LINEBREAK, CMD_SUPERIOR, SEPARATOR_OP, 0}, @@ -108,6 +110,7 @@ t_aggrematch g_aggrematch[] = {IO_REDIRECT, CMD_WORD, CMD_SUFFIX, 0}, {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, CMD_PREFIX}, {IO_REDIRECT, LINEBREAK, CMD_PREFIX, 0}, + {IO_REDIRECT, TK_PAREN_OPEN, CMD_PREFIX, 0}, {IO_REDIRECT, COMPLETE_COMMANDS, CMD_PREFIX, 0}, {IO_REDIRECT, TK_BANG, CMD_PREFIX, 0}, {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, 0}, @@ -118,6 +121,7 @@ t_aggrematch g_aggrematch[] = {CMD_SUFFIX, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, //to abstract {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, + {CMD_PREFIX, TK_PAREN_OPEN, SIMPLE_COMMAND, 0}, {CMD_PREFIX, COMPLETE_COMMANDS, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0}, {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, 0}, @@ -126,6 +130,7 @@ t_aggrematch g_aggrematch[] = {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, CMD_PREFIX}, //to check {CMD_NAME, LINEBREAK, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_PAREN_OPEN, CMD_SUPERIOR, 0}, {CMD_NAME, COMPLETE_COMMANDS, CMD_SUPERIOR, 0}, {CMD_NAME, TK_BANG, CMD_SUPERIOR, 0}, {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, @@ -160,15 +165,13 @@ t_aggrematch g_aggrematch[] = // {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF}, // {ELSE_PART, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, ALL, COMPOUND_COMMAND, 0}, - {PATTERN, CASE_LIST, PATTERN_CASE, 0}, {CASE_LIST_NS, TK_IN, TK_IN, TK_IN}, {CASE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0}, - {TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK}, // {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, {COMPOUND_LIST, TK_IF, CONDITION, TK_IF}, {COMPOUND_LIST, TK_THEN, CONDITION, TK_THEN}, - {COMPOUND_LIST, TK_PAREN_CLOSE, CASE_LIST_NS, TK_PAREN_OPEN}, + {COMPOUND_LIST, TK_PAREN_CLOSE, CASE_LIST_NS, PATTERN_CASE}, {COMPOUND_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, // {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, {COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, @@ -177,6 +180,7 @@ t_aggrematch g_aggrematch[] = {COMPOUND_COMMAND, ALL, COMMAND, 0}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, TK_PAREN_OPEN, AND_OR_MAJOR, 0}, {AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, @@ -194,9 +198,9 @@ t_aggrematch g_aggrematch[] = {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, - {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {END_COMMAND, AND_OR_MAJOR, LIST, AND_OR_MAJOR}, @@ -204,6 +208,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_PAREN_OPEN, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPLETE_COMMANDS, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_PAREN_CLOSE, PIPE_SEQUENCE, 0}, @@ -220,6 +225,7 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0}, {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_PAREN_OPEN, PIPELINE, 0}, {PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, @@ -243,6 +249,7 @@ t_aggrematch g_aggrematch[] = {PIPELINE, COMPOUND_LIST, AND_OR, 0}, {PIPELINE, CASE_LIST_NS, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, + {PIPELINE, TK_PAREN_OPEN, AND_OR, 0}, {PIPELINE, COMPLETE_COMMANDS, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, @@ -263,12 +270,15 @@ t_aggrematch g_aggrematch[] = {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, + {AND_OR, TK_PAREN_OPEN, LIST, 0}, {AND_OR, COMPLETE_COMMANDS, LIST, 0}, {LIST, NEWLINE_LIST, COMPLETE_COMMAND, 0}, {LIST, LINEBREAK, COMPLETE_COMMAND, 0}, + {LIST, TK_PAREN_OPEN, LIST, 0}, {LIST, COMPLETE_COMMANDS, COMPLETE_COMMAND, 0}, {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, 0}, + {COMPLETE_COMMAND, TK_PAREN_OPEN, COMPLETE_COMMANDS, 0}, {COMPLETE_COMMAND, COMPLETE_COMMANDS, COMPLETE_COMMANDS, 0}, {COMPLETE_COMMANDS, COMPLETE_COMMANDS, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {0, 0, 0, 0}, @@ -279,20 +289,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 021aef29..805dd403 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/24 16:24:44 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:27:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,17 +33,20 @@ t_treematch g_treematch[] = {TK_NEWLINE, &add_sep}, {TK_CASE, &add_cmd}, {TK_ESAC, &add_cmd}, + {TK_IN, &add_cmd}, + {TK_DSEMI, &add_cmd}, {TK_PAREN_OPEN, &add_cmd}, {TK_PAREN_CLOSE, &add_cmd}, {TK_FOR, &add_cmd}, + {SUBSHELL, &add_cmd}, {0, NULL}, }; -static int isseparator(int type, int cache) +static int isseparator(t_token *token, int cache) { - if (type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO + if (token->type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO || cache == TK_NEWLINE || cache == TK_THEN || cache == TK_IN - || cache == TK_WORD)) + || cache == TK_WORD || cache == TK_DSEMI)) return (0); return (1); } @@ -58,10 +61,11 @@ int build_tree(t_btree **ast, t_list **lst) token = (*lst)->content; //check bug de cache case ? // cache = token->type; + if (token->type == TK_PAREN_OPEN && cache != TK_IN && cache != TK_DSEMI) + token->type = SUBSHELL; while (g_treematch[i].type) { - if (g_treematch[i].type == token->type - && isseparator(token->type, cache)) + if ((isseparator(token, cache) && g_treematch[i].type == token->type)) { DG("func TK : '%s' TK : '%s'", diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 827807be..169be95f 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/21 19:27:59 by jhalford ### ########.fr */ +/* Updated: 2017/02/24 19:12:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ t_errormatch g_errormatch[] = { {TK_NEWLINE, "newline"}, {TK_SEMI, ";"}, + {TK_DSEMI, ";;"}, {TK_PIPE, "|"}, {TK_AMP, "&"}, {TK_LESS, "<"}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index eeb9b093..eac28ec2 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -18,6 +18,7 @@ t_stackmatch g_stackmatch[] = {TK_WORD, TK_CASE}, {TK_WORD, WORDLIST}, {TK_WORD, LINEBREAK}, + {TK_WORD, TK_PAREN_OPEN}, {TK_WORD, COMPLETE_COMMANDS}, {TK_WORD, TK_IN}, {TK_WORD, FOR_WORDLIST}, @@ -28,6 +29,7 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, CMD_NAME}, {TK_IO_NUMBER, CMD_WORD}, {TK_IO_NUMBER, LINEBREAK}, + {TK_IO_NUMBER, TK_PAREN_OPEN}, {TK_IO_NUMBER, COMPLETE_COMMANDS}, {TK_IO_NUMBER, TK_BANG}, {TK_IO_NUMBER, SEPARATOR_OP}, @@ -52,6 +54,7 @@ t_stackmatch g_stackmatch[] = {TK_LESS, CMD_WORD}, {TK_LESS, CMD_NAME}, {TK_LESS, LINEBREAK}, + {TK_LESS, TK_PAREN_OPEN}, {TK_LESS, COMPLETE_COMMANDS}, {TK_LESS, TK_BANG}, {TK_LESS, SEPARATOR_OP}, @@ -66,6 +69,7 @@ t_stackmatch g_stackmatch[] = {TK_GREAT, CMD_WORD}, {TK_GREAT, CMD_NAME}, {TK_GREAT, LINEBREAK}, + {TK_GREAT, TK_PAREN_OPEN}, {TK_GREAT, COMPLETE_COMMANDS}, {TK_GREAT, TK_BANG}, {TK_GREAT, SEPARATOR_OP}, @@ -82,6 +86,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, CMD_WORD}, {TK_DLESS, CMD_NAME}, {TK_DLESS, LINEBREAK}, + {TK_DLESS, TK_PAREN_OPEN}, {TK_DLESS, COMPLETE_COMMANDS}, {TK_DLESS, TK_BANG}, {TK_DLESS, SEPARATOR_OP}, @@ -97,6 +102,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, CMD_WORD}, {TK_DLESSDASH, CMD_NAME}, {TK_DLESSDASH, LINEBREAK}, + {TK_DLESSDASH, TK_PAREN_OPEN}, {TK_DLESSDASH, COMPLETE_COMMANDS}, {TK_DLESSDASH, TK_BANG}, {TK_DLESSDASH, TK_BANG}, @@ -113,6 +119,7 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, CMD_WORD}, {TK_DGREAT, CMD_NAME}, {TK_DGREAT, LINEBREAK}, + {TK_DGREAT, TK_PAREN_OPEN}, {TK_DGREAT, COMPLETE_COMMANDS}, {TK_DGREAT, TK_BANG}, {TK_DGREAT, TK_BANG}, @@ -129,6 +136,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, CMD_WORD}, {TK_LESSAND, CMD_NAME}, {TK_LESSAND, LINEBREAK}, + {TK_LESSAND, TK_PAREN_OPEN}, {TK_LESSAND, COMPLETE_COMMANDS}, {TK_LESSAND, TK_BANG}, {TK_LESSAND, TK_BANG}, @@ -145,6 +153,7 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, CMD_WORD}, {TK_GREATAND, CMD_NAME}, {TK_GREATAND, LINEBREAK}, + {TK_GREATAND, TK_PAREN_OPEN}, {TK_GREATAND, COMPLETE_COMMANDS}, {TK_LESSAND, TK_BANG}, {TK_GREATAND, TK_BANG}, @@ -161,6 +170,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, CMD_WORD}, {TK_LESSGREAT, CMD_NAME}, {TK_LESSGREAT, LINEBREAK}, + {TK_LESSGREAT, TK_PAREN_OPEN}, {TK_LESSGREAT, COMPLETE_COMMANDS}, {TK_LESSGREAT, TK_BANG}, {TK_LESSGREAT, TK_BANG}, @@ -177,6 +187,7 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, CMD_WORD}, {TK_CLOBBER, CMD_NAME}, {TK_CLOBBER, LINEBREAK}, + {TK_CLOBBER, TK_PAREN_OPEN}, {TK_CLOBBER, COMPLETE_COMMANDS}, {TK_CLOBBER, TK_BANG}, {TK_CLOBBER, TK_BANG}, @@ -187,6 +198,7 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, + {TK_IF, TK_PAREN_OPEN}, {TK_IF, TK_PAREN_CLOSE}, {TK_IF, COMPLETE_COMMANDS}, {TK_IF, TK_BANG}, @@ -226,6 +238,7 @@ t_stackmatch g_stackmatch[] = {TK_DONE, COMPOUND_LIST}, {TK_DONE, END_COMMAND}, {TK_CASE, LINEBREAK}, + {TK_CASE, TK_PAREN_OPEN}, {TK_CASE, COMPLETE_COMMANDS}, {TK_CASE, TK_BANG}, {TK_CASE, TK_DO}, @@ -248,6 +261,7 @@ t_stackmatch g_stackmatch[] = {TK_ESAC, LINEBREAK}, {TK_ESAC, TK_IN}, {TK_WHILE, LINEBREAK}, + {TK_WHILE, TK_PAREN_OPEN}, {TK_WHILE, COMPLETE_COMMANDS}, {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, @@ -265,6 +279,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_THEN}, {TK_WHILE, COMPLETE_CONDITION}, {TK_UNTIL, LINEBREAK}, + {TK_UNTIL, TK_PAREN_OPEN}, {TK_UNTIL, COMPLETE_COMMANDS}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, @@ -282,6 +297,7 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, TK_PAREN_CLOSE}, {TK_UNTIL, COMPLETE_CONDITION}, {TK_FOR, LINEBREAK}, + {TK_FOR, TK_PAREN_OPEN}, {TK_FOR, COMPLETE_COMMANDS}, {TK_FOR, TK_BANG}, {TK_FOR, TK_BANG}, @@ -300,6 +316,7 @@ t_stackmatch g_stackmatch[] = {TK_FOR, TK_PAREN_CLOSE}, {TK_FOR, COMPLETE_CONDITION}, {TK_LBRACE, LINEBREAK}, + {TK_LBRACE, TK_PAREN_OPEN}, {TK_LBRACE, COMPLETE_COMMANDS}, {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, @@ -308,6 +325,7 @@ t_stackmatch g_stackmatch[] = {TK_RBRACE, COMPOUND_LIST}, {TK_RBRACE, CASE_LIST_NS}, {TK_BANG, LINEBREAK}, + {TK_BANG, TK_PAREN_OPEN}, {TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, SEPARATOR_OP}, {TK_BANG, SEPARATOR_OP}, @@ -325,20 +343,29 @@ t_stackmatch g_stackmatch[] = {TK_AMP, TERM}, {TK_PIPE, PATTERN}, {TK_PIPE, CMD_SUPERIOR}, - {TK_PAREN_OPEN, FNAME}, - {TK_PAREN_OPEN, CASE_LIST_NS}, - {TK_PAREN_OPEN, TK_IN}, - {TK_PAREN_OPEN, CASE_LIST}, - {TK_PAREN_OPEN, LINEBREAK}, + {PATTERN_CASE, TK_IN}, + {PATTERN_CASE, CASE_LIST_NS}, {TK_PAREN_OPEN, COMPLETE_COMMANDS}, - {TK_PAREN_OPEN, TK_BANG}, + {TK_PAREN_OPEN, LINEBREAK}, + {TK_PAREN_OPEN, TK_PAREN_OPEN}, {TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, NEWLINE_LIST}, {TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE}, - {TK_PAREN_CLOSE, TK_PAREN_OPEN}, - {TK_PAREN_CLOSE, PATTERN}, - {TK_PAREN_CLOSE, COMPOUND_LIST}, + {TK_PAREN_OPEN, AND_OR_MAJOR}, + {TK_PAREN_OPEN, TK_WHILE}, + {TK_PAREN_OPEN, TK_UNTIL}, + {TK_PAREN_OPEN, TK_DO}, + {TK_PAREN_OPEN, TK_PAREN_CLOSE}, + {TK_PAREN_OPEN, TK_PAREN_OPEN}, + {TK_PAREN_OPEN, TK_IF}, + {TK_PAREN_OPEN, TK_ELIF}, + {TK_PAREN_OPEN, TK_THEN}, + {TK_PAREN_OPEN, TK_ELSE}, + {TK_PAREN_OPEN, COMPOUND_LIST}, + {TK_PAREN_OPEN, CASE_LIST_NS}, + {TK_PAREN_OPEN, COMPLETE_CONDITION}, + {TK_PAREN_OPEN, TK_IN}, {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, @@ -354,6 +381,7 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_ELIF}, {END_COMMAND, TK_ELSE}, {END_COMMAND, LINEBREAK}, + {END_COMMAND, TK_PAREN_OPEN}, {END_COMMAND, COMPLETE_COMMANDS}, {END_COMMAND, COMPOUND_LIST}, {END_COMMAND, CASE_LIST_NS}, @@ -372,7 +400,6 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, TK_SEMI}, {LINEBREAK, END_COMMAND}, {LINEBREAK, SEPARATOR_OP}, - {LINEBREAK, SEPARATOR_OP}, {LINEBREAK, TK_PAREN_CLOSE}, {LINEBREAK, WORD}, {LINEBREAK, IN}, @@ -386,6 +413,25 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, COMPOUND_LIST}, {LINEBREAK, CASE_LIST_NS}, {LINEBREAK, PROGRAM}, + {LINEBREAK, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, TK_SEMI}, + {TK_PAREN_CLOSE, END_COMMAND}, + {TK_PAREN_CLOSE, SEPARATOR_OP}, + {TK_PAREN_CLOSE, WORD}, + {TK_PAREN_CLOSE, IN}, + {TK_PAREN_CLOSE, TK_AND_IF}, + {TK_PAREN_CLOSE, TK_OR_IF}, + {TK_PAREN_CLOSE, TK_PIPE}, + {TK_PAREN_CLOSE, TK_PAREN_CLOSE}, + {TK_PAREN_CLOSE, COMPLETE_COMMANDS}, + {TK_PAREN_CLOSE, CMD_SUPERIOR}, + {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE}, + {TK_PAREN_CLOSE, CASE_LIST_NS}, + {TK_PAREN_CLOSE, PROGRAM}, + {TK_PAREN_CLOSE, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, PATTERN_CASE}, + {TK_PAREN_CLOSE, PATTERN}, + {TK_PAREN_CLOSE, COMPOUND_LIST}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, CASE_LIST_NS}, {NEWLINE_LIST, TK_PAREN_CLOSE}, @@ -410,6 +456,7 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION}, {NEWLINE_LIST, LINEBREAK}, + {NEWLINE_LIST, TK_PAREN_OPEN}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESSDASH}, @@ -421,6 +468,7 @@ t_stackmatch g_stackmatch[] = {IO_HERE, CMD_WORD}, {IO_HERE, CMD_NAME}, {IO_HERE, LINEBREAK}, + {IO_HERE, TK_PAREN_OPEN}, {IO_HERE, COMPLETE_COMMANDS}, {IO_HERE, TK_BANG}, {IO_HERE, TK_BANG}, @@ -455,6 +503,7 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, CMD_WORD}, {IO_REDIRECT, CMD_NAME}, {IO_REDIRECT, LINEBREAK}, + {IO_REDIRECT, TK_PAREN_OPEN}, {IO_REDIRECT, COMPLETE_COMMANDS}, {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, TK_BANG}, @@ -466,6 +515,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUFFIX, CMD_NAME}, {CMD_SUFFIX, CMD_SUPERIOR}, {CMD_PREFIX, LINEBREAK}, + {CMD_PREFIX, TK_PAREN_OPEN}, {CMD_PREFIX, COMPLETE_COMMANDS}, {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, TK_BANG}, @@ -475,6 +525,7 @@ t_stackmatch g_stackmatch[] = {CMD_WORD, CMD_PREFIX}, {CMD_NAME, COMPLETE_COMMANDS}, {CMD_NAME, LINEBREAK}, + {CMD_NAME, TK_PAREN_OPEN}, {CMD_NAME, TK_BANG}, {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, @@ -485,6 +536,7 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_UNTIL}, {CMD_NAME, TK_DO}, {CMD_NAME, TK_PAREN_CLOSE}, + {CMD_NAME, TK_PAREN_OPEN}, {CMD_NAME, TK_IF}, {CMD_NAME, TK_ELIF}, {CMD_NAME, TK_THEN}, @@ -505,6 +557,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, CASE_LIST_NS}, {CMD_SUPERIOR, COMPLETE_CONDITION}, {CMD_SUPERIOR, LINEBREAK}, + {CMD_SUPERIOR, TK_PAREN_OPEN}, {CMD_SUPERIOR, COMPLETE_COMMANDS}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, TK_BANG}, @@ -526,6 +579,7 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, CASE_LIST_NS}, {SIMPLE_COMMAND, COMPLETE_CONDITION}, {SIMPLE_COMMAND, LINEBREAK}, + {SIMPLE_COMMAND, TK_PAREN_OPEN}, {SIMPLE_COMMAND, COMPLETE_COMMANDS}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, TK_BANG}, @@ -540,15 +594,18 @@ t_stackmatch g_stackmatch[] = {LOOP, TK_WHILE}, {LOOP, TK_UNTIL}, {CONDITION, LINEBREAK}, + {CONDITION, TK_PAREN_OPEN}, {CONDITION, COMPLETE_COMMANDS}, {CONDITION, COMPOUND_LIST}, {CONDITION, CASE_LIST_NS}, {CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, LINEBREAK}, + {COMPLETE_CONDITION, TK_PAREN_OPEN}, {COMPLETE_CONDITION, COMPLETE_COMMANDS}, {COMPLETE_CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, COMPLETE_CONDITION}, {BRACE_GROUP, LINEBREAK}, + {BRACE_GROUP, TK_PAREN_OPEN}, {BRACE_GROUP, COMPLETE_COMMANDS}, {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, TK_BANG}, @@ -556,6 +613,7 @@ t_stackmatch g_stackmatch[] = {BRACE_GROUP, NEWLINE_LIST}, {BRACE_GROUP, PIPE_SEMI_SEQUENCE}, {FNAME, LINEBREAK}, + {FNAME, TK_PAREN_OPEN}, {FNAME, COMPLETE_COMMANDS}, {FNAME, TK_BANG}, {FNAME, TK_BANG}, @@ -564,6 +622,7 @@ t_stackmatch g_stackmatch[] = {FNAME, PIPE_SEMI_SEQUENCE}, {FUNCTION_BODY, FUNC}, {FUNCTION_DEFINITION, LINEBREAK}, + {FUNCTION_DEFINITION, TK_PAREN_OPEN}, {FUNCTION_DEFINITION, COMPLETE_COMMANDS}, {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, TK_BANG}, @@ -571,9 +630,9 @@ t_stackmatch g_stackmatch[] = {FUNCTION_DEFINITION, NEWLINE_LIST}, {FUNCTION_DEFINITION, PIPE_SEMI_SEQUENCE}, {UNTIL_CLAUSE, LINEBREAK}, + {UNTIL_CLAUSE, TK_PAREN_OPEN}, {UNTIL_CLAUSE, COMPLETE_COMMANDS}, {UNTIL_CLAUSE, TK_BANG}, - {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE}, @@ -588,7 +647,9 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, COMPOUND_LIST}, {UNTIL_CLAUSE, CASE_LIST_NS}, {UNTIL_CLAUSE, COMPLETE_CONDITION}, + {UNTIL_CLAUSE, AND_OR_MAJOR}, {WHILE_CLAUSE, LINEBREAK}, + {WHILE_CLAUSE, TK_PAREN_OPEN}, {WHILE_CLAUSE, COMPLETE_COMMANDS}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, @@ -605,9 +666,11 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, COMPOUND_LIST}, {WHILE_CLAUSE, CASE_LIST_NS}, {WHILE_CLAUSE, COMPLETE_CONDITION}, + {WHILE_CLAUSE, AND_OR_MAJOR}, // {ELSE_PART, COMPOUND_LIST}, // {ELSE_PART, COMPLETE_CONDITION}, {IF_CLAUSE, LINEBREAK}, + {IF_CLAUSE, TK_PAREN_OPEN}, {IF_CLAUSE, COMPLETE_COMMANDS}, {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, @@ -625,13 +688,14 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, CASE_LIST_NS}, {IF_CLAUSE, COMPLETE_COMMAND}, {IF_CLAUSE, COMPLETE_CONDITION}, + {IF_CLAUSE, AND_OR_MAJOR}, - {PATTERN, TK_PAREN_OPEN}, + {PATTERN, PATTERN_CASE}, {PATTERN, CASE_LIST}, {PATTERN, TK_IN}, - {PATTERN_CASE, CASE_LIST}, {CASE_LIST_NS, LINEBREAK}, {CASE_CLAUSE, LINEBREAK}, + {CASE_CLAUSE, TK_PAREN_OPEN}, {CASE_CLAUSE, COMPLETE_COMMANDS}, {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, SEPARATOR_OP}, @@ -648,13 +712,15 @@ t_stackmatch g_stackmatch[] = {CASE_CLAUSE, TK_ELSE}, {CASE_CLAUSE, COMPOUND_LIST}, {CASE_CLAUSE, CASE_LIST_NS}, - {CASE_CLAUSE, COMPLETE_COMMAND}, + {CASE_CLAUSE, COMPLETE_CONDITION}, + {CASE_CLAUSE, AND_OR_MAJOR}, {WORDLIST, IN}, {IN, LINEBREAK}, {NAME, TK_FOR}, {FOR_WORDLIST, NAME}, {FOR_CLAUSE, LINEBREAK}, + {FOR_CLAUSE, TK_PAREN_OPEN}, {FOR_CLAUSE, COMPLETE_COMMANDS}, {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, TK_BANG}, @@ -672,6 +738,7 @@ t_stackmatch g_stackmatch[] = {FOR_CLAUSE, COMPOUND_LIST}, {FOR_CLAUSE, CASE_LIST_NS}, {FOR_CLAUSE, COMPLETE_CONDITION}, + {FOR_CLAUSE, AND_OR_MAJOR}, {TERM, LINEBREAK}, {TERM, COMPLETE_COMMANDS}, {COMPOUND_LIST, TK_DO}, @@ -689,11 +756,26 @@ t_stackmatch g_stackmatch[] = {SUBSHELL, LINEBREAK}, {SUBSHELL, COMPLETE_COMMANDS}, {SUBSHELL, TK_BANG}, - {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, {SUBSHELL, NEWLINE_LIST}, {SUBSHELL, PIPE_SEMI_SEQUENCE}, + {SUBSHELL, SEPARATOR_OP}, + {SUBSHELL, NEWLINE_LIST}, + {SUBSHELL, PIPE_SEMI_SEQUENCE}, + {SUBSHELL, TK_DO}, + {SUBSHELL, TK_PAREN_CLOSE}, + {SUBSHELL, TK_WHILE}, + {SUBSHELL, TK_UNTIL}, + {SUBSHELL, TK_IF}, + {SUBSHELL, TK_ELIF}, + {SUBSHELL, TK_THEN}, + {SUBSHELL, TK_ELSE}, + {SUBSHELL, COMPOUND_LIST}, + {SUBSHELL, CASE_LIST_NS}, + {SUBSHELL, COMPLETE_CONDITION}, + {SUBSHELL, AND_OR_MAJOR}, {COMPOUND_COMMAND, LINEBREAK}, + {COMPOUND_COMMAND, TK_PAREN_OPEN}, {COMPOUND_COMMAND, COMPLETE_COMMANDS}, {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, TK_BANG}, @@ -712,9 +794,11 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, COMPOUND_LIST}, {COMPOUND_COMMAND, CASE_LIST_NS}, {COMPOUND_COMMAND, COMPLETE_CONDITION}, + {COMPOUND_COMMAND, AND_OR_MAJOR}, {COMMAND, TK_WHILE}, {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, + {COMMAND, TK_PAREN_OPEN}, {COMMAND, COMPLETE_COMMANDS}, {COMMAND, TK_DO}, {COMMAND, TK_PAREN_CLOSE}, @@ -732,9 +816,9 @@ t_stackmatch g_stackmatch[] = {COMMAND, AND_OR_MAJOR}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK}, + {AND_OR_MINOR, TK_PAREN_OPEN}, {AND_OR_MINOR, COMPLETE_COMMANDS}, {AND_OR_MINOR, AND_OR_MAJOR}, - {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, TK_UNTIL}, {PIPE_SEQUENCE, TK_DO}, @@ -747,6 +831,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, CASE_LIST_NS}, {PIPE_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEQUENCE, LINEBREAK}, + {PIPE_SEQUENCE, TK_PAREN_OPEN}, {PIPE_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, TK_BANG}, @@ -765,6 +850,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, CASE_LIST_NS}, {PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, + {PIPE_SEMI_SEQUENCE, TK_PAREN_OPEN}, {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, TK_BANG}, @@ -783,12 +869,14 @@ t_stackmatch g_stackmatch[] = {PIPELINE, CASE_LIST_NS}, {PIPELINE, COMPLETE_CONDITION}, {PIPELINE, LINEBREAK}, + {PIPELINE, TK_PAREN_OPEN}, {PIPELINE, COMPLETE_COMMANDS}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, NEWLINE_LIST}, {PIPELINE, AND_OR_MAJOR}, {AND_OR_MAJOR, LINEBREAK}, + {AND_OR_MAJOR, TK_PAREN_OPEN}, {AND_OR_MAJOR, COMPLETE_COMMANDS}, {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR}, @@ -804,17 +892,21 @@ t_stackmatch g_stackmatch[] = {AND_OR, CASE_LIST_NS}, {AND_OR, COMPLETE_CONDITION}, {AND_OR, LINEBREAK}, + {AND_OR, TK_PAREN_OPEN}, {AND_OR, COMPLETE_COMMANDS}, {AND_OR, SEPARATOR_OP}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, {LIST, LINEBREAK}, + {LIST, TK_PAREN_OPEN}, {LIST, COMPLETE_COMMANDS}, {LIST, NEWLINE_LIST}, {COMPLETE_COMMAND, LINEBREAK}, + {COMPLETE_COMMAND, TK_PAREN_OPEN}, {COMPLETE_COMMAND, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, NEWLINE_LIST}, {COMPLETE_COMMANDS, LINEBREAK}, + {COMPLETE_COMMANDS, TK_PAREN_OPEN}, {COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {0, 0}, }; @@ -823,7 +915,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; -// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 714d5b4e..01f978b8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -43,7 +43,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) aggregate_sym(&parser->stack, parser->new_sym, &parser->state); push_stack(++parser->stack, *parser->new_sym); } -// ft_read_stack(parser->stack); + ft_read_stack(parser->stack); DG("\n"); if (*parser->stack == PROGRAM) parser->state = SUCCESS; @@ -56,5 +56,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); } + if (parser->state == SUCCESS) + DG("sucessful parsing"); return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 505a21a6..1cc792f4 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/21 22:21:41 by ariard ### ########.fr */ +/* Updated: 2017/02/24 18:25:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,14 +45,17 @@ t_prodmatch g_prodmatch[] = {TK_WORD, TK_BANG, CMD_NAME}, {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, {TK_WORD, SEPARATOR_OP, CMD_NAME}, + {TK_WORD, TK_PAREN_OPEN, CMD_NAME}, {TK_WORD, CASE_LIST, PATTERN}, - {TK_WORD, TK_PAREN_OPEN, PATTERN}, + {TK_WORD, PATTERN_CASE, PATTERN}, {TK_WORD, COMPLETE_COMMANDS, CMD_NAME}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, TK_PAREN_OPEN, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, {TK_NAME, LINEBREAK, FNAME}, + {TK_NAME, TK_PAREN_OPEN, FNAME}, {TK_NAME, TK_BANG, FNAME}, {TK_NAME, SEPARATOR_OP, FNAME}, {TK_NAME, NEWLINE_LIST, FNAME}, @@ -71,6 +74,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, CMD_NAME, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, + {TK_NEWLINE, TK_PAREN_OPEN, NEWLINE_LIST}, {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, @@ -97,8 +101,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; -// DG("produce stack : %s && token : %s", read_state(stack), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(stack), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -106,7 +110,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { -// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; From a3c750494f116ccedb69a9b7113ad5634e84bc1b Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 19:32:45 +0100 Subject: [PATCH 097/206] good code --- 42sh/src/parser/add_cmd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 9b26dd7c..489eb52b 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:29:04 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:31:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,10 +19,10 @@ int add_cmd(t_btree **ast, t_list **lst) char **my_tab; DG("add cmd"); - if (!*ast) - gen_node(ast); - else if ((token = (*lst)->content)->type == TK_IN) + if ((token = (*lst)->content)->type == TK_IN) return (0); + else if (!*ast) + gen_node(ast); else if (isdir(ast)) return (add_file(ast, lst)); else if (isloop(ast, lst) == 3) From f703185a3a01fbf9e94f7cea9fbf6dfdb411db3c Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 21:00:38 +0100 Subject: [PATCH 098/206] assignement word lexing parsing --- 42sh/Makefile | 3 +- 42sh/includes/lexer.h | 4 ++- 42sh/sample/assignement/var_01.sh | 1 + 42sh/sample/func/func01.sh | 4 +++ 42sh/src/lexer/get_state_global.c | 4 ++- 42sh/src/lexer/get_state_redir.c | 2 +- 42sh/src/lexer/lexer_assignement_word.c | 37 +++++++++++++++++++++++++ 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_lex.c | 3 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/main/ft_putast.c | 4 ++- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/build_tree.c | 3 +- 42sh/src/parser/read_stack.c | 4 ++- 17 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 42sh/sample/assignement/var_01.sh create mode 100644 42sh/sample/func/func01.sh create mode 100644 42sh/src/lexer/lexer_assignement_word.c diff --git a/42sh/Makefile b/42sh/Makefile index 4193e6da..c9126e3d 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/24 18:49:55 by ariard ### ########.fr # +# Updated: 2017/02/24 20:51:33 by ariard ### ########.fr # # # # **************************************************************************** # @@ -189,6 +189,7 @@ lexer/lexer_lex.c\ lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_paren.c\ +lexer/lexer_assignement_word.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ lexer/lexer_word.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 61c31a2c..7602ed9f 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:12:01 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:45:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,7 @@ enum e_lexstate DQUOTE_BQUOTE, BACKSLASH, PAREN, + ASSIGNEMENT_WORD, // VAR, // SPECIAL, COMMENT, @@ -111,6 +112,7 @@ int lexer_dquote(t_list **alst, t_lexer *lexer); int lexer_bquote(t_list **alst, t_lexer *lexer); int lexer_backslash(t_list **alst, t_lexer *lexer); int lexer_paren(t_list **alst, t_lexer *lexer); +int lexer_assignement_word(t_list **alst, t_lexer *lexer); int lexer_comment(t_list **alst, t_lexer *lexer); int lexer_end(t_list **alst, t_lexer *lexer); diff --git a/42sh/sample/assignement/var_01.sh b/42sh/sample/assignement/var_01.sh new file mode 100644 index 00000000..d77e8f12 --- /dev/null +++ b/42sh/sample/assignement/var_01.sh @@ -0,0 +1 @@ +HELLO=WORLD diff --git a/42sh/sample/func/func01.sh b/42sh/sample/func/func01.sh new file mode 100644 index 00000000..579f9b0f --- /dev/null +++ b/42sh/sample/func/func01.sh @@ -0,0 +1,4 @@ +hello() { + ls | cat + pwd ; cd +} diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index 41ae160e..72886e5c 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:48:53 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:45:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,8 @@ t_lexstate get_state_global(t_lexer *lexer) return (BQUOTE); else if (c == '(' || c == ')') return (PAREN); + else if (c == '=') + return (ASSIGNEMENT_WORD); else if (c == 0) return (END); return (0); diff --git a/42sh/src/lexer/get_state_redir.c b/42sh/src/lexer/get_state_redir.c index 7b6acd31..6ea22d94 100644 --- a/42sh/src/lexer/get_state_redir.c +++ b/42sh/src/lexer/get_state_redir.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:37:28 by jhalford #+# #+# */ -/* Updated: 2017/02/09 20:39:11 by jhalford ### ########.fr */ +/* Updated: 2017/02/24 20:44:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_assignement_word.c b/42sh/src/lexer/lexer_assignement_word.c new file mode 100644 index 00000000..70429bed --- /dev/null +++ b/42sh/src/lexer/lexer_assignement_word.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_assignement_word.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/24 20:28:13 by ariard #+# #+# */ +/* Updated: 2017/02/24 21:00:13 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "lexer.h" + +int lexer_assignement_word(t_list **alst, t_lexer *lexer) +{ + t_token *token; + char c; + + token = (*alst)->content; + if (token->type != TK_WORD && token->type != TK_ASSIGNEMENT_WORD) + { + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_lex(alst, lexer)); + } + token->type = TK_ASSIGNEMENT_WORD; + token_append(token, lexer, 0, 0); + lexer->pos++; + c = lexer->str[lexer->pos]; + if ((lexer->state = get_state_global(lexer))) + return (lexer_lex(alst, lexer)); + if ((lexer->state = get_state_redir(lexer))) + return (lexer_lex(alst, lexer)); + lexer->state = ft_isdigit(c) ? NUMBER : ASSIGNEMENT_WORD; + return(lexer_lex(alst, lexer)); +} diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 200bdec0..f1781eed 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:40:44 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:43:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 222b5616..0bb7ebca 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:44:37 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:51:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_bquote, &lexer_backslash, &lexer_paren, + &lexer_assignement_word, &lexer_comment, &lexer_end, }; diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index f8c7ea6b..910be7b8 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:54:32 by ariard ### ########.fr */ +/* Updated: 2017/02/24 21:00:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 6d83ee13..0ec12be6 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:34:55 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:33:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 65e550aa..134e3370 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/24 19:06:19 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:59:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,8 @@ char *ft_putast(void *nodein) { t_astnode *node; node = nodein; + if (node->type == TK_ASSIGNEMENT_WORD) + return ("ASSIGNEMENT_WORD"); if (node->type == SUBSHELL) return ("SUBSHELL"); if (node->type == TK_NAME) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 032b4529..bfe103c2 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/24 18:39:09 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:58:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 489eb52b..b1843f82 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:31:18 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:40:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 4fef29e4..5a084a01 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/24 18:54:09 by ariard ### ########.fr */ +/* Updated: 2017/02/24 19:40:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 805dd403..78c77692 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:27:32 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:59:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,6 +38,7 @@ t_treematch g_treematch[] = {TK_PAREN_OPEN, &add_cmd}, {TK_PAREN_CLOSE, &add_cmd}, {TK_FOR, &add_cmd}, + {TK_ASSIGNEMENT_WORD, &add_cmd}, {SUBSHELL, &add_cmd}, {0, NULL}, }; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 3371958e..09f6ee03 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/21 20:39:13 by ariard ### ########.fr */ +/* Updated: 2017/02/24 20:57:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == TK_ASSIGNEMENT_WORD) + return ("TK_ASSIGNEMENT_WORD"); if (current == CASE_CLAUSE) return ("CASE_CLAUSE"); if (current == CASE_LIST_NS) From 102196bff472d3a1a239b4dac11edece6d3a4095 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 23:17:29 +0100 Subject: [PATCH 099/206] parsing brace_clause + func def ok --- 42sh/Makefile | 3 +- 42sh/includes/lexer.h | 4 +- 42sh/includes/parser.h | 4 + 42sh/objs/builtin/bt_read_get.d | 10 ++ 42sh/objs/builtin/bt_read_parse.d | 10 ++ 42sh/objs/builtin/bt_read_term.d | 10 ++ 42sh/objs/builtin/builtin_cd.d | 9 ++ 42sh/objs/builtin/builtin_echo.d | 10 ++ 42sh/objs/builtin/builtin_env.d | 10 ++ 42sh/objs/builtin/builtin_exit.d | 10 ++ 42sh/objs/builtin/builtin_export.d | 10 ++ 42sh/objs/builtin/builtin_hash.d | 10 ++ 42sh/objs/builtin/builtin_history.d | 10 ++ 42sh/objs/builtin/builtin_read.d | 10 ++ 42sh/objs/builtin/builtin_setenv.d | 10 ++ 42sh/objs/builtin/builtin_unset.d | 10 ++ 42sh/objs/builtin/builtin_unsetenv.d | 10 ++ 42sh/objs/builtin/is_builtin.d | 10 ++ 42sh/objs/completion/c_binary.d | 10 ++ 42sh/objs/completion/c_clear.d | 9 ++ 42sh/objs/completion/c_files.d | 9 ++ 42sh/objs/completion/c_init.d | 9 ++ 42sh/objs/completion/c_matching.d | 10 ++ 42sh/objs/completion/c_misc.d | 9 ++ 42sh/objs/completion/c_output.d | 10 ++ 42sh/objs/completion/c_parser.d | 10 ++ 42sh/objs/completion/c_pathsolver.d | 10 ++ 42sh/objs/completion/c_printer.d | 10 ++ 42sh/objs/completion/c_rematch.d | 10 ++ 42sh/objs/completion/c_sizing.d | 10 ++ 42sh/objs/completion/c_terminal.d | 10 ++ 42sh/objs/completion/completion.d | 10 ++ 42sh/objs/exec/ast_free.d | 10 ++ 42sh/objs/exec/bad_fd.d | 10 ++ 42sh/objs/exec/exec_ampersand.d | 10 ++ 42sh/objs/exec/exec_and_if.d | 10 ++ 42sh/objs/exec/exec_command.d | 10 ++ 42sh/objs/exec/exec_default.d | 10 ++ 42sh/objs/exec/exec_elif.d | 10 ++ 42sh/objs/exec/exec_else.d | 10 ++ 42sh/objs/exec/exec_if.d | 10 ++ 42sh/objs/exec/exec_less.d | 10 ++ 42sh/objs/exec/exec_or_if.d | 10 ++ 42sh/objs/exec/exec_pipe.d | 10 ++ 42sh/objs/exec/exec_redir.d | 10 ++ 42sh/objs/exec/exec_semi.d | 10 ++ 42sh/objs/exec/exec_until.d | 10 ++ 42sh/objs/exec/exec_while.d | 10 ++ 42sh/objs/exec/fd_is_valid.d | 10 ++ 42sh/objs/exec/ft_exec.d | 10 ++ 42sh/objs/exec/ft_findexec.d | 10 ++ 42sh/objs/exec/launch_process.d | 10 ++ 42sh/objs/exec/loop_del.d | 10 ++ 42sh/objs/exec/loop_exec.d | 10 ++ 42sh/objs/exec/process_redirect.d | 10 ++ 42sh/objs/exec/process_reset.d | 10 ++ 42sh/objs/exec/process_resetfds.d | 10 ++ 42sh/objs/exec/process_setexec.d | 10 ++ 42sh/objs/exec/process_setgroup.d | 10 ++ 42sh/objs/exec/process_setsig.d | 10 ++ 42sh/objs/exec/redirect_dgreat.d | 10 ++ 42sh/objs/exec/redirect_dless.d | 10 ++ 42sh/objs/exec/redirect_great.d | 10 ++ 42sh/objs/exec/redirect_greatand.d | 10 ++ 42sh/objs/exec/redirect_less.d | 10 ++ 42sh/objs/exec/redirect_lessand.d | 10 ++ 42sh/objs/exec/set_exitstatus.d | 10 ++ 42sh/objs/glob/command_getoutput.d | 10 ++ 42sh/objs/glob/dir_glob.d | 9 ++ 42sh/objs/glob/esc_print.d | 9 ++ 42sh/objs/glob/expand_bquote.d | 9 ++ 42sh/objs/glob/expand_brace.d | 9 ++ 42sh/objs/glob/expand_esc.d | 9 ++ 42sh/objs/glob/expand_var.d | 9 ++ 42sh/objs/glob/ft_strsplit_esc.d | 9 ++ 42sh/objs/glob/ft_strsplit_spe.d | 9 ++ 42sh/objs/glob/glob.d | 9 ++ 42sh/objs/glob/is_char_esc.d | 9 ++ 42sh/objs/glob/lib_perso/ft_ld_back.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_clear.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_del.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_front.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_new.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_order.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_pushback.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_pushfront.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_reverse.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_size.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_swap.d | 10 ++ 42sh/objs/glob/lib_perso/ft_ld_to_tab.d | 10 ++ 42sh/objs/glob/lib_perso/ft_memrealloc.d | 10 ++ 42sh/objs/glob/lib_perso/ft_strjoinf.d | 10 ++ 42sh/objs/glob/lib_perso/ft_strsubf.d | 10 ++ 42sh/objs/glob/lib_perso/ft_tabdel.d | 10 ++ 42sh/objs/glob/lib_perso/ft_tablen.d | 6 + 42sh/objs/glob/match_pattern.d | 9 ++ 42sh/objs/hash_table/ft_add_hash.d | 10 ++ 42sh/objs/hash_table/hash.d | 10 ++ 42sh/objs/hash_table/hash_free.d | 10 ++ 42sh/objs/hash_table/hash_str.d | 10 ++ 42sh/objs/hash_table/is_hash.d | 10 ++ 42sh/objs/history/add_str_in_history.d | 10 ++ 42sh/objs/history/history.d | 10 ++ 42sh/objs/history/history_parsing.d | 10 ++ 42sh/objs/history/history_parsing_toolz.d | 10 ++ 42sh/objs/history/history_parsing_toolz_2.d | 11 ++ 42sh/objs/history/list_toolz.d | 10 ++ 42sh/objs/history/surch_in_history.d | 10 ++ 42sh/objs/job-control/builtin_bg.d | 10 ++ 42sh/objs/job-control/builtin_fg.d | 10 ++ 42sh/objs/job-control/builtin_jobs.d | 10 ++ 42sh/objs/job-control/do_job_notification.d | 11 ++ 42sh/objs/job-control/job_addprocess.d | 10 ++ 42sh/objs/job-control/job_cmp_id.d | 10 ++ 42sh/objs/job-control/job_format.d | 10 ++ 42sh/objs/job-control/job_format_head.d | 10 ++ 42sh/objs/job-control/job_free.d | 10 ++ 42sh/objs/job-control/job_getprocess.d | 10 ++ 42sh/objs/job-control/job_getrank.d | 10 ++ 42sh/objs/job-control/job_is_completed.d | 10 ++ 42sh/objs/job-control/job_is_stopped.d | 10 ++ 42sh/objs/job-control/job_kill_all.d | 10 ++ 42sh/objs/job-control/job_notify_change.d | 10 ++ 42sh/objs/job-control/job_notify_new.d | 10 ++ 42sh/objs/job-control/job_remove.d | 10 ++ 42sh/objs/job-control/job_run.d | 10 ++ 42sh/objs/job-control/job_update_id.d | 10 ++ 42sh/objs/job-control/job_update_status.d | 10 ++ 42sh/objs/job-control/job_wait.d | 10 ++ 42sh/objs/job-control/mark_job_as_running.d | 11 ++ 42sh/objs/job-control/process_cmp_pid.d | 10 ++ 42sh/objs/job-control/process_format.d | 10 ++ 42sh/objs/job-control/process_free.d | 10 ++ 42sh/objs/job-control/process_mark_status.d | 11 ++ 42sh/objs/job-control/put_job_in_background.d | 11 ++ 42sh/objs/job-control/put_job_in_foreground.d | 11 ++ 42sh/objs/job-control/sigchld_handler.d | 10 ++ 42sh/objs/job-control/sigint_handler.d | 10 ++ 42sh/objs/job-control/sigtstp_handler.d | 10 ++ 42sh/objs/job-control/sigttin_handler.d | 10 ++ 42sh/objs/job-control/sigttou_handler.d | 10 ++ 42sh/objs/lexer/get_lexer_stack.d | 10 ++ 42sh/objs/lexer/get_reserved_words.d | 10 ++ 42sh/objs/lexer/get_state_global.d | 10 ++ 42sh/objs/lexer/get_state_redir.d | 10 ++ 42sh/objs/lexer/insert_newline.d | 9 ++ 42sh/objs/lexer/lexer_assignement_word.d | 10 ++ 42sh/objs/lexer/lexer_backslash.d | 10 ++ 42sh/objs/lexer/lexer_bquote.d | 9 ++ 42sh/objs/lexer/lexer_comment.d | 9 ++ 42sh/objs/lexer/lexer_curly_brackets.d | 10 ++ 42sh/objs/lexer/lexer_default.d | 9 ++ 42sh/objs/lexer/lexer_delim.d | 9 ++ 42sh/objs/lexer/lexer_dless.d | 9 ++ 42sh/objs/lexer/lexer_dquote.d | 9 ++ 42sh/objs/lexer/lexer_end.d | 9 ++ 42sh/objs/lexer/lexer_great.d | 9 ++ 42sh/objs/lexer/lexer_greatand.d | 9 ++ 42sh/objs/lexer/lexer_init.d | 9 ++ 42sh/objs/lexer/lexer_less.d | 9 ++ 42sh/objs/lexer/lexer_lessand.d | 9 ++ 42sh/objs/lexer/lexer_lex.d | 9 ++ 42sh/objs/lexer/lexer_newline.d | 9 ++ 42sh/objs/lexer/lexer_number.d | 9 ++ 42sh/objs/lexer/lexer_paren.d | 9 ++ 42sh/objs/lexer/lexer_quote.d | 9 ++ 42sh/objs/lexer/lexer_sep.d | 9 ++ 42sh/objs/lexer/lexer_word.d | 9 ++ 42sh/objs/lexer/token_append.d | 9 ++ 42sh/objs/lexer/token_cmp_type.d | 9 ++ 42sh/objs/lexer/token_free.d | 9 ++ 42sh/objs/lexer/token_init.d | 9 ++ 42sh/objs/lexer/token_print.d | 9 ++ 42sh/objs/line-editing/completion.d | 10 ++ 42sh/objs/line-editing/control_c_and_d.d | 10 ++ 42sh/objs/line-editing/copy_cut_paste.d | 10 ++ 42sh/objs/line-editing/ft_prompt.d | 10 ++ 42sh/objs/line-editing/get_key.d | 10 ++ 42sh/objs/line-editing/home_end.d | 10 ++ .../line-editing/lib_line_editing/tool_line.d | 11 ++ .../lib_line_editing/tool_line_2.d | 11 ++ .../line-editing/lib_line_editing/toolz.d | 11 ++ .../line-editing/lib_line_editing/toolz2.d | 11 ++ .../lib_line_editing/toolz_parseur.d | 11 ++ .../lib_line_editing/toolz_termcaps.d | 11 ++ 42sh/objs/line-editing/move_left_and_right.d | 11 ++ 42sh/objs/line-editing/move_to_word.d | 10 ++ 42sh/objs/line-editing/move_up_and_down.d | 10 ++ 42sh/objs/line-editing/print_and_del.d | 10 ++ 42sh/objs/line-editing/queue.d | 10 ++ 42sh/objs/line-editing/readline.d | 10 ++ 42sh/objs/main/data_exit.d | 10 ++ 42sh/objs/main/data_init.d | 10 ++ 42sh/objs/main/data_singleton.d | 10 ++ 42sh/objs/main/ft_putast.d | 10 ++ 42sh/objs/main/main.d | 10 ++ 42sh/objs/main/shell_exit.d | 10 ++ 42sh/objs/main/shell_get_avdata.d | 10 ++ 42sh/objs/main/shell_get_opts.d | 10 ++ 42sh/objs/main/shell_init.d | 10 ++ 42sh/objs/parser/add_case.d | 9 ++ 42sh/objs/parser/add_cmd.d | 9 ++ 42sh/objs/parser/add_condition.d | 9 ++ 42sh/objs/parser/add_file.d | 9 ++ 42sh/objs/parser/add_loop.d | 9 ++ 42sh/objs/parser/add_sep.d | 9 ++ 42sh/objs/parser/add_subshell.d | 9 ++ 42sh/objs/parser/aggregate_sym.d | 9 ++ 42sh/objs/parser/build_tree.d | 9 ++ 42sh/objs/parser/error_syntax.d | 9 ++ 42sh/objs/parser/eval_sym.d | 9 ++ 42sh/objs/parser/ft_parse.d | 9 ++ 42sh/objs/parser/parser_init.d | 9 ++ 42sh/objs/parser/pop_stack.d | 9 ++ 42sh/objs/parser/produce_sym.d | 9 ++ 42sh/objs/parser/push_stack.d | 9 ++ 42sh/objs/parser/read_stack.d | 9 ++ 42sh/objs/parser/tree_wrapper.d | 9 ++ 42sh/sample/brace/brace_01.sh | 1 + 42sh/sample/func/func01.sh | 2 +- 42sh/src/glob/command_getoutput.c | 2 +- 42sh/src/glob/dir_glob.c | 2 +- 42sh/src/glob/esc_print.c | 2 +- 42sh/src/glob/expand_bquote.c | 2 +- 42sh/src/glob/expand_brace.c | 2 +- 42sh/src/glob/expand_esc.c | 2 +- 42sh/src/glob/expand_var.c | 2 +- 42sh/src/glob/ft_strsplit_esc.c | 2 +- 42sh/src/glob/ft_strsplit_spe.c | 2 +- 42sh/src/glob/glob.c | 2 +- 42sh/src/glob/match_pattern.c | 2 +- 42sh/src/lexer/get_state_global.c | 4 +- 42sh/src/lexer/lexer_curly_brackets.c | 46 +++++++ 42sh/src/lexer/lexer_lex.c | 3 +- 42sh/src/lexer/token_print.c | 10 +- 42sh/src/main/main.c | 4 +- 42sh/src/parser/add_subshell.c | 6 +- 42sh/src/parser/aggregate_sym.c | 25 +++- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/eval_sym.c | 116 ++++++++++++++++-- 42sh/src/parser/ft_parse.c | 4 +- 42sh/src/parser/produce_sym.c | 6 +- 42sh/src/parser/read_stack.c | 10 +- 42sh/test.sh | 1 + 244 files changed, 2329 insertions(+), 44 deletions(-) create mode 100644 42sh/objs/builtin/bt_read_get.d create mode 100644 42sh/objs/builtin/bt_read_parse.d create mode 100644 42sh/objs/builtin/bt_read_term.d create mode 100644 42sh/objs/builtin/builtin_cd.d create mode 100644 42sh/objs/builtin/builtin_echo.d create mode 100644 42sh/objs/builtin/builtin_env.d create mode 100644 42sh/objs/builtin/builtin_exit.d create mode 100644 42sh/objs/builtin/builtin_export.d create mode 100644 42sh/objs/builtin/builtin_hash.d create mode 100644 42sh/objs/builtin/builtin_history.d create mode 100644 42sh/objs/builtin/builtin_read.d create mode 100644 42sh/objs/builtin/builtin_setenv.d create mode 100644 42sh/objs/builtin/builtin_unset.d create mode 100644 42sh/objs/builtin/builtin_unsetenv.d create mode 100644 42sh/objs/builtin/is_builtin.d create mode 100644 42sh/objs/completion/c_binary.d create mode 100644 42sh/objs/completion/c_clear.d create mode 100644 42sh/objs/completion/c_files.d create mode 100644 42sh/objs/completion/c_init.d create mode 100644 42sh/objs/completion/c_matching.d create mode 100644 42sh/objs/completion/c_misc.d create mode 100644 42sh/objs/completion/c_output.d create mode 100644 42sh/objs/completion/c_parser.d create mode 100644 42sh/objs/completion/c_pathsolver.d create mode 100644 42sh/objs/completion/c_printer.d create mode 100644 42sh/objs/completion/c_rematch.d create mode 100644 42sh/objs/completion/c_sizing.d create mode 100644 42sh/objs/completion/c_terminal.d create mode 100644 42sh/objs/completion/completion.d create mode 100644 42sh/objs/exec/ast_free.d create mode 100644 42sh/objs/exec/bad_fd.d create mode 100644 42sh/objs/exec/exec_ampersand.d create mode 100644 42sh/objs/exec/exec_and_if.d create mode 100644 42sh/objs/exec/exec_command.d create mode 100644 42sh/objs/exec/exec_default.d create mode 100644 42sh/objs/exec/exec_elif.d create mode 100644 42sh/objs/exec/exec_else.d create mode 100644 42sh/objs/exec/exec_if.d create mode 100644 42sh/objs/exec/exec_less.d create mode 100644 42sh/objs/exec/exec_or_if.d create mode 100644 42sh/objs/exec/exec_pipe.d create mode 100644 42sh/objs/exec/exec_redir.d create mode 100644 42sh/objs/exec/exec_semi.d create mode 100644 42sh/objs/exec/exec_until.d create mode 100644 42sh/objs/exec/exec_while.d create mode 100644 42sh/objs/exec/fd_is_valid.d create mode 100644 42sh/objs/exec/ft_exec.d create mode 100644 42sh/objs/exec/ft_findexec.d create mode 100644 42sh/objs/exec/launch_process.d create mode 100644 42sh/objs/exec/loop_del.d create mode 100644 42sh/objs/exec/loop_exec.d create mode 100644 42sh/objs/exec/process_redirect.d create mode 100644 42sh/objs/exec/process_reset.d create mode 100644 42sh/objs/exec/process_resetfds.d create mode 100644 42sh/objs/exec/process_setexec.d create mode 100644 42sh/objs/exec/process_setgroup.d create mode 100644 42sh/objs/exec/process_setsig.d create mode 100644 42sh/objs/exec/redirect_dgreat.d create mode 100644 42sh/objs/exec/redirect_dless.d create mode 100644 42sh/objs/exec/redirect_great.d create mode 100644 42sh/objs/exec/redirect_greatand.d create mode 100644 42sh/objs/exec/redirect_less.d create mode 100644 42sh/objs/exec/redirect_lessand.d create mode 100644 42sh/objs/exec/set_exitstatus.d create mode 100644 42sh/objs/glob/command_getoutput.d create mode 100644 42sh/objs/glob/dir_glob.d create mode 100644 42sh/objs/glob/esc_print.d create mode 100644 42sh/objs/glob/expand_bquote.d create mode 100644 42sh/objs/glob/expand_brace.d create mode 100644 42sh/objs/glob/expand_esc.d create mode 100644 42sh/objs/glob/expand_var.d create mode 100644 42sh/objs/glob/ft_strsplit_esc.d create mode 100644 42sh/objs/glob/ft_strsplit_spe.d create mode 100644 42sh/objs/glob/glob.d create mode 100644 42sh/objs/glob/is_char_esc.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_back.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_clear.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_del.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_front.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_new.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_order.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushback.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushfront.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_reverse.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_size.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_swap.d create mode 100644 42sh/objs/glob/lib_perso/ft_ld_to_tab.d create mode 100644 42sh/objs/glob/lib_perso/ft_memrealloc.d create mode 100644 42sh/objs/glob/lib_perso/ft_strjoinf.d create mode 100644 42sh/objs/glob/lib_perso/ft_strsubf.d create mode 100644 42sh/objs/glob/lib_perso/ft_tabdel.d create mode 100644 42sh/objs/glob/lib_perso/ft_tablen.d create mode 100644 42sh/objs/glob/match_pattern.d create mode 100644 42sh/objs/hash_table/ft_add_hash.d create mode 100644 42sh/objs/hash_table/hash.d create mode 100644 42sh/objs/hash_table/hash_free.d create mode 100644 42sh/objs/hash_table/hash_str.d create mode 100644 42sh/objs/hash_table/is_hash.d create mode 100644 42sh/objs/history/add_str_in_history.d create mode 100644 42sh/objs/history/history.d create mode 100644 42sh/objs/history/history_parsing.d create mode 100644 42sh/objs/history/history_parsing_toolz.d create mode 100644 42sh/objs/history/history_parsing_toolz_2.d create mode 100644 42sh/objs/history/list_toolz.d create mode 100644 42sh/objs/history/surch_in_history.d create mode 100644 42sh/objs/job-control/builtin_bg.d create mode 100644 42sh/objs/job-control/builtin_fg.d create mode 100644 42sh/objs/job-control/builtin_jobs.d create mode 100644 42sh/objs/job-control/do_job_notification.d create mode 100644 42sh/objs/job-control/job_addprocess.d create mode 100644 42sh/objs/job-control/job_cmp_id.d create mode 100644 42sh/objs/job-control/job_format.d create mode 100644 42sh/objs/job-control/job_format_head.d create mode 100644 42sh/objs/job-control/job_free.d create mode 100644 42sh/objs/job-control/job_getprocess.d create mode 100644 42sh/objs/job-control/job_getrank.d create mode 100644 42sh/objs/job-control/job_is_completed.d create mode 100644 42sh/objs/job-control/job_is_stopped.d create mode 100644 42sh/objs/job-control/job_kill_all.d create mode 100644 42sh/objs/job-control/job_notify_change.d create mode 100644 42sh/objs/job-control/job_notify_new.d create mode 100644 42sh/objs/job-control/job_remove.d create mode 100644 42sh/objs/job-control/job_run.d create mode 100644 42sh/objs/job-control/job_update_id.d create mode 100644 42sh/objs/job-control/job_update_status.d create mode 100644 42sh/objs/job-control/job_wait.d create mode 100644 42sh/objs/job-control/mark_job_as_running.d create mode 100644 42sh/objs/job-control/process_cmp_pid.d create mode 100644 42sh/objs/job-control/process_format.d create mode 100644 42sh/objs/job-control/process_free.d create mode 100644 42sh/objs/job-control/process_mark_status.d create mode 100644 42sh/objs/job-control/put_job_in_background.d create mode 100644 42sh/objs/job-control/put_job_in_foreground.d create mode 100644 42sh/objs/job-control/sigchld_handler.d create mode 100644 42sh/objs/job-control/sigint_handler.d create mode 100644 42sh/objs/job-control/sigtstp_handler.d create mode 100644 42sh/objs/job-control/sigttin_handler.d create mode 100644 42sh/objs/job-control/sigttou_handler.d create mode 100644 42sh/objs/lexer/get_lexer_stack.d create mode 100644 42sh/objs/lexer/get_reserved_words.d create mode 100644 42sh/objs/lexer/get_state_global.d create mode 100644 42sh/objs/lexer/get_state_redir.d create mode 100644 42sh/objs/lexer/insert_newline.d create mode 100644 42sh/objs/lexer/lexer_assignement_word.d create mode 100644 42sh/objs/lexer/lexer_backslash.d create mode 100644 42sh/objs/lexer/lexer_bquote.d create mode 100644 42sh/objs/lexer/lexer_comment.d create mode 100644 42sh/objs/lexer/lexer_curly_brackets.d create mode 100644 42sh/objs/lexer/lexer_default.d create mode 100644 42sh/objs/lexer/lexer_delim.d create mode 100644 42sh/objs/lexer/lexer_dless.d create mode 100644 42sh/objs/lexer/lexer_dquote.d create mode 100644 42sh/objs/lexer/lexer_end.d create mode 100644 42sh/objs/lexer/lexer_great.d create mode 100644 42sh/objs/lexer/lexer_greatand.d create mode 100644 42sh/objs/lexer/lexer_init.d create mode 100644 42sh/objs/lexer/lexer_less.d create mode 100644 42sh/objs/lexer/lexer_lessand.d create mode 100644 42sh/objs/lexer/lexer_lex.d create mode 100644 42sh/objs/lexer/lexer_newline.d create mode 100644 42sh/objs/lexer/lexer_number.d create mode 100644 42sh/objs/lexer/lexer_paren.d create mode 100644 42sh/objs/lexer/lexer_quote.d create mode 100644 42sh/objs/lexer/lexer_sep.d create mode 100644 42sh/objs/lexer/lexer_word.d create mode 100644 42sh/objs/lexer/token_append.d create mode 100644 42sh/objs/lexer/token_cmp_type.d create mode 100644 42sh/objs/lexer/token_free.d create mode 100644 42sh/objs/lexer/token_init.d create mode 100644 42sh/objs/lexer/token_print.d create mode 100644 42sh/objs/line-editing/completion.d create mode 100644 42sh/objs/line-editing/control_c_and_d.d create mode 100644 42sh/objs/line-editing/copy_cut_paste.d create mode 100644 42sh/objs/line-editing/ft_prompt.d create mode 100644 42sh/objs/line-editing/get_key.d create mode 100644 42sh/objs/line-editing/home_end.d create mode 100644 42sh/objs/line-editing/lib_line_editing/tool_line.d create mode 100644 42sh/objs/line-editing/lib_line_editing/tool_line_2.d create mode 100644 42sh/objs/line-editing/lib_line_editing/toolz.d create mode 100644 42sh/objs/line-editing/lib_line_editing/toolz2.d create mode 100644 42sh/objs/line-editing/lib_line_editing/toolz_parseur.d create mode 100644 42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d create mode 100644 42sh/objs/line-editing/move_left_and_right.d create mode 100644 42sh/objs/line-editing/move_to_word.d create mode 100644 42sh/objs/line-editing/move_up_and_down.d create mode 100644 42sh/objs/line-editing/print_and_del.d create mode 100644 42sh/objs/line-editing/queue.d create mode 100644 42sh/objs/line-editing/readline.d create mode 100644 42sh/objs/main/data_exit.d create mode 100644 42sh/objs/main/data_init.d create mode 100644 42sh/objs/main/data_singleton.d create mode 100644 42sh/objs/main/ft_putast.d create mode 100644 42sh/objs/main/main.d create mode 100644 42sh/objs/main/shell_exit.d create mode 100644 42sh/objs/main/shell_get_avdata.d create mode 100644 42sh/objs/main/shell_get_opts.d create mode 100644 42sh/objs/main/shell_init.d create mode 100644 42sh/objs/parser/add_case.d create mode 100644 42sh/objs/parser/add_cmd.d create mode 100644 42sh/objs/parser/add_condition.d create mode 100644 42sh/objs/parser/add_file.d create mode 100644 42sh/objs/parser/add_loop.d create mode 100644 42sh/objs/parser/add_sep.d create mode 100644 42sh/objs/parser/add_subshell.d create mode 100644 42sh/objs/parser/aggregate_sym.d create mode 100644 42sh/objs/parser/build_tree.d create mode 100644 42sh/objs/parser/error_syntax.d create mode 100644 42sh/objs/parser/eval_sym.d create mode 100644 42sh/objs/parser/ft_parse.d create mode 100644 42sh/objs/parser/parser_init.d create mode 100644 42sh/objs/parser/pop_stack.d create mode 100644 42sh/objs/parser/produce_sym.d create mode 100644 42sh/objs/parser/push_stack.d create mode 100644 42sh/objs/parser/read_stack.d create mode 100644 42sh/objs/parser/tree_wrapper.d create mode 100644 42sh/sample/brace/brace_01.sh create mode 100644 42sh/src/lexer/lexer_curly_brackets.c create mode 100644 42sh/test.sh diff --git a/42sh/Makefile b/42sh/Makefile index c9126e3d..e99bd9a8 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/24 20:51:33 by ariard ### ########.fr # +# Updated: 2017/02/24 21:33:24 by ariard ### ########.fr # # # # **************************************************************************** # @@ -189,6 +189,7 @@ lexer/lexer_lex.c\ lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_paren.c\ +lexer/lexer_curly_brackets.c\ lexer/lexer_assignement_word.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 7602ed9f..f1ca6dc2 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:45:05 by ariard ### ########.fr */ +/* Updated: 2017/02/24 21:46:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,7 @@ enum e_lexstate DQUOTE_BQUOTE, BACKSLASH, PAREN, + CURLY_BRACKETS, ASSIGNEMENT_WORD, // VAR, // SPECIAL, @@ -112,6 +113,7 @@ int lexer_dquote(t_list **alst, t_lexer *lexer); int lexer_bquote(t_list **alst, t_lexer *lexer); int lexer_backslash(t_list **alst, t_lexer *lexer); int lexer_paren(t_list **alst, t_lexer *lexer); +int lexer_curly_brackets(t_list **alst, t_lexer *lexer); int lexer_assignement_word(t_list **alst, t_lexer *lexer); int lexer_comment(t_list **alst, t_lexer *lexer); int lexer_end(t_list **alst, t_lexer *lexer); diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 2f840910..34290b31 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -93,6 +93,7 @@ enum e_sym CASE_ITEM_NS, PATTERN, IF_CLAUSE, + BRACE_CLAUSE, ELSE_PART, WHILE_CLAUSE, UNTIL_CLAUSE, @@ -116,6 +117,7 @@ enum e_sym SEPARATOR_OP, SEPARATOR, SEQUENTIAL_SEP, + BRACE, LOOP, FUNC, PIPE_SEMI_SEQUENCE, @@ -127,6 +129,8 @@ enum e_sym COMPLETE_CONDITION, FOR_WORDLIST, PATTERN_CASE, + FUNC_NAME, + CLOSE_LIST, ALL = 200, }; diff --git a/42sh/objs/builtin/bt_read_get.d b/42sh/objs/builtin/bt_read_get.d new file mode 100644 index 00000000..3d96b8dc --- /dev/null +++ b/42sh/objs/builtin/bt_read_get.d @@ -0,0 +1,10 @@ +objs/builtin/bt_read_get.o: src/builtin/bt_read_get.c \ + includes/builtin_read.h includes/types.h includes/builtin.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h \ + includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_parse.d b/42sh/objs/builtin/bt_read_parse.d new file mode 100644 index 00000000..89009e04 --- /dev/null +++ b/42sh/objs/builtin/bt_read_parse.d @@ -0,0 +1,10 @@ +objs/builtin/bt_read_parse.o: src/builtin/bt_read_parse.c \ + includes/builtin_read.h includes/types.h includes/builtin.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h \ + includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_term.d b/42sh/objs/builtin/bt_read_term.d new file mode 100644 index 00000000..928d1921 --- /dev/null +++ b/42sh/objs/builtin/bt_read_term.d @@ -0,0 +1,10 @@ +objs/builtin/bt_read_term.o: src/builtin/bt_read_term.c \ + includes/builtin.h includes/types.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_cd.d b/42sh/objs/builtin/builtin_cd.d new file mode 100644 index 00000000..4d1c59c9 --- /dev/null +++ b/42sh/objs/builtin/builtin_cd.d @@ -0,0 +1,9 @@ +objs/builtin/builtin_cd.o: src/builtin/builtin_cd.c includes/builtin.h \ + includes/types.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/builtin_read.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_echo.d b/42sh/objs/builtin/builtin_echo.d new file mode 100644 index 00000000..48a2ec11 --- /dev/null +++ b/42sh/objs/builtin/builtin_echo.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_echo.o: src/builtin/builtin_echo.c \ + includes/builtin.h includes/types.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_env.d b/42sh/objs/builtin/builtin_env.d new file mode 100644 index 00000000..99743bb9 --- /dev/null +++ b/42sh/objs/builtin/builtin_env.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_env.o: src/builtin/builtin_env.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_exit.d b/42sh/objs/builtin/builtin_exit.d new file mode 100644 index 00000000..6f13cb81 --- /dev/null +++ b/42sh/objs/builtin/builtin_exit.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_exit.o: src/builtin/builtin_exit.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_export.d b/42sh/objs/builtin/builtin_export.d new file mode 100644 index 00000000..5df846e8 --- /dev/null +++ b/42sh/objs/builtin/builtin_export.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_export.o: src/builtin/builtin_export.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_hash.d b/42sh/objs/builtin/builtin_hash.d new file mode 100644 index 00000000..f4eb8938 --- /dev/null +++ b/42sh/objs/builtin/builtin_hash.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_hash.o: src/builtin/builtin_hash.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_history.d b/42sh/objs/builtin/builtin_history.d new file mode 100644 index 00000000..a60a1c6e --- /dev/null +++ b/42sh/objs/builtin/builtin_history.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_history.o: src/builtin/builtin_history.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_read.d b/42sh/objs/builtin/builtin_read.d new file mode 100644 index 00000000..d5785763 --- /dev/null +++ b/42sh/objs/builtin/builtin_read.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_read.o: src/builtin/builtin_read.c \ + includes/builtin_read.h includes/types.h includes/builtin.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h \ + includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_setenv.d b/42sh/objs/builtin/builtin_setenv.d new file mode 100644 index 00000000..502946a9 --- /dev/null +++ b/42sh/objs/builtin/builtin_setenv.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_setenv.o: src/builtin/builtin_setenv.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_unset.d b/42sh/objs/builtin/builtin_unset.d new file mode 100644 index 00000000..d0d88852 --- /dev/null +++ b/42sh/objs/builtin/builtin_unset.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_unset.o: src/builtin/builtin_unset.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_unsetenv.d b/42sh/objs/builtin/builtin_unsetenv.d new file mode 100644 index 00000000..25dd7671 --- /dev/null +++ b/42sh/objs/builtin/builtin_unsetenv.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_unsetenv.o: src/builtin/builtin_unsetenv.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d new file mode 100644 index 00000000..40071c79 --- /dev/null +++ b/42sh/objs/builtin/is_builtin.d @@ -0,0 +1,10 @@ +objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_binary.d b/42sh/objs/completion/c_binary.d new file mode 100644 index 00000000..017f6e2a --- /dev/null +++ b/42sh/objs/completion/c_binary.d @@ -0,0 +1,10 @@ +objs/completion/c_binary.o: src/completion/c_binary.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_clear.d b/42sh/objs/completion/c_clear.d new file mode 100644 index 00000000..51457990 --- /dev/null +++ b/42sh/objs/completion/c_clear.d @@ -0,0 +1,9 @@ +objs/completion/c_clear.o: src/completion/c_clear.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_files.d b/42sh/objs/completion/c_files.d new file mode 100644 index 00000000..d611d285 --- /dev/null +++ b/42sh/objs/completion/c_files.d @@ -0,0 +1,9 @@ +objs/completion/c_files.o: src/completion/c_files.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_init.d b/42sh/objs/completion/c_init.d new file mode 100644 index 00000000..42812396 --- /dev/null +++ b/42sh/objs/completion/c_init.d @@ -0,0 +1,9 @@ +objs/completion/c_init.o: src/completion/c_init.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_matching.d b/42sh/objs/completion/c_matching.d new file mode 100644 index 00000000..265147a1 --- /dev/null +++ b/42sh/objs/completion/c_matching.d @@ -0,0 +1,10 @@ +objs/completion/c_matching.o: src/completion/c_matching.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_misc.d b/42sh/objs/completion/c_misc.d new file mode 100644 index 00000000..3dde2e26 --- /dev/null +++ b/42sh/objs/completion/c_misc.d @@ -0,0 +1,9 @@ +objs/completion/c_misc.o: src/completion/c_misc.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_output.d b/42sh/objs/completion/c_output.d new file mode 100644 index 00000000..c58c0475 --- /dev/null +++ b/42sh/objs/completion/c_output.d @@ -0,0 +1,10 @@ +objs/completion/c_output.o: src/completion/c_output.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_parser.d b/42sh/objs/completion/c_parser.d new file mode 100644 index 00000000..20e78c29 --- /dev/null +++ b/42sh/objs/completion/c_parser.d @@ -0,0 +1,10 @@ +objs/completion/c_parser.o: src/completion/c_parser.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_pathsolver.d b/42sh/objs/completion/c_pathsolver.d new file mode 100644 index 00000000..a43db912 --- /dev/null +++ b/42sh/objs/completion/c_pathsolver.d @@ -0,0 +1,10 @@ +objs/completion/c_pathsolver.o: src/completion/c_pathsolver.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_printer.d b/42sh/objs/completion/c_printer.d new file mode 100644 index 00000000..f5c0111d --- /dev/null +++ b/42sh/objs/completion/c_printer.d @@ -0,0 +1,10 @@ +objs/completion/c_printer.o: src/completion/c_printer.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_rematch.d b/42sh/objs/completion/c_rematch.d new file mode 100644 index 00000000..4402b27d --- /dev/null +++ b/42sh/objs/completion/c_rematch.d @@ -0,0 +1,10 @@ +objs/completion/c_rematch.o: src/completion/c_rematch.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_sizing.d b/42sh/objs/completion/c_sizing.d new file mode 100644 index 00000000..6d931b50 --- /dev/null +++ b/42sh/objs/completion/c_sizing.d @@ -0,0 +1,10 @@ +objs/completion/c_sizing.o: src/completion/c_sizing.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_terminal.d b/42sh/objs/completion/c_terminal.d new file mode 100644 index 00000000..e2fc7d30 --- /dev/null +++ b/42sh/objs/completion/c_terminal.d @@ -0,0 +1,10 @@ +objs/completion/c_terminal.o: src/completion/c_terminal.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/completion.d b/42sh/objs/completion/completion.d new file mode 100644 index 00000000..2e7aca1d --- /dev/null +++ b/42sh/objs/completion/completion.d @@ -0,0 +1,10 @@ +objs/completion/completion.o: src/completion/completion.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d new file mode 100644 index 00000000..a938bba4 --- /dev/null +++ b/42sh/objs/exec/ast_free.d @@ -0,0 +1,10 @@ +objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/bad_fd.d b/42sh/objs/exec/bad_fd.d new file mode 100644 index 00000000..10582e42 --- /dev/null +++ b/42sh/objs/exec/bad_fd.d @@ -0,0 +1,10 @@ +objs/exec/bad_fd.o: src/exec/bad_fd.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d new file mode 100644 index 00000000..a099a3a2 --- /dev/null +++ b/42sh/objs/exec/exec_ampersand.d @@ -0,0 +1,10 @@ +objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d new file mode 100644 index 00000000..e94f2cac --- /dev/null +++ b/42sh/objs/exec/exec_and_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d new file mode 100644 index 00000000..d0f0225c --- /dev/null +++ b/42sh/objs/exec/exec_command.d @@ -0,0 +1,10 @@ +objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d new file mode 100644 index 00000000..e2f12d17 --- /dev/null +++ b/42sh/objs/exec/exec_default.d @@ -0,0 +1,10 @@ +objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d new file mode 100644 index 00000000..31a808b1 --- /dev/null +++ b/42sh/objs/exec/exec_elif.d @@ -0,0 +1,10 @@ +objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d new file mode 100644 index 00000000..7fbf18af --- /dev/null +++ b/42sh/objs/exec/exec_else.d @@ -0,0 +1,10 @@ +objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d new file mode 100644 index 00000000..bfc49041 --- /dev/null +++ b/42sh/objs/exec/exec_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_less.d b/42sh/objs/exec/exec_less.d new file mode 100644 index 00000000..80163f71 --- /dev/null +++ b/42sh/objs/exec/exec_less.d @@ -0,0 +1,10 @@ +objs/exec/exec_less.o: src/exec/exec_less.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d new file mode 100644 index 00000000..e47e7589 --- /dev/null +++ b/42sh/objs/exec/exec_or_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d new file mode 100644 index 00000000..f0e75e4a --- /dev/null +++ b/42sh/objs/exec/exec_pipe.d @@ -0,0 +1,10 @@ +objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_redir.d b/42sh/objs/exec/exec_redir.d new file mode 100644 index 00000000..e38c21e1 --- /dev/null +++ b/42sh/objs/exec/exec_redir.d @@ -0,0 +1,10 @@ +objs/exec/exec_redir.o: src/exec/exec_redir.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d new file mode 100644 index 00000000..a4e14789 --- /dev/null +++ b/42sh/objs/exec/exec_semi.d @@ -0,0 +1,10 @@ +objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d new file mode 100644 index 00000000..892f8a85 --- /dev/null +++ b/42sh/objs/exec/exec_until.d @@ -0,0 +1,10 @@ +objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_while.d b/42sh/objs/exec/exec_while.d new file mode 100644 index 00000000..e2156a69 --- /dev/null +++ b/42sh/objs/exec/exec_while.d @@ -0,0 +1,10 @@ +objs/exec/exec_while.o: src/exec/exec_while.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/fd_is_valid.d b/42sh/objs/exec/fd_is_valid.d new file mode 100644 index 00000000..82af7a1d --- /dev/null +++ b/42sh/objs/exec/fd_is_valid.d @@ -0,0 +1,10 @@ +objs/exec/fd_is_valid.o: src/exec/fd_is_valid.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/ft_exec.d b/42sh/objs/exec/ft_exec.d new file mode 100644 index 00000000..4d324b14 --- /dev/null +++ b/42sh/objs/exec/ft_exec.d @@ -0,0 +1,10 @@ +objs/exec/ft_exec.o: src/exec/ft_exec.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/ft_findexec.d b/42sh/objs/exec/ft_findexec.d new file mode 100644 index 00000000..bdef00c4 --- /dev/null +++ b/42sh/objs/exec/ft_findexec.d @@ -0,0 +1,10 @@ +objs/exec/ft_findexec.o: src/exec/ft_findexec.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/launch_process.d b/42sh/objs/exec/launch_process.d new file mode 100644 index 00000000..f85c0e5d --- /dev/null +++ b/42sh/objs/exec/launch_process.d @@ -0,0 +1,10 @@ +objs/exec/launch_process.o: src/exec/launch_process.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/loop_del.d b/42sh/objs/exec/loop_del.d new file mode 100644 index 00000000..96008067 --- /dev/null +++ b/42sh/objs/exec/loop_del.d @@ -0,0 +1,10 @@ +objs/exec/loop_del.o: src/exec/loop_del.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/loop_exec.d b/42sh/objs/exec/loop_exec.d new file mode 100644 index 00000000..289f40e6 --- /dev/null +++ b/42sh/objs/exec/loop_exec.d @@ -0,0 +1,10 @@ +objs/exec/loop_exec.o: src/exec/loop_exec.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_redirect.d b/42sh/objs/exec/process_redirect.d new file mode 100644 index 00000000..51148225 --- /dev/null +++ b/42sh/objs/exec/process_redirect.d @@ -0,0 +1,10 @@ +objs/exec/process_redirect.o: src/exec/process_redirect.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_reset.d b/42sh/objs/exec/process_reset.d new file mode 100644 index 00000000..66d081e7 --- /dev/null +++ b/42sh/objs/exec/process_reset.d @@ -0,0 +1,10 @@ +objs/exec/process_reset.o: src/exec/process_reset.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_resetfds.d b/42sh/objs/exec/process_resetfds.d new file mode 100644 index 00000000..2ee6d106 --- /dev/null +++ b/42sh/objs/exec/process_resetfds.d @@ -0,0 +1,10 @@ +objs/exec/process_resetfds.o: src/exec/process_resetfds.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_setexec.d b/42sh/objs/exec/process_setexec.d new file mode 100644 index 00000000..a0440320 --- /dev/null +++ b/42sh/objs/exec/process_setexec.d @@ -0,0 +1,10 @@ +objs/exec/process_setexec.o: src/exec/process_setexec.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_setgroup.d b/42sh/objs/exec/process_setgroup.d new file mode 100644 index 00000000..a1b5f93e --- /dev/null +++ b/42sh/objs/exec/process_setgroup.d @@ -0,0 +1,10 @@ +objs/exec/process_setgroup.o: src/exec/process_setgroup.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_setsig.d b/42sh/objs/exec/process_setsig.d new file mode 100644 index 00000000..79adabd6 --- /dev/null +++ b/42sh/objs/exec/process_setsig.d @@ -0,0 +1,10 @@ +objs/exec/process_setsig.o: src/exec/process_setsig.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/redirect_dgreat.d b/42sh/objs/exec/redirect_dgreat.d new file mode 100644 index 00000000..233d1240 --- /dev/null +++ b/42sh/objs/exec/redirect_dgreat.d @@ -0,0 +1,10 @@ +objs/exec/redirect_dgreat.o: src/exec/redirect_dgreat.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/redirect_dless.d b/42sh/objs/exec/redirect_dless.d new file mode 100644 index 00000000..e982e0a5 --- /dev/null +++ b/42sh/objs/exec/redirect_dless.d @@ -0,0 +1,10 @@ +objs/exec/redirect_dless.o: src/exec/redirect_dless.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/redirect_great.d b/42sh/objs/exec/redirect_great.d new file mode 100644 index 00000000..b1d05efd --- /dev/null +++ b/42sh/objs/exec/redirect_great.d @@ -0,0 +1,10 @@ +objs/exec/redirect_great.o: src/exec/redirect_great.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/redirect_greatand.d b/42sh/objs/exec/redirect_greatand.d new file mode 100644 index 00000000..b49fe193 --- /dev/null +++ b/42sh/objs/exec/redirect_greatand.d @@ -0,0 +1,10 @@ +objs/exec/redirect_greatand.o: src/exec/redirect_greatand.c \ + includes/exec.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/redirect_less.d b/42sh/objs/exec/redirect_less.d new file mode 100644 index 00000000..89e46d58 --- /dev/null +++ b/42sh/objs/exec/redirect_less.d @@ -0,0 +1,10 @@ +objs/exec/redirect_less.o: src/exec/redirect_less.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/redirect_lessand.d b/42sh/objs/exec/redirect_lessand.d new file mode 100644 index 00000000..8f964246 --- /dev/null +++ b/42sh/objs/exec/redirect_lessand.d @@ -0,0 +1,10 @@ +objs/exec/redirect_lessand.o: src/exec/redirect_lessand.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/set_exitstatus.d b/42sh/objs/exec/set_exitstatus.d new file mode 100644 index 00000000..f457b366 --- /dev/null +++ b/42sh/objs/exec/set_exitstatus.d @@ -0,0 +1,10 @@ +objs/exec/set_exitstatus.o: src/exec/set_exitstatus.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/command_getoutput.d b/42sh/objs/glob/command_getoutput.d new file mode 100644 index 00000000..9d35c410 --- /dev/null +++ b/42sh/objs/glob/command_getoutput.d @@ -0,0 +1,10 @@ +objs/glob/command_getoutput.o: src/glob/command_getoutput.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/dir_glob.d b/42sh/objs/glob/dir_glob.d new file mode 100644 index 00000000..91f9d5d3 --- /dev/null +++ b/42sh/objs/glob/dir_glob.d @@ -0,0 +1,9 @@ +objs/glob/dir_glob.o: src/glob/dir_glob.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/esc_print.d b/42sh/objs/glob/esc_print.d new file mode 100644 index 00000000..a10646b9 --- /dev/null +++ b/42sh/objs/glob/esc_print.d @@ -0,0 +1,9 @@ +objs/glob/esc_print.o: src/glob/esc_print.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_bquote.d b/42sh/objs/glob/expand_bquote.d new file mode 100644 index 00000000..dcf407fc --- /dev/null +++ b/42sh/objs/glob/expand_bquote.d @@ -0,0 +1,9 @@ +objs/glob/expand_bquote.o: src/glob/expand_bquote.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_brace.d b/42sh/objs/glob/expand_brace.d new file mode 100644 index 00000000..33dcb5e8 --- /dev/null +++ b/42sh/objs/glob/expand_brace.d @@ -0,0 +1,9 @@ +objs/glob/expand_brace.o: src/glob/expand_brace.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_esc.d b/42sh/objs/glob/expand_esc.d new file mode 100644 index 00000000..51558b19 --- /dev/null +++ b/42sh/objs/glob/expand_esc.d @@ -0,0 +1,9 @@ +objs/glob/expand_esc.o: src/glob/expand_esc.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_var.d b/42sh/objs/glob/expand_var.d new file mode 100644 index 00000000..d3f356b0 --- /dev/null +++ b/42sh/objs/glob/expand_var.d @@ -0,0 +1,9 @@ +objs/glob/expand_var.o: src/glob/expand_var.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/ft_strsplit_esc.d b/42sh/objs/glob/ft_strsplit_esc.d new file mode 100644 index 00000000..87445b4a --- /dev/null +++ b/42sh/objs/glob/ft_strsplit_esc.d @@ -0,0 +1,9 @@ +objs/glob/ft_strsplit_esc.o: src/glob/ft_strsplit_esc.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/ft_strsplit_spe.d b/42sh/objs/glob/ft_strsplit_spe.d new file mode 100644 index 00000000..efec76f6 --- /dev/null +++ b/42sh/objs/glob/ft_strsplit_spe.d @@ -0,0 +1,9 @@ +objs/glob/ft_strsplit_spe.o: src/glob/ft_strsplit_spe.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/glob.d b/42sh/objs/glob/glob.d new file mode 100644 index 00000000..97d1827b --- /dev/null +++ b/42sh/objs/glob/glob.d @@ -0,0 +1,9 @@ +objs/glob/glob.o: src/glob/glob.c includes/glob.h includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/is_char_esc.d b/42sh/objs/glob/is_char_esc.d new file mode 100644 index 00000000..dde23a1e --- /dev/null +++ b/42sh/objs/glob/is_char_esc.d @@ -0,0 +1,9 @@ +objs/glob/is_char_esc.o: src/glob/is_char_esc.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_back.d b/42sh/objs/glob/lib_perso/ft_ld_back.d new file mode 100644 index 00000000..afc57d2c --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_back.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_back.o: src/glob/lib_perso/ft_ld_back.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_clear.d b/42sh/objs/glob/lib_perso/ft_ld_clear.d new file mode 100644 index 00000000..6855ddd6 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_clear.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_clear.o: src/glob/lib_perso/ft_ld_clear.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_del.d b/42sh/objs/glob/lib_perso/ft_ld_del.d new file mode 100644 index 00000000..060ccc53 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_del.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_del.o: src/glob/lib_perso/ft_ld_del.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_front.d b/42sh/objs/glob/lib_perso/ft_ld_front.d new file mode 100644 index 00000000..13574f83 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_front.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_front.o: src/glob/lib_perso/ft_ld_front.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_new.d b/42sh/objs/glob/lib_perso/ft_ld_new.d new file mode 100644 index 00000000..b7db9543 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_new.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_new.o: src/glob/lib_perso/ft_ld_new.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_order.d b/42sh/objs/glob/lib_perso/ft_ld_order.d new file mode 100644 index 00000000..8b6ffe0c --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_order.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_order.o: src/glob/lib_perso/ft_ld_order.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushback.d b/42sh/objs/glob/lib_perso/ft_ld_pushback.d new file mode 100644 index 00000000..de57e36f --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_pushback.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_pushback.o: src/glob/lib_perso/ft_ld_pushback.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushfront.d b/42sh/objs/glob/lib_perso/ft_ld_pushfront.d new file mode 100644 index 00000000..4bb25bc3 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_pushfront.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_pushfront.o: \ + src/glob/lib_perso/ft_ld_pushfront.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_reverse.d b/42sh/objs/glob/lib_perso/ft_ld_reverse.d new file mode 100644 index 00000000..2cbfe7ff --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_reverse.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_reverse.o: src/glob/lib_perso/ft_ld_reverse.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_size.d b/42sh/objs/glob/lib_perso/ft_ld_size.d new file mode 100644 index 00000000..e79ba8c1 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_size.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_size.o: src/glob/lib_perso/ft_ld_size.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_swap.d b/42sh/objs/glob/lib_perso/ft_ld_swap.d new file mode 100644 index 00000000..952177a3 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_swap.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_swap.o: src/glob/lib_perso/ft_ld_swap.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_to_tab.d b/42sh/objs/glob/lib_perso/ft_ld_to_tab.d new file mode 100644 index 00000000..661420b6 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_ld_to_tab.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_ld_to_tab.o: src/glob/lib_perso/ft_ld_to_tab.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_memrealloc.d b/42sh/objs/glob/lib_perso/ft_memrealloc.d new file mode 100644 index 00000000..2a7fd8eb --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_memrealloc.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_memrealloc.o: src/glob/lib_perso/ft_memrealloc.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_strjoinf.d b/42sh/objs/glob/lib_perso/ft_strjoinf.d new file mode 100644 index 00000000..43e9fbf9 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_strjoinf.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_strjoinf.o: src/glob/lib_perso/ft_strjoinf.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_strsubf.d b/42sh/objs/glob/lib_perso/ft_strsubf.d new file mode 100644 index 00000000..1e156f0b --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_strsubf.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_strsubf.o: src/glob/lib_perso/ft_strsubf.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_tabdel.d b/42sh/objs/glob/lib_perso/ft_tabdel.d new file mode 100644 index 00000000..ff2f5e53 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_tabdel.d @@ -0,0 +1,10 @@ +objs/glob/lib_perso/ft_tabdel.o: src/glob/lib_perso/ft_tabdel.c \ + includes/glob.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_tablen.d b/42sh/objs/glob/lib_perso/ft_tablen.d new file mode 100644 index 00000000..7ea8a517 --- /dev/null +++ b/42sh/objs/glob/lib_perso/ft_tablen.d @@ -0,0 +1,6 @@ +objs/glob/lib_perso/ft_tablen.o: src/glob/lib_perso/ft_tablen.c \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h diff --git a/42sh/objs/glob/match_pattern.d b/42sh/objs/glob/match_pattern.d new file mode 100644 index 00000000..e194a52a --- /dev/null +++ b/42sh/objs/glob/match_pattern.d @@ -0,0 +1,9 @@ +objs/glob/match_pattern.o: src/glob/match_pattern.c includes/glob.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/hash_table/ft_add_hash.d b/42sh/objs/hash_table/ft_add_hash.d new file mode 100644 index 00000000..bf1a58cb --- /dev/null +++ b/42sh/objs/hash_table/ft_add_hash.d @@ -0,0 +1,10 @@ +objs/hash_table/ft_add_hash.o: src/hash_table/ft_add_hash.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/hash_table/hash.d b/42sh/objs/hash_table/hash.d new file mode 100644 index 00000000..800ce022 --- /dev/null +++ b/42sh/objs/hash_table/hash.d @@ -0,0 +1,10 @@ +objs/hash_table/hash.o: src/hash_table/hash.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/hash_table/hash_free.d b/42sh/objs/hash_table/hash_free.d new file mode 100644 index 00000000..63be677a --- /dev/null +++ b/42sh/objs/hash_table/hash_free.d @@ -0,0 +1,10 @@ +objs/hash_table/hash_free.o: src/hash_table/hash_free.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/hash_table/hash_str.d b/42sh/objs/hash_table/hash_str.d new file mode 100644 index 00000000..a76416ca --- /dev/null +++ b/42sh/objs/hash_table/hash_str.d @@ -0,0 +1,10 @@ +objs/hash_table/hash_str.o: src/hash_table/hash_str.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/hash_table/is_hash.d b/42sh/objs/hash_table/is_hash.d new file mode 100644 index 00000000..6e962431 --- /dev/null +++ b/42sh/objs/hash_table/is_hash.d @@ -0,0 +1,10 @@ +objs/hash_table/is_hash.o: src/hash_table/is_hash.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/add_str_in_history.d b/42sh/objs/history/add_str_in_history.d new file mode 100644 index 00000000..a1d8a7eb --- /dev/null +++ b/42sh/objs/history/add_str_in_history.d @@ -0,0 +1,10 @@ +objs/history/add_str_in_history.o: src/history/add_str_in_history.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/history.d b/42sh/objs/history/history.d new file mode 100644 index 00000000..57982de7 --- /dev/null +++ b/42sh/objs/history/history.d @@ -0,0 +1,10 @@ +objs/history/history.o: src/history/history.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/history_parsing.d b/42sh/objs/history/history_parsing.d new file mode 100644 index 00000000..85445519 --- /dev/null +++ b/42sh/objs/history/history_parsing.d @@ -0,0 +1,10 @@ +objs/history/history_parsing.o: src/history/history_parsing.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/history_parsing_toolz.d b/42sh/objs/history/history_parsing_toolz.d new file mode 100644 index 00000000..0fe8517d --- /dev/null +++ b/42sh/objs/history/history_parsing_toolz.d @@ -0,0 +1,10 @@ +objs/history/history_parsing_toolz.o: src/history/history_parsing_toolz.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/history_parsing_toolz_2.d b/42sh/objs/history/history_parsing_toolz_2.d new file mode 100644 index 00000000..f17d84c5 --- /dev/null +++ b/42sh/objs/history/history_parsing_toolz_2.d @@ -0,0 +1,11 @@ +objs/history/history_parsing_toolz_2.o: \ + src/history/history_parsing_toolz_2.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/list_toolz.d b/42sh/objs/history/list_toolz.d new file mode 100644 index 00000000..c96548ad --- /dev/null +++ b/42sh/objs/history/list_toolz.d @@ -0,0 +1,10 @@ +objs/history/list_toolz.o: src/history/list_toolz.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/history/surch_in_history.d b/42sh/objs/history/surch_in_history.d new file mode 100644 index 00000000..6a389c3a --- /dev/null +++ b/42sh/objs/history/surch_in_history.d @@ -0,0 +1,10 @@ +objs/history/surch_in_history.o: src/history/surch_in_history.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/builtin_bg.d b/42sh/objs/job-control/builtin_bg.d new file mode 100644 index 00000000..45276f5f --- /dev/null +++ b/42sh/objs/job-control/builtin_bg.d @@ -0,0 +1,10 @@ +objs/job-control/builtin_bg.o: src/job-control/builtin_bg.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/builtin_fg.d b/42sh/objs/job-control/builtin_fg.d new file mode 100644 index 00000000..4c70f313 --- /dev/null +++ b/42sh/objs/job-control/builtin_fg.d @@ -0,0 +1,10 @@ +objs/job-control/builtin_fg.o: src/job-control/builtin_fg.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/builtin_jobs.d b/42sh/objs/job-control/builtin_jobs.d new file mode 100644 index 00000000..24978381 --- /dev/null +++ b/42sh/objs/job-control/builtin_jobs.d @@ -0,0 +1,10 @@ +objs/job-control/builtin_jobs.o: src/job-control/builtin_jobs.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/do_job_notification.d b/42sh/objs/job-control/do_job_notification.d new file mode 100644 index 00000000..fbcbc8ed --- /dev/null +++ b/42sh/objs/job-control/do_job_notification.d @@ -0,0 +1,11 @@ +objs/job-control/do_job_notification.o: \ + src/job-control/do_job_notification.c includes/job_control.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_addprocess.d b/42sh/objs/job-control/job_addprocess.d new file mode 100644 index 00000000..73a11c51 --- /dev/null +++ b/42sh/objs/job-control/job_addprocess.d @@ -0,0 +1,10 @@ +objs/job-control/job_addprocess.o: src/job-control/job_addprocess.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_cmp_id.d b/42sh/objs/job-control/job_cmp_id.d new file mode 100644 index 00000000..16f0b3b0 --- /dev/null +++ b/42sh/objs/job-control/job_cmp_id.d @@ -0,0 +1,10 @@ +objs/job-control/job_cmp_id.o: src/job-control/job_cmp_id.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_format.d b/42sh/objs/job-control/job_format.d new file mode 100644 index 00000000..020f7849 --- /dev/null +++ b/42sh/objs/job-control/job_format.d @@ -0,0 +1,10 @@ +objs/job-control/job_format.o: src/job-control/job_format.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_format_head.d b/42sh/objs/job-control/job_format_head.d new file mode 100644 index 00000000..d9c43887 --- /dev/null +++ b/42sh/objs/job-control/job_format_head.d @@ -0,0 +1,10 @@ +objs/job-control/job_format_head.o: src/job-control/job_format_head.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_free.d b/42sh/objs/job-control/job_free.d new file mode 100644 index 00000000..b38c8f5f --- /dev/null +++ b/42sh/objs/job-control/job_free.d @@ -0,0 +1,10 @@ +objs/job-control/job_free.o: src/job-control/job_free.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_getprocess.d b/42sh/objs/job-control/job_getprocess.d new file mode 100644 index 00000000..94d6b64b --- /dev/null +++ b/42sh/objs/job-control/job_getprocess.d @@ -0,0 +1,10 @@ +objs/job-control/job_getprocess.o: src/job-control/job_getprocess.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_getrank.d b/42sh/objs/job-control/job_getrank.d new file mode 100644 index 00000000..6a17e542 --- /dev/null +++ b/42sh/objs/job-control/job_getrank.d @@ -0,0 +1,10 @@ +objs/job-control/job_getrank.o: src/job-control/job_getrank.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_is_completed.d b/42sh/objs/job-control/job_is_completed.d new file mode 100644 index 00000000..01acb475 --- /dev/null +++ b/42sh/objs/job-control/job_is_completed.d @@ -0,0 +1,10 @@ +objs/job-control/job_is_completed.o: src/job-control/job_is_completed.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_is_stopped.d b/42sh/objs/job-control/job_is_stopped.d new file mode 100644 index 00000000..99ff0d4f --- /dev/null +++ b/42sh/objs/job-control/job_is_stopped.d @@ -0,0 +1,10 @@ +objs/job-control/job_is_stopped.o: src/job-control/job_is_stopped.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_kill_all.d b/42sh/objs/job-control/job_kill_all.d new file mode 100644 index 00000000..3fcaf708 --- /dev/null +++ b/42sh/objs/job-control/job_kill_all.d @@ -0,0 +1,10 @@ +objs/job-control/job_kill_all.o: src/job-control/job_kill_all.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_notify_change.d b/42sh/objs/job-control/job_notify_change.d new file mode 100644 index 00000000..6cf53473 --- /dev/null +++ b/42sh/objs/job-control/job_notify_change.d @@ -0,0 +1,10 @@ +objs/job-control/job_notify_change.o: src/job-control/job_notify_change.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_notify_new.d b/42sh/objs/job-control/job_notify_new.d new file mode 100644 index 00000000..53900c61 --- /dev/null +++ b/42sh/objs/job-control/job_notify_new.d @@ -0,0 +1,10 @@ +objs/job-control/job_notify_new.o: src/job-control/job_notify_new.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_remove.d b/42sh/objs/job-control/job_remove.d new file mode 100644 index 00000000..545d61d8 --- /dev/null +++ b/42sh/objs/job-control/job_remove.d @@ -0,0 +1,10 @@ +objs/job-control/job_remove.o: src/job-control/job_remove.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_run.d b/42sh/objs/job-control/job_run.d new file mode 100644 index 00000000..bd23bf28 --- /dev/null +++ b/42sh/objs/job-control/job_run.d @@ -0,0 +1,10 @@ +objs/job-control/job_run.o: src/job-control/job_run.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_update_id.d b/42sh/objs/job-control/job_update_id.d new file mode 100644 index 00000000..a542008e --- /dev/null +++ b/42sh/objs/job-control/job_update_id.d @@ -0,0 +1,10 @@ +objs/job-control/job_update_id.o: src/job-control/job_update_id.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_update_status.d b/42sh/objs/job-control/job_update_status.d new file mode 100644 index 00000000..d557ad2d --- /dev/null +++ b/42sh/objs/job-control/job_update_status.d @@ -0,0 +1,10 @@ +objs/job-control/job_update_status.o: src/job-control/job_update_status.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/job_wait.d b/42sh/objs/job-control/job_wait.d new file mode 100644 index 00000000..11f06005 --- /dev/null +++ b/42sh/objs/job-control/job_wait.d @@ -0,0 +1,10 @@ +objs/job-control/job_wait.o: src/job-control/job_wait.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/mark_job_as_running.d b/42sh/objs/job-control/mark_job_as_running.d new file mode 100644 index 00000000..58089f19 --- /dev/null +++ b/42sh/objs/job-control/mark_job_as_running.d @@ -0,0 +1,11 @@ +objs/job-control/mark_job_as_running.o: \ + src/job-control/mark_job_as_running.c includes/job_control.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/process_cmp_pid.d b/42sh/objs/job-control/process_cmp_pid.d new file mode 100644 index 00000000..35886dc5 --- /dev/null +++ b/42sh/objs/job-control/process_cmp_pid.d @@ -0,0 +1,10 @@ +objs/job-control/process_cmp_pid.o: src/job-control/process_cmp_pid.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/process_format.d b/42sh/objs/job-control/process_format.d new file mode 100644 index 00000000..7bbf0450 --- /dev/null +++ b/42sh/objs/job-control/process_format.d @@ -0,0 +1,10 @@ +objs/job-control/process_format.o: src/job-control/process_format.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/process_free.d b/42sh/objs/job-control/process_free.d new file mode 100644 index 00000000..07209bee --- /dev/null +++ b/42sh/objs/job-control/process_free.d @@ -0,0 +1,10 @@ +objs/job-control/process_free.o: src/job-control/process_free.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/process_mark_status.d b/42sh/objs/job-control/process_mark_status.d new file mode 100644 index 00000000..c5fb61ed --- /dev/null +++ b/42sh/objs/job-control/process_mark_status.d @@ -0,0 +1,11 @@ +objs/job-control/process_mark_status.o: \ + src/job-control/process_mark_status.c includes/job_control.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/put_job_in_background.d b/42sh/objs/job-control/put_job_in_background.d new file mode 100644 index 00000000..cfa0938a --- /dev/null +++ b/42sh/objs/job-control/put_job_in_background.d @@ -0,0 +1,11 @@ +objs/job-control/put_job_in_background.o: \ + src/job-control/put_job_in_background.c includes/job_control.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/put_job_in_foreground.d b/42sh/objs/job-control/put_job_in_foreground.d new file mode 100644 index 00000000..b0322e72 --- /dev/null +++ b/42sh/objs/job-control/put_job_in_foreground.d @@ -0,0 +1,11 @@ +objs/job-control/put_job_in_foreground.o: \ + src/job-control/put_job_in_foreground.c includes/job_control.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/sigchld_handler.d b/42sh/objs/job-control/sigchld_handler.d new file mode 100644 index 00000000..b6e2b5c3 --- /dev/null +++ b/42sh/objs/job-control/sigchld_handler.d @@ -0,0 +1,10 @@ +objs/job-control/sigchld_handler.o: src/job-control/sigchld_handler.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/sigint_handler.d b/42sh/objs/job-control/sigint_handler.d new file mode 100644 index 00000000..42ddb498 --- /dev/null +++ b/42sh/objs/job-control/sigint_handler.d @@ -0,0 +1,10 @@ +objs/job-control/sigint_handler.o: src/job-control/sigint_handler.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/sigtstp_handler.d b/42sh/objs/job-control/sigtstp_handler.d new file mode 100644 index 00000000..8eac50f2 --- /dev/null +++ b/42sh/objs/job-control/sigtstp_handler.d @@ -0,0 +1,10 @@ +objs/job-control/sigtstp_handler.o: src/job-control/sigtstp_handler.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/sigttin_handler.d b/42sh/objs/job-control/sigttin_handler.d new file mode 100644 index 00000000..ac11d282 --- /dev/null +++ b/42sh/objs/job-control/sigttin_handler.d @@ -0,0 +1,10 @@ +objs/job-control/sigttin_handler.o: src/job-control/sigttin_handler.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/job-control/sigttou_handler.d b/42sh/objs/job-control/sigttou_handler.d new file mode 100644 index 00000000..acfd89be --- /dev/null +++ b/42sh/objs/job-control/sigttou_handler.d @@ -0,0 +1,10 @@ +objs/job-control/sigttou_handler.o: src/job-control/sigttou_handler.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/get_lexer_stack.d b/42sh/objs/lexer/get_lexer_stack.d new file mode 100644 index 00000000..33c4900b --- /dev/null +++ b/42sh/objs/lexer/get_lexer_stack.d @@ -0,0 +1,10 @@ +objs/lexer/get_lexer_stack.o: src/lexer/get_lexer_stack.c \ + includes/lexer.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/get_reserved_words.d b/42sh/objs/lexer/get_reserved_words.d new file mode 100644 index 00000000..bbfb8e21 --- /dev/null +++ b/42sh/objs/lexer/get_reserved_words.d @@ -0,0 +1,10 @@ +objs/lexer/get_reserved_words.o: src/lexer/get_reserved_words.c \ + includes/lexer.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/get_state_global.d b/42sh/objs/lexer/get_state_global.d new file mode 100644 index 00000000..44ee3528 --- /dev/null +++ b/42sh/objs/lexer/get_state_global.d @@ -0,0 +1,10 @@ +objs/lexer/get_state_global.o: src/lexer/get_state_global.c \ + includes/lexer.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/get_state_redir.d b/42sh/objs/lexer/get_state_redir.d new file mode 100644 index 00000000..732027db --- /dev/null +++ b/42sh/objs/lexer/get_state_redir.d @@ -0,0 +1,10 @@ +objs/lexer/get_state_redir.o: src/lexer/get_state_redir.c \ + includes/lexer.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/insert_newline.d b/42sh/objs/lexer/insert_newline.d new file mode 100644 index 00000000..821da266 --- /dev/null +++ b/42sh/objs/lexer/insert_newline.d @@ -0,0 +1,9 @@ +objs/lexer/insert_newline.o: src/lexer/insert_newline.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_assignement_word.d b/42sh/objs/lexer/lexer_assignement_word.d new file mode 100644 index 00000000..fdecce12 --- /dev/null +++ b/42sh/objs/lexer/lexer_assignement_word.d @@ -0,0 +1,10 @@ +objs/lexer/lexer_assignement_word.o: src/lexer/lexer_assignement_word.c \ + includes/lexer.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/lexer_backslash.d b/42sh/objs/lexer/lexer_backslash.d new file mode 100644 index 00000000..ed8c3998 --- /dev/null +++ b/42sh/objs/lexer/lexer_backslash.d @@ -0,0 +1,10 @@ +objs/lexer/lexer_backslash.o: src/lexer/lexer_backslash.c \ + includes/lexer.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/lexer_bquote.d b/42sh/objs/lexer/lexer_bquote.d new file mode 100644 index 00000000..43ee354f --- /dev/null +++ b/42sh/objs/lexer/lexer_bquote.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_bquote.o: src/lexer/lexer_bquote.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_comment.d b/42sh/objs/lexer/lexer_comment.d new file mode 100644 index 00000000..22fe129f --- /dev/null +++ b/42sh/objs/lexer/lexer_comment.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_comment.o: src/lexer/lexer_comment.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_curly_brackets.d b/42sh/objs/lexer/lexer_curly_brackets.d new file mode 100644 index 00000000..b9f9a7d3 --- /dev/null +++ b/42sh/objs/lexer/lexer_curly_brackets.d @@ -0,0 +1,10 @@ +objs/lexer/lexer_curly_brackets.o: src/lexer/lexer_curly_brackets.c \ + includes/parser.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/lexer/lexer_default.d b/42sh/objs/lexer/lexer_default.d new file mode 100644 index 00000000..585fa28d --- /dev/null +++ b/42sh/objs/lexer/lexer_default.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_default.o: src/lexer/lexer_default.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_delim.d b/42sh/objs/lexer/lexer_delim.d new file mode 100644 index 00000000..bb9c7e94 --- /dev/null +++ b/42sh/objs/lexer/lexer_delim.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_delim.o: src/lexer/lexer_delim.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_dless.d b/42sh/objs/lexer/lexer_dless.d new file mode 100644 index 00000000..dcdb441b --- /dev/null +++ b/42sh/objs/lexer/lexer_dless.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_dless.o: src/lexer/lexer_dless.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_dquote.d b/42sh/objs/lexer/lexer_dquote.d new file mode 100644 index 00000000..01838b82 --- /dev/null +++ b/42sh/objs/lexer/lexer_dquote.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_dquote.o: src/lexer/lexer_dquote.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_end.d b/42sh/objs/lexer/lexer_end.d new file mode 100644 index 00000000..868b431c --- /dev/null +++ b/42sh/objs/lexer/lexer_end.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_end.o: src/lexer/lexer_end.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_great.d b/42sh/objs/lexer/lexer_great.d new file mode 100644 index 00000000..a2180b64 --- /dev/null +++ b/42sh/objs/lexer/lexer_great.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_great.o: src/lexer/lexer_great.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_greatand.d b/42sh/objs/lexer/lexer_greatand.d new file mode 100644 index 00000000..69c8375e --- /dev/null +++ b/42sh/objs/lexer/lexer_greatand.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_greatand.o: src/lexer/lexer_greatand.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_init.d b/42sh/objs/lexer/lexer_init.d new file mode 100644 index 00000000..4ee3c05b --- /dev/null +++ b/42sh/objs/lexer/lexer_init.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_init.o: src/lexer/lexer_init.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_less.d b/42sh/objs/lexer/lexer_less.d new file mode 100644 index 00000000..ebccd85b --- /dev/null +++ b/42sh/objs/lexer/lexer_less.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_less.o: src/lexer/lexer_less.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_lessand.d b/42sh/objs/lexer/lexer_lessand.d new file mode 100644 index 00000000..e3358721 --- /dev/null +++ b/42sh/objs/lexer/lexer_lessand.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_lessand.o: src/lexer/lexer_lessand.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_lex.d b/42sh/objs/lexer/lexer_lex.d new file mode 100644 index 00000000..ad9b5d4e --- /dev/null +++ b/42sh/objs/lexer/lexer_lex.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_lex.o: src/lexer/lexer_lex.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_newline.d b/42sh/objs/lexer/lexer_newline.d new file mode 100644 index 00000000..d11e70b2 --- /dev/null +++ b/42sh/objs/lexer/lexer_newline.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_newline.o: src/lexer/lexer_newline.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_number.d b/42sh/objs/lexer/lexer_number.d new file mode 100644 index 00000000..e49baefb --- /dev/null +++ b/42sh/objs/lexer/lexer_number.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_number.o: src/lexer/lexer_number.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_paren.d b/42sh/objs/lexer/lexer_paren.d new file mode 100644 index 00000000..d0f86ab7 --- /dev/null +++ b/42sh/objs/lexer/lexer_paren.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_paren.o: src/lexer/lexer_paren.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_quote.d b/42sh/objs/lexer/lexer_quote.d new file mode 100644 index 00000000..bb8ed097 --- /dev/null +++ b/42sh/objs/lexer/lexer_quote.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_quote.o: src/lexer/lexer_quote.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_sep.d b/42sh/objs/lexer/lexer_sep.d new file mode 100644 index 00000000..060a4b6f --- /dev/null +++ b/42sh/objs/lexer/lexer_sep.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_sep.o: src/lexer/lexer_sep.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_word.d b/42sh/objs/lexer/lexer_word.d new file mode 100644 index 00000000..393edf7e --- /dev/null +++ b/42sh/objs/lexer/lexer_word.d @@ -0,0 +1,9 @@ +objs/lexer/lexer_word.o: src/lexer/lexer_word.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_append.d b/42sh/objs/lexer/token_append.d new file mode 100644 index 00000000..367c7fab --- /dev/null +++ b/42sh/objs/lexer/token_append.d @@ -0,0 +1,9 @@ +objs/lexer/token_append.o: src/lexer/token_append.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_cmp_type.d b/42sh/objs/lexer/token_cmp_type.d new file mode 100644 index 00000000..13aacae7 --- /dev/null +++ b/42sh/objs/lexer/token_cmp_type.d @@ -0,0 +1,9 @@ +objs/lexer/token_cmp_type.o: src/lexer/token_cmp_type.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_free.d b/42sh/objs/lexer/token_free.d new file mode 100644 index 00000000..0357cacc --- /dev/null +++ b/42sh/objs/lexer/token_free.d @@ -0,0 +1,9 @@ +objs/lexer/token_free.o: src/lexer/token_free.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_init.d b/42sh/objs/lexer/token_init.d new file mode 100644 index 00000000..0f3b7925 --- /dev/null +++ b/42sh/objs/lexer/token_init.d @@ -0,0 +1,9 @@ +objs/lexer/token_init.o: src/lexer/token_init.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_print.d b/42sh/objs/lexer/token_print.d new file mode 100644 index 00000000..c00139ec --- /dev/null +++ b/42sh/objs/lexer/token_print.d @@ -0,0 +1,9 @@ +objs/lexer/token_print.o: src/lexer/token_print.c includes/lexer.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/line-editing/completion.d b/42sh/objs/line-editing/completion.d new file mode 100644 index 00000000..5e65f8e8 --- /dev/null +++ b/42sh/objs/line-editing/completion.d @@ -0,0 +1,10 @@ +objs/line-editing/completion.o: src/line-editing/completion.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/control_c_and_d.d b/42sh/objs/line-editing/control_c_and_d.d new file mode 100644 index 00000000..d0f99cb6 --- /dev/null +++ b/42sh/objs/line-editing/control_c_and_d.d @@ -0,0 +1,10 @@ +objs/line-editing/control_c_and_d.o: src/line-editing/control_c_and_d.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/copy_cut_paste.d b/42sh/objs/line-editing/copy_cut_paste.d new file mode 100644 index 00000000..4ae03557 --- /dev/null +++ b/42sh/objs/line-editing/copy_cut_paste.d @@ -0,0 +1,10 @@ +objs/line-editing/copy_cut_paste.o: src/line-editing/copy_cut_paste.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/ft_prompt.d b/42sh/objs/line-editing/ft_prompt.d new file mode 100644 index 00000000..0e111e7a --- /dev/null +++ b/42sh/objs/line-editing/ft_prompt.d @@ -0,0 +1,10 @@ +objs/line-editing/ft_prompt.o: src/line-editing/ft_prompt.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/get_key.d b/42sh/objs/line-editing/get_key.d new file mode 100644 index 00000000..acae0b18 --- /dev/null +++ b/42sh/objs/line-editing/get_key.d @@ -0,0 +1,10 @@ +objs/line-editing/get_key.o: src/line-editing/get_key.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/home_end.d b/42sh/objs/line-editing/home_end.d new file mode 100644 index 00000000..9aed3bbc --- /dev/null +++ b/42sh/objs/line-editing/home_end.d @@ -0,0 +1,10 @@ +objs/line-editing/home_end.o: src/line-editing/home_end.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/tool_line.d b/42sh/objs/line-editing/lib_line_editing/tool_line.d new file mode 100644 index 00000000..4b90a89f --- /dev/null +++ b/42sh/objs/line-editing/lib_line_editing/tool_line.d @@ -0,0 +1,11 @@ +objs/line-editing/lib_line_editing/tool_line.o: \ + src/line-editing/lib_line_editing/tool_line.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/tool_line_2.d b/42sh/objs/line-editing/lib_line_editing/tool_line_2.d new file mode 100644 index 00000000..d0b9f168 --- /dev/null +++ b/42sh/objs/line-editing/lib_line_editing/tool_line_2.d @@ -0,0 +1,11 @@ +objs/line-editing/lib_line_editing/tool_line_2.o: \ + src/line-editing/lib_line_editing/tool_line_2.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz.d b/42sh/objs/line-editing/lib_line_editing/toolz.d new file mode 100644 index 00000000..08f16b8b --- /dev/null +++ b/42sh/objs/line-editing/lib_line_editing/toolz.d @@ -0,0 +1,11 @@ +objs/line-editing/lib_line_editing/toolz.o: \ + src/line-editing/lib_line_editing/toolz.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz2.d b/42sh/objs/line-editing/lib_line_editing/toolz2.d new file mode 100644 index 00000000..c90c4b26 --- /dev/null +++ b/42sh/objs/line-editing/lib_line_editing/toolz2.d @@ -0,0 +1,11 @@ +objs/line-editing/lib_line_editing/toolz2.o: \ + src/line-editing/lib_line_editing/toolz2.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz_parseur.d b/42sh/objs/line-editing/lib_line_editing/toolz_parseur.d new file mode 100644 index 00000000..f5546aa3 --- /dev/null +++ b/42sh/objs/line-editing/lib_line_editing/toolz_parseur.d @@ -0,0 +1,11 @@ +objs/line-editing/lib_line_editing/toolz_parseur.o: \ + src/line-editing/lib_line_editing/toolz_parseur.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d b/42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d new file mode 100644 index 00000000..7b7a9634 --- /dev/null +++ b/42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d @@ -0,0 +1,11 @@ +objs/line-editing/lib_line_editing/toolz_termcaps.o: \ + src/line-editing/lib_line_editing/toolz_termcaps.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/move_left_and_right.d b/42sh/objs/line-editing/move_left_and_right.d new file mode 100644 index 00000000..c9a30c9d --- /dev/null +++ b/42sh/objs/line-editing/move_left_and_right.d @@ -0,0 +1,11 @@ +objs/line-editing/move_left_and_right.o: \ + src/line-editing/move_left_and_right.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/move_to_word.d b/42sh/objs/line-editing/move_to_word.d new file mode 100644 index 00000000..f6a580d0 --- /dev/null +++ b/42sh/objs/line-editing/move_to_word.d @@ -0,0 +1,10 @@ +objs/line-editing/move_to_word.o: src/line-editing/move_to_word.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/move_up_and_down.d b/42sh/objs/line-editing/move_up_and_down.d new file mode 100644 index 00000000..ca251284 --- /dev/null +++ b/42sh/objs/line-editing/move_up_and_down.d @@ -0,0 +1,10 @@ +objs/line-editing/move_up_and_down.o: src/line-editing/move_up_and_down.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/print_and_del.d b/42sh/objs/line-editing/print_and_del.d new file mode 100644 index 00000000..ed044083 --- /dev/null +++ b/42sh/objs/line-editing/print_and_del.d @@ -0,0 +1,10 @@ +objs/line-editing/print_and_del.o: src/line-editing/print_and_del.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/queue.d b/42sh/objs/line-editing/queue.d new file mode 100644 index 00000000..a893ff9e --- /dev/null +++ b/42sh/objs/line-editing/queue.d @@ -0,0 +1,10 @@ +objs/line-editing/queue.o: src/line-editing/queue.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/line-editing/readline.d b/42sh/objs/line-editing/readline.d new file mode 100644 index 00000000..7b738413 --- /dev/null +++ b/42sh/objs/line-editing/readline.d @@ -0,0 +1,10 @@ +objs/line-editing/readline.o: src/line-editing/readline.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/data_exit.d b/42sh/objs/main/data_exit.d new file mode 100644 index 00000000..a1fac3c9 --- /dev/null +++ b/42sh/objs/main/data_exit.d @@ -0,0 +1,10 @@ +objs/main/data_exit.o: src/main/data_exit.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/data_init.d b/42sh/objs/main/data_init.d new file mode 100644 index 00000000..49e739da --- /dev/null +++ b/42sh/objs/main/data_init.d @@ -0,0 +1,10 @@ +objs/main/data_init.o: src/main/data_init.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/data_singleton.d b/42sh/objs/main/data_singleton.d new file mode 100644 index 00000000..9be60903 --- /dev/null +++ b/42sh/objs/main/data_singleton.d @@ -0,0 +1,10 @@ +objs/main/data_singleton.o: src/main/data_singleton.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/ft_putast.d b/42sh/objs/main/ft_putast.d new file mode 100644 index 00000000..d335f39b --- /dev/null +++ b/42sh/objs/main/ft_putast.d @@ -0,0 +1,10 @@ +objs/main/ft_putast.o: src/main/ft_putast.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/main.d b/42sh/objs/main/main.d new file mode 100644 index 00000000..5da61998 --- /dev/null +++ b/42sh/objs/main/main.d @@ -0,0 +1,10 @@ +objs/main/main.o: src/main/main.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/shell_exit.d b/42sh/objs/main/shell_exit.d new file mode 100644 index 00000000..0d304bf9 --- /dev/null +++ b/42sh/objs/main/shell_exit.d @@ -0,0 +1,10 @@ +objs/main/shell_exit.o: src/main/shell_exit.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/shell_get_avdata.d b/42sh/objs/main/shell_get_avdata.d new file mode 100644 index 00000000..489615e5 --- /dev/null +++ b/42sh/objs/main/shell_get_avdata.d @@ -0,0 +1,10 @@ +objs/main/shell_get_avdata.o: src/main/shell_get_avdata.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/shell_get_opts.d b/42sh/objs/main/shell_get_opts.d new file mode 100644 index 00000000..b5fe8d72 --- /dev/null +++ b/42sh/objs/main/shell_get_opts.d @@ -0,0 +1,10 @@ +objs/main/shell_get_opts.o: src/main/shell_get_opts.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/main/shell_init.d b/42sh/objs/main/shell_init.d new file mode 100644 index 00000000..bfb3d987 --- /dev/null +++ b/42sh/objs/main/shell_init.d @@ -0,0 +1,10 @@ +objs/main/shell_init.o: src/main/shell_init.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/parser/add_case.d b/42sh/objs/parser/add_case.d new file mode 100644 index 00000000..caa49d65 --- /dev/null +++ b/42sh/objs/parser/add_case.d @@ -0,0 +1,9 @@ +objs/parser/add_case.o: src/parser/add_case.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_cmd.d b/42sh/objs/parser/add_cmd.d new file mode 100644 index 00000000..69abecee --- /dev/null +++ b/42sh/objs/parser/add_cmd.d @@ -0,0 +1,9 @@ +objs/parser/add_cmd.o: src/parser/add_cmd.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_condition.d b/42sh/objs/parser/add_condition.d new file mode 100644 index 00000000..81f9912c --- /dev/null +++ b/42sh/objs/parser/add_condition.d @@ -0,0 +1,9 @@ +objs/parser/add_condition.o: src/parser/add_condition.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_file.d b/42sh/objs/parser/add_file.d new file mode 100644 index 00000000..956785ae --- /dev/null +++ b/42sh/objs/parser/add_file.d @@ -0,0 +1,9 @@ +objs/parser/add_file.o: src/parser/add_file.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_loop.d b/42sh/objs/parser/add_loop.d new file mode 100644 index 00000000..8aa90512 --- /dev/null +++ b/42sh/objs/parser/add_loop.d @@ -0,0 +1,9 @@ +objs/parser/add_loop.o: src/parser/add_loop.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_sep.d b/42sh/objs/parser/add_sep.d new file mode 100644 index 00000000..d28684c3 --- /dev/null +++ b/42sh/objs/parser/add_sep.d @@ -0,0 +1,9 @@ +objs/parser/add_sep.o: src/parser/add_sep.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_subshell.d b/42sh/objs/parser/add_subshell.d new file mode 100644 index 00000000..3c3dae01 --- /dev/null +++ b/42sh/objs/parser/add_subshell.d @@ -0,0 +1,9 @@ +objs/parser/add_subshell.o: src/parser/add_subshell.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/aggregate_sym.d b/42sh/objs/parser/aggregate_sym.d new file mode 100644 index 00000000..0963f76c --- /dev/null +++ b/42sh/objs/parser/aggregate_sym.d @@ -0,0 +1,9 @@ +objs/parser/aggregate_sym.o: src/parser/aggregate_sym.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/build_tree.d b/42sh/objs/parser/build_tree.d new file mode 100644 index 00000000..246fcb51 --- /dev/null +++ b/42sh/objs/parser/build_tree.d @@ -0,0 +1,9 @@ +objs/parser/build_tree.o: src/parser/build_tree.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/error_syntax.d b/42sh/objs/parser/error_syntax.d new file mode 100644 index 00000000..867dddf1 --- /dev/null +++ b/42sh/objs/parser/error_syntax.d @@ -0,0 +1,9 @@ +objs/parser/error_syntax.o: src/parser/error_syntax.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/eval_sym.d b/42sh/objs/parser/eval_sym.d new file mode 100644 index 00000000..deac8211 --- /dev/null +++ b/42sh/objs/parser/eval_sym.d @@ -0,0 +1,9 @@ +objs/parser/eval_sym.o: src/parser/eval_sym.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/ft_parse.d b/42sh/objs/parser/ft_parse.d new file mode 100644 index 00000000..a1bd3710 --- /dev/null +++ b/42sh/objs/parser/ft_parse.d @@ -0,0 +1,9 @@ +objs/parser/ft_parse.o: src/parser/ft_parse.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/parser_init.d b/42sh/objs/parser/parser_init.d new file mode 100644 index 00000000..3d2daa4e --- /dev/null +++ b/42sh/objs/parser/parser_init.d @@ -0,0 +1,9 @@ +objs/parser/parser_init.o: src/parser/parser_init.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/pop_stack.d b/42sh/objs/parser/pop_stack.d new file mode 100644 index 00000000..7fa094af --- /dev/null +++ b/42sh/objs/parser/pop_stack.d @@ -0,0 +1,9 @@ +objs/parser/pop_stack.o: src/parser/pop_stack.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/produce_sym.d b/42sh/objs/parser/produce_sym.d new file mode 100644 index 00000000..4f304113 --- /dev/null +++ b/42sh/objs/parser/produce_sym.d @@ -0,0 +1,9 @@ +objs/parser/produce_sym.o: src/parser/produce_sym.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/push_stack.d b/42sh/objs/parser/push_stack.d new file mode 100644 index 00000000..cb9ff706 --- /dev/null +++ b/42sh/objs/parser/push_stack.d @@ -0,0 +1,9 @@ +objs/parser/push_stack.o: src/parser/push_stack.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/read_stack.d b/42sh/objs/parser/read_stack.d new file mode 100644 index 00000000..bfa5ac37 --- /dev/null +++ b/42sh/objs/parser/read_stack.d @@ -0,0 +1,9 @@ +objs/parser/read_stack.o: src/parser/read_stack.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/tree_wrapper.d b/42sh/objs/parser/tree_wrapper.d new file mode 100644 index 00000000..1fc2ef3b --- /dev/null +++ b/42sh/objs/parser/tree_wrapper.d @@ -0,0 +1,9 @@ +objs/parser/tree_wrapper.o: src/parser/tree_wrapper.c includes/parser.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/builtin.h includes/builtin_read.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/sample/brace/brace_01.sh b/42sh/sample/brace/brace_01.sh new file mode 100644 index 00000000..54b84d56 --- /dev/null +++ b/42sh/sample/brace/brace_01.sh @@ -0,0 +1 @@ +{ ls | cat } diff --git a/42sh/sample/func/func01.sh b/42sh/sample/func/func01.sh index 579f9b0f..b3bc2ba1 100644 --- a/42sh/sample/func/func01.sh +++ b/42sh/sample/func/func01.sh @@ -1,4 +1,4 @@ hello() { ls | cat pwd ; cd -} +} diff --git a/42sh/src/glob/command_getoutput.c b/42sh/src/glob/command_getoutput.c index 00ef6581..fdf3dda4 100644 --- a/42sh/src/glob/command_getoutput.c +++ b/42sh/src/glob/command_getoutput.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 14:01:59 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:46:27 by ariard ### ########.fr */ +/* Updated: 2017/02/24 22:04:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/dir_glob.c b/42sh/src/glob/dir_glob.c index 8dc2d0da..f4be218d 100644 --- a/42sh/src/glob/dir_glob.c +++ b/42sh/src/glob/dir_glob.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 12:07:16 by wescande #+# #+# */ -/* Updated: 2017/02/07 19:48:12 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:04:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/esc_print.c b/42sh/src/glob/esc_print.c index 8938302d..44de1fb5 100644 --- a/42sh/src/glob/esc_print.c +++ b/42sh/src/glob/esc_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 15:38:14 by jhalford #+# #+# */ -/* Updated: 2017/02/20 18:49:02 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:05:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/expand_bquote.c b/42sh/src/glob/expand_bquote.c index d24e3892..7c7c0667 100644 --- a/42sh/src/glob/expand_bquote.c +++ b/42sh/src/glob/expand_bquote.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 17:47:53 by wescande #+# #+# */ -/* Updated: 2017/02/20 19:11:11 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:04:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/expand_brace.c b/42sh/src/glob/expand_brace.c index 13cacf4d..c0055817 100644 --- a/42sh/src/glob/expand_brace.c +++ b/42sh/src/glob/expand_brace.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 19:00:29 by wescande #+# #+# */ -/* Updated: 2017/02/20 18:54:19 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:05:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/expand_esc.c b/42sh/src/glob/expand_esc.c index 35777c6f..f66bf422 100644 --- a/42sh/src/glob/expand_esc.c +++ b/42sh/src/glob/expand_esc.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 23:18:56 by wescande #+# #+# */ -/* Updated: 2017/02/20 17:25:43 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:05:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/expand_var.c b/42sh/src/glob/expand_var.c index bcf85bc9..05c77e8a 100644 --- a/42sh/src/glob/expand_var.c +++ b/42sh/src/glob/expand_var.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 16:09:27 by wescande #+# #+# */ -/* Updated: 2017/02/20 18:56:50 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:05:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/ft_strsplit_esc.c b/42sh/src/glob/ft_strsplit_esc.c index f37c7b14..6e050cb7 100644 --- a/42sh/src/glob/ft_strsplit_esc.c +++ b/42sh/src/glob/ft_strsplit_esc.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 22:18:46 by wescande #+# #+# */ -/* Updated: 2017/01/31 23:15:17 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:05:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/ft_strsplit_spe.c b/42sh/src/glob/ft_strsplit_spe.c index 8c11de67..3d69627c 100644 --- a/42sh/src/glob/ft_strsplit_spe.c +++ b/42sh/src/glob/ft_strsplit_spe.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 20:49:30 by wescande #+# #+# */ -/* Updated: 2017/02/20 18:57:58 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:03:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/glob.c b/42sh/src/glob/glob.c index d5832efd..b25b86ec 100644 --- a/42sh/src/glob/glob.c +++ b/42sh/src/glob/glob.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:29:54 by wescande #+# #+# */ -/* Updated: 2017/02/20 19:04:44 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:05:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/match_pattern.c b/42sh/src/glob/match_pattern.c index 536cb08c..d98fd7e2 100644 --- a/42sh/src/glob/match_pattern.c +++ b/42sh/src/glob/match_pattern.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/24 17:30:23 by wescande #+# #+# */ -/* Updated: 2017/02/20 14:00:41 by wescande ### ########.fr */ +/* Updated: 2017/02/24 22:06:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index 72886e5c..78530edc 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:45:37 by ariard ### ########.fr */ +/* Updated: 2017/02/24 21:39:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,8 @@ t_lexstate get_state_global(t_lexer *lexer) return (BQUOTE); else if (c == '(' || c == ')') return (PAREN); + else if (c == '{' || c == '}') + return (CURLY_BRACKETS); else if (c == '=') return (ASSIGNEMENT_WORD); else if (c == 0) diff --git a/42sh/src/lexer/lexer_curly_brackets.c b/42sh/src/lexer/lexer_curly_brackets.c new file mode 100644 index 00000000..e63356d1 --- /dev/null +++ b/42sh/src/lexer/lexer_curly_brackets.c @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_curly_brackets.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/24 21:24:50 by ariard #+# #+# */ +/* Updated: 2017/02/24 21:48:52 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int lexer_curly_brackets(t_list **alst, t_lexer *lexer) +{ + t_token *token; + t_list **lst; + + DG("lexer curly brackets"); + lst = alst; + if (*alst) + { + token = (*alst)->content; + if (token->type) + lst = &(*alst)->next; + } + token = token_init(); + *lst = ft_lstnew(token, sizeof(*token)); + token = (*lst)->content; + if (lexer->str[lexer->pos] == '{') + { + DG("lbrace"); + token->type = TK_LBRACE; + push(&lexer->stack, CURLY_BRACKETS); + } + else if (lexer->stack && *(int*)lexer->stack->content == CURLY_BRACKETS) + { + DG("rbrace"); + token->type = TK_RBRACE; + pop(&lexer->stack); + } + lexer->pos++; + lexer->state = DEFAULT; + return (lexer_lex(&(*lst)->next, lexer)); +} diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 0bb7ebca..27535a56 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:51:04 by ariard ### ########.fr */ +/* Updated: 2017/02/24 21:38:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_bquote, &lexer_backslash, &lexer_paren, + &lexer_curly_brackets, &lexer_assignement_word, &lexer_comment, &lexer_end, diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index d4f1f901..0c2ca145 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:20:00 by ariard ### ########.fr */ +/* Updated: 2017/02/24 21:48:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,9 +18,11 @@ void token_print(t_list *lst) while (lst) { - - token = lst->content; - DG("token : %s data [%s]\n", read_state(token->type), token->data); + DG("token print"); + if (lst->content) + token = lst->content; + if (token->type) + DG("token : %s data [%s]\n", read_state(token->type), token->data); lst = lst->next; } } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index bfe103c2..ec5af014 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:58:33 by ariard ### ########.fr */ +/* Updated: 2017/02/24 21:48:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,7 +45,7 @@ int handle_instruction(int fd) if (lexer_lex(token ? <oken : &token, &lexer)) return (1); if (get_lexer_stack(lexer)) - continue ; + continue ; lexer.state = DEFAULT; token_print(token); if (get_reserved_words(&token)) diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index b42b8fad..3341234e 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:16:06 by ariard ### ########.fr */ +/* Updated: 2017/02/24 23:15:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,8 @@ int issubshell(t_btree **ast, t_list **lst) node = (*ast)->item; if (node->type == SUBSHELL && node->full == 0) return (1); + if (node->type == TK_LBRACE && node->full == 0) + return (1); } return (0); } @@ -39,6 +41,8 @@ int add_subshell_cmd(t_btree **ast, t_list **lst) node = (*ast)->item; if (token->type == TK_PAREN_CLOSE && node->type == SUBSHELL) return ((node->full = 1)); + if (token->type == TK_RBRACE && node->type == TK_LBRACE) + return ((node->full = 1)); return (add_cmd(&(*ast)->right, lst)); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index d97e3261..84a5c5cc 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/24 18:25:45 by ariard ### ########.fr */ +/* Updated: 2017/02/24 23:16:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ t_aggrematch g_aggrematch[] = {TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, + {TK_PAREN_OPEN, CMD_SUPERIOR, FUNC_NAME, CMD_SUPERIOR}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, @@ -39,6 +40,9 @@ t_aggrematch g_aggrematch[] = {TK_PAREN_CLOSE, CMD_SUPERIOR, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, SUBSHELL, TK_PAREN_OPEN}, + {TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE}, + {TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE}, + {TK_RBRACE, PIPE_SEMI_SEQUENCE, BRACE_CLAUSE, TK_LBRACE}, {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, {TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, //watch this @@ -111,6 +115,7 @@ t_aggrematch g_aggrematch[] = {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, CMD_PREFIX}, {IO_REDIRECT, LINEBREAK, CMD_PREFIX, 0}, {IO_REDIRECT, TK_PAREN_OPEN, CMD_PREFIX, 0}, + {IO_REDIRECT, TK_LBRACE, CMD_PREFIX, 0}, {IO_REDIRECT, COMPLETE_COMMANDS, CMD_PREFIX, 0}, {IO_REDIRECT, TK_BANG, CMD_PREFIX, 0}, {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, 0}, @@ -122,6 +127,7 @@ t_aggrematch g_aggrematch[] = //to abstract {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_PAREN_OPEN, SIMPLE_COMMAND, 0}, + {CMD_PREFIX, TK_LBRACE, SIMPLE_COMMAND, 0}, {CMD_PREFIX, COMPLETE_COMMANDS, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0}, {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, 0}, @@ -131,6 +137,7 @@ t_aggrematch g_aggrematch[] = //to check {CMD_NAME, LINEBREAK, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PAREN_OPEN, CMD_SUPERIOR, 0}, + {CMD_NAME, TK_LBRACE, CMD_SUPERIOR, 0}, {CMD_NAME, COMPLETE_COMMANDS, CMD_SUPERIOR, 0}, {CMD_NAME, TK_BANG, CMD_SUPERIOR, 0}, {CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0}, @@ -171,16 +178,20 @@ t_aggrematch g_aggrematch[] = // {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE}, {COMPOUND_LIST, TK_IF, CONDITION, TK_IF}, {COMPOUND_LIST, TK_THEN, CONDITION, TK_THEN}, - {COMPOUND_LIST, TK_PAREN_CLOSE, CASE_LIST_NS, PATTERN_CASE}, + {COMPOUND_LIST, TK_PAREN_CLOSE, CLOSE_LIST, TK_PAREN_CLOSE}, {COMPOUND_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, // {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF}, {COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {COMPOUND_LIST, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, + {CLOSE_LIST, PATTERN, CASE_LIST_NS, PATTERN_CASE}, + {CLOSE_LIST, FUNC_NAME, FUNCTION_DEFINITION, FUNC_NAME}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, + {BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, {AND_OR_MINOR, TK_PAREN_OPEN, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, TK_LBRACE, AND_OR_MAJOR, 0}, {AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, @@ -199,6 +210,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_LBRACE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, @@ -209,6 +221,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_PAREN_OPEN, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_LBRACE, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPLETE_COMMANDS, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_DO, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_PAREN_CLOSE, PIPE_SEQUENCE, 0}, @@ -226,6 +239,7 @@ t_aggrematch g_aggrematch[] = {PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0}, {PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0}, {PIPE_SEQUENCE, TK_PAREN_OPEN, PIPELINE, 0}, + {PIPE_SEQUENCE, TK_LBRACE, PIPELINE, 0}, {PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, @@ -250,6 +264,7 @@ t_aggrematch g_aggrematch[] = {PIPELINE, CASE_LIST_NS, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, {PIPELINE, TK_PAREN_OPEN, AND_OR, 0}, + {PIPELINE, TK_LBRACE, AND_OR, 0}, {PIPELINE, COMPLETE_COMMANDS, AND_OR, 0}, // {PIPELINE, LINEBREAK, AND_OR, AND_OR}, {PIPELINE, SEPARATOR_OP, AND_OR, 0}, @@ -265,20 +280,20 @@ t_aggrematch g_aggrematch[] = {AND_OR, TK_THEN, COMPOUND_LIST, 0}, {AND_OR, TK_ELSE, COMPOUND_LIST, 0}, {AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0}, + {AND_OR, TK_PAREN_OPEN, COMPOUND_LIST, 0}, + {AND_OR, TK_LBRACE, COMPOUND_LIST, 0}, {AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0}, {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, - {AND_OR, TK_PAREN_OPEN, LIST, 0}, + {AND_OR, TK_LBRACE, LIST, 0}, {AND_OR, COMPLETE_COMMANDS, LIST, 0}, {LIST, NEWLINE_LIST, COMPLETE_COMMAND, 0}, {LIST, LINEBREAK, COMPLETE_COMMAND, 0}, - {LIST, TK_PAREN_OPEN, LIST, 0}, {LIST, COMPLETE_COMMANDS, COMPLETE_COMMAND, 0}, {COMPLETE_COMMAND, NEWLINE_LIST, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, LINEBREAK, COMPLETE_COMMANDS, 0}, - {COMPLETE_COMMAND, TK_PAREN_OPEN, COMPLETE_COMMANDS, 0}, {COMPLETE_COMMAND, COMPLETE_COMMANDS, COMPLETE_COMMANDS, 0}, {COMPLETE_COMMANDS, COMPLETE_COMMANDS, COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {0, 0, 0, 0}, diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 78c77692..9fdcc75c 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/24 20:59:49 by ariard ### ########.fr */ +/* Updated: 2017/02/24 23:14:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index eac28ec2..4c0fc578 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -19,6 +19,7 @@ t_stackmatch g_stackmatch[] = {TK_WORD, WORDLIST}, {TK_WORD, LINEBREAK}, {TK_WORD, TK_PAREN_OPEN}, + {TK_WORD, TK_LBRACE}, {TK_WORD, COMPLETE_COMMANDS}, {TK_WORD, TK_IN}, {TK_WORD, FOR_WORDLIST}, @@ -30,6 +31,7 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, CMD_WORD}, {TK_IO_NUMBER, LINEBREAK}, {TK_IO_NUMBER, TK_PAREN_OPEN}, + {TK_IO_NUMBER, TK_LBRACE}, {TK_IO_NUMBER, COMPLETE_COMMANDS}, {TK_IO_NUMBER, TK_BANG}, {TK_IO_NUMBER, SEPARATOR_OP}, @@ -55,6 +57,7 @@ t_stackmatch g_stackmatch[] = {TK_LESS, CMD_NAME}, {TK_LESS, LINEBREAK}, {TK_LESS, TK_PAREN_OPEN}, + {TK_LESS, TK_LBRACE}, {TK_LESS, COMPLETE_COMMANDS}, {TK_LESS, TK_BANG}, {TK_LESS, SEPARATOR_OP}, @@ -70,6 +73,7 @@ t_stackmatch g_stackmatch[] = {TK_GREAT, CMD_NAME}, {TK_GREAT, LINEBREAK}, {TK_GREAT, TK_PAREN_OPEN}, + {TK_GREAT, TK_LBRACE}, {TK_GREAT, COMPLETE_COMMANDS}, {TK_GREAT, TK_BANG}, {TK_GREAT, SEPARATOR_OP}, @@ -87,6 +91,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, CMD_NAME}, {TK_DLESS, LINEBREAK}, {TK_DLESS, TK_PAREN_OPEN}, + {TK_DLESS, TK_LBRACE}, {TK_DLESS, COMPLETE_COMMANDS}, {TK_DLESS, TK_BANG}, {TK_DLESS, SEPARATOR_OP}, @@ -103,6 +108,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, CMD_NAME}, {TK_DLESSDASH, LINEBREAK}, {TK_DLESSDASH, TK_PAREN_OPEN}, + {TK_DLESSDASH, TK_LBRACE}, {TK_DLESSDASH, COMPLETE_COMMANDS}, {TK_DLESSDASH, TK_BANG}, {TK_DLESSDASH, TK_BANG}, @@ -120,6 +126,7 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, CMD_NAME}, {TK_DGREAT, LINEBREAK}, {TK_DGREAT, TK_PAREN_OPEN}, + {TK_DGREAT, TK_LBRACE}, {TK_DGREAT, COMPLETE_COMMANDS}, {TK_DGREAT, TK_BANG}, {TK_DGREAT, TK_BANG}, @@ -137,6 +144,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, CMD_NAME}, {TK_LESSAND, LINEBREAK}, {TK_LESSAND, TK_PAREN_OPEN}, + {TK_LESSAND, TK_LBRACE}, {TK_LESSAND, COMPLETE_COMMANDS}, {TK_LESSAND, TK_BANG}, {TK_LESSAND, TK_BANG}, @@ -154,6 +162,7 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, CMD_NAME}, {TK_GREATAND, LINEBREAK}, {TK_GREATAND, TK_PAREN_OPEN}, + {TK_GREATAND, TK_LBRACE}, {TK_GREATAND, COMPLETE_COMMANDS}, {TK_LESSAND, TK_BANG}, {TK_GREATAND, TK_BANG}, @@ -171,6 +180,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSGREAT, CMD_NAME}, {TK_LESSGREAT, LINEBREAK}, {TK_LESSGREAT, TK_PAREN_OPEN}, + {TK_LESSGREAT, TK_LBRACE}, {TK_LESSGREAT, COMPLETE_COMMANDS}, {TK_LESSGREAT, TK_BANG}, {TK_LESSGREAT, TK_BANG}, @@ -188,6 +198,7 @@ t_stackmatch g_stackmatch[] = {TK_CLOBBER, CMD_NAME}, {TK_CLOBBER, LINEBREAK}, {TK_CLOBBER, TK_PAREN_OPEN}, + {TK_CLOBBER, TK_LBRACE}, {TK_CLOBBER, COMPLETE_COMMANDS}, {TK_CLOBBER, TK_BANG}, {TK_CLOBBER, TK_BANG}, @@ -199,6 +210,7 @@ t_stackmatch g_stackmatch[] = {TK_IF, LINEBREAK}, {TK_IF, TK_PAREN_OPEN}, + {TK_IF, TK_LBRACE}, {TK_IF, TK_PAREN_CLOSE}, {TK_IF, COMPLETE_COMMANDS}, {TK_IF, TK_BANG}, @@ -239,6 +251,7 @@ t_stackmatch g_stackmatch[] = {TK_DONE, END_COMMAND}, {TK_CASE, LINEBREAK}, {TK_CASE, TK_PAREN_OPEN}, + {TK_CASE, TK_LBRACE}, {TK_CASE, COMPLETE_COMMANDS}, {TK_CASE, TK_BANG}, {TK_CASE, TK_DO}, @@ -262,6 +275,7 @@ t_stackmatch g_stackmatch[] = {TK_ESAC, TK_IN}, {TK_WHILE, LINEBREAK}, {TK_WHILE, TK_PAREN_OPEN}, + {TK_WHILE, TK_LBRACE}, {TK_WHILE, COMPLETE_COMMANDS}, {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, @@ -280,6 +294,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, COMPLETE_CONDITION}, {TK_UNTIL, LINEBREAK}, {TK_UNTIL, TK_PAREN_OPEN}, + {TK_UNTIL, TK_LBRACE}, {TK_UNTIL, COMPLETE_COMMANDS}, {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, @@ -298,6 +313,7 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, COMPLETE_CONDITION}, {TK_FOR, LINEBREAK}, {TK_FOR, TK_PAREN_OPEN}, + {TK_FOR, TK_LBRACE}, {TK_FOR, COMPLETE_COMMANDS}, {TK_FOR, TK_BANG}, {TK_FOR, TK_BANG}, @@ -315,17 +331,51 @@ t_stackmatch g_stackmatch[] = {TK_FOR, TK_ELSE}, {TK_FOR, TK_PAREN_CLOSE}, {TK_FOR, COMPLETE_CONDITION}, - {TK_LBRACE, LINEBREAK}, - {TK_LBRACE, TK_PAREN_OPEN}, {TK_LBRACE, COMPLETE_COMMANDS}, + {TK_LBRACE, LINEBREAK}, + {TK_LBRACE, TK_LBRACE}, {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, PIPE_SEMI_SEQUENCE}, - {TK_RBRACE, COMPOUND_LIST}, + {TK_LBRACE, AND_OR_MAJOR}, + {TK_LBRACE, TK_WHILE}, + {TK_LBRACE, TK_UNTIL}, + {TK_LBRACE, TK_DO}, + {TK_LBRACE, TK_PAREN_CLOSE}, + {TK_LBRACE, TK_LBRACE}, + {TK_LBRACE, TK_IF}, + {TK_LBRACE, TK_ELIF}, + {TK_LBRACE, TK_THEN}, + {TK_LBRACE, TK_ELSE}, + {TK_LBRACE, COMPOUND_LIST}, + {TK_LBRACE, CASE_LIST_NS}, + {TK_LBRACE, COMPLETE_CONDITION}, + {TK_LBRACE, TK_IN}, + {SEQUENTIAL_SEP, NAME}, + {TK_RBRACE, TK_SEMI}, + {TK_RBRACE, END_COMMAND}, + {TK_RBRACE, SEPARATOR_OP}, + {TK_RBRACE, WORD}, + {TK_RBRACE, IN}, + {TK_RBRACE, TK_AND_IF}, + {TK_RBRACE, TK_OR_IF}, + {TK_RBRACE, TK_PIPE}, + {TK_RBRACE, TK_RBRACE}, + {TK_RBRACE, COMPLETE_COMMANDS}, + {TK_RBRACE, CMD_SUPERIOR}, + {TK_RBRACE, PIPE_SEMI_SEQUENCE}, {TK_RBRACE, CASE_LIST_NS}, + {TK_RBRACE, PROGRAM}, + {TK_RBRACE, TK_PAREN_OPEN}, + {TK_RBRACE, TK_LBRACE}, + {TK_RBRACE, PATTERN_CASE}, + {TK_RBRACE, PATTERN}, + {TK_RBRACE, COMPOUND_LIST}, + {TK_RBRACE, FUNC_NAME}, {TK_BANG, LINEBREAK}, {TK_BANG, TK_PAREN_OPEN}, + {TK_BANG, TK_LBRACE}, {TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, SEPARATOR_OP}, {TK_BANG, SEPARATOR_OP}, @@ -357,7 +407,6 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, TK_UNTIL}, {TK_PAREN_OPEN, TK_DO}, {TK_PAREN_OPEN, TK_PAREN_CLOSE}, - {TK_PAREN_OPEN, TK_PAREN_OPEN}, {TK_PAREN_OPEN, TK_IF}, {TK_PAREN_OPEN, TK_ELIF}, {TK_PAREN_OPEN, TK_THEN}, @@ -366,6 +415,7 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, CASE_LIST_NS}, {TK_PAREN_OPEN, COMPLETE_CONDITION}, {TK_PAREN_OPEN, TK_IN}, + {TK_PAREN_OPEN, CMD_SUPERIOR}, {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, @@ -382,6 +432,7 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_ELSE}, {END_COMMAND, LINEBREAK}, {END_COMMAND, TK_PAREN_OPEN}, + {END_COMMAND, TK_LBRACE}, {END_COMMAND, COMPLETE_COMMANDS}, {END_COMMAND, COMPOUND_LIST}, {END_COMMAND, CASE_LIST_NS}, @@ -414,6 +465,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, CASE_LIST_NS}, {LINEBREAK, PROGRAM}, {LINEBREAK, TK_PAREN_OPEN}, + {LINEBREAK, TK_LBRACE}, {TK_PAREN_CLOSE, TK_SEMI}, {TK_PAREN_CLOSE, END_COMMAND}, {TK_PAREN_CLOSE, SEPARATOR_OP}, @@ -429,9 +481,11 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_CLOSE, CASE_LIST_NS}, {TK_PAREN_CLOSE, PROGRAM}, {TK_PAREN_CLOSE, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, TK_LBRACE}, {TK_PAREN_CLOSE, PATTERN_CASE}, {TK_PAREN_CLOSE, PATTERN}, {TK_PAREN_CLOSE, COMPOUND_LIST}, + {TK_PAREN_CLOSE, FUNC_NAME}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, CASE_LIST_NS}, {NEWLINE_LIST, TK_PAREN_CLOSE}, @@ -457,6 +511,7 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, CONDITION}, {NEWLINE_LIST, LINEBREAK}, {NEWLINE_LIST, TK_PAREN_OPEN}, + {NEWLINE_LIST, TK_LBRACE}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESSDASH}, @@ -469,6 +524,7 @@ t_stackmatch g_stackmatch[] = {IO_HERE, CMD_NAME}, {IO_HERE, LINEBREAK}, {IO_HERE, TK_PAREN_OPEN}, + {IO_HERE, TK_LBRACE}, {IO_HERE, COMPLETE_COMMANDS}, {IO_HERE, TK_BANG}, {IO_HERE, TK_BANG}, @@ -504,6 +560,7 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, CMD_NAME}, {IO_REDIRECT, LINEBREAK}, {IO_REDIRECT, TK_PAREN_OPEN}, + {IO_REDIRECT, TK_LBRACE}, {IO_REDIRECT, COMPLETE_COMMANDS}, {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, TK_BANG}, @@ -516,6 +573,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUFFIX, CMD_SUPERIOR}, {CMD_PREFIX, LINEBREAK}, {CMD_PREFIX, TK_PAREN_OPEN}, + {CMD_PREFIX, TK_LBRACE}, {CMD_PREFIX, COMPLETE_COMMANDS}, {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, TK_BANG}, @@ -526,6 +584,7 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, COMPLETE_COMMANDS}, {CMD_NAME, LINEBREAK}, {CMD_NAME, TK_PAREN_OPEN}, + {CMD_NAME, TK_LBRACE}, {CMD_NAME, TK_BANG}, {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, @@ -536,7 +595,6 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_UNTIL}, {CMD_NAME, TK_DO}, {CMD_NAME, TK_PAREN_CLOSE}, - {CMD_NAME, TK_PAREN_OPEN}, {CMD_NAME, TK_IF}, {CMD_NAME, TK_ELIF}, {CMD_NAME, TK_THEN}, @@ -558,6 +616,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, COMPLETE_CONDITION}, {CMD_SUPERIOR, LINEBREAK}, {CMD_SUPERIOR, TK_PAREN_OPEN}, + {CMD_SUPERIOR, TK_LBRACE}, {CMD_SUPERIOR, COMPLETE_COMMANDS}, {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, TK_BANG}, @@ -580,6 +639,7 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, COMPLETE_CONDITION}, {SIMPLE_COMMAND, LINEBREAK}, {SIMPLE_COMMAND, TK_PAREN_OPEN}, + {SIMPLE_COMMAND, TK_LBRACE}, {SIMPLE_COMMAND, COMPLETE_COMMANDS}, {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, TK_BANG}, @@ -595,17 +655,20 @@ t_stackmatch g_stackmatch[] = {LOOP, TK_UNTIL}, {CONDITION, LINEBREAK}, {CONDITION, TK_PAREN_OPEN}, + {CONDITION, TK_LBRACE}, {CONDITION, COMPLETE_COMMANDS}, {CONDITION, COMPOUND_LIST}, {CONDITION, CASE_LIST_NS}, {CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, LINEBREAK}, {COMPLETE_CONDITION, TK_PAREN_OPEN}, + {COMPLETE_CONDITION, TK_LBRACE}, {COMPLETE_CONDITION, COMPLETE_COMMANDS}, {COMPLETE_CONDITION, COMPLETE_CONDITION}, {COMPLETE_CONDITION, COMPLETE_CONDITION}, {BRACE_GROUP, LINEBREAK}, {BRACE_GROUP, TK_PAREN_OPEN}, + {BRACE_GROUP, TK_LBRACE}, {BRACE_GROUP, COMPLETE_COMMANDS}, {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, TK_BANG}, @@ -614,6 +677,7 @@ t_stackmatch g_stackmatch[] = {BRACE_GROUP, PIPE_SEMI_SEQUENCE}, {FNAME, LINEBREAK}, {FNAME, TK_PAREN_OPEN}, + {FNAME, TK_LBRACE}, {FNAME, COMPLETE_COMMANDS}, {FNAME, TK_BANG}, {FNAME, TK_BANG}, @@ -623,6 +687,7 @@ t_stackmatch g_stackmatch[] = {FUNCTION_BODY, FUNC}, {FUNCTION_DEFINITION, LINEBREAK}, {FUNCTION_DEFINITION, TK_PAREN_OPEN}, + {FUNCTION_DEFINITION, TK_LBRACE}, {FUNCTION_DEFINITION, COMPLETE_COMMANDS}, {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, TK_BANG}, @@ -631,6 +696,7 @@ t_stackmatch g_stackmatch[] = {FUNCTION_DEFINITION, PIPE_SEMI_SEQUENCE}, {UNTIL_CLAUSE, LINEBREAK}, {UNTIL_CLAUSE, TK_PAREN_OPEN}, + {UNTIL_CLAUSE, TK_LBRACE}, {UNTIL_CLAUSE, COMPLETE_COMMANDS}, {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, @@ -649,7 +715,6 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, COMPLETE_CONDITION}, {UNTIL_CLAUSE, AND_OR_MAJOR}, {WHILE_CLAUSE, LINEBREAK}, - {WHILE_CLAUSE, TK_PAREN_OPEN}, {WHILE_CLAUSE, COMPLETE_COMMANDS}, {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, @@ -671,6 +736,7 @@ t_stackmatch g_stackmatch[] = // {ELSE_PART, COMPLETE_CONDITION}, {IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, TK_PAREN_OPEN}, + {IF_CLAUSE, TK_LBRACE}, {IF_CLAUSE, COMPLETE_COMMANDS}, {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, @@ -689,13 +755,34 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, COMPLETE_COMMAND}, {IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, AND_OR_MAJOR}, - + {BRACE_CLAUSE, LINEBREAK}, + {BRACE_CLAUSE, TK_PAREN_OPEN}, + {BRACE_CLAUSE, TK_LBRACE}, + {BRACE_CLAUSE, COMPLETE_COMMANDS}, + {BRACE_CLAUSE, TK_BANG}, + {BRACE_CLAUSE, SEPARATOR_OP}, + {BRACE_CLAUSE, NEWLINE_LIST}, + {BRACE_CLAUSE, PIPE_SEMI_SEQUENCE}, + {BRACE_CLAUSE, TK_DO}, + {BRACE_CLAUSE, TK_PAREN_CLOSE}, + {BRACE_CLAUSE, TK_WHILE}, + {BRACE_CLAUSE, TK_UNTIL}, + {BRACE_CLAUSE, TK_IF}, + {BRACE_CLAUSE, TK_ELIF}, + {BRACE_CLAUSE, TK_THEN}, + {BRACE_CLAUSE, TK_ELSE}, + {BRACE_CLAUSE, COMPOUND_LIST}, + {BRACE_CLAUSE, CASE_LIST_NS}, + {BRACE_CLAUSE, COMPLETE_COMMAND}, + {BRACE_CLAUSE, COMPLETE_CONDITION}, + {BRACE_CLAUSE, AND_OR_MAJOR}, {PATTERN, PATTERN_CASE}, {PATTERN, CASE_LIST}, {PATTERN, TK_IN}, {CASE_LIST_NS, LINEBREAK}, {CASE_CLAUSE, LINEBREAK}, {CASE_CLAUSE, TK_PAREN_OPEN}, + {CASE_CLAUSE, TK_LBRACE}, {CASE_CLAUSE, COMPLETE_COMMANDS}, {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, SEPARATOR_OP}, @@ -721,6 +808,7 @@ t_stackmatch g_stackmatch[] = {FOR_WORDLIST, NAME}, {FOR_CLAUSE, LINEBREAK}, {FOR_CLAUSE, TK_PAREN_OPEN}, + {FOR_CLAUSE, TK_LBRACE}, {FOR_CLAUSE, COMPLETE_COMMANDS}, {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, TK_BANG}, @@ -753,6 +841,8 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, COMPOUND_LIST}, {COMPOUND_LIST, COMPLETE_CONDITION}, + {CLOSE_LIST, PATTERN_CASE}, + {CLOSE_LIST, FUNC_NAME}, {SUBSHELL, LINEBREAK}, {SUBSHELL, COMPLETE_COMMANDS}, {SUBSHELL, TK_BANG}, @@ -776,6 +866,7 @@ t_stackmatch g_stackmatch[] = {SUBSHELL, AND_OR_MAJOR}, {COMPOUND_COMMAND, LINEBREAK}, {COMPOUND_COMMAND, TK_PAREN_OPEN}, + {COMPOUND_COMMAND, TK_LBRACE}, {COMPOUND_COMMAND, COMPLETE_COMMANDS}, {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, TK_BANG}, @@ -799,6 +890,7 @@ t_stackmatch g_stackmatch[] = {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, {COMMAND, TK_PAREN_OPEN}, + {COMMAND, TK_LBRACE}, {COMMAND, COMPLETE_COMMANDS}, {COMMAND, TK_DO}, {COMMAND, TK_PAREN_CLOSE}, @@ -817,6 +909,7 @@ t_stackmatch g_stackmatch[] = {AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK}, {AND_OR_MINOR, TK_PAREN_OPEN}, + {AND_OR_MINOR, TK_LBRACE}, {AND_OR_MINOR, COMPLETE_COMMANDS}, {AND_OR_MINOR, AND_OR_MAJOR}, {PIPE_SEQUENCE, TK_WHILE}, @@ -832,6 +925,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEQUENCE, LINEBREAK}, {PIPE_SEQUENCE, TK_PAREN_OPEN}, + {PIPE_SEQUENCE, TK_LBRACE}, {PIPE_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, TK_BANG}, @@ -851,6 +945,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, {PIPE_SEMI_SEQUENCE, TK_PAREN_OPEN}, + {PIPE_SEMI_SEQUENCE, TK_LBRACE}, {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, TK_BANG}, @@ -870,6 +965,7 @@ t_stackmatch g_stackmatch[] = {PIPELINE, COMPLETE_CONDITION}, {PIPELINE, LINEBREAK}, {PIPELINE, TK_PAREN_OPEN}, + {PIPELINE, TK_LBRACE}, {PIPELINE, COMPLETE_COMMANDS}, {PIPELINE, SEPARATOR_OP}, {PIPELINE, SEPARATOR_OP}, @@ -877,6 +973,7 @@ t_stackmatch g_stackmatch[] = {PIPELINE, AND_OR_MAJOR}, {AND_OR_MAJOR, LINEBREAK}, {AND_OR_MAJOR, TK_PAREN_OPEN}, + {AND_OR_MAJOR, TK_LBRACE}, {AND_OR_MAJOR, COMPLETE_COMMANDS}, {AND_OR_MAJOR, AND_OR_MAJOR}, {AND_OR_MAJOR, AND_OR_MAJOR}, @@ -893,20 +990,17 @@ t_stackmatch g_stackmatch[] = {AND_OR, COMPLETE_CONDITION}, {AND_OR, LINEBREAK}, {AND_OR, TK_PAREN_OPEN}, + {AND_OR, TK_LBRACE}, {AND_OR, COMPLETE_COMMANDS}, {AND_OR, SEPARATOR_OP}, {AND_OR, SEPARATOR_OP}, {AND_OR, NEWLINE_LIST}, {LIST, LINEBREAK}, - {LIST, TK_PAREN_OPEN}, {LIST, COMPLETE_COMMANDS}, {LIST, NEWLINE_LIST}, {COMPLETE_COMMAND, LINEBREAK}, - {COMPLETE_COMMAND, TK_PAREN_OPEN}, {COMPLETE_COMMAND, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, NEWLINE_LIST}, - {COMPLETE_COMMANDS, LINEBREAK}, - {COMPLETE_COMMANDS, TK_PAREN_OPEN}, {COMPLETE_COMMANDS, COMPLETE_COMMANDS}, {0, 0}, }; diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 01f978b8..f971f12f 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -49,8 +49,8 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) parser->state = SUCCESS; else parser->state = UNDEFINED; - build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); +// build_tree(ast, token); +// btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 1cc792f4..113696bb 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/24 18:25:47 by ariard ### ########.fr */ +/* Updated: 2017/02/24 23:10:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -46,16 +46,19 @@ t_prodmatch g_prodmatch[] = {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, {TK_WORD, SEPARATOR_OP, CMD_NAME}, {TK_WORD, TK_PAREN_OPEN, CMD_NAME}, + {TK_WORD, TK_LBRACE, CMD_NAME}, {TK_WORD, CASE_LIST, PATTERN}, {TK_WORD, PATTERN_CASE, PATTERN}, {TK_WORD, COMPLETE_COMMANDS, CMD_NAME}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_PAREN_OPEN, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, TK_LBRACE, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, {TK_NAME, LINEBREAK, FNAME}, {TK_NAME, TK_PAREN_OPEN, FNAME}, + {TK_NAME, TK_LBRACE, FNAME}, {TK_NAME, TK_BANG, FNAME}, {TK_NAME, SEPARATOR_OP, FNAME}, {TK_NAME, NEWLINE_LIST, FNAME}, @@ -75,6 +78,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, {TK_NEWLINE, TK_PAREN_OPEN, NEWLINE_LIST}, + {TK_NEWLINE, TK_LBRACE, NEWLINE_LIST}, {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 09f6ee03..f5cf146b 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/24 20:57:40 by ariard ### ########.fr */ +/* Updated: 2017/02/24 22:59:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,14 @@ char *read_state(t_sym current) { + if (current == BRACE_CLAUSE) + return ("BRACE_CLAUSE"); + if (current == FUNC_NAME) + return ("FUNC_NAME"); + if (current == TK_LBRACE) + return ("TK_LBRACE"); + if (current == TK_RBRACE) + return ("TK_RBRACE"); if (current == TK_ASSIGNEMENT_WORD) return ("TK_ASSIGNEMENT_WORD"); if (current == CASE_CLAUSE) diff --git a/42sh/test.sh b/42sh/test.sh new file mode 100644 index 00000000..cce06da7 --- /dev/null +++ b/42sh/test.sh @@ -0,0 +1 @@ +{ hello } From a8a06305bbfe24adc783c7a55be4ebc4c19bebb4 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 24 Feb 2017 23:18:00 +0100 Subject: [PATCH 100/206] parsing brace_clause + func def ok --- 42sh/objs/builtin/bt_read_get.d | 10 ---------- 42sh/objs/builtin/bt_read_parse.d | 10 ---------- 42sh/objs/builtin/bt_read_term.d | 10 ---------- 42sh/objs/builtin/builtin_cd.d | 9 --------- 42sh/objs/builtin/builtin_echo.d | 10 ---------- 42sh/objs/builtin/builtin_env.d | 10 ---------- 42sh/objs/builtin/builtin_exit.d | 10 ---------- 42sh/objs/builtin/builtin_export.d | 10 ---------- 42sh/objs/builtin/builtin_hash.d | 10 ---------- 42sh/objs/builtin/builtin_history.d | 10 ---------- 42sh/objs/builtin/builtin_read.d | 10 ---------- 42sh/objs/builtin/builtin_setenv.d | 10 ---------- 42sh/objs/builtin/builtin_unset.d | 10 ---------- 42sh/objs/builtin/builtin_unsetenv.d | 10 ---------- 42sh/objs/builtin/is_builtin.d | 10 ---------- 42sh/objs/completion/c_binary.d | 10 ---------- 42sh/objs/completion/c_clear.d | 9 --------- 42sh/objs/completion/c_files.d | 9 --------- 42sh/objs/completion/c_init.d | 9 --------- 42sh/objs/completion/c_matching.d | 10 ---------- 42sh/objs/completion/c_misc.d | 9 --------- 42sh/objs/completion/c_output.d | 10 ---------- 42sh/objs/completion/c_parser.d | 10 ---------- 42sh/objs/completion/c_pathsolver.d | 10 ---------- 42sh/objs/completion/c_printer.d | 10 ---------- 42sh/objs/completion/c_rematch.d | 10 ---------- 42sh/objs/completion/c_sizing.d | 10 ---------- 42sh/objs/completion/c_terminal.d | 10 ---------- 42sh/objs/completion/completion.d | 10 ---------- 42sh/objs/exec/ast_free.d | 10 ---------- 42sh/objs/exec/bad_fd.d | 10 ---------- 42sh/objs/exec/exec_ampersand.d | 10 ---------- 42sh/objs/exec/exec_and_if.d | 10 ---------- 42sh/objs/exec/exec_command.d | 10 ---------- 42sh/objs/exec/exec_default.d | 10 ---------- 42sh/objs/exec/exec_elif.d | 10 ---------- 42sh/objs/exec/exec_else.d | 10 ---------- 42sh/objs/exec/exec_if.d | 10 ---------- 42sh/objs/exec/exec_less.d | 10 ---------- 42sh/objs/exec/exec_or_if.d | 10 ---------- 42sh/objs/exec/exec_pipe.d | 10 ---------- 42sh/objs/exec/exec_redir.d | 10 ---------- 42sh/objs/exec/exec_semi.d | 10 ---------- 42sh/objs/exec/exec_until.d | 10 ---------- 42sh/objs/exec/exec_while.d | 10 ---------- 42sh/objs/exec/fd_is_valid.d | 10 ---------- 42sh/objs/exec/ft_exec.d | 10 ---------- 42sh/objs/exec/ft_findexec.d | 10 ---------- 42sh/objs/exec/launch_process.d | 10 ---------- 42sh/objs/exec/loop_del.d | 10 ---------- 42sh/objs/exec/loop_exec.d | 10 ---------- 42sh/objs/exec/process_redirect.d | 10 ---------- 42sh/objs/exec/process_reset.d | 10 ---------- 42sh/objs/exec/process_resetfds.d | 10 ---------- 42sh/objs/exec/process_setexec.d | 10 ---------- 42sh/objs/exec/process_setgroup.d | 10 ---------- 42sh/objs/exec/process_setsig.d | 10 ---------- 42sh/objs/exec/redirect_dgreat.d | 10 ---------- 42sh/objs/exec/redirect_dless.d | 10 ---------- 42sh/objs/exec/redirect_great.d | 10 ---------- 42sh/objs/exec/redirect_greatand.d | 10 ---------- 42sh/objs/exec/redirect_less.d | 10 ---------- 42sh/objs/exec/redirect_lessand.d | 10 ---------- 42sh/objs/exec/set_exitstatus.d | 10 ---------- 42sh/objs/glob/command_getoutput.d | 10 ---------- 42sh/objs/glob/dir_glob.d | 9 --------- 42sh/objs/glob/esc_print.d | 9 --------- 42sh/objs/glob/expand_bquote.d | 9 --------- 42sh/objs/glob/expand_brace.d | 9 --------- 42sh/objs/glob/expand_esc.d | 9 --------- 42sh/objs/glob/expand_var.d | 9 --------- 42sh/objs/glob/ft_strsplit_esc.d | 9 --------- 42sh/objs/glob/ft_strsplit_spe.d | 9 --------- 42sh/objs/glob/glob.d | 9 --------- 42sh/objs/glob/is_char_esc.d | 9 --------- 42sh/objs/glob/lib_perso/ft_ld_back.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_clear.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_del.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_front.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_new.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_order.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_pushback.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_pushfront.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_reverse.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_size.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_swap.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_ld_to_tab.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_memrealloc.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_strjoinf.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_strsubf.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_tabdel.d | 10 ---------- 42sh/objs/glob/lib_perso/ft_tablen.d | 6 ------ 42sh/objs/glob/match_pattern.d | 9 --------- 42sh/objs/hash_table/ft_add_hash.d | 10 ---------- 42sh/objs/hash_table/hash.d | 10 ---------- 42sh/objs/hash_table/hash_free.d | 10 ---------- 42sh/objs/hash_table/hash_str.d | 10 ---------- 42sh/objs/hash_table/is_hash.d | 10 ---------- 42sh/objs/history/add_str_in_history.d | 10 ---------- 42sh/objs/history/history.d | 10 ---------- 42sh/objs/history/history_parsing.d | 10 ---------- 42sh/objs/history/history_parsing_toolz.d | 10 ---------- 42sh/objs/history/history_parsing_toolz_2.d | 11 ----------- 42sh/objs/history/list_toolz.d | 10 ---------- 42sh/objs/history/surch_in_history.d | 10 ---------- 42sh/objs/job-control/builtin_bg.d | 10 ---------- 42sh/objs/job-control/builtin_fg.d | 10 ---------- 42sh/objs/job-control/builtin_jobs.d | 10 ---------- 42sh/objs/job-control/do_job_notification.d | 11 ----------- 42sh/objs/job-control/job_addprocess.d | 10 ---------- 42sh/objs/job-control/job_cmp_id.d | 10 ---------- 42sh/objs/job-control/job_format.d | 10 ---------- 42sh/objs/job-control/job_format_head.d | 10 ---------- 42sh/objs/job-control/job_free.d | 10 ---------- 42sh/objs/job-control/job_getprocess.d | 10 ---------- 42sh/objs/job-control/job_getrank.d | 10 ---------- 42sh/objs/job-control/job_is_completed.d | 10 ---------- 42sh/objs/job-control/job_is_stopped.d | 10 ---------- 42sh/objs/job-control/job_kill_all.d | 10 ---------- 42sh/objs/job-control/job_notify_change.d | 10 ---------- 42sh/objs/job-control/job_notify_new.d | 10 ---------- 42sh/objs/job-control/job_remove.d | 10 ---------- 42sh/objs/job-control/job_run.d | 10 ---------- 42sh/objs/job-control/job_update_id.d | 10 ---------- 42sh/objs/job-control/job_update_status.d | 10 ---------- 42sh/objs/job-control/job_wait.d | 10 ---------- 42sh/objs/job-control/mark_job_as_running.d | 11 ----------- 42sh/objs/job-control/process_cmp_pid.d | 10 ---------- 42sh/objs/job-control/process_format.d | 10 ---------- 42sh/objs/job-control/process_free.d | 10 ---------- 42sh/objs/job-control/process_mark_status.d | 11 ----------- 42sh/objs/job-control/put_job_in_background.d | 11 ----------- 42sh/objs/job-control/put_job_in_foreground.d | 11 ----------- 42sh/objs/job-control/sigchld_handler.d | 10 ---------- 42sh/objs/job-control/sigint_handler.d | 10 ---------- 42sh/objs/job-control/sigtstp_handler.d | 10 ---------- 42sh/objs/job-control/sigttin_handler.d | 10 ---------- 42sh/objs/job-control/sigttou_handler.d | 10 ---------- 42sh/objs/lexer/get_lexer_stack.d | 10 ---------- 42sh/objs/lexer/get_reserved_words.d | 10 ---------- 42sh/objs/lexer/get_state_global.d | 10 ---------- 42sh/objs/lexer/get_state_redir.d | 10 ---------- 42sh/objs/lexer/insert_newline.d | 9 --------- 42sh/objs/lexer/lexer_assignement_word.d | 10 ---------- 42sh/objs/lexer/lexer_backslash.d | 10 ---------- 42sh/objs/lexer/lexer_bquote.d | 9 --------- 42sh/objs/lexer/lexer_comment.d | 9 --------- 42sh/objs/lexer/lexer_curly_brackets.d | 10 ---------- 42sh/objs/lexer/lexer_default.d | 9 --------- 42sh/objs/lexer/lexer_delim.d | 9 --------- 42sh/objs/lexer/lexer_dless.d | 9 --------- 42sh/objs/lexer/lexer_dquote.d | 9 --------- 42sh/objs/lexer/lexer_end.d | 9 --------- 42sh/objs/lexer/lexer_great.d | 9 --------- 42sh/objs/lexer/lexer_greatand.d | 9 --------- 42sh/objs/lexer/lexer_init.d | 9 --------- 42sh/objs/lexer/lexer_less.d | 9 --------- 42sh/objs/lexer/lexer_lessand.d | 9 --------- 42sh/objs/lexer/lexer_lex.d | 9 --------- 42sh/objs/lexer/lexer_newline.d | 9 --------- 42sh/objs/lexer/lexer_number.d | 9 --------- 42sh/objs/lexer/lexer_paren.d | 9 --------- 42sh/objs/lexer/lexer_quote.d | 9 --------- 42sh/objs/lexer/lexer_sep.d | 9 --------- 42sh/objs/lexer/lexer_word.d | 9 --------- 42sh/objs/lexer/token_append.d | 9 --------- 42sh/objs/lexer/token_cmp_type.d | 9 --------- 42sh/objs/lexer/token_free.d | 9 --------- 42sh/objs/lexer/token_init.d | 9 --------- 42sh/objs/lexer/token_print.d | 9 --------- 42sh/objs/line-editing/completion.d | 10 ---------- 42sh/objs/line-editing/control_c_and_d.d | 10 ---------- 42sh/objs/line-editing/copy_cut_paste.d | 10 ---------- 42sh/objs/line-editing/ft_prompt.d | 10 ---------- 42sh/objs/line-editing/get_key.d | 10 ---------- 42sh/objs/line-editing/home_end.d | 10 ---------- 42sh/objs/line-editing/lib_line_editing/tool_line.d | 11 ----------- 42sh/objs/line-editing/lib_line_editing/tool_line_2.d | 11 ----------- 42sh/objs/line-editing/lib_line_editing/toolz.d | 11 ----------- 42sh/objs/line-editing/lib_line_editing/toolz2.d | 11 ----------- .../line-editing/lib_line_editing/toolz_parseur.d | 11 ----------- .../line-editing/lib_line_editing/toolz_termcaps.d | 11 ----------- 42sh/objs/line-editing/move_left_and_right.d | 11 ----------- 42sh/objs/line-editing/move_to_word.d | 10 ---------- 42sh/objs/line-editing/move_up_and_down.d | 10 ---------- 42sh/objs/line-editing/print_and_del.d | 10 ---------- 42sh/objs/line-editing/queue.d | 10 ---------- 42sh/objs/line-editing/readline.d | 10 ---------- 42sh/objs/main/data_exit.d | 10 ---------- 42sh/objs/main/data_init.d | 10 ---------- 42sh/objs/main/data_singleton.d | 10 ---------- 42sh/objs/main/ft_putast.d | 10 ---------- 42sh/objs/main/main.d | 10 ---------- 42sh/objs/main/shell_exit.d | 10 ---------- 42sh/objs/main/shell_get_avdata.d | 10 ---------- 42sh/objs/main/shell_get_opts.d | 10 ---------- 42sh/objs/main/shell_init.d | 10 ---------- 42sh/objs/parser/add_case.d | 9 --------- 42sh/objs/parser/add_cmd.d | 9 --------- 42sh/objs/parser/add_condition.d | 9 --------- 42sh/objs/parser/add_file.d | 9 --------- 42sh/objs/parser/add_loop.d | 9 --------- 42sh/objs/parser/add_sep.d | 9 --------- 42sh/objs/parser/add_subshell.d | 9 --------- 42sh/objs/parser/aggregate_sym.d | 9 --------- 42sh/objs/parser/build_tree.d | 9 --------- 42sh/objs/parser/error_syntax.d | 9 --------- 42sh/objs/parser/eval_sym.d | 9 --------- 42sh/objs/parser/ft_parse.d | 9 --------- 42sh/objs/parser/parser_init.d | 9 --------- 42sh/objs/parser/pop_stack.d | 9 --------- 42sh/objs/parser/produce_sym.d | 9 --------- 42sh/objs/parser/push_stack.d | 9 --------- 42sh/objs/parser/read_stack.d | 9 --------- 42sh/objs/parser/tree_wrapper.d | 9 --------- 215 files changed, 2100 deletions(-) delete mode 100644 42sh/objs/builtin/bt_read_get.d delete mode 100644 42sh/objs/builtin/bt_read_parse.d delete mode 100644 42sh/objs/builtin/bt_read_term.d delete mode 100644 42sh/objs/builtin/builtin_cd.d delete mode 100644 42sh/objs/builtin/builtin_echo.d delete mode 100644 42sh/objs/builtin/builtin_env.d delete mode 100644 42sh/objs/builtin/builtin_exit.d delete mode 100644 42sh/objs/builtin/builtin_export.d delete mode 100644 42sh/objs/builtin/builtin_hash.d delete mode 100644 42sh/objs/builtin/builtin_history.d delete mode 100644 42sh/objs/builtin/builtin_read.d delete mode 100644 42sh/objs/builtin/builtin_setenv.d delete mode 100644 42sh/objs/builtin/builtin_unset.d delete mode 100644 42sh/objs/builtin/builtin_unsetenv.d delete mode 100644 42sh/objs/builtin/is_builtin.d delete mode 100644 42sh/objs/completion/c_binary.d delete mode 100644 42sh/objs/completion/c_clear.d delete mode 100644 42sh/objs/completion/c_files.d delete mode 100644 42sh/objs/completion/c_init.d delete mode 100644 42sh/objs/completion/c_matching.d delete mode 100644 42sh/objs/completion/c_misc.d delete mode 100644 42sh/objs/completion/c_output.d delete mode 100644 42sh/objs/completion/c_parser.d delete mode 100644 42sh/objs/completion/c_pathsolver.d delete mode 100644 42sh/objs/completion/c_printer.d delete mode 100644 42sh/objs/completion/c_rematch.d delete mode 100644 42sh/objs/completion/c_sizing.d delete mode 100644 42sh/objs/completion/c_terminal.d delete mode 100644 42sh/objs/completion/completion.d delete mode 100644 42sh/objs/exec/ast_free.d delete mode 100644 42sh/objs/exec/bad_fd.d delete mode 100644 42sh/objs/exec/exec_ampersand.d delete mode 100644 42sh/objs/exec/exec_and_if.d delete mode 100644 42sh/objs/exec/exec_command.d delete mode 100644 42sh/objs/exec/exec_default.d delete mode 100644 42sh/objs/exec/exec_elif.d delete mode 100644 42sh/objs/exec/exec_else.d delete mode 100644 42sh/objs/exec/exec_if.d delete mode 100644 42sh/objs/exec/exec_less.d delete mode 100644 42sh/objs/exec/exec_or_if.d delete mode 100644 42sh/objs/exec/exec_pipe.d delete mode 100644 42sh/objs/exec/exec_redir.d delete mode 100644 42sh/objs/exec/exec_semi.d delete mode 100644 42sh/objs/exec/exec_until.d delete mode 100644 42sh/objs/exec/exec_while.d delete mode 100644 42sh/objs/exec/fd_is_valid.d delete mode 100644 42sh/objs/exec/ft_exec.d delete mode 100644 42sh/objs/exec/ft_findexec.d delete mode 100644 42sh/objs/exec/launch_process.d delete mode 100644 42sh/objs/exec/loop_del.d delete mode 100644 42sh/objs/exec/loop_exec.d delete mode 100644 42sh/objs/exec/process_redirect.d delete mode 100644 42sh/objs/exec/process_reset.d delete mode 100644 42sh/objs/exec/process_resetfds.d delete mode 100644 42sh/objs/exec/process_setexec.d delete mode 100644 42sh/objs/exec/process_setgroup.d delete mode 100644 42sh/objs/exec/process_setsig.d delete mode 100644 42sh/objs/exec/redirect_dgreat.d delete mode 100644 42sh/objs/exec/redirect_dless.d delete mode 100644 42sh/objs/exec/redirect_great.d delete mode 100644 42sh/objs/exec/redirect_greatand.d delete mode 100644 42sh/objs/exec/redirect_less.d delete mode 100644 42sh/objs/exec/redirect_lessand.d delete mode 100644 42sh/objs/exec/set_exitstatus.d delete mode 100644 42sh/objs/glob/command_getoutput.d delete mode 100644 42sh/objs/glob/dir_glob.d delete mode 100644 42sh/objs/glob/esc_print.d delete mode 100644 42sh/objs/glob/expand_bquote.d delete mode 100644 42sh/objs/glob/expand_brace.d delete mode 100644 42sh/objs/glob/expand_esc.d delete mode 100644 42sh/objs/glob/expand_var.d delete mode 100644 42sh/objs/glob/ft_strsplit_esc.d delete mode 100644 42sh/objs/glob/ft_strsplit_spe.d delete mode 100644 42sh/objs/glob/glob.d delete mode 100644 42sh/objs/glob/is_char_esc.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_back.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_clear.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_del.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_front.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_new.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_order.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushback.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_pushfront.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_reverse.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_size.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_swap.d delete mode 100644 42sh/objs/glob/lib_perso/ft_ld_to_tab.d delete mode 100644 42sh/objs/glob/lib_perso/ft_memrealloc.d delete mode 100644 42sh/objs/glob/lib_perso/ft_strjoinf.d delete mode 100644 42sh/objs/glob/lib_perso/ft_strsubf.d delete mode 100644 42sh/objs/glob/lib_perso/ft_tabdel.d delete mode 100644 42sh/objs/glob/lib_perso/ft_tablen.d delete mode 100644 42sh/objs/glob/match_pattern.d delete mode 100644 42sh/objs/hash_table/ft_add_hash.d delete mode 100644 42sh/objs/hash_table/hash.d delete mode 100644 42sh/objs/hash_table/hash_free.d delete mode 100644 42sh/objs/hash_table/hash_str.d delete mode 100644 42sh/objs/hash_table/is_hash.d delete mode 100644 42sh/objs/history/add_str_in_history.d delete mode 100644 42sh/objs/history/history.d delete mode 100644 42sh/objs/history/history_parsing.d delete mode 100644 42sh/objs/history/history_parsing_toolz.d delete mode 100644 42sh/objs/history/history_parsing_toolz_2.d delete mode 100644 42sh/objs/history/list_toolz.d delete mode 100644 42sh/objs/history/surch_in_history.d delete mode 100644 42sh/objs/job-control/builtin_bg.d delete mode 100644 42sh/objs/job-control/builtin_fg.d delete mode 100644 42sh/objs/job-control/builtin_jobs.d delete mode 100644 42sh/objs/job-control/do_job_notification.d delete mode 100644 42sh/objs/job-control/job_addprocess.d delete mode 100644 42sh/objs/job-control/job_cmp_id.d delete mode 100644 42sh/objs/job-control/job_format.d delete mode 100644 42sh/objs/job-control/job_format_head.d delete mode 100644 42sh/objs/job-control/job_free.d delete mode 100644 42sh/objs/job-control/job_getprocess.d delete mode 100644 42sh/objs/job-control/job_getrank.d delete mode 100644 42sh/objs/job-control/job_is_completed.d delete mode 100644 42sh/objs/job-control/job_is_stopped.d delete mode 100644 42sh/objs/job-control/job_kill_all.d delete mode 100644 42sh/objs/job-control/job_notify_change.d delete mode 100644 42sh/objs/job-control/job_notify_new.d delete mode 100644 42sh/objs/job-control/job_remove.d delete mode 100644 42sh/objs/job-control/job_run.d delete mode 100644 42sh/objs/job-control/job_update_id.d delete mode 100644 42sh/objs/job-control/job_update_status.d delete mode 100644 42sh/objs/job-control/job_wait.d delete mode 100644 42sh/objs/job-control/mark_job_as_running.d delete mode 100644 42sh/objs/job-control/process_cmp_pid.d delete mode 100644 42sh/objs/job-control/process_format.d delete mode 100644 42sh/objs/job-control/process_free.d delete mode 100644 42sh/objs/job-control/process_mark_status.d delete mode 100644 42sh/objs/job-control/put_job_in_background.d delete mode 100644 42sh/objs/job-control/put_job_in_foreground.d delete mode 100644 42sh/objs/job-control/sigchld_handler.d delete mode 100644 42sh/objs/job-control/sigint_handler.d delete mode 100644 42sh/objs/job-control/sigtstp_handler.d delete mode 100644 42sh/objs/job-control/sigttin_handler.d delete mode 100644 42sh/objs/job-control/sigttou_handler.d delete mode 100644 42sh/objs/lexer/get_lexer_stack.d delete mode 100644 42sh/objs/lexer/get_reserved_words.d delete mode 100644 42sh/objs/lexer/get_state_global.d delete mode 100644 42sh/objs/lexer/get_state_redir.d delete mode 100644 42sh/objs/lexer/insert_newline.d delete mode 100644 42sh/objs/lexer/lexer_assignement_word.d delete mode 100644 42sh/objs/lexer/lexer_backslash.d delete mode 100644 42sh/objs/lexer/lexer_bquote.d delete mode 100644 42sh/objs/lexer/lexer_comment.d delete mode 100644 42sh/objs/lexer/lexer_curly_brackets.d delete mode 100644 42sh/objs/lexer/lexer_default.d delete mode 100644 42sh/objs/lexer/lexer_delim.d delete mode 100644 42sh/objs/lexer/lexer_dless.d delete mode 100644 42sh/objs/lexer/lexer_dquote.d delete mode 100644 42sh/objs/lexer/lexer_end.d delete mode 100644 42sh/objs/lexer/lexer_great.d delete mode 100644 42sh/objs/lexer/lexer_greatand.d delete mode 100644 42sh/objs/lexer/lexer_init.d delete mode 100644 42sh/objs/lexer/lexer_less.d delete mode 100644 42sh/objs/lexer/lexer_lessand.d delete mode 100644 42sh/objs/lexer/lexer_lex.d delete mode 100644 42sh/objs/lexer/lexer_newline.d delete mode 100644 42sh/objs/lexer/lexer_number.d delete mode 100644 42sh/objs/lexer/lexer_paren.d delete mode 100644 42sh/objs/lexer/lexer_quote.d delete mode 100644 42sh/objs/lexer/lexer_sep.d delete mode 100644 42sh/objs/lexer/lexer_word.d delete mode 100644 42sh/objs/lexer/token_append.d delete mode 100644 42sh/objs/lexer/token_cmp_type.d delete mode 100644 42sh/objs/lexer/token_free.d delete mode 100644 42sh/objs/lexer/token_init.d delete mode 100644 42sh/objs/lexer/token_print.d delete mode 100644 42sh/objs/line-editing/completion.d delete mode 100644 42sh/objs/line-editing/control_c_and_d.d delete mode 100644 42sh/objs/line-editing/copy_cut_paste.d delete mode 100644 42sh/objs/line-editing/ft_prompt.d delete mode 100644 42sh/objs/line-editing/get_key.d delete mode 100644 42sh/objs/line-editing/home_end.d delete mode 100644 42sh/objs/line-editing/lib_line_editing/tool_line.d delete mode 100644 42sh/objs/line-editing/lib_line_editing/tool_line_2.d delete mode 100644 42sh/objs/line-editing/lib_line_editing/toolz.d delete mode 100644 42sh/objs/line-editing/lib_line_editing/toolz2.d delete mode 100644 42sh/objs/line-editing/lib_line_editing/toolz_parseur.d delete mode 100644 42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d delete mode 100644 42sh/objs/line-editing/move_left_and_right.d delete mode 100644 42sh/objs/line-editing/move_to_word.d delete mode 100644 42sh/objs/line-editing/move_up_and_down.d delete mode 100644 42sh/objs/line-editing/print_and_del.d delete mode 100644 42sh/objs/line-editing/queue.d delete mode 100644 42sh/objs/line-editing/readline.d delete mode 100644 42sh/objs/main/data_exit.d delete mode 100644 42sh/objs/main/data_init.d delete mode 100644 42sh/objs/main/data_singleton.d delete mode 100644 42sh/objs/main/ft_putast.d delete mode 100644 42sh/objs/main/main.d delete mode 100644 42sh/objs/main/shell_exit.d delete mode 100644 42sh/objs/main/shell_get_avdata.d delete mode 100644 42sh/objs/main/shell_get_opts.d delete mode 100644 42sh/objs/main/shell_init.d delete mode 100644 42sh/objs/parser/add_case.d delete mode 100644 42sh/objs/parser/add_cmd.d delete mode 100644 42sh/objs/parser/add_condition.d delete mode 100644 42sh/objs/parser/add_file.d delete mode 100644 42sh/objs/parser/add_loop.d delete mode 100644 42sh/objs/parser/add_sep.d delete mode 100644 42sh/objs/parser/add_subshell.d delete mode 100644 42sh/objs/parser/aggregate_sym.d delete mode 100644 42sh/objs/parser/build_tree.d delete mode 100644 42sh/objs/parser/error_syntax.d delete mode 100644 42sh/objs/parser/eval_sym.d delete mode 100644 42sh/objs/parser/ft_parse.d delete mode 100644 42sh/objs/parser/parser_init.d delete mode 100644 42sh/objs/parser/pop_stack.d delete mode 100644 42sh/objs/parser/produce_sym.d delete mode 100644 42sh/objs/parser/push_stack.d delete mode 100644 42sh/objs/parser/read_stack.d delete mode 100644 42sh/objs/parser/tree_wrapper.d diff --git a/42sh/objs/builtin/bt_read_get.d b/42sh/objs/builtin/bt_read_get.d deleted file mode 100644 index 3d96b8dc..00000000 --- a/42sh/objs/builtin/bt_read_get.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/bt_read_get.o: src/builtin/bt_read_get.c \ - includes/builtin_read.h includes/types.h includes/builtin.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h \ - includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_parse.d b/42sh/objs/builtin/bt_read_parse.d deleted file mode 100644 index 89009e04..00000000 --- a/42sh/objs/builtin/bt_read_parse.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/bt_read_parse.o: src/builtin/bt_read_parse.c \ - includes/builtin_read.h includes/types.h includes/builtin.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h \ - includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_term.d b/42sh/objs/builtin/bt_read_term.d deleted file mode 100644 index 928d1921..00000000 --- a/42sh/objs/builtin/bt_read_term.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/bt_read_term.o: src/builtin/bt_read_term.c \ - includes/builtin.h includes/types.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_cd.d b/42sh/objs/builtin/builtin_cd.d deleted file mode 100644 index 4d1c59c9..00000000 --- a/42sh/objs/builtin/builtin_cd.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/builtin/builtin_cd.o: src/builtin/builtin_cd.c includes/builtin.h \ - includes/types.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/builtin_read.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_echo.d b/42sh/objs/builtin/builtin_echo.d deleted file mode 100644 index 48a2ec11..00000000 --- a/42sh/objs/builtin/builtin_echo.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_echo.o: src/builtin/builtin_echo.c \ - includes/builtin.h includes/types.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_env.d b/42sh/objs/builtin/builtin_env.d deleted file mode 100644 index 99743bb9..00000000 --- a/42sh/objs/builtin/builtin_env.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_env.o: src/builtin/builtin_env.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_exit.d b/42sh/objs/builtin/builtin_exit.d deleted file mode 100644 index 6f13cb81..00000000 --- a/42sh/objs/builtin/builtin_exit.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_exit.o: src/builtin/builtin_exit.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_export.d b/42sh/objs/builtin/builtin_export.d deleted file mode 100644 index 5df846e8..00000000 --- a/42sh/objs/builtin/builtin_export.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_export.o: src/builtin/builtin_export.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_hash.d b/42sh/objs/builtin/builtin_hash.d deleted file mode 100644 index f4eb8938..00000000 --- a/42sh/objs/builtin/builtin_hash.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_hash.o: src/builtin/builtin_hash.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_history.d b/42sh/objs/builtin/builtin_history.d deleted file mode 100644 index a60a1c6e..00000000 --- a/42sh/objs/builtin/builtin_history.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_history.o: src/builtin/builtin_history.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_read.d b/42sh/objs/builtin/builtin_read.d deleted file mode 100644 index d5785763..00000000 --- a/42sh/objs/builtin/builtin_read.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_read.o: src/builtin/builtin_read.c \ - includes/builtin_read.h includes/types.h includes/builtin.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h \ - includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_setenv.d b/42sh/objs/builtin/builtin_setenv.d deleted file mode 100644 index 502946a9..00000000 --- a/42sh/objs/builtin/builtin_setenv.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_setenv.o: src/builtin/builtin_setenv.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_unset.d b/42sh/objs/builtin/builtin_unset.d deleted file mode 100644 index d0d88852..00000000 --- a/42sh/objs/builtin/builtin_unset.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_unset.o: src/builtin/builtin_unset.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_unsetenv.d b/42sh/objs/builtin/builtin_unsetenv.d deleted file mode 100644 index 25dd7671..00000000 --- a/42sh/objs/builtin/builtin_unsetenv.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_unsetenv.o: src/builtin/builtin_unsetenv.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d deleted file mode 100644 index 40071c79..00000000 --- a/42sh/objs/builtin/is_builtin.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_binary.d b/42sh/objs/completion/c_binary.d deleted file mode 100644 index 017f6e2a..00000000 --- a/42sh/objs/completion/c_binary.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_binary.o: src/completion/c_binary.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_clear.d b/42sh/objs/completion/c_clear.d deleted file mode 100644 index 51457990..00000000 --- a/42sh/objs/completion/c_clear.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_clear.o: src/completion/c_clear.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_files.d b/42sh/objs/completion/c_files.d deleted file mode 100644 index d611d285..00000000 --- a/42sh/objs/completion/c_files.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_files.o: src/completion/c_files.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_init.d b/42sh/objs/completion/c_init.d deleted file mode 100644 index 42812396..00000000 --- a/42sh/objs/completion/c_init.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_init.o: src/completion/c_init.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_matching.d b/42sh/objs/completion/c_matching.d deleted file mode 100644 index 265147a1..00000000 --- a/42sh/objs/completion/c_matching.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_matching.o: src/completion/c_matching.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_misc.d b/42sh/objs/completion/c_misc.d deleted file mode 100644 index 3dde2e26..00000000 --- a/42sh/objs/completion/c_misc.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_misc.o: src/completion/c_misc.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_output.d b/42sh/objs/completion/c_output.d deleted file mode 100644 index c58c0475..00000000 --- a/42sh/objs/completion/c_output.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_output.o: src/completion/c_output.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_parser.d b/42sh/objs/completion/c_parser.d deleted file mode 100644 index 20e78c29..00000000 --- a/42sh/objs/completion/c_parser.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_parser.o: src/completion/c_parser.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_pathsolver.d b/42sh/objs/completion/c_pathsolver.d deleted file mode 100644 index a43db912..00000000 --- a/42sh/objs/completion/c_pathsolver.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_pathsolver.o: src/completion/c_pathsolver.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_printer.d b/42sh/objs/completion/c_printer.d deleted file mode 100644 index f5c0111d..00000000 --- a/42sh/objs/completion/c_printer.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_printer.o: src/completion/c_printer.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_rematch.d b/42sh/objs/completion/c_rematch.d deleted file mode 100644 index 4402b27d..00000000 --- a/42sh/objs/completion/c_rematch.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_rematch.o: src/completion/c_rematch.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_sizing.d b/42sh/objs/completion/c_sizing.d deleted file mode 100644 index 6d931b50..00000000 --- a/42sh/objs/completion/c_sizing.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_sizing.o: src/completion/c_sizing.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_terminal.d b/42sh/objs/completion/c_terminal.d deleted file mode 100644 index e2fc7d30..00000000 --- a/42sh/objs/completion/c_terminal.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_terminal.o: src/completion/c_terminal.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/completion.d b/42sh/objs/completion/completion.d deleted file mode 100644 index 2e7aca1d..00000000 --- a/42sh/objs/completion/completion.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/completion.o: src/completion/completion.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d deleted file mode 100644 index a938bba4..00000000 --- a/42sh/objs/exec/ast_free.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/bad_fd.d b/42sh/objs/exec/bad_fd.d deleted file mode 100644 index 10582e42..00000000 --- a/42sh/objs/exec/bad_fd.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/bad_fd.o: src/exec/bad_fd.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d deleted file mode 100644 index a099a3a2..00000000 --- a/42sh/objs/exec/exec_ampersand.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d deleted file mode 100644 index e94f2cac..00000000 --- a/42sh/objs/exec/exec_and_if.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d deleted file mode 100644 index d0f0225c..00000000 --- a/42sh/objs/exec/exec_command.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d deleted file mode 100644 index e2f12d17..00000000 --- a/42sh/objs/exec/exec_default.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d deleted file mode 100644 index 31a808b1..00000000 --- a/42sh/objs/exec/exec_elif.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d deleted file mode 100644 index 7fbf18af..00000000 --- a/42sh/objs/exec/exec_else.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d deleted file mode 100644 index bfc49041..00000000 --- a/42sh/objs/exec/exec_if.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_less.d b/42sh/objs/exec/exec_less.d deleted file mode 100644 index 80163f71..00000000 --- a/42sh/objs/exec/exec_less.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_less.o: src/exec/exec_less.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d deleted file mode 100644 index e47e7589..00000000 --- a/42sh/objs/exec/exec_or_if.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d deleted file mode 100644 index f0e75e4a..00000000 --- a/42sh/objs/exec/exec_pipe.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_redir.d b/42sh/objs/exec/exec_redir.d deleted file mode 100644 index e38c21e1..00000000 --- a/42sh/objs/exec/exec_redir.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_redir.o: src/exec/exec_redir.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d deleted file mode 100644 index a4e14789..00000000 --- a/42sh/objs/exec/exec_semi.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d deleted file mode 100644 index 892f8a85..00000000 --- a/42sh/objs/exec/exec_until.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_while.d b/42sh/objs/exec/exec_while.d deleted file mode 100644 index e2156a69..00000000 --- a/42sh/objs/exec/exec_while.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_while.o: src/exec/exec_while.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/fd_is_valid.d b/42sh/objs/exec/fd_is_valid.d deleted file mode 100644 index 82af7a1d..00000000 --- a/42sh/objs/exec/fd_is_valid.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/fd_is_valid.o: src/exec/fd_is_valid.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/ft_exec.d b/42sh/objs/exec/ft_exec.d deleted file mode 100644 index 4d324b14..00000000 --- a/42sh/objs/exec/ft_exec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/ft_exec.o: src/exec/ft_exec.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/ft_findexec.d b/42sh/objs/exec/ft_findexec.d deleted file mode 100644 index bdef00c4..00000000 --- a/42sh/objs/exec/ft_findexec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/ft_findexec.o: src/exec/ft_findexec.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/launch_process.d b/42sh/objs/exec/launch_process.d deleted file mode 100644 index f85c0e5d..00000000 --- a/42sh/objs/exec/launch_process.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/launch_process.o: src/exec/launch_process.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/loop_del.d b/42sh/objs/exec/loop_del.d deleted file mode 100644 index 96008067..00000000 --- a/42sh/objs/exec/loop_del.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/loop_del.o: src/exec/loop_del.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/loop_exec.d b/42sh/objs/exec/loop_exec.d deleted file mode 100644 index 289f40e6..00000000 --- a/42sh/objs/exec/loop_exec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/loop_exec.o: src/exec/loop_exec.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_redirect.d b/42sh/objs/exec/process_redirect.d deleted file mode 100644 index 51148225..00000000 --- a/42sh/objs/exec/process_redirect.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_redirect.o: src/exec/process_redirect.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_reset.d b/42sh/objs/exec/process_reset.d deleted file mode 100644 index 66d081e7..00000000 --- a/42sh/objs/exec/process_reset.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_reset.o: src/exec/process_reset.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_resetfds.d b/42sh/objs/exec/process_resetfds.d deleted file mode 100644 index 2ee6d106..00000000 --- a/42sh/objs/exec/process_resetfds.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_resetfds.o: src/exec/process_resetfds.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_setexec.d b/42sh/objs/exec/process_setexec.d deleted file mode 100644 index a0440320..00000000 --- a/42sh/objs/exec/process_setexec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_setexec.o: src/exec/process_setexec.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_setgroup.d b/42sh/objs/exec/process_setgroup.d deleted file mode 100644 index a1b5f93e..00000000 --- a/42sh/objs/exec/process_setgroup.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_setgroup.o: src/exec/process_setgroup.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_setsig.d b/42sh/objs/exec/process_setsig.d deleted file mode 100644 index 79adabd6..00000000 --- a/42sh/objs/exec/process_setsig.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_setsig.o: src/exec/process_setsig.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/redirect_dgreat.d b/42sh/objs/exec/redirect_dgreat.d deleted file mode 100644 index 233d1240..00000000 --- a/42sh/objs/exec/redirect_dgreat.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/redirect_dgreat.o: src/exec/redirect_dgreat.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/redirect_dless.d b/42sh/objs/exec/redirect_dless.d deleted file mode 100644 index e982e0a5..00000000 --- a/42sh/objs/exec/redirect_dless.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/redirect_dless.o: src/exec/redirect_dless.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/redirect_great.d b/42sh/objs/exec/redirect_great.d deleted file mode 100644 index b1d05efd..00000000 --- a/42sh/objs/exec/redirect_great.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/redirect_great.o: src/exec/redirect_great.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/redirect_greatand.d b/42sh/objs/exec/redirect_greatand.d deleted file mode 100644 index b49fe193..00000000 --- a/42sh/objs/exec/redirect_greatand.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/redirect_greatand.o: src/exec/redirect_greatand.c \ - includes/exec.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/redirect_less.d b/42sh/objs/exec/redirect_less.d deleted file mode 100644 index 89e46d58..00000000 --- a/42sh/objs/exec/redirect_less.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/redirect_less.o: src/exec/redirect_less.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/redirect_lessand.d b/42sh/objs/exec/redirect_lessand.d deleted file mode 100644 index 8f964246..00000000 --- a/42sh/objs/exec/redirect_lessand.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/redirect_lessand.o: src/exec/redirect_lessand.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/set_exitstatus.d b/42sh/objs/exec/set_exitstatus.d deleted file mode 100644 index f457b366..00000000 --- a/42sh/objs/exec/set_exitstatus.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/set_exitstatus.o: src/exec/set_exitstatus.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/command_getoutput.d b/42sh/objs/glob/command_getoutput.d deleted file mode 100644 index 9d35c410..00000000 --- a/42sh/objs/glob/command_getoutput.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/command_getoutput.o: src/glob/command_getoutput.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/dir_glob.d b/42sh/objs/glob/dir_glob.d deleted file mode 100644 index 91f9d5d3..00000000 --- a/42sh/objs/glob/dir_glob.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/dir_glob.o: src/glob/dir_glob.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/esc_print.d b/42sh/objs/glob/esc_print.d deleted file mode 100644 index a10646b9..00000000 --- a/42sh/objs/glob/esc_print.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/esc_print.o: src/glob/esc_print.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_bquote.d b/42sh/objs/glob/expand_bquote.d deleted file mode 100644 index dcf407fc..00000000 --- a/42sh/objs/glob/expand_bquote.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/expand_bquote.o: src/glob/expand_bquote.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_brace.d b/42sh/objs/glob/expand_brace.d deleted file mode 100644 index 33dcb5e8..00000000 --- a/42sh/objs/glob/expand_brace.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/expand_brace.o: src/glob/expand_brace.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_esc.d b/42sh/objs/glob/expand_esc.d deleted file mode 100644 index 51558b19..00000000 --- a/42sh/objs/glob/expand_esc.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/expand_esc.o: src/glob/expand_esc.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/expand_var.d b/42sh/objs/glob/expand_var.d deleted file mode 100644 index d3f356b0..00000000 --- a/42sh/objs/glob/expand_var.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/expand_var.o: src/glob/expand_var.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/ft_strsplit_esc.d b/42sh/objs/glob/ft_strsplit_esc.d deleted file mode 100644 index 87445b4a..00000000 --- a/42sh/objs/glob/ft_strsplit_esc.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/ft_strsplit_esc.o: src/glob/ft_strsplit_esc.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/ft_strsplit_spe.d b/42sh/objs/glob/ft_strsplit_spe.d deleted file mode 100644 index efec76f6..00000000 --- a/42sh/objs/glob/ft_strsplit_spe.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/ft_strsplit_spe.o: src/glob/ft_strsplit_spe.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/glob.d b/42sh/objs/glob/glob.d deleted file mode 100644 index 97d1827b..00000000 --- a/42sh/objs/glob/glob.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/glob.o: src/glob/glob.c includes/glob.h includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/is_char_esc.d b/42sh/objs/glob/is_char_esc.d deleted file mode 100644 index dde23a1e..00000000 --- a/42sh/objs/glob/is_char_esc.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/is_char_esc.o: src/glob/is_char_esc.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_back.d b/42sh/objs/glob/lib_perso/ft_ld_back.d deleted file mode 100644 index afc57d2c..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_back.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_back.o: src/glob/lib_perso/ft_ld_back.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_clear.d b/42sh/objs/glob/lib_perso/ft_ld_clear.d deleted file mode 100644 index 6855ddd6..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_clear.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_clear.o: src/glob/lib_perso/ft_ld_clear.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_del.d b/42sh/objs/glob/lib_perso/ft_ld_del.d deleted file mode 100644 index 060ccc53..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_del.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_del.o: src/glob/lib_perso/ft_ld_del.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_front.d b/42sh/objs/glob/lib_perso/ft_ld_front.d deleted file mode 100644 index 13574f83..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_front.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_front.o: src/glob/lib_perso/ft_ld_front.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_new.d b/42sh/objs/glob/lib_perso/ft_ld_new.d deleted file mode 100644 index b7db9543..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_new.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_new.o: src/glob/lib_perso/ft_ld_new.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_order.d b/42sh/objs/glob/lib_perso/ft_ld_order.d deleted file mode 100644 index 8b6ffe0c..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_order.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_order.o: src/glob/lib_perso/ft_ld_order.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushback.d b/42sh/objs/glob/lib_perso/ft_ld_pushback.d deleted file mode 100644 index de57e36f..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_pushback.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_pushback.o: src/glob/lib_perso/ft_ld_pushback.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_pushfront.d b/42sh/objs/glob/lib_perso/ft_ld_pushfront.d deleted file mode 100644 index 4bb25bc3..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_pushfront.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_pushfront.o: \ - src/glob/lib_perso/ft_ld_pushfront.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_reverse.d b/42sh/objs/glob/lib_perso/ft_ld_reverse.d deleted file mode 100644 index 2cbfe7ff..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_reverse.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_reverse.o: src/glob/lib_perso/ft_ld_reverse.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_size.d b/42sh/objs/glob/lib_perso/ft_ld_size.d deleted file mode 100644 index e79ba8c1..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_size.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_size.o: src/glob/lib_perso/ft_ld_size.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_swap.d b/42sh/objs/glob/lib_perso/ft_ld_swap.d deleted file mode 100644 index 952177a3..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_swap.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_swap.o: src/glob/lib_perso/ft_ld_swap.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_ld_to_tab.d b/42sh/objs/glob/lib_perso/ft_ld_to_tab.d deleted file mode 100644 index 661420b6..00000000 --- a/42sh/objs/glob/lib_perso/ft_ld_to_tab.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_ld_to_tab.o: src/glob/lib_perso/ft_ld_to_tab.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_memrealloc.d b/42sh/objs/glob/lib_perso/ft_memrealloc.d deleted file mode 100644 index 2a7fd8eb..00000000 --- a/42sh/objs/glob/lib_perso/ft_memrealloc.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_memrealloc.o: src/glob/lib_perso/ft_memrealloc.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_strjoinf.d b/42sh/objs/glob/lib_perso/ft_strjoinf.d deleted file mode 100644 index 43e9fbf9..00000000 --- a/42sh/objs/glob/lib_perso/ft_strjoinf.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_strjoinf.o: src/glob/lib_perso/ft_strjoinf.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_strsubf.d b/42sh/objs/glob/lib_perso/ft_strsubf.d deleted file mode 100644 index 1e156f0b..00000000 --- a/42sh/objs/glob/lib_perso/ft_strsubf.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_strsubf.o: src/glob/lib_perso/ft_strsubf.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_tabdel.d b/42sh/objs/glob/lib_perso/ft_tabdel.d deleted file mode 100644 index ff2f5e53..00000000 --- a/42sh/objs/glob/lib_perso/ft_tabdel.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/glob/lib_perso/ft_tabdel.o: src/glob/lib_perso/ft_tabdel.c \ - includes/glob.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/glob/lib_perso/ft_tablen.d b/42sh/objs/glob/lib_perso/ft_tablen.d deleted file mode 100644 index 7ea8a517..00000000 --- a/42sh/objs/glob/lib_perso/ft_tablen.d +++ /dev/null @@ -1,6 +0,0 @@ -objs/glob/lib_perso/ft_tablen.o: src/glob/lib_perso/ft_tablen.c \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h diff --git a/42sh/objs/glob/match_pattern.d b/42sh/objs/glob/match_pattern.d deleted file mode 100644 index e194a52a..00000000 --- a/42sh/objs/glob/match_pattern.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/glob/match_pattern.o: src/glob/match_pattern.c includes/glob.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/completion.h includes/hash.h diff --git a/42sh/objs/hash_table/ft_add_hash.d b/42sh/objs/hash_table/ft_add_hash.d deleted file mode 100644 index bf1a58cb..00000000 --- a/42sh/objs/hash_table/ft_add_hash.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/hash_table/ft_add_hash.o: src/hash_table/ft_add_hash.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/hash_table/hash.d b/42sh/objs/hash_table/hash.d deleted file mode 100644 index 800ce022..00000000 --- a/42sh/objs/hash_table/hash.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/hash_table/hash.o: src/hash_table/hash.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/hash_table/hash_free.d b/42sh/objs/hash_table/hash_free.d deleted file mode 100644 index 63be677a..00000000 --- a/42sh/objs/hash_table/hash_free.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/hash_table/hash_free.o: src/hash_table/hash_free.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/hash_table/hash_str.d b/42sh/objs/hash_table/hash_str.d deleted file mode 100644 index a76416ca..00000000 --- a/42sh/objs/hash_table/hash_str.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/hash_table/hash_str.o: src/hash_table/hash_str.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/hash_table/is_hash.d b/42sh/objs/hash_table/is_hash.d deleted file mode 100644 index 6e962431..00000000 --- a/42sh/objs/hash_table/is_hash.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/hash_table/is_hash.o: src/hash_table/is_hash.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/add_str_in_history.d b/42sh/objs/history/add_str_in_history.d deleted file mode 100644 index a1d8a7eb..00000000 --- a/42sh/objs/history/add_str_in_history.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/history/add_str_in_history.o: src/history/add_str_in_history.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/history.d b/42sh/objs/history/history.d deleted file mode 100644 index 57982de7..00000000 --- a/42sh/objs/history/history.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/history/history.o: src/history/history.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/history_parsing.d b/42sh/objs/history/history_parsing.d deleted file mode 100644 index 85445519..00000000 --- a/42sh/objs/history/history_parsing.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/history/history_parsing.o: src/history/history_parsing.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/history_parsing_toolz.d b/42sh/objs/history/history_parsing_toolz.d deleted file mode 100644 index 0fe8517d..00000000 --- a/42sh/objs/history/history_parsing_toolz.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/history/history_parsing_toolz.o: src/history/history_parsing_toolz.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/history_parsing_toolz_2.d b/42sh/objs/history/history_parsing_toolz_2.d deleted file mode 100644 index f17d84c5..00000000 --- a/42sh/objs/history/history_parsing_toolz_2.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/history/history_parsing_toolz_2.o: \ - src/history/history_parsing_toolz_2.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/list_toolz.d b/42sh/objs/history/list_toolz.d deleted file mode 100644 index c96548ad..00000000 --- a/42sh/objs/history/list_toolz.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/history/list_toolz.o: src/history/list_toolz.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/history/surch_in_history.d b/42sh/objs/history/surch_in_history.d deleted file mode 100644 index 6a389c3a..00000000 --- a/42sh/objs/history/surch_in_history.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/history/surch_in_history.o: src/history/surch_in_history.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/builtin_bg.d b/42sh/objs/job-control/builtin_bg.d deleted file mode 100644 index 45276f5f..00000000 --- a/42sh/objs/job-control/builtin_bg.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/builtin_bg.o: src/job-control/builtin_bg.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/builtin_fg.d b/42sh/objs/job-control/builtin_fg.d deleted file mode 100644 index 4c70f313..00000000 --- a/42sh/objs/job-control/builtin_fg.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/builtin_fg.o: src/job-control/builtin_fg.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/builtin_jobs.d b/42sh/objs/job-control/builtin_jobs.d deleted file mode 100644 index 24978381..00000000 --- a/42sh/objs/job-control/builtin_jobs.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/builtin_jobs.o: src/job-control/builtin_jobs.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/do_job_notification.d b/42sh/objs/job-control/do_job_notification.d deleted file mode 100644 index fbcbc8ed..00000000 --- a/42sh/objs/job-control/do_job_notification.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/job-control/do_job_notification.o: \ - src/job-control/do_job_notification.c includes/job_control.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_addprocess.d b/42sh/objs/job-control/job_addprocess.d deleted file mode 100644 index 73a11c51..00000000 --- a/42sh/objs/job-control/job_addprocess.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_addprocess.o: src/job-control/job_addprocess.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_cmp_id.d b/42sh/objs/job-control/job_cmp_id.d deleted file mode 100644 index 16f0b3b0..00000000 --- a/42sh/objs/job-control/job_cmp_id.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_cmp_id.o: src/job-control/job_cmp_id.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_format.d b/42sh/objs/job-control/job_format.d deleted file mode 100644 index 020f7849..00000000 --- a/42sh/objs/job-control/job_format.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_format.o: src/job-control/job_format.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_format_head.d b/42sh/objs/job-control/job_format_head.d deleted file mode 100644 index d9c43887..00000000 --- a/42sh/objs/job-control/job_format_head.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_format_head.o: src/job-control/job_format_head.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_free.d b/42sh/objs/job-control/job_free.d deleted file mode 100644 index b38c8f5f..00000000 --- a/42sh/objs/job-control/job_free.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_free.o: src/job-control/job_free.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_getprocess.d b/42sh/objs/job-control/job_getprocess.d deleted file mode 100644 index 94d6b64b..00000000 --- a/42sh/objs/job-control/job_getprocess.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_getprocess.o: src/job-control/job_getprocess.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_getrank.d b/42sh/objs/job-control/job_getrank.d deleted file mode 100644 index 6a17e542..00000000 --- a/42sh/objs/job-control/job_getrank.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_getrank.o: src/job-control/job_getrank.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_is_completed.d b/42sh/objs/job-control/job_is_completed.d deleted file mode 100644 index 01acb475..00000000 --- a/42sh/objs/job-control/job_is_completed.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_is_completed.o: src/job-control/job_is_completed.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_is_stopped.d b/42sh/objs/job-control/job_is_stopped.d deleted file mode 100644 index 99ff0d4f..00000000 --- a/42sh/objs/job-control/job_is_stopped.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_is_stopped.o: src/job-control/job_is_stopped.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_kill_all.d b/42sh/objs/job-control/job_kill_all.d deleted file mode 100644 index 3fcaf708..00000000 --- a/42sh/objs/job-control/job_kill_all.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_kill_all.o: src/job-control/job_kill_all.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_notify_change.d b/42sh/objs/job-control/job_notify_change.d deleted file mode 100644 index 6cf53473..00000000 --- a/42sh/objs/job-control/job_notify_change.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_notify_change.o: src/job-control/job_notify_change.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_notify_new.d b/42sh/objs/job-control/job_notify_new.d deleted file mode 100644 index 53900c61..00000000 --- a/42sh/objs/job-control/job_notify_new.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_notify_new.o: src/job-control/job_notify_new.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_remove.d b/42sh/objs/job-control/job_remove.d deleted file mode 100644 index 545d61d8..00000000 --- a/42sh/objs/job-control/job_remove.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_remove.o: src/job-control/job_remove.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_run.d b/42sh/objs/job-control/job_run.d deleted file mode 100644 index bd23bf28..00000000 --- a/42sh/objs/job-control/job_run.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_run.o: src/job-control/job_run.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_update_id.d b/42sh/objs/job-control/job_update_id.d deleted file mode 100644 index a542008e..00000000 --- a/42sh/objs/job-control/job_update_id.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_update_id.o: src/job-control/job_update_id.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_update_status.d b/42sh/objs/job-control/job_update_status.d deleted file mode 100644 index d557ad2d..00000000 --- a/42sh/objs/job-control/job_update_status.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_update_status.o: src/job-control/job_update_status.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/job_wait.d b/42sh/objs/job-control/job_wait.d deleted file mode 100644 index 11f06005..00000000 --- a/42sh/objs/job-control/job_wait.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/job_wait.o: src/job-control/job_wait.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/mark_job_as_running.d b/42sh/objs/job-control/mark_job_as_running.d deleted file mode 100644 index 58089f19..00000000 --- a/42sh/objs/job-control/mark_job_as_running.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/job-control/mark_job_as_running.o: \ - src/job-control/mark_job_as_running.c includes/job_control.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/process_cmp_pid.d b/42sh/objs/job-control/process_cmp_pid.d deleted file mode 100644 index 35886dc5..00000000 --- a/42sh/objs/job-control/process_cmp_pid.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/process_cmp_pid.o: src/job-control/process_cmp_pid.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/process_format.d b/42sh/objs/job-control/process_format.d deleted file mode 100644 index 7bbf0450..00000000 --- a/42sh/objs/job-control/process_format.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/process_format.o: src/job-control/process_format.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/process_free.d b/42sh/objs/job-control/process_free.d deleted file mode 100644 index 07209bee..00000000 --- a/42sh/objs/job-control/process_free.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/process_free.o: src/job-control/process_free.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/process_mark_status.d b/42sh/objs/job-control/process_mark_status.d deleted file mode 100644 index c5fb61ed..00000000 --- a/42sh/objs/job-control/process_mark_status.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/job-control/process_mark_status.o: \ - src/job-control/process_mark_status.c includes/job_control.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/put_job_in_background.d b/42sh/objs/job-control/put_job_in_background.d deleted file mode 100644 index cfa0938a..00000000 --- a/42sh/objs/job-control/put_job_in_background.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/job-control/put_job_in_background.o: \ - src/job-control/put_job_in_background.c includes/job_control.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/put_job_in_foreground.d b/42sh/objs/job-control/put_job_in_foreground.d deleted file mode 100644 index b0322e72..00000000 --- a/42sh/objs/job-control/put_job_in_foreground.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/job-control/put_job_in_foreground.o: \ - src/job-control/put_job_in_foreground.c includes/job_control.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/sigchld_handler.d b/42sh/objs/job-control/sigchld_handler.d deleted file mode 100644 index b6e2b5c3..00000000 --- a/42sh/objs/job-control/sigchld_handler.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/sigchld_handler.o: src/job-control/sigchld_handler.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/sigint_handler.d b/42sh/objs/job-control/sigint_handler.d deleted file mode 100644 index 42ddb498..00000000 --- a/42sh/objs/job-control/sigint_handler.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/sigint_handler.o: src/job-control/sigint_handler.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/sigtstp_handler.d b/42sh/objs/job-control/sigtstp_handler.d deleted file mode 100644 index 8eac50f2..00000000 --- a/42sh/objs/job-control/sigtstp_handler.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/sigtstp_handler.o: src/job-control/sigtstp_handler.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/sigttin_handler.d b/42sh/objs/job-control/sigttin_handler.d deleted file mode 100644 index ac11d282..00000000 --- a/42sh/objs/job-control/sigttin_handler.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/sigttin_handler.o: src/job-control/sigttin_handler.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/job-control/sigttou_handler.d b/42sh/objs/job-control/sigttou_handler.d deleted file mode 100644 index acfd89be..00000000 --- a/42sh/objs/job-control/sigttou_handler.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/job-control/sigttou_handler.o: src/job-control/sigttou_handler.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/get_lexer_stack.d b/42sh/objs/lexer/get_lexer_stack.d deleted file mode 100644 index 33c4900b..00000000 --- a/42sh/objs/lexer/get_lexer_stack.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/get_lexer_stack.o: src/lexer/get_lexer_stack.c \ - includes/lexer.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/get_reserved_words.d b/42sh/objs/lexer/get_reserved_words.d deleted file mode 100644 index bbfb8e21..00000000 --- a/42sh/objs/lexer/get_reserved_words.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/get_reserved_words.o: src/lexer/get_reserved_words.c \ - includes/lexer.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/get_state_global.d b/42sh/objs/lexer/get_state_global.d deleted file mode 100644 index 44ee3528..00000000 --- a/42sh/objs/lexer/get_state_global.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/get_state_global.o: src/lexer/get_state_global.c \ - includes/lexer.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/get_state_redir.d b/42sh/objs/lexer/get_state_redir.d deleted file mode 100644 index 732027db..00000000 --- a/42sh/objs/lexer/get_state_redir.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/get_state_redir.o: src/lexer/get_state_redir.c \ - includes/lexer.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/insert_newline.d b/42sh/objs/lexer/insert_newline.d deleted file mode 100644 index 821da266..00000000 --- a/42sh/objs/lexer/insert_newline.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/insert_newline.o: src/lexer/insert_newline.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_assignement_word.d b/42sh/objs/lexer/lexer_assignement_word.d deleted file mode 100644 index fdecce12..00000000 --- a/42sh/objs/lexer/lexer_assignement_word.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/lexer_assignement_word.o: src/lexer/lexer_assignement_word.c \ - includes/lexer.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/lexer_backslash.d b/42sh/objs/lexer/lexer_backslash.d deleted file mode 100644 index ed8c3998..00000000 --- a/42sh/objs/lexer/lexer_backslash.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/lexer_backslash.o: src/lexer/lexer_backslash.c \ - includes/lexer.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/lexer_bquote.d b/42sh/objs/lexer/lexer_bquote.d deleted file mode 100644 index 43ee354f..00000000 --- a/42sh/objs/lexer/lexer_bquote.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_bquote.o: src/lexer/lexer_bquote.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_comment.d b/42sh/objs/lexer/lexer_comment.d deleted file mode 100644 index 22fe129f..00000000 --- a/42sh/objs/lexer/lexer_comment.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_comment.o: src/lexer/lexer_comment.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_curly_brackets.d b/42sh/objs/lexer/lexer_curly_brackets.d deleted file mode 100644 index b9f9a7d3..00000000 --- a/42sh/objs/lexer/lexer_curly_brackets.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/lexer/lexer_curly_brackets.o: src/lexer/lexer_curly_brackets.c \ - includes/parser.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/lexer/lexer_default.d b/42sh/objs/lexer/lexer_default.d deleted file mode 100644 index 585fa28d..00000000 --- a/42sh/objs/lexer/lexer_default.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_default.o: src/lexer/lexer_default.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_delim.d b/42sh/objs/lexer/lexer_delim.d deleted file mode 100644 index bb9c7e94..00000000 --- a/42sh/objs/lexer/lexer_delim.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_delim.o: src/lexer/lexer_delim.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_dless.d b/42sh/objs/lexer/lexer_dless.d deleted file mode 100644 index dcdb441b..00000000 --- a/42sh/objs/lexer/lexer_dless.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_dless.o: src/lexer/lexer_dless.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_dquote.d b/42sh/objs/lexer/lexer_dquote.d deleted file mode 100644 index 01838b82..00000000 --- a/42sh/objs/lexer/lexer_dquote.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_dquote.o: src/lexer/lexer_dquote.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_end.d b/42sh/objs/lexer/lexer_end.d deleted file mode 100644 index 868b431c..00000000 --- a/42sh/objs/lexer/lexer_end.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_end.o: src/lexer/lexer_end.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_great.d b/42sh/objs/lexer/lexer_great.d deleted file mode 100644 index a2180b64..00000000 --- a/42sh/objs/lexer/lexer_great.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_great.o: src/lexer/lexer_great.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_greatand.d b/42sh/objs/lexer/lexer_greatand.d deleted file mode 100644 index 69c8375e..00000000 --- a/42sh/objs/lexer/lexer_greatand.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_greatand.o: src/lexer/lexer_greatand.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_init.d b/42sh/objs/lexer/lexer_init.d deleted file mode 100644 index 4ee3c05b..00000000 --- a/42sh/objs/lexer/lexer_init.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_init.o: src/lexer/lexer_init.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_less.d b/42sh/objs/lexer/lexer_less.d deleted file mode 100644 index ebccd85b..00000000 --- a/42sh/objs/lexer/lexer_less.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_less.o: src/lexer/lexer_less.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_lessand.d b/42sh/objs/lexer/lexer_lessand.d deleted file mode 100644 index e3358721..00000000 --- a/42sh/objs/lexer/lexer_lessand.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_lessand.o: src/lexer/lexer_lessand.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_lex.d b/42sh/objs/lexer/lexer_lex.d deleted file mode 100644 index ad9b5d4e..00000000 --- a/42sh/objs/lexer/lexer_lex.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_lex.o: src/lexer/lexer_lex.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_newline.d b/42sh/objs/lexer/lexer_newline.d deleted file mode 100644 index d11e70b2..00000000 --- a/42sh/objs/lexer/lexer_newline.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_newline.o: src/lexer/lexer_newline.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_number.d b/42sh/objs/lexer/lexer_number.d deleted file mode 100644 index e49baefb..00000000 --- a/42sh/objs/lexer/lexer_number.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_number.o: src/lexer/lexer_number.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_paren.d b/42sh/objs/lexer/lexer_paren.d deleted file mode 100644 index d0f86ab7..00000000 --- a/42sh/objs/lexer/lexer_paren.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_paren.o: src/lexer/lexer_paren.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_quote.d b/42sh/objs/lexer/lexer_quote.d deleted file mode 100644 index bb8ed097..00000000 --- a/42sh/objs/lexer/lexer_quote.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_quote.o: src/lexer/lexer_quote.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_sep.d b/42sh/objs/lexer/lexer_sep.d deleted file mode 100644 index 060a4b6f..00000000 --- a/42sh/objs/lexer/lexer_sep.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_sep.o: src/lexer/lexer_sep.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/lexer_word.d b/42sh/objs/lexer/lexer_word.d deleted file mode 100644 index 393edf7e..00000000 --- a/42sh/objs/lexer/lexer_word.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/lexer_word.o: src/lexer/lexer_word.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_append.d b/42sh/objs/lexer/token_append.d deleted file mode 100644 index 367c7fab..00000000 --- a/42sh/objs/lexer/token_append.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/token_append.o: src/lexer/token_append.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_cmp_type.d b/42sh/objs/lexer/token_cmp_type.d deleted file mode 100644 index 13aacae7..00000000 --- a/42sh/objs/lexer/token_cmp_type.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/token_cmp_type.o: src/lexer/token_cmp_type.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_free.d b/42sh/objs/lexer/token_free.d deleted file mode 100644 index 0357cacc..00000000 --- a/42sh/objs/lexer/token_free.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/token_free.o: src/lexer/token_free.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_init.d b/42sh/objs/lexer/token_init.d deleted file mode 100644 index 0f3b7925..00000000 --- a/42sh/objs/lexer/token_init.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/token_init.o: src/lexer/token_init.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/lexer/token_print.d b/42sh/objs/lexer/token_print.d deleted file mode 100644 index c00139ec..00000000 --- a/42sh/objs/lexer/token_print.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/lexer/token_print.o: src/lexer/token_print.c includes/lexer.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/line-editing/completion.d b/42sh/objs/line-editing/completion.d deleted file mode 100644 index 5e65f8e8..00000000 --- a/42sh/objs/line-editing/completion.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/completion.o: src/line-editing/completion.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/control_c_and_d.d b/42sh/objs/line-editing/control_c_and_d.d deleted file mode 100644 index d0f99cb6..00000000 --- a/42sh/objs/line-editing/control_c_and_d.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/control_c_and_d.o: src/line-editing/control_c_and_d.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/copy_cut_paste.d b/42sh/objs/line-editing/copy_cut_paste.d deleted file mode 100644 index 4ae03557..00000000 --- a/42sh/objs/line-editing/copy_cut_paste.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/copy_cut_paste.o: src/line-editing/copy_cut_paste.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/ft_prompt.d b/42sh/objs/line-editing/ft_prompt.d deleted file mode 100644 index 0e111e7a..00000000 --- a/42sh/objs/line-editing/ft_prompt.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/ft_prompt.o: src/line-editing/ft_prompt.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/get_key.d b/42sh/objs/line-editing/get_key.d deleted file mode 100644 index acae0b18..00000000 --- a/42sh/objs/line-editing/get_key.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/get_key.o: src/line-editing/get_key.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/home_end.d b/42sh/objs/line-editing/home_end.d deleted file mode 100644 index 9aed3bbc..00000000 --- a/42sh/objs/line-editing/home_end.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/home_end.o: src/line-editing/home_end.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/tool_line.d b/42sh/objs/line-editing/lib_line_editing/tool_line.d deleted file mode 100644 index 4b90a89f..00000000 --- a/42sh/objs/line-editing/lib_line_editing/tool_line.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/lib_line_editing/tool_line.o: \ - src/line-editing/lib_line_editing/tool_line.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/tool_line_2.d b/42sh/objs/line-editing/lib_line_editing/tool_line_2.d deleted file mode 100644 index d0b9f168..00000000 --- a/42sh/objs/line-editing/lib_line_editing/tool_line_2.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/lib_line_editing/tool_line_2.o: \ - src/line-editing/lib_line_editing/tool_line_2.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz.d b/42sh/objs/line-editing/lib_line_editing/toolz.d deleted file mode 100644 index 08f16b8b..00000000 --- a/42sh/objs/line-editing/lib_line_editing/toolz.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/lib_line_editing/toolz.o: \ - src/line-editing/lib_line_editing/toolz.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz2.d b/42sh/objs/line-editing/lib_line_editing/toolz2.d deleted file mode 100644 index c90c4b26..00000000 --- a/42sh/objs/line-editing/lib_line_editing/toolz2.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/lib_line_editing/toolz2.o: \ - src/line-editing/lib_line_editing/toolz2.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz_parseur.d b/42sh/objs/line-editing/lib_line_editing/toolz_parseur.d deleted file mode 100644 index f5546aa3..00000000 --- a/42sh/objs/line-editing/lib_line_editing/toolz_parseur.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/lib_line_editing/toolz_parseur.o: \ - src/line-editing/lib_line_editing/toolz_parseur.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d b/42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d deleted file mode 100644 index 7b7a9634..00000000 --- a/42sh/objs/line-editing/lib_line_editing/toolz_termcaps.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/lib_line_editing/toolz_termcaps.o: \ - src/line-editing/lib_line_editing/toolz_termcaps.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/move_left_and_right.d b/42sh/objs/line-editing/move_left_and_right.d deleted file mode 100644 index c9a30c9d..00000000 --- a/42sh/objs/line-editing/move_left_and_right.d +++ /dev/null @@ -1,11 +0,0 @@ -objs/line-editing/move_left_and_right.o: \ - src/line-editing/move_left_and_right.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/move_to_word.d b/42sh/objs/line-editing/move_to_word.d deleted file mode 100644 index f6a580d0..00000000 --- a/42sh/objs/line-editing/move_to_word.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/move_to_word.o: src/line-editing/move_to_word.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/move_up_and_down.d b/42sh/objs/line-editing/move_up_and_down.d deleted file mode 100644 index ca251284..00000000 --- a/42sh/objs/line-editing/move_up_and_down.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/move_up_and_down.o: src/line-editing/move_up_and_down.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/print_and_del.d b/42sh/objs/line-editing/print_and_del.d deleted file mode 100644 index ed044083..00000000 --- a/42sh/objs/line-editing/print_and_del.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/print_and_del.o: src/line-editing/print_and_del.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/queue.d b/42sh/objs/line-editing/queue.d deleted file mode 100644 index a893ff9e..00000000 --- a/42sh/objs/line-editing/queue.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/queue.o: src/line-editing/queue.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/line-editing/readline.d b/42sh/objs/line-editing/readline.d deleted file mode 100644 index 7b738413..00000000 --- a/42sh/objs/line-editing/readline.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/line-editing/readline.o: src/line-editing/readline.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/data_exit.d b/42sh/objs/main/data_exit.d deleted file mode 100644 index a1fac3c9..00000000 --- a/42sh/objs/main/data_exit.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/data_exit.o: src/main/data_exit.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/data_init.d b/42sh/objs/main/data_init.d deleted file mode 100644 index 49e739da..00000000 --- a/42sh/objs/main/data_init.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/data_init.o: src/main/data_init.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/data_singleton.d b/42sh/objs/main/data_singleton.d deleted file mode 100644 index 9be60903..00000000 --- a/42sh/objs/main/data_singleton.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/data_singleton.o: src/main/data_singleton.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/ft_putast.d b/42sh/objs/main/ft_putast.d deleted file mode 100644 index d335f39b..00000000 --- a/42sh/objs/main/ft_putast.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/ft_putast.o: src/main/ft_putast.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/main.d b/42sh/objs/main/main.d deleted file mode 100644 index 5da61998..00000000 --- a/42sh/objs/main/main.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/main.o: src/main/main.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/shell_exit.d b/42sh/objs/main/shell_exit.d deleted file mode 100644 index 0d304bf9..00000000 --- a/42sh/objs/main/shell_exit.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/shell_exit.o: src/main/shell_exit.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/shell_get_avdata.d b/42sh/objs/main/shell_get_avdata.d deleted file mode 100644 index 489615e5..00000000 --- a/42sh/objs/main/shell_get_avdata.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/shell_get_avdata.o: src/main/shell_get_avdata.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/shell_get_opts.d b/42sh/objs/main/shell_get_opts.d deleted file mode 100644 index b5fe8d72..00000000 --- a/42sh/objs/main/shell_get_opts.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/shell_get_opts.o: src/main/shell_get_opts.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/main/shell_init.d b/42sh/objs/main/shell_init.d deleted file mode 100644 index bfb3d987..00000000 --- a/42sh/objs/main/shell_init.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/main/shell_init.o: src/main/shell_init.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/parser/add_case.d b/42sh/objs/parser/add_case.d deleted file mode 100644 index caa49d65..00000000 --- a/42sh/objs/parser/add_case.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_case.o: src/parser/add_case.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_cmd.d b/42sh/objs/parser/add_cmd.d deleted file mode 100644 index 69abecee..00000000 --- a/42sh/objs/parser/add_cmd.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_cmd.o: src/parser/add_cmd.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_condition.d b/42sh/objs/parser/add_condition.d deleted file mode 100644 index 81f9912c..00000000 --- a/42sh/objs/parser/add_condition.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_condition.o: src/parser/add_condition.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_file.d b/42sh/objs/parser/add_file.d deleted file mode 100644 index 956785ae..00000000 --- a/42sh/objs/parser/add_file.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_file.o: src/parser/add_file.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_loop.d b/42sh/objs/parser/add_loop.d deleted file mode 100644 index 8aa90512..00000000 --- a/42sh/objs/parser/add_loop.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_loop.o: src/parser/add_loop.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_sep.d b/42sh/objs/parser/add_sep.d deleted file mode 100644 index d28684c3..00000000 --- a/42sh/objs/parser/add_sep.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_sep.o: src/parser/add_sep.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/add_subshell.d b/42sh/objs/parser/add_subshell.d deleted file mode 100644 index 3c3dae01..00000000 --- a/42sh/objs/parser/add_subshell.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/add_subshell.o: src/parser/add_subshell.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/aggregate_sym.d b/42sh/objs/parser/aggregate_sym.d deleted file mode 100644 index 0963f76c..00000000 --- a/42sh/objs/parser/aggregate_sym.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/aggregate_sym.o: src/parser/aggregate_sym.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/build_tree.d b/42sh/objs/parser/build_tree.d deleted file mode 100644 index 246fcb51..00000000 --- a/42sh/objs/parser/build_tree.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/build_tree.o: src/parser/build_tree.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/error_syntax.d b/42sh/objs/parser/error_syntax.d deleted file mode 100644 index 867dddf1..00000000 --- a/42sh/objs/parser/error_syntax.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/error_syntax.o: src/parser/error_syntax.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/eval_sym.d b/42sh/objs/parser/eval_sym.d deleted file mode 100644 index deac8211..00000000 --- a/42sh/objs/parser/eval_sym.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/eval_sym.o: src/parser/eval_sym.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/ft_parse.d b/42sh/objs/parser/ft_parse.d deleted file mode 100644 index a1bd3710..00000000 --- a/42sh/objs/parser/ft_parse.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/ft_parse.o: src/parser/ft_parse.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/parser_init.d b/42sh/objs/parser/parser_init.d deleted file mode 100644 index 3d2daa4e..00000000 --- a/42sh/objs/parser/parser_init.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/parser_init.o: src/parser/parser_init.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/pop_stack.d b/42sh/objs/parser/pop_stack.d deleted file mode 100644 index 7fa094af..00000000 --- a/42sh/objs/parser/pop_stack.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/pop_stack.o: src/parser/pop_stack.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/produce_sym.d b/42sh/objs/parser/produce_sym.d deleted file mode 100644 index 4f304113..00000000 --- a/42sh/objs/parser/produce_sym.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/produce_sym.o: src/parser/produce_sym.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/push_stack.d b/42sh/objs/parser/push_stack.d deleted file mode 100644 index cb9ff706..00000000 --- a/42sh/objs/parser/push_stack.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/push_stack.o: src/parser/push_stack.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/read_stack.d b/42sh/objs/parser/read_stack.d deleted file mode 100644 index bfa5ac37..00000000 --- a/42sh/objs/parser/read_stack.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/read_stack.o: src/parser/read_stack.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/parser/tree_wrapper.d b/42sh/objs/parser/tree_wrapper.d deleted file mode 100644 index 1fc2ef3b..00000000 --- a/42sh/objs/parser/tree_wrapper.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/parser/tree_wrapper.o: src/parser/tree_wrapper.c includes/parser.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/builtin.h includes/builtin_read.h \ - includes/glob.h includes/completion.h includes/hash.h From 7b1d505a5b315b0d899c5e1926502fc273a458ec Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sat, 25 Feb 2017 00:31:51 +0100 Subject: [PATCH 101/206] gen func ok, todo: multi branch declaration, probleme lexer sur brackets --- 42sh/Makefile | 3 +- 42sh/includes/parser.h | 3 ++ 42sh/sample/func/func01.sh | 6 ++- 42sh/src/main/ft_putast.c | 9 ++++- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_cmd.c | 6 ++- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_func.c | 65 +++++++++++++++++++++++++++++++++ 42sh/src/parser/add_sep.c | 4 +- 42sh/src/parser/add_subshell.c | 2 +- 42sh/src/parser/build_tree.c | 13 +++++-- 42sh/src/parser/ft_parse.c | 4 +- 42sh/src/parser/read_stack.c | 2 +- 13 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 42sh/src/parser/add_func.c diff --git a/42sh/Makefile b/42sh/Makefile index e99bd9a8..e42b63b4 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/24 21:33:24 by ariard ### ########.fr # +# Updated: 2017/02/25 00:13:39 by ariard ### ########.fr # # # # **************************************************************************** # @@ -233,6 +233,7 @@ parser/add_file.c\ parser/add_loop.c\ parser/add_sep.c\ parser/add_case.c\ +parser/add_func.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 34290b31..2485e058 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -226,11 +226,14 @@ int add_case_sep(t_btree **ast, t_list **lst); int add_pattern(t_btree **ast, t_list **lst); int add_subshell_cmd(t_btree **ast, t_list **lst); int add_subshell_sep(t_btree **ast, t_list **lst); +int add_func_cmd(t_btree **ast, t_list **lst); +int add_func_sep(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); int isdir(t_btree **ast); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); int issubshell(t_btree **ast, t_list **lst); +int isfunc(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); diff --git a/42sh/sample/func/func01.sh b/42sh/sample/func/func01.sh index b3bc2ba1..d559c7d2 100644 --- a/42sh/sample/func/func01.sh +++ b/42sh/sample/func/func01.sh @@ -1,4 +1,6 @@ hello() { - ls | cat - pwd ; cd + yolo() { + echo bonjour + } } + diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 134e3370..60d40e35 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:59:07 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:17:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,13 @@ char *ft_putast(void *nodein) { t_astnode *node; node = nodein; + + if (node->type == CLOSE_LIST) + return ("CLOSE_LIST"); + if (node->type == FNAME) + return ("FNAME"); + if (node->type == TK_LBRACE) + return ("TK_LBRACE"); if (node->type == TK_ASSIGNEMENT_WORD) return ("ASSIGNEMENT_WORD"); if (node->type == SUBSHELL) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index ec5af014..aa10e74b 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:48:51 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:00:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index b1843f82..05f7a70e 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:40:07 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:11:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int add_cmd(t_btree **ast, t_list **lst) char **my_tab; DG("add cmd"); - if ((token = (*lst)->content)->type == TK_IN) + if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) return (0); else if (!*ast) gen_node(ast); @@ -41,6 +41,8 @@ int add_cmd(t_btree **ast, t_list **lst) return (add_branch(ast, lst)); else if (issubshell(ast, lst)) return (add_subshell_cmd(ast, lst)); + else if (isfunc(ast, lst)) + return (add_func_cmd(ast, lst)); else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN && node->type != TK_PAREN_CLOSE) return (add_cmd(&(*ast)->right, lst)); diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index b95c45ab..abadea9c 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/24 15:45:39 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:11:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c new file mode 100644 index 00000000..6bd17009 --- /dev/null +++ b/42sh/src/parser/add_func.c @@ -0,0 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_func.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ +/* Updated: 2017/02/25 00:28:35 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int isfunc(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type == TK_WORD && token->type == CLOSE_LIST) + node->type = FNAME; + if (node->type == FNAME && node->full == 0) + return (1); + if (isfunc(&(*ast)->right, lst) == 1) + return (1); + } + return (0); +} + +int add_func_cmd(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + token = (*lst)->content; + node = (*ast)->item; + if (token->type == CLOSE_LIST && node->nest == 0) + return (0); + if ((token->type == TK_CASE || token->type == TK_WHILE || token->type == TK_IF + || token->type == TK_UNTIL || token->type == TK_FOR + || token->type == SUBSHELL || token->type == TK_LBRACE) + && node->type == FNAME) + node->nest++; + if ((token->type == TK_DONE || token->type == TK_ESAC || token->type == TK_FI + || token->type == TK_RBRACE || token->type == TK_PAREN_OPEN) + && node->type == FNAME && node->nest > 0) + node->nest--; + if ((token->type == TK_DONE || token->type == TK_ESAC || token->type == TK_FI + || token->type == TK_RBRACE || token->type == TK_PAREN_OPEN) + && node->type == FNAME && node->nest == 0) + node->full = 1; + return (add_cmd(&(*ast)->right, lst)); +} + +int add_func_sep(t_btree **ast, t_list **lst) +{ + return (add_sep(&(*ast)->right, lst)); +} + + diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 5a084a01..d30c5c34 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:40:12 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:13:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,8 @@ int add_sep(t_btree **ast, t_list **lst) return (add_case_sep(ast, lst)); else if (issubshell(ast, lst)) return (add_subshell_sep(ast, lst)); + else if (isfunc(ast, lst)) + return (add_func_sep(ast, lst)); if (!*ast) gen_node(ast); token = (*lst)->content; diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 3341234e..17e83953 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ -/* Updated: 2017/02/24 23:15:24 by ariard ### ########.fr */ +/* Updated: 2017/02/24 23:38:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 9fdcc75c..47ba3781 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/24 23:14:00 by ariard ### ########.fr */ +/* Updated: 2017/02/24 23:58:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,9 @@ t_treematch g_treematch[] = {TK_FOR, &add_cmd}, {TK_ASSIGNEMENT_WORD, &add_cmd}, {SUBSHELL, &add_cmd}, + {TK_LBRACE, &add_cmd}, + {TK_RBRACE, &add_cmd}, + {CLOSE_LIST, &add_cmd}, {0, NULL}, }; @@ -47,8 +50,9 @@ static int isseparator(t_token *token, int cache) { if (token->type == TK_NEWLINE && (cache == TK_WHILE || cache == TK_DO || cache == TK_NEWLINE || cache == TK_THEN || cache == TK_IN - || cache == TK_WORD || cache == TK_DSEMI)) + || cache == TK_DSEMI)) return (0); +//check cache == WORD return (1); } @@ -62,8 +66,11 @@ int build_tree(t_btree **ast, t_list **lst) token = (*lst)->content; //check bug de cache case ? // cache = token->type; - if (token->type == TK_PAREN_OPEN && cache != TK_IN && cache != TK_DSEMI) + if (token->type == TK_PAREN_OPEN && cache != TK_IN && cache != TK_DSEMI + && cache != TK_WORD) token->type = SUBSHELL; + if (token->type == TK_PAREN_CLOSE && cache == TK_PAREN_OPEN) + token->type = CLOSE_LIST; while (g_treematch[i].type) { if ((isseparator(token, cache) && g_treematch[i].type == token->type)) diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index f971f12f..01f978b8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -49,8 +49,8 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) parser->state = SUCCESS; else parser->state = UNDEFINED; -// build_tree(ast, token); -// btree_print(STDBUG, *ast, &ft_putast); + build_tree(ast, token); + btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index f5cf146b..ebb6e4d8 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/24 22:59:52 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:15:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From eeb088708173100842372f8085639e53eab60d7e Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sat, 25 Feb 2017 19:31:02 +0100 Subject: [PATCH 102/206] commit from un cluster qui marche aka new redir --- 42sh/includes/parser.h | 111 +---------------------------- 42sh/includes/types.h | 110 +++++++++++++++++++++++++++- 42sh/sample/redir/redir.sh | 1 + 42sh/sample/subshell/subshell01.sh | 3 +- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_cmd.c | 4 +- 42sh/src/parser/add_file.c | 59 +++++++++++---- 42sh/src/parser/add_func.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_sep.c | 4 +- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/build_tree.c | 4 +- 42sh/src/parser/produce_sym.c | 2 +- 42sh/src/parser/tree_wrapper.c | 2 +- 14 files changed, 173 insertions(+), 135 deletions(-) create mode 100644 42sh/sample/redir/redir.sh diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 2485e058..80ffcebb 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -26,114 +26,6 @@ enum e_parstate SUCCESS, }; -enum e_sym -{ - LINEBREAK = 1, - TK_COMMAND, - TK_LESS, - TK_GREAT, - TK_DLESS, - TK_DGREAT, - TK_LESSAND, - TK_GREATAND, - TK_SEMI, - TK_PIPE, - TK_AND_IF, - TK_OR_IF, - TK_AMP, - TK_PAREN_OPEN, - TK_PAREN_CLOSE, - TK_BQUOTE, - TK_NEWLINE, - TK_WHILE, - TK_DO, - TK_DONE, - TK_IF, - TK_THEN, - TK_FI, - TK_ELIF, - TK_ELSE, - TK_UNTIL, - TK_WORD, - TK_ASSIGNEMENT_WORD = 50, - TK_BANG, - TK_NAME, - TK_FOR, - TK_IO_NUMBER, - TK_DLESSDASH, - TK_LESSGREAT, - TK_SUBSHELL, - TK_CASE, - TK_IN, - TK_ESAC, - TK_CLOBBER, - TK_LBRACE, - TK_RBRACE, - TK_DSEMI, - PROGRAM = 100, - COMPLETE_COMMAND, - COMPLETE_COMMANDS, - LIST, - AND_OR, - PIPELINE, - PIPE_SEQUENCE, - COMMAND, - COMPOUND_COMMAND, - SUBSHELL, - COMPOUND_LIST, - TERM, - FOR_CLAUSE, - NAME, - IN, - WORDLIST, - CASE_CLAUSE, - CASE_LIST, - CASE_LIST_NS, - CASE_ITEM, - CASE_ITEM_NS, - PATTERN, - IF_CLAUSE, - BRACE_CLAUSE, - ELSE_PART, - WHILE_CLAUSE, - UNTIL_CLAUSE, - FUNCTION_DEFINITION, - FUNCTION_BODY, - FNAME, - BRACE_GROUP, - DO_GROUP, - SIMPLE_COMMAND, - CMD_NAME, - CMD_WORD, - CMD_PREFIX, - CMD_SUFFIX, - REDIRECT_LIST, - IO_REDIRECT, - IO_FILE, - FILENAME, - IO_HERE, - HERE_END, - NEWLINE_LIST, - SEPARATOR_OP, - SEPARATOR, - SEQUENTIAL_SEP, - BRACE, - LOOP, - FUNC, - PIPE_SEMI_SEQUENCE, - CMD_SUPERIOR, - AND_OR_MAJOR, - AND_OR_MINOR, - END_COMMAND, - CONDITION, - COMPLETE_CONDITION, - FOR_WORDLIST, - PATTERN_CASE, - FUNC_NAME, - CLOSE_LIST, - ALL = 200, -}; - # define TK_REDIR(x) (TK_LESS <= x && x <= TK_GREATAND) # define MATCH_STACK(x, y) (x == y || y == ALL) @@ -215,6 +107,7 @@ int build_tree(t_btree **ast, t_list **lst); int add_sep(t_btree **ast, t_list **lst); int add_cmd(t_btree **ast, t_list **lst); int add_file(t_btree **ast, t_list **lst); +int add_redir(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); int add_loop_condition(t_btree **ast, t_list **lst); @@ -229,7 +122,7 @@ int add_subshell_sep(t_btree **ast, t_list **lst); int add_func_cmd(t_btree **ast, t_list **lst); int add_func_sep(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); -int isdir(t_btree **ast); +int isdir(t_btree **ast, t_list **lst); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); int issubshell(t_btree **ast, t_list **lst); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index f365bd63..95080d63 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/02/21 16:15:41 by ariard ### ########.fr */ +/* Updated: 2017/02/25 18:47:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,4 +51,112 @@ typedef struct s_treematch t_treematch; t_data *data_singleton(); +enum e_sym +{ + LINEBREAK = 1, + TK_COMMAND, + TK_LESS, + TK_GREAT, + TK_DLESS, + TK_DGREAT, + TK_LESSAND, + TK_GREATAND, + TK_SEMI, + TK_PIPE, + TK_AND_IF, + TK_OR_IF, + TK_AMP, + TK_PAREN_OPEN, + TK_PAREN_CLOSE, + TK_BQUOTE, + TK_NEWLINE, + TK_WHILE, + TK_DO, + TK_DONE, + TK_IF, + TK_THEN, + TK_FI, + TK_ELIF, + TK_ELSE, + TK_UNTIL, + TK_WORD, + TK_ASSIGNEMENT_WORD = 50, + TK_BANG, + TK_NAME, + TK_FOR, + TK_IO_NUMBER, + TK_DLESSDASH, + TK_LESSGREAT, + TK_SUBSHELL, + TK_CASE, + TK_IN, + TK_ESAC, + TK_CLOBBER, + TK_LBRACE, + TK_RBRACE, + TK_DSEMI, + PROGRAM = 100, + COMPLETE_COMMAND, + COMPLETE_COMMANDS, + LIST, + AND_OR, + PIPELINE, + PIPE_SEQUENCE, + COMMAND, + COMPOUND_COMMAND, + SUBSHELL, + COMPOUND_LIST, + TERM, + FOR_CLAUSE, + NAME, + IN, + WORDLIST, + CASE_CLAUSE, + CASE_LIST, + CASE_LIST_NS, + CASE_ITEM, + CASE_ITEM_NS, + PATTERN, + IF_CLAUSE, + BRACE_CLAUSE, + ELSE_PART, + WHILE_CLAUSE, + UNTIL_CLAUSE, + FUNCTION_DEFINITION, + FUNCTION_BODY, + FNAME, + BRACE_GROUP, + DO_GROUP, + SIMPLE_COMMAND, + CMD_NAME, + CMD_WORD, + CMD_PREFIX, + CMD_SUFFIX, + REDIRECT_LIST, + IO_REDIRECT, + IO_FILE, + FILENAME, + IO_HERE, + HERE_END, + NEWLINE_LIST, + SEPARATOR_OP, + SEPARATOR, + SEQUENTIAL_SEP, + BRACE, + LOOP, + FUNC, + PIPE_SEMI_SEQUENCE, + CMD_SUPERIOR, + AND_OR_MAJOR, + AND_OR_MINOR, + END_COMMAND, + CONDITION, + COMPLETE_CONDITION, + FOR_WORDLIST, + PATTERN_CASE, + FUNC_NAME, + CLOSE_LIST, + ALL = 200, +}; + #endif diff --git a/42sh/sample/redir/redir.sh b/42sh/sample/redir/redir.sh new file mode 100644 index 00000000..521002db --- /dev/null +++ b/42sh/sample/redir/redir.sh @@ -0,0 +1 @@ +ls >> 1 >> 2 >> 3 < 4 < 5 ; pwd > 1 > 2 diff --git a/42sh/sample/subshell/subshell01.sh b/42sh/sample/subshell/subshell01.sh index 244aeed7..f1f04671 100644 --- a/42sh/sample/subshell/subshell01.sh +++ b/42sh/sample/subshell/subshell01.sh @@ -1 +1,2 @@ -(ls | cat && pwd) +(ls | cat +pwd ; ls) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index aa10e74b..ac3ffd25 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/25 00:00:16 by ariard ### ########.fr */ +/* Updated: 2017/02/25 18:25:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 05f7a70e..d372954d 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/25 00:11:05 by ariard ### ########.fr */ +/* Updated: 2017/02/25 18:50:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ int add_cmd(t_btree **ast, t_list **lst) return (0); else if (!*ast) gen_node(ast); - else if (isdir(ast)) + else if (isdir(ast, lst)) return (add_file(ast, lst)); else if (isloop(ast, lst) == 3) return (add_loop_condition(ast, lst)); diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c index 66f13d1b..d7df98a9 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_file.c @@ -6,24 +6,35 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/02/18 16:43:28 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:29:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int isdir(t_btree **ast) +int isdir(t_btree **ast, t_list **list) { t_astnode *node; + t_token *token; - node = (*ast)->item; - if (node->data.redir.word.word) - return (0); - if (node->type == TK_LESS || node->type == TK_GREAT - || node->type == TK_LESSAND || node->type == TK_GREATAND - || node->type == TK_DGREAT || node->type == TK_LESSGREAT - || node->type == TK_CLOBBER) - return (1); + token = (*list)->content; + if (ast) + { + DG("isdir"); + node = (*ast)->item; + if ((node->type == TK_LESS || node->type == TK_GREAT + || node->type == TK_LESSAND || node->type == TK_GREATAND + || node->type == TK_DGREAT) + && token->type == TK_WORD) + return (1); + if ((node->type == TK_LESS || node->type == TK_GREAT + || node->type == TK_LESSAND || node->type == TK_GREATAND + || node->type == TK_DGREAT) + && (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_LESSAND || token->type == TK_GREATAND + || token->type == TK_DGREAT)) + return (2); + } return (0); } @@ -31,10 +42,30 @@ int add_file(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; - + t_redir *redir; + token = (*lst)->content; node = (*ast)->item; - node->data.redir.n = ft_atoi(token->data); - node->data.redir.word.word = ft_strdup(token->data); + if (node->data.wordlist) + { + DG("add file"); + redir = (ft_lstlast(node->data.wordlist))->content; + redir->word.word = token->data; + } return (0); -} +} + +int add_redir(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + t_redir *redir; + + DG("add_redir"); + token = (*lst)->content; + node = (*ast)->item; + redir = ft_memalloc(sizeof(redir)); + redir->type = token->type; + ft_lsteadd(&node->data.wordlist, ft_lstnew(redir, sizeof(redir))); + return (0); +} diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index 6bd17009..e2eda0fe 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ -/* Updated: 2017/02/25 00:28:35 by ariard ### ########.fr */ +/* Updated: 2017/02/25 00:32:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 5f7ae736..78608a48 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/24 18:47:29 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:18:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index d30c5c34..a80093f4 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/25 00:13:07 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:28:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,8 @@ int add_sep(t_btree **ast, t_list **lst) return (add_case_sep(ast, lst)); else if (issubshell(ast, lst)) return (add_subshell_sep(ast, lst)); + else if (isdir(ast, lst) == 2) + return (add_redir(ast, lst)); else if (isfunc(ast, lst)) return (add_func_sep(ast, lst)); if (!*ast) diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 84a5c5cc..879045ca 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/24 23:16:29 by ariard ### ########.fr */ +/* Updated: 2017/02/25 13:53:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 47ba3781..2d8a7e70 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/24 23:58:10 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:21:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,8 @@ t_treematch g_treematch[] = {TK_SEMI, &add_sep}, {TK_GREAT, &add_sep}, {TK_LESS, &add_sep}, + {TK_DGREAT, &add_sep}, + {TK_DLESS, &add_sep}, {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, {TK_WHILE, &add_cmd}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 113696bb..4a2cbad4 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/24 23:10:35 by ariard ### ########.fr */ +/* Updated: 2017/02/25 13:54:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index f667a6fe..ac2d3d5b 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/24 16:00:40 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:10:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 8c8ee2152e3ce490f2783e8cb016840e2a8cb076 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sat, 25 Feb 2017 20:36:27 +0100 Subject: [PATCH 103/206] parsing heredoc doing --- 42sh/file | 2 ++ 42sh/file1 | 0 42sh/includes/types.h | 2 +- 42sh/sample/redir/redir.sh | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_great.c | 4 +++- 42sh/src/lexer/lexer_greatand.c | 2 +- 42sh/src/lexer/lexer_less.c | 2 +- 42sh/src/lexer/lexer_lessand.c | 2 +- 42sh/src/lexer/lexer_number.c | 3 ++- 42sh/src/lexer/lexer_word.c | 3 ++- 42sh/src/main/main.c | 3 ++- 42sh/src/parser/add_file.c | 8 +++++--- 42sh/wide | 1 + 42sh/yolo | 2 ++ 16 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 42sh/file create mode 100644 42sh/file1 create mode 100644 42sh/wide create mode 100644 42sh/yolo diff --git a/42sh/file b/42sh/file new file mode 100644 index 00000000..1d552218 --- /dev/null +++ b/42sh/file @@ -0,0 +1,2 @@ +ls: feew: No such file or directory +ls: feew: No such file or directory diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 95080d63..474b8b7a 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/02/25 18:47:20 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:37:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/redir/redir.sh b/42sh/sample/redir/redir.sh index 521002db..8b137891 100644 --- a/42sh/sample/redir/redir.sh +++ b/42sh/sample/redir/redir.sh @@ -1 +1 @@ -ls >> 1 >> 2 >> 3 < 4 < 5 ; pwd > 1 > 2 + diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index f1781eed..d8799ebe 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:43:56 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:04:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index c7e789f1..026a0f4a 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:42:41 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:56:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index cce8f831..8bbb462b 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:09:31 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:12:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ int lexer_great(t_list **alst, t_lexer *lexer) lexer->pos++; if (lexer->str[lexer->pos] == '&') { + DG("lex greatand"); token->type = TK_GREATAND; token_append(token, lexer, 0, 0); lexer->pos++; @@ -28,6 +29,7 @@ int lexer_great(t_list **alst, t_lexer *lexer) } if (lexer->str[lexer->pos] == '>') { + DG("lex great"); token->type = TK_DGREAT; token_append(token, lexer, 0, 0); lexer->pos++; diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c index 350bbec1..af86cb7f 100644 --- a/42sh/src/lexer/lexer_greatand.c +++ b/42sh/src/lexer/lexer_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:58 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:52:49 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:11:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 241f9ae1..0aa0174c 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:53:06 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:11:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lessand.c b/42sh/src/lexer/lexer_lessand.c index f411b225..d0e79268 100644 --- a/42sh/src/lexer/lexer_lessand.c +++ b/42sh/src/lexer/lexer_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:51 by jhalford #+# #+# */ -/* Updated: 2017/02/09 19:56:29 by jhalford ### ########.fr */ +/* Updated: 2017/02/25 20:11:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 0508f70f..11e9eb6e 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:53:20 by ariard ### ########.fr */ +/* Updated: 2017/02/25 19:55:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ int lexer_number(t_list **alst, t_lexer *lexer) t_lexstate state; token = (*alst)->content; + token->type = TK_IO_NUMBER; if ((state = get_state_global(lexer))) { lexer->state = state; diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 910be7b8..157668ba 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:00:15 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:10:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,7 @@ int lexer_word(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = TK_WORD; + DG("lexer word"); if ((state = get_state_global(lexer))) { lexer->state = state; diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index ac3ffd25..76e2b3a5 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/25 18:25:11 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:34:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -61,6 +61,7 @@ int handle_instruction(int fd) else if (parser.state == ERROR) error_syntax(&token); token = NULL; + ast = NULL; } DG("succesful parsing:"); btree_print(STDBUG, ast, &ft_putast); diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c index d7df98a9..c056049c 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_file.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/02/25 19:29:53 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:33:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int isdir(t_btree **ast, t_list **list) t_token *token; token = (*list)->content; - if (ast) + if (*ast) { DG("isdir"); node = (*ast)->item; @@ -61,7 +61,9 @@ int add_redir(t_btree **ast, t_list **lst) t_token *token; t_redir *redir; - DG("add_redir"); + DG("add redir"); + if (!ast) + gen_node(ast); token = (*lst)->content; node = (*ast)->item; redir = ft_memalloc(sizeof(redir)); diff --git a/42sh/wide b/42sh/wide new file mode 100644 index 00000000..6efd26c6 --- /dev/null +++ b/42sh/wide @@ -0,0 +1 @@ +ls: ewfef: No such file or directory diff --git a/42sh/yolo b/42sh/yolo new file mode 100644 index 00000000..627968d4 --- /dev/null +++ b/42sh/yolo @@ -0,0 +1,2 @@ +ls: wefewf: No such file or directory +ls: wefewf: No such file or directory From a154aa85b68706323f7a33bbfffc15aec2686b24 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sat, 25 Feb 2017 22:34:38 +0100 Subject: [PATCH 104/206] eof syntax good --- 42sh/file | 2 -- 42sh/file1 | 0 42sh/src/parser/aggregate_sym.c | 1 + 42sh/test.sh | 1 - 42sh/wide | 1 - 42sh/yolo | 2 -- 6 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 42sh/file delete mode 100644 42sh/file1 delete mode 100644 42sh/test.sh delete mode 100644 42sh/wide delete mode 100644 42sh/yolo diff --git a/42sh/file b/42sh/file deleted file mode 100644 index 1d552218..00000000 --- a/42sh/file +++ /dev/null @@ -1,2 +0,0 @@ -ls: feew: No such file or directory -ls: feew: No such file or directory diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 879045ca..afccf9df 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -92,6 +92,7 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, //to check + {HERE_END, TK_DLESS, IO_HERE, TK_DLESS}, {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, {IO_HERE, ALL, IO_REDIRECT, 0}, {FILENAME, TK_LESS, IO_FILE, TK_LESS}, diff --git a/42sh/test.sh b/42sh/test.sh deleted file mode 100644 index cce06da7..00000000 --- a/42sh/test.sh +++ /dev/null @@ -1 +0,0 @@ -{ hello } diff --git a/42sh/wide b/42sh/wide deleted file mode 100644 index 6efd26c6..00000000 --- a/42sh/wide +++ /dev/null @@ -1 +0,0 @@ -ls: ewfef: No such file or directory diff --git a/42sh/yolo b/42sh/yolo deleted file mode 100644 index 627968d4..00000000 --- a/42sh/yolo +++ /dev/null @@ -1,2 +0,0 @@ -ls: wefewf: No such file or directory -ls: wefewf: No such file or directory From 9c0984658ea64a6c40cb40b18f3e0f7e9e8ba886 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sun, 26 Feb 2017 01:13:47 +0100 Subject: [PATCH 105/206] exec flow control --- 42sh/Makefile | 6 ++-- 42sh/includes/exec.h | 14 +++++---- 42sh/includes/minishell.h | 2 ++ 42sh/includes/parser.h | 1 + 42sh/includes/types.h | 1 + 42sh/src/exec/{loop_exec.c => exec_case.c} | 22 +++++++------- 42sh/src/exec/exec_case_branch.c | 30 +++++++++++++++++++ 42sh/src/exec/exec_command.c | 4 +-- 42sh/src/exec/exec_elif.c | 11 ++++--- 42sh/src/exec/exec_else.c | 7 +++-- 42sh/src/exec/exec_for.c | 35 ++++++++++++++++++++++ 42sh/src/exec/exec_func.c | 15 ++++++++++ 42sh/src/exec/exec_if.c | 9 ++++-- 42sh/src/exec/exec_until.c | 11 ++++--- 42sh/src/exec/{loop_del.c => exec_var.c} | 21 ++++++------- 42sh/src/exec/exec_while.c | 11 ++++--- 42sh/src/main/data_init.c | 4 ++- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_func.c | 10 ++++++- 42sh/src/parser/aggregate_sym.c | 2 +- 20 files changed, 158 insertions(+), 60 deletions(-) rename 42sh/src/exec/{loop_exec.c => exec_case.c} (64%) create mode 100644 42sh/src/exec/exec_case_branch.c create mode 100644 42sh/src/exec/exec_for.c create mode 100644 42sh/src/exec/exec_func.c rename 42sh/src/exec/{loop_del.c => exec_var.c} (65%) diff --git a/42sh/Makefile b/42sh/Makefile index e42b63b4..5a69ec4f 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -74,12 +74,14 @@ exec/exec_redir.c\ exec/exec_semi.c\ exec/exec_until.c\ exec/exec_while.c\ +exec/exec_var.c\ +exec/exec_for.c\ +exec/exec_case.c\ +exec/exec_case_branch.c\ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ exec/launch_process.c\ -exec/loop_del.c\ -exec/loop_exec.c\ exec/process_redirect.c\ exec/process_reset.c\ exec/process_resetfds.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 58aabc7a..a115f3cb 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -35,8 +35,6 @@ # define IS_PIPEEND(a) (a & PROCESS_PIPEEND) # define IS_PIPESINGLE(a) ((a & PROCESS_PIPESTART) && (a & PROCESS_PIPEEND)) -# define SCRIPT_LOOP (1 << 0) - # include "libft.h" # include "types.h" # include "job_control.h" @@ -53,7 +51,9 @@ struct s_process int toclose; int status; t_flag attributes; - t_flag script; + t_condition if_branch; + t_condition case_branch; + char *case_pattern; }; struct s_exec @@ -102,7 +102,10 @@ int exec_elif(t_btree **ast); int exec_else(t_btree **ast); int exec_until(t_btree **ast); int exec_default(t_btree **ast); - +int exec_var(t_btree **ast); +int exec_for(t_btree **ast); +int exec_case(t_btree **ast); +int exec_case_branch(t_btree **ast); int launch_process(t_process *p); int process_setexec(t_type type, t_process *p); @@ -128,7 +131,6 @@ void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); - - +char **token_to_argv(t_astnode *node); #endif diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 23c31ae2..fd9768fd 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -65,6 +65,8 @@ struct s_data t_comp *comp; t_exec exec; t_jobc jobc; + char **local_var; + t_list *lst_func; }; extern t_stof g_builtins[]; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 80ffcebb..1812e496 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -121,6 +121,7 @@ int add_subshell_cmd(t_btree **ast, t_list **lst); int add_subshell_sep(t_btree **ast, t_list **lst); int add_func_cmd(t_btree **ast, t_list **lst); int add_func_sep(t_btree **ast, t_list **lst); +int add_one_func(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); int isdir(t_btree **ast, t_list **lst); int iscase(t_btree **ast, t_list **lst); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 474b8b7a..e0f7ade6 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -34,6 +34,7 @@ typedef union u_astdata t_astdata; typedef union u_word t_word; typedef long long t_type; +typedef int t_condition; typedef struct s_job t_job; typedef struct s_execmap t_execmap; typedef struct s_redirmap t_redirmap; diff --git a/42sh/src/exec/loop_exec.c b/42sh/src/exec/exec_case.c similarity index 64% rename from 42sh/src/exec/loop_exec.c rename to 42sh/src/exec/exec_case.c index cf285ee4..3a2847f8 100644 --- a/42sh/src/exec/loop_exec.c +++ b/42sh/src/exec/exec_case.c @@ -1,27 +1,25 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* loop_exec.c :+: :+: :+: */ +/* exec_if.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 21:02:10 by ariard #+# #+# */ -/* Updated: 2017/01/31 19:27:49 by ariard ### ########.fr */ +/* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ +/* Updated: 2017/02/20 22:31:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -int loop_exec(t_list *list_ast) +int exec_case(t_btree **ast) { + t_astnode *node; + char **av; -// DG("begin exec loop"); -// ft_print_all_ast(*list_ast); - while (list_ast) - { - if (ft_exec((t_btree **)list_ast->content)) - return (1); - list_ast = list_ast->next; - } + data_singleton()->exec.process.case_branch = 0; + node = (*ast)->item; + av = token_to_argv(node); + data_singleton()->exec.process.case_pattern = av[0]; return (0); } diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c new file mode 100644 index 00000000..2102769c --- /dev/null +++ b/42sh/src/exec/exec_case_branch.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ +/* Updated: 2017/02/20 22:31:46 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_case_branch(t_btree **ast) +{ + t_astnode *node; + char **av; + + if (data_singleton()->exec.process.case_branch == 1) + return (0); + node = (*ast)->item; + av = token_to_argv(node); + if (ft_strcmp(av[0], data_singleton()->exec.process.case_pattern) == 1) + { + data_singleton()->exec.process.case_branch = 1; + ft_exec(&(*ast)->right); + } + return (0); +} diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 558804af..358e5887 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -12,7 +12,7 @@ #include "exec.h" -static char **token_to_argv(t_astnode *node) +char **token_to_argv(t_astnode *node) { char **my_tab; int index; @@ -20,7 +20,7 @@ static char **token_to_argv(t_astnode *node) char **content; t_ld *ld; - if (node->type == TK_COMMAND) + if (node->type == TK_WORD || node->type == TK_ASSIGNEMENT_WORD) { ld = node->data.token; my_tab = NULL; diff --git a/42sh/src/exec/exec_elif.c b/42sh/src/exec/exec_elif.c index 235b1938..ffefcdba 100644 --- a/42sh/src/exec/exec_elif.c +++ b/42sh/src/exec/exec_elif.c @@ -14,14 +14,13 @@ int exec_elif(t_btree **ast) { - int test; - - (void)ast; - test = 0; - if (test) + if (data_singleton()->exec.process.if_branch == 1) + return (0); + ft_exec(&(*ast)->left); + if (data_singleton()->exec.process.status == 1) { + data_singleton()->exec.process.if_branch = 1; ft_exec(&(*ast)->right); } - // btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_else.c b/42sh/src/exec/exec_else.c index f94735c1..9b31f5c6 100644 --- a/42sh/src/exec/exec_else.c +++ b/42sh/src/exec/exec_else.c @@ -14,7 +14,10 @@ int exec_else(t_btree **ast) { - ft_exec(&(*ast)->right); - //btree_delone(ast, &ast_free); + if (data_singleton()->exec.process.if_branch == 0) + { + data_singleton()->exec.process.if_branch = 1; + ft_exec(&(*ast)->right); + } return (0); } diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c new file mode 100644 index 00000000..e1defebc --- /dev/null +++ b/42sh/src/exec/exec_for.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_until.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ +/* Updated: 2017/02/06 20:42:21 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_for(t_btree **ast) +{ + t_astnode *node; + t_list *temp; +// char **av = NULL; + char *var; + + + node = (*ast)->item; + temp = node->data.wordlist; + var = temp->content; + builtin_setenv("setenv", (char*[]){var, 0}, data_singleton()->local_var); + while (temp) + { + //process expansion av = token_to_char(temp->content) + builtin_setenv("setenv", (char*[]){var, 0}, data_singleton()->local_var); + ft_exec(&(*ast)->right); + temp = temp->next; + } + return (0); +} diff --git a/42sh/src/exec/exec_func.c b/42sh/src/exec/exec_func.c new file mode 100644 index 00000000..a4a34f66 --- /dev/null +++ b/42sh/src/exec/exec_func.c @@ -0,0 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_while.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ +/* Updated: 2017/02/06 22:05:35 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + + diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index 667c32de..81aab2a7 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -14,7 +14,12 @@ int exec_if(t_btree **ast) { - ft_exec(&(*ast)->right); -// btree_delone(ast, &ast_free); + data_singleton()->exec.process.if_branch = 0; + ft_exec(&(*ast)->left); + if (data_singleton()->exec.process.status == 1) + { + data_singleton()->exec.process.if_branch = 1; + ft_exec(&(*ast)->right); + } return (0); } diff --git a/42sh/src/exec/exec_until.c b/42sh/src/exec/exec_until.c index 62b2a567..6f1e0c33 100644 --- a/42sh/src/exec/exec_until.c +++ b/42sh/src/exec/exec_until.c @@ -14,12 +14,11 @@ int exec_until(t_btree **ast) { - int test; - - test = 0; - while (test++ != 10) + ft_exec(&(*ast)->left); + while (data_singleton()->exec.process.status == 0) + { ft_exec(&(*ast)->right); - -// btree_delone(ast, &ast_free); + ft_exec(&(*ast)->left); + } return (0); } diff --git a/42sh/src/exec/loop_del.c b/42sh/src/exec/exec_var.c similarity index 65% rename from 42sh/src/exec/loop_del.c rename to 42sh/src/exec/exec_var.c index 1bdda0fd..e830950d 100644 --- a/42sh/src/exec/loop_del.c +++ b/42sh/src/exec/exec_var.c @@ -1,27 +1,24 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* loop_del.c :+: :+: :+: */ +/* exec_while.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 22:39:20 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:20:40 by ariard ### ########.fr */ +/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ +/* Updated: 2017/02/06 22:05:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -int loop_del(t_list *list_ast) +int exec_var(t_btree **ast) { - t_list *temp; + t_astnode *node; + char **av; - while (list_ast) - { - btree_del((t_btree **)list_ast->content, &ast_free); - temp = list_ast; - list_ast = list_ast->next; - ft_lstdelone(&temp, NULL); - } + node = (*ast)->item; + av = token_to_argv(node); + builtin_setenv("setenv", av, data_singleton()->local_var); return (0); } diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index cae778e1..d9824950 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -14,12 +14,11 @@ int exec_while(t_btree **ast) { - int test; - - test = 10; - while (test--) + ft_exec(&(*ast)->left); + while (data_singleton()->exec.process.status == 1) + { ft_exec(&(*ast)->right); - -// btree_delone(ast, &ast_free); + ft_exec(&(*ast)->left); + } return (0); } diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 12c47e05..4a0f872f 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -23,7 +23,6 @@ int data_init(void) data->env = ft_sstrdup(environ); data->comp = NULL; data->opts = SH_OPTS_JOBC; - data->exec.process.path = NULL; data->exec.process.av = NULL; data->exec.process.toclose = STDIN; @@ -45,6 +44,9 @@ int data_init(void) data->jobc.first_job = NULL; data->jobc.current_id = 1; + + data->local_var = NULL; + data->lst_func = NULL; if ((term_name = ft_getenv(data->env, "TERM")) == NULL) return (-1); if (tgetent(NULL, term_name) != 1) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index d372954d..d2e3e825 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -49,7 +49,7 @@ int add_cmd(t_btree **ast, t_list **lst) my_tab = NULL; node = (*ast)->item; node->type = token->type; - if (token->type == TK_WORD) + if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index e2eda0fe..ada2a7be 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -23,7 +23,10 @@ int isfunc(t_btree **ast, t_list **lst) { node = (*ast)->item; if (node->type == TK_WORD && token->type == CLOSE_LIST) + { node->type = FNAME; + add_one_func(ast, lst); + } if (node->type == FNAME && node->full == 0) return (1); if (isfunc(&(*ast)->right, lst) == 1) @@ -62,4 +65,9 @@ int add_func_sep(t_btree **ast, t_list **lst) return (add_sep(&(*ast)->right, lst)); } - +int add_one_func(t_btree **ast, t_list **lst) +{ + (void)lst; + ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(ast, sizeof(*ast))); + return (0); +} diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index afccf9df..dba05036 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -187,7 +187,7 @@ t_aggrematch g_aggrematch[] = {CLOSE_LIST, PATTERN, CASE_LIST_NS, PATTERN_CASE}, {CLOSE_LIST, FUNC_NAME, FUNCTION_DEFINITION, FUNC_NAME}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0}, - {BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, + {BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, From 871b4da00010fc0a45069ad48d453fcdb44d0c13 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Tue, 28 Feb 2017 19:28:01 +0100 Subject: [PATCH 106/206] test --- 42sh/file | 2 -- 42sh/file1 | 0 42sh/includes/builtin.h | 2 +- 42sh/src/exec/set_exitstatus.c | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_number.c | 2 +- 42sh/src/parser/add_sep.c | 2 +- 42sh/wide | 1 - 42sh/yolo | 2 -- 9 files changed, 5 insertions(+), 10 deletions(-) delete mode 100644 42sh/file delete mode 100644 42sh/file1 delete mode 100644 42sh/wide delete mode 100644 42sh/yolo diff --git a/42sh/file b/42sh/file deleted file mode 100644 index 1d552218..00000000 --- a/42sh/file +++ /dev/null @@ -1,2 +0,0 @@ -ls: feew: No such file or directory -ls: feew: No such file or directory diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/includes/builtin.h b/42sh/includes/builtin.h index 61336315..5efa6dff 100644 --- a/42sh/includes/builtin.h +++ b/42sh/includes/builtin.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:21:56 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:21:05 by ariard ### ########.fr */ +/* Updated: 2017/02/27 20:28:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_exitstatus.c b/42sh/src/exec/set_exitstatus.c index ffb502da..efbbba45 100644 --- a/42sh/src/exec/set_exitstatus.c +++ b/42sh/src/exec/set_exitstatus.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:43:03 by ariard ### ########.fr */ +/* Updated: 2017/02/27 23:20:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index d8799ebe..d5688999 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:04:41 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:39:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 11e9eb6e..3bb079b7 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/02/25 19:55:30 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:39:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index a80093f4..b2954785 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/25 19:28:47 by ariard ### ########.fr */ +/* Updated: 2017/02/25 20:39:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/wide b/42sh/wide deleted file mode 100644 index 6efd26c6..00000000 --- a/42sh/wide +++ /dev/null @@ -1 +0,0 @@ -ls: ewfef: No such file or directory diff --git a/42sh/yolo b/42sh/yolo deleted file mode 100644 index 627968d4..00000000 --- a/42sh/yolo +++ /dev/null @@ -1,2 +0,0 @@ -ls: wefewf: No such file or directory -ls: wefewf: No such file or directory From f5fafb4c191d0e31e67db5f5b745d79313a9556a Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 1 Mar 2017 16:25:53 +0100 Subject: [PATCH 107/206] before pull --- 42sh/Makefile | 3 +- 42sh/includes/parser.h | 36 +++++++-------- 42sh/includes/types.h | 4 +- 42sh/src/lexer/lexer_word.c | 3 +- 42sh/src/lexer/token_print.c | 2 +- 42sh/src/main/ft_putast.c | 4 +- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_cmd.c | 10 ++-- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/{add_file.c => add_redir.c} | 51 ++++++++++++--------- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/aggregate_sym.c | 7 +-- 42sh/src/parser/produce_sym.c | 2 +- 42sh/src/parser/read_stack.c | 2 +- 42sh/src/parser/tree_wrapper.c | 5 +- 15 files changed, 71 insertions(+), 64 deletions(-) rename 42sh/src/parser/{add_file.c => add_redir.c} (59%) diff --git a/42sh/Makefile b/42sh/Makefile index e42b63b4..1971ae9d 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/02/25 00:13:39 by ariard ### ########.fr # +# Updated: 2017/03/01 15:37:46 by ariard ### ########.fr # # # # **************************************************************************** # @@ -234,6 +234,7 @@ parser/add_loop.c\ parser/add_sep.c\ parser/add_case.c\ parser/add_func.c\ +parser/add_redir.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 80ffcebb..c138fcd0 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,6 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ +/* Updated: 2017/03/01 16:24:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,9 +22,9 @@ enum e_parstate { - ERROR = 0, UNDEFINED, SUCCESS, + ERROR, }; # define TK_REDIR(x) (TK_LESS <= x && x <= TK_GREATAND) @@ -83,7 +84,6 @@ int push_stack(t_sym *stack, t_sym new_sym); int pop_stack(t_sym **stack, t_sym erase_sym); int error_syntax(t_list **token); -int error_EOF(void); int ft_read_stack(t_sym *stack); char *read_state(t_sym current); @@ -107,26 +107,18 @@ int build_tree(t_btree **ast, t_list **lst); int add_sep(t_btree **ast, t_list **lst); int add_cmd(t_btree **ast, t_list **lst); int add_file(t_btree **ast, t_list **lst); -int add_redir(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); -int add_loop_condition(t_btree **ast, t_list **lst); int add_condition_cmd(t_btree **ast, t_list **lst); int add_condition_sep(t_btree **ast, t_list **lst); int add_branch(t_btree **ast, t_list **lst); -int add_case_cmd(t_btree **ast, t_list **lst); -int add_case_sep(t_btree **ast, t_list **lst); -int add_pattern(t_btree **ast, t_list **lst); -int add_subshell_cmd(t_btree **ast, t_list **lst); -int add_subshell_sep(t_btree **ast, t_list **lst); -int add_func_cmd(t_btree **ast, t_list **lst); -int add_func_sep(t_btree **ast, t_list **lst); -int isloop(t_btree **ast, t_list **lst); -int isdir(t_btree **ast, t_list **lst); -int iscase(t_btree **ast, t_list **lst); -int iscondition(t_btree **ast, t_list **lst); -int issubshell(t_btree **ast, t_list **lst); -int isfunc(t_btree **ast, t_list **lst); +int add_redir_word(t_btree **ast, t_list **lst) +int add_redir_type(t_btree **ast, t_list **lst) +int isloop(t_btree **ast); +int isdir(t_btree **ast); +int iscondition(t_btree **ast, t_list **list); +int isdir_sep(t_list **list); +int isdir_word(t_btree **ast, t_list **list); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); @@ -150,10 +142,15 @@ struct s_redir int close; }; +struct s_cmd +{ + t_list * redir; + t_ld *token; +} + union u_astdata { - t_redir redir; - t_ld *token; + t_cmd *cmd; t_list *wordlist; char **sstr; char *str; @@ -164,7 +161,6 @@ struct s_astnode int nest; int full; - int pattern; t_type type; t_astdata data; }; diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 474b8b7a..b3a417ca 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/02/25 19:37:31 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:19:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,7 @@ typedef struct s_token t_token; typedef struct s_ld t_ld; typedef struct s_astnode t_astnode; typedef struct s_redir t_redir; +typedef struct s_cmd t_cmd; typedef union u_astdata t_astdata; typedef union u_word t_word; typedef long long t_type; @@ -156,6 +157,7 @@ enum e_sym PATTERN_CASE, FUNC_NAME, CLOSE_LIST, + REDIR, ALL = 200, }; diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 157668ba..25f2e6ef 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:10:39 by ariard ### ########.fr */ +/* Updated: 2017/03/01 14:06:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,6 @@ int lexer_word(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = TK_WORD; - DG("lexer word"); if ((state = get_state_global(lexer))) { lexer->state = state; diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index 0c2ca145..98c29591 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:48:47 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:25:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 60d40e35..6b35fe87 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/02/25 00:17:44 by ariard ### ########.fr */ +/* Updated: 2017/03/01 15:56:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ char *ft_putast(void *nodein) t_astnode *node; node = nodein; + if (node->type == REDIR) + return ("REDIR"); if (node->type == CLOSE_LIST) return ("CLOSE_LIST"); if (node->type == FNAME) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 76e2b3a5..b10509f4 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:34:27 by ariard ### ########.fr */ +/* Updated: 2017/03/01 15:55:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index d372954d..d4f7542c 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/02/25 18:50:30 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:25:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,13 +18,12 @@ int add_cmd(t_btree **ast, t_list **lst) t_astnode *node; char **my_tab; - DG("add cmd"); if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) return (0); else if (!*ast) gen_node(ast); else if (isdir(ast, lst)) - return (add_file(ast, lst)); + return (add_redir_word(ast, lst)); else if (isloop(ast, lst) == 3) return (add_loop_condition(ast, lst)); else if (isloop(ast, lst)) @@ -44,16 +43,17 @@ int add_cmd(t_btree **ast, t_list **lst) else if (isfunc(ast, lst)) return (add_func_cmd(ast, lst)); else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE) + && node->type != TK_PAREN_CLOSE && node->type != TK_WORD) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; node = (*ast)->item; node->type = token->type; if (token->type == TK_WORD) { + DG("add data"); my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); - ft_ld_pushback(&node->data.token, my_tab); + ft_ld_pushback(&node->data.cmd.token, my_tab); } return (0); } diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index abadea9c..a3987a98 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/02/25 00:11:09 by ariard ### ########.fr */ +/* Updated: 2017/03/01 15:59:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_redir.c similarity index 59% rename from 42sh/src/parser/add_file.c rename to 42sh/src/parser/add_redir.c index c056049c..bb750272 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_redir.c @@ -6,13 +6,25 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/02/25 20:33:12 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:25:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int isdir(t_btree **ast, t_list **list) +int isdir_sep(t_list **list) +{ + t_token *token; + + token = (*list)->content; + if (token->type == TK_LESS || token->type == TK_GREAT || + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || TK_DGREAT) + return (1); + return (0); +} + +int isdir_word(t_btree **ast, t_list **list) { t_astnode *node; t_token *token; @@ -20,25 +32,14 @@ int isdir(t_btree **ast, t_list **list) token = (*list)->content; if (*ast) { - DG("isdir"); node = (*ast)->item; - if ((node->type == TK_LESS || node->type == TK_GREAT - || node->type == TK_LESSAND || node->type == TK_GREATAND - || node->type == TK_DGREAT) - && token->type == TK_WORD) - return (1); - if ((node->type == TK_LESS || node->type == TK_GREAT - || node->type == TK_LESSAND || node->type == TK_GREATAND - || node->type == TK_DGREAT) - && (token->type == TK_LESS || token->type == TK_GREAT - || token->type == TK_LESSAND || token->type == TK_GREATAND - || token->type == TK_DGREAT)) - return (2); + if (token->type == TK_WORD && node->type == REDIR) + return (1); } return (0); } -int add_file(t_btree **ast, t_list **lst) +int add_redir_word(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; @@ -46,16 +47,21 @@ int add_file(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; - if (node->data.wordlist) + if (node->data.cmd.redir) { DG("add file"); - redir = (ft_lstlast(node->data.wordlist))->content; - redir->word.word = token->data; - } + redir = (ft_lstlast(node->data.cmd.redir))->content; + if (redir->type == TK_DLESS) + redir->word.word = NULL; + else if (ft_stris((char *)token->data, &isdigit)) + redir->word.fd = ft_atoi(token->data); + else + redir->word.word = token->data; + } return (0); } -int add_redir(t_btree **ast, t_list **lst) +int add_redir_type(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; @@ -66,8 +72,9 @@ int add_redir(t_btree **ast, t_list **lst) gen_node(ast); token = (*lst)->content; node = (*ast)->item; + node->type = REDIR; redir = ft_memalloc(sizeof(redir)); redir->type = token->type; - ft_lsteadd(&node->data.wordlist, ft_lstnew(redir, sizeof(redir))); + ft_lsteadd(&node->data.cmd.redir, ft_lstnew(redir, sizeof(redir))); return (0); } diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index b2954785..54b8e3fa 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/02/25 20:39:38 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:25:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 879045ca..3da1846f 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/25 13:53:57 by ariard ### ########.fr */ +/* Updated: 2017/03/01 14:45:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -92,8 +92,6 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, //to check - {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, - {IO_HERE, ALL, IO_REDIRECT, 0}, {FILENAME, TK_LESS, IO_FILE, TK_LESS}, {FILENAME, TK_LESSAND, IO_FILE, TK_LESSAND}, {FILENAME, TK_GREAT, IO_FILE, TK_GREAT}, @@ -102,9 +100,12 @@ t_aggrematch g_aggrematch[] = {FILENAME, TK_LESSGREAT, IO_FILE, TK_LESSGREAT}, {FILENAME, TK_CLOBBER, IO_FILE, TK_CLOBBER}, + {HERE_END, TK_DLESS, IO_HERE, TK_DLESS}, //to check {IO_FILE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, {IO_FILE, ALL, IO_REDIRECT, 0}, + {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, + {IO_HERE, ALL, IO_REDIRECT, 0}, {IO_REDIRECT, CMD_SUPERIOR, CMD_SUPERIOR, CMD_SUPERIOR}, {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, REDIRECT_LIST}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 4a2cbad4..26a0448b 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/25 13:54:08 by ariard ### ########.fr */ +/* Updated: 2017/03/01 14:40:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index ebb6e4d8..a92a8b9d 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/02/25 00:15:00 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:25:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index ac2d3d5b..0928d24a 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/02/25 19:10:34 by ariard ### ########.fr */ +/* Updated: 2017/03/01 15:59:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,8 +26,7 @@ int gen_node(t_btree **ast) if (!*ast) { *ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*ast)->item)->data.token = NULL; - ((t_astnode *)(*ast)->item)->data.redir.word.word = NULL; + ((t_astnode *)(*ast)->item)->data.cmd = NULL; ((t_astnode *)(*ast)->item)->nest = 0; ((t_astnode *)(*ast)->item)->full = 0; ((t_astnode *)(*ast)->item)->type = 0; From aa9097575da99f3dae5f568715a120c9c02cabb6 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 1 Mar 2017 18:04:29 +0100 Subject: [PATCH 108/206] rewef --- 42sh/F | 0 42sh/Makefile | 3 +-- 42sh/includes/parser.h | 22 +++++++++++----------- 42sh/includes/types.h | 2 +- 42sh/src/exec/ast_free.c | 11 ++++++++--- 42sh/src/exec/exec_case.c | 2 +- 42sh/src/exec/exec_command.c | 4 ++-- 42sh/src/exec/exec_less.c | 5 +++-- 42sh/src/exec/exec_redir.c | 6 +++--- 42sh/src/line-editing/readline.c | 2 +- 42sh/src/main/main.c | 4 ++-- 42sh/src/parser/add_cmd.c | 9 ++++++--- 42sh/src/parser/add_redir.c | 22 ++++++++++++++-------- 42sh/src/parser/add_sep.c | 4 +--- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/build_tree.c | 10 +++++----- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/ft_parse.c | 1 + 42sh/src/parser/parser_init.c | 2 +- 42sh/src/parser/read_stack.c | 4 +++- 42sh/src/parser/tree_wrapper.c | 9 ++++----- 21 files changed, 70 insertions(+), 56 deletions(-) create mode 100644 42sh/F diff --git a/42sh/F b/42sh/F new file mode 100644 index 00000000..e69de29b diff --git a/42sh/Makefile b/42sh/Makefile index 771e4176..d9ff1983 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/01 15:37:46 by ariard ### ########.fr # +# Updated: 2017/03/01 16:42:16 by ariard ### ########.fr # # # # **************************************************************************** # @@ -231,7 +231,6 @@ main/shell_init.c\ parser/add_cmd.c\ parser/add_subshell.c\ parser/add_condition.c\ -parser/add_file.c\ parser/add_loop.c\ parser/add_sep.c\ parser/add_case.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index a64a7cbb..93e4eb83 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:28:29 by ariard ### ########.fr */ +/* Updated: 2017/03/01 18:02:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,9 +22,9 @@ enum e_parstate { + ERROR = 0, UNDEFINED, SUCCESS, - ERROR, }; # define TK_REDIR(x) (TK_LESS <= x && x <= TK_GREATAND) @@ -84,9 +84,10 @@ int push_stack(t_sym *stack, t_sym new_sym); int pop_stack(t_sym **stack, t_sym erase_sym); int error_syntax(t_list **token); +int error_EOF(void); int ft_read_stack(t_sym *stack); -char *read_state(t_sym current); +char *read_state(t_sym current); /* @@ -109,11 +110,12 @@ int add_cmd(t_btree **ast, t_list **lst); int add_file(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); +int add_loop_condition(t_btree **ast, t_list **lst); int add_condition_cmd(t_btree **ast, t_list **lst); int add_condition_sep(t_btree **ast, t_list **lst); int add_branch(t_btree **ast, t_list **lst); -int add_redir_word(t_btree **ast, t_list **lst) -int add_redir_type(t_btree **ast, t_list **lst) +int add_redir_word(t_btree **ast, t_list **lst); +int add_redir_type(t_btree **ast, t_list **lst); int add_case_cmd(t_btree **ast, t_list **lst); int add_case_sep(t_btree **ast, t_list **lst); int add_pattern(t_btree **ast, t_list **lst); @@ -123,17 +125,15 @@ int add_func_cmd(t_btree **ast, t_list **lst); int add_func_sep(t_btree **ast, t_list **lst); int add_one_func(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); -int isdir(t_btree **ast, t_list **lst); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); int issubshell(t_btree **ast, t_list **lst); int isfunc(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); -int isloop(t_btree **ast); int isdir(t_btree **ast); int iscondition(t_btree **ast, t_list **list); -int isdir_sep(t_list **list); +int isdir_sep(t_btree **ast, t_list **list); int isdir_word(t_btree **ast, t_list **list); /* @@ -157,13 +157,13 @@ struct s_redir struct s_cmd { - t_list * redir; + t_list *redir; t_ld *token; -} +}; union u_astdata { - t_cmd *cmd; + t_cmd cmd; t_list *wordlist; char **sstr; char *str; diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 04a80dc8..b5d64f79 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:19:09 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:55:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 7f7d9591..66abd247 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:41:26 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:36:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,10 +16,14 @@ void ast_free(void *data, size_t content_size) { t_astnode *node; + (void)node; + (void)data; + (void)content_size; +/* (void)content_size; node = data; if (node->type == TK_COMMAND) - ft_ld_clear(&node->data.token, &ft_tabdel); + ft_ld_clear(&node->data.cmd.token, &ft_tabdel); else if (node->type == TK_SUBSHELL) { ft_sstrfree(node->data.sstr); @@ -27,6 +31,7 @@ void ast_free(void *data, size_t content_size) } else if (node->type == TK_LESS || node->type == TK_GREAT || node->type == TK_DGREAT) { - ft_strdel(&node->data.redir.word.word); + ft_strdel(&node->data.cmd.redir.word.word); } +*/ } diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index 3a2847f8..dd671440 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:31:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/01 16:29:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 358e5887..7873b14a 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/02/20 22:43:53 by jhalford ### ########.fr */ +/* Updated: 2017/03/01 16:32:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ char **token_to_argv(t_astnode *node) if (node->type == TK_WORD || node->type == TK_ASSIGNEMENT_WORD) { - ld = node->data.token; + ld = node->data.cmd.token; my_tab = NULL; while (ld) { diff --git a/42sh/src/exec/exec_less.c b/42sh/src/exec/exec_less.c index 50797abd..1bbdb78c 100644 --- a/42sh/src/exec/exec_less.c +++ b/42sh/src/exec/exec_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:08 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:32:26 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:37:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,8 +17,9 @@ int exec_less(t_btree **ast) t_astnode *node; int fd; + fd = 0; node = (*ast)->item; - fd = open(node->data.redir.word.word, O_RDONLY); +// fd = open(node->data.redir.word.word, O_RDONLY); data_singleton()->exec.process.fdin = fd; /* ft_strappend(&data->exec.process.command, "<"); */ /* ft_strappend(&data->exec.process.command, node->data.redir.word.word); */ diff --git a/42sh/src/exec/exec_redir.c b/42sh/src/exec/exec_redir.c index c5816600..52b8c96d 100644 --- a/42sh/src/exec/exec_redir.c +++ b/42sh/src/exec/exec_redir.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:27:51 by jhalford #+# #+# */ -/* Updated: 2017/02/21 20:14:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/01 16:38:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,8 +19,8 @@ int exec_redir(t_btree **ast) p = &data_singleton()->exec.process; node = (*ast)->item; - node->data.redir.type = node->type; - ft_lsteadd(&p->redirs, ft_lstnew(&node->data.redir,sizeof(node->data.redir))); +// node->data.redir.type = node->type; +// ft_lsteadd(&p->redirs, ft_lstnew(&node->data.redir,sizeof(node->data.redir))); ft_exec(&(*ast)->left); // btree_delone(ast, &ast_free); return (0); diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index 383a4001..bbdd75f2 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/02/21 20:04:31 by jhalford ### ########.fr */ +/* Updated: 2017/03/01 17:19:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index b10509f4..a9cbbd1a 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/01 15:55:23 by ariard ### ########.fr */ +/* Updated: 2017/03/01 17:50:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ int handle_instruction(int fd) DG("START: state=%i", parser.state); while (1) { - if ((ret = readline(fd, get_lexer_stack(lexer), &str))) + if ((ret = readline(fd, get_lexer_stack(lexer) || parser.state == UNDEFINED, &str))) { if (ret == -1) return (-1); diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 5eaa97a0..5ba1159d 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:25:27 by ariard ### ########.fr */ +/* Updated: 2017/03/01 18:02:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,8 +22,10 @@ int add_cmd(t_btree **ast, t_list **lst) return (0); else if (!*ast) gen_node(ast); - else if (isdir(ast, lst)) + else if (isdir_word(ast, lst)) return (add_redir_word(ast, lst)); + else if (isdir_sep(ast, lst)) + return (add_redir_type(ast, lst)); else if (isloop(ast, lst) == 3) return (add_loop_condition(ast, lst)); else if (isloop(ast, lst)) @@ -43,7 +45,8 @@ int add_cmd(t_btree **ast, t_list **lst) else if (isfunc(ast, lst)) return (add_func_cmd(ast, lst)); else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != TK_WORD) + && node->type != TK_PAREN_CLOSE && node->type != TK_WORD + && node->type != REDIR) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; node = (*ast)->item; diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index bb750272..41c1eec6 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,21 +6,27 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:25:15 by ariard ### ########.fr */ +/* Updated: 2017/03/01 17:59:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int isdir_sep(t_list **list) +int isdir_sep(t_btree **ast, t_list **list) { + t_astnode *node; t_token *token; token = (*list)->content; - if (token->type == TK_LESS || token->type == TK_GREAT || - || token->type == TK_GREATAND || token->type == TK_LESSAND - || token->type == TK_DLESS || TK_DGREAT) - return (1); + if (*ast) + { + node = (*ast)->item; + if ((node->type == TK_WORD || node->type == REDIR) + && (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || token->type == TK_DGREAT)) + return (1); + } return (0); } @@ -53,7 +59,7 @@ int add_redir_word(t_btree **ast, t_list **lst) redir = (ft_lstlast(node->data.cmd.redir))->content; if (redir->type == TK_DLESS) redir->word.word = NULL; - else if (ft_stris((char *)token->data, &isdigit)) + else if (ft_stris((char *)token->data, &ft_isdigit)) redir->word.fd = ft_atoi(token->data); else redir->word.word = token->data; @@ -68,7 +74,7 @@ int add_redir_type(t_btree **ast, t_list **lst) t_redir *redir; DG("add redir"); - if (!ast) + if (!*ast) gen_node(ast); token = (*lst)->content; node = (*ast)->item; diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 54b8e3fa..076f16f8 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:25:35 by ariard ### ########.fr */ +/* Updated: 2017/03/01 18:02:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,8 +27,6 @@ int add_sep(t_btree **ast, t_list **lst) return (add_case_sep(ast, lst)); else if (issubshell(ast, lst)) return (add_subshell_sep(ast, lst)); - else if (isdir(ast, lst) == 2) - return (add_redir(ast, lst)); else if (isfunc(ast, lst)) return (add_func_sep(ast, lst)); if (!*ast) diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 3cba259f..0ddc11af 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:27:17 by ariard ### ########.fr */ +/* Updated: 2017/03/01 17:00:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 2d8a7e70..5b584160 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/02/25 19:21:05 by ariard ### ########.fr */ +/* Updated: 2017/03/01 18:01:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,10 +17,10 @@ t_treematch g_treematch[] = {TK_WORD, &add_cmd}, {TK_PIPE, &add_sep}, {TK_SEMI, &add_sep}, - {TK_GREAT, &add_sep}, - {TK_LESS, &add_sep}, - {TK_DGREAT, &add_sep}, - {TK_DLESS, &add_sep}, + {TK_GREAT, &add_cmd}, + {TK_LESS, &add_cmd}, + {TK_DGREAT, &add_cmd}, + {TK_DLESS, &add_cmd}, {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, {TK_WHILE, &add_cmd}, diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 169be95f..7dde6502 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/02/24 19:12:35 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:53:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 01f978b8..fbf5b2da 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -58,5 +58,6 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) } if (parser->state == SUCCESS) DG("sucessful parsing"); + DG("yolo"); return (0); } diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 49998c26..f9e87aec 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/02/21 20:01:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/01 17:43:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index a92a8b9d..9910a4fc 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:25:33 by ariard ### ########.fr */ +/* Updated: 2017/03/01 17:17:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == UNDEFINED) + return ("UNDEFINED"); if (current == BRACE_CLAUSE) return ("BRACE_CLAUSE"); if (current == FUNC_NAME) diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 0928d24a..4a17daca 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/01 15:59:32 by ariard ### ########.fr */ +/* Updated: 2017/03/01 16:47:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,13 +26,12 @@ int gen_node(t_btree **ast) if (!*ast) { *ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*ast)->item)->data.cmd = NULL; + ((t_astnode *)(*ast)->item)->data.cmd.redir = NULL; + ((t_astnode *)(*ast)->item)->data.cmd.token = NULL; ((t_astnode *)(*ast)->item)->nest = 0; ((t_astnode *)(*ast)->item)->full = 0; ((t_astnode *)(*ast)->item)->type = 0; ((t_astnode *)(*ast)->item)->pattern = 0; } return (0); -} - - +} From 722a290aee2a5ee0b93ccbadd53f8ce2dd6a3935 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 1 Mar 2017 23:01:43 +0100 Subject: [PATCH 109/206] yale sauf subshell --- 42sh/F | 0 42sh/includes/parser.h | 2 +- 42sh/includes/types.h | 2 +- 42sh/src/main/main.c | 6 ++++-- 42sh/src/parser/add_cmd.c | 6 +++--- 42sh/src/parser/add_redir.c | 9 ++++++++- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/build_tree.c | 3 ++- 42sh/src/parser/parser_init.c | 2 +- 42sh/src/parser/read_stack.c | 10 +++++----- 10 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 42sh/F diff --git a/42sh/F b/42sh/F deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 93e4eb83..7001687d 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/01 18:02:01 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:39:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index b5d64f79..3445dc7b 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:55:33 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:39:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index a9cbbd1a..1050a47c 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/01 17:50:59 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:59:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,8 +30,10 @@ int handle_instruction(int fd) DG("START: state=%i", parser.state); while (1) { - if ((ret = readline(fd, get_lexer_stack(lexer) || parser.state == UNDEFINED, &str))) + if ((ret = readline(fd, get_lexer_stack(lexer) || + parser.state == UNDEFINED, &str))) { + ft_putstr("bonjour"); if (ret == -1) return (-1); return (parser.state == UNDEFINED ? error_EOF() : 1); diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 5ba1159d..3faa94a2 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/01 18:02:27 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:46:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,12 +20,12 @@ int add_cmd(t_btree **ast, t_list **lst) if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) return (0); + else if (isdir_sep(ast, lst)) + return (add_redir_type(ast, lst)); else if (!*ast) gen_node(ast); else if (isdir_word(ast, lst)) return (add_redir_word(ast, lst)); - else if (isdir_sep(ast, lst)) - return (add_redir_type(ast, lst)); else if (isloop(ast, lst) == 3) return (add_loop_condition(ast, lst)); else if (isloop(ast, lst)) diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 41c1eec6..ae36029c 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:59:17 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:44:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,13 @@ int isdir_sep(t_btree **ast, t_list **list) || token->type == TK_DLESS || token->type == TK_DGREAT)) return (1); } + if (!*ast) + { + if (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || token->type == TK_DGREAT) + return (1); + } return (0); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 0ddc11af..07bcf532 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:00:05 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:55:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 5b584160..f1360913 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/01 18:01:38 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:39:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,7 @@ t_treematch g_treematch[] = {TK_DLESS, &add_cmd}, {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, + {TK_AMP, &add_sep}, {TK_WHILE, &add_cmd}, {TK_UNTIL, &add_cmd}, {TK_DO, &add_cmd}, diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index f9e87aec..3e78e937 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:43:08 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:54:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 9910a4fc..8373fc1f 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:17:20 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:53:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,10 @@ char *read_state(t_sym current) { - if (current == UNDEFINED) - return ("UNDEFINED"); + if (current == LINEBREAK) + return ("LINEBREAK"); + if (current == CLOSE_LIST) + return ("CLOSE_LIST"); if (current == BRACE_CLAUSE) return ("BRACE_CLAUSE"); if (current == FUNC_NAME) @@ -192,8 +194,6 @@ char *read_state(t_sym current) return ("ALL"); if (current == NEWLINE_LIST) return ("NEWLINE_LIST"); - if (current == LINEBREAK) - return ("LINEBREAK"); if (current != 0) return ("NON-DEFINED"); if (current == 0) From 3857b0678525907e8cc363b026848a327bf0a713 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Thu, 2 Mar 2017 21:17:16 +0100 Subject: [PATCH 110/206] execution much simpler with new parser, thx ariard! --- 42sh/Makefile | 28 +++--- 42sh/includes/exec.h | 30 ++++--- 42sh/includes/job_control.h | 6 +- 42sh/includes/lexer.h | 2 +- 42sh/includes/minishell.h | 2 +- 42sh/includes/parser.h | 5 +- 42sh/includes/types.h | 2 +- 42sh/libft | 2 +- 42sh/src/builtin/is_builtin.c | 2 +- 42sh/src/exec/exec_ampersand.c | 18 ++-- 42sh/src/exec/exec_and_if.c | 43 ++++++---- 42sh/src/exec/exec_command.c | 86 ++++++++----------- 42sh/src/exec/exec_or_if.c | 43 ++++++---- 42sh/src/exec/exec_redir.c | 27 ------ 42sh/src/exec/exec_semi.c | 10 ++- 42sh/src/exec/ft_exec.c | 21 ++--- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/process_redirect.c | 2 +- 42sh/src/exec/process_reset.c | 12 ++- 42sh/src/exec/process_setexec.c | 21 ++--- 42sh/src/exec/process_setgroup.c | 2 +- .../{job_addprocess.c => add_new_job.c} | 36 ++++---- 42sh/src/job-control/job_update_id.c | 2 +- 42sh/src/job-control/process_free.c | 2 +- 42sh/src/job-control/put_job_in_background.c | 2 +- 42sh/src/job-control/put_job_in_foreground.c | 2 +- 42sh/src/lexer/get_state_global.c | 2 +- 42sh/src/lexer/lexer_assignement_word.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/data_init.c | 39 +++++---- 42sh/src/main/ft_putast.c | 2 +- 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_init.c | 2 +- 42sh/src/parser/add_cmd.c | 15 +++- 34 files changed, 234 insertions(+), 242 deletions(-) delete mode 100644 42sh/src/exec/exec_redir.c rename 42sh/src/job-control/{job_addprocess.c => add_new_job.c} (56%) diff --git a/42sh/Makefile b/42sh/Makefile index 9929b18b..6492f853 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/01 16:42:16 by ariard ### ########.fr # +# Updated: 2017/03/02 16:23:48 by jhalford ### ########.fr # # # # **************************************************************************** # @@ -14,7 +14,7 @@ NAME = 42sh CC = gcc FLAGS = -Wall -Wextra -Werror -D_FLAGS = -g +D_FLAGS = -g DELTA = $$(echo "$$(tput cols)-47"|bc) @@ -62,22 +62,22 @@ exec/ast_free.c\ exec/bad_fd.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ +exec/exec_case.c\ +exec/exec_case_branch.c\ exec/exec_command.c\ exec/exec_default.c\ exec/exec_elif.c\ exec/exec_else.c\ +exec/exec_for.c\ +exec/exec_func.c\ exec/exec_if.c\ exec/exec_less.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ -exec/exec_redir.c\ exec/exec_semi.c\ exec/exec_until.c\ -exec/exec_while.c\ exec/exec_var.c\ -exec/exec_for.c\ -exec/exec_case.c\ -exec/exec_case_branch.c\ +exec/exec_while.c\ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ @@ -173,9 +173,11 @@ lexer/get_reserved_words.c\ lexer/get_state_global.c\ lexer/get_state_redir.c\ lexer/insert_newline.c\ +lexer/lexer_assignement_word.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ lexer/lexer_comment.c\ +lexer/lexer_curly_brackets.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ lexer/lexer_dless.c\ @@ -190,8 +192,6 @@ lexer/lexer_lex.c\ lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_paren.c\ -lexer/lexer_curly_brackets.c\ -lexer/lexer_assignement_word.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ lexer/lexer_word.c\ @@ -227,14 +227,14 @@ main/shell_exit.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ -parser/add_cmd.c\ -parser/add_subshell.c\ -parser/add_condition.c\ -parser/add_loop.c\ -parser/add_sep.c\ parser/add_case.c\ +parser/add_cmd.c\ +parser/add_condition.c\ parser/add_func.c\ +parser/add_loop.c\ parser/add_redir.c\ +parser/add_sep.c\ +parser/add_subshell.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 22280dc8..3090d73e 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:41:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 21:02:14 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,15 @@ # define IS_PIPEEND(p) (p->fdout == STDOUT) # define IS_PIPESINGLE(p) (IS_PIPESTART(p) && IS_PIPEEND(p)) +# define EXEC_BG (1 << 1) +# define EXEC_AND_IF (1 << 2) +# define EXEC_OR_IF (1 << 3) +# define EXEC_IS_BG(j) (j & EXEC_BG) +# define EXEC_IS_FG(j) (!EXEC_IS_BG(j)) +# define EXEC_IS_AND_IF(j) (j & EXEC_AND_IF) +# define EXEC_IS_OR_IF(j) (j & EXEC_JOB_OR_IF) +# define EXEC_AOL_MASK (EXEC_AND_IF | EXEC_OR_IF) + # include "libft.h" # include "types.h" # include "job_control.h" @@ -45,7 +54,6 @@ struct s_process pid_t pid; int fdin; int fdout; - int pipe_count; int to_close; t_list *redirs; int status; @@ -57,13 +65,13 @@ struct s_process struct s_exec { - char *aol_status; - int aol_search; - t_job job; - t_process process; - int fd0save; - int fd1save; - int fd2save; + /* char *aol_status; */ + /* int aol_search; */ + /* t_job job; */ + /* t_process process; */ + int fd_save[3]; + t_flag attrs; + t_list *op_stack; }; struct s_execmap @@ -92,8 +100,8 @@ int exec_ampersand(t_btree **ast); int exec_or_if(t_btree **ast); int exec_and_if(t_btree **ast); int exec_pipe(t_btree **ast); -int exec_redir(t_btree **ast); -int exec_command(t_btree **ast); +/* int exec_redir(t_btree **ast); */ +int exec_job(t_btree **ast); int exec_while(t_btree **ast); int exec_if(t_btree **ast); diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index 418de6eb..744dcad4 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:43:34 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:01:59 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,10 +21,8 @@ # define JOB_NOTIFIED (1 << 0) # define JOB_BG (1 << 1) -# define JOB_IS_BG(j) (j & JOB_BG) -# define JOB_IS_FG(j) !(j & JOB_BG) -#define JOBS_OPTS_L (1 << 0) +# define JOBS_OPTS_L (1 << 0) struct s_job { diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 3551dd8f..927d5dec 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:46:08 by ariard ### ########.fr */ +/* Updated: 2017/03/02 17:15:15 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index fd9768fd..3b482e3c 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:51:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 17:15:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 7001687d..82401142 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -1,12 +1,11 @@ /* ************************************************************************** */ -/* */ -/* ::: :::::::: */ +/* */ /* ::: :::::::: */ /* parser.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/01 22:39:00 by ariard ### ########.fr */ +/* Updated: 2017/03/02 17:10:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 3445dc7b..365aea4c 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/01 22:39:16 by ariard ### ########.fr */ +/* Updated: 2017/03/02 17:49:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/libft b/42sh/libft index bfc8ca20..8f6e64fa 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit bfc8ca207ab4d39f0140322c0f1d368137304a3c +Subproject commit 8f6e64fa9b4ac1dd3e3d5200fb93471ddfeedd40 diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index 2725127f..c0f39c2f 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:40:59 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 21:00:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index f69ed62c..dcd4e16f 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/02/05 22:10:08 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:02:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,13 +14,21 @@ int exec_ampersand(t_btree **ast) { - if (SH_HAS_JOBC(data_singleton()->opts)) - data_singleton()->exec.job.attributes |= JOB_BG; + t_exec *exec; + + exec = &data_singleton()->exec; + push(&exec->op_stack, TK_AMP); ft_exec(&(*ast)->left); - if (SH_HAS_JOBC(data_singleton()->opts)) - data_singleton()->exec.job.attributes &= ~JOB_BG; + exec->attrs &= ~JOB_BG; ft_exec(&(*ast)->right); + /* if (SH_HAS_JOBC(data_singleton()->opts)) */ + /* data_singleton()->exec.job.attributes |= JOB_BG; */ + /* ft_exec(&(*ast)->left); */ + /* if (SH_HAS_JOBC(data_singleton()->opts)) */ + /* data_singleton()->exec.job.attributes &= ~JOB_BG; */ + /* ft_exec(&(*ast)->right); */ + // btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_and_if.c b/42sh/src/exec/exec_and_if.c index 794cfdb9..b475724e 100644 --- a/42sh/src/exec/exec_and_if.c +++ b/42sh/src/exec/exec_and_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:28 by jhalford #+# #+# */ -/* Updated: 2017/02/05 22:10:38 by ariard ### ########.fr */ +/* Updated: 2017/03/02 20:41:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,24 +14,31 @@ int exec_and_if(t_btree **ast) { - t_data *data; + /* t_data *data; */ + t_exec *exec; - data = data_singleton(); - if (data->exec.aol_status == NULL - || (data->exec.aol_search == TK_AND_IF - && *data->exec.aol_status == '0') - || (data->exec.aol_search == TK_OR_IF - && *data->exec.aol_status != '0')) - { - ft_exec(&(*ast)->left); - data->exec.aol_status = ft_getenv(data->env, "?"); - } - data->exec.aol_search = TK_AND_IF; - if (*data->exec.aol_status == '0' - || ((t_astnode*)(*ast)->right->item)->type != TK_COMMAND) - ft_exec(&(*ast)->right); - data->exec.aol_status = NULL; - data->exec.aol_search = 0; + exec = &data_singleton()->exec; + push(&exec->op_stack, TK_AND_IF); + ft_exec(&(*ast)->left); + exec->attrs |= JOB_AND_IF; + ft_exec(&(*ast)->right); + + /* data = data_singleton(); */ + /* if (data->exec.aol_status == NULL */ + /* || (data->exec.aol_search == TK_AND_IF */ + /* && *data->exec.aol_status == '0') */ + /* || (data->exec.aol_search == TK_OR_IF */ + /* && *data->exec.aol_status != '0')) */ + /* { */ + /* ft_exec(&(*ast)->left); */ + /* data->exec.aol_status = ft_getenv(data->env, "?"); */ + /* } */ + /* data->exec.aol_search = TK_AND_IF; */ + /* if (*data->exec.aol_status == '0' */ + /* || ((t_astnode*)(*ast)->right->item)->type != TK_COMMAND) */ + /* ft_exec(&(*ast)->right); */ + /* data->exec.aol_status = NULL; */ + /* data->exec.aol_search = 0; */ // btree_delone(ast, &ast_free); return (0); diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 3d0807b5..e22d5585 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,13 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/02 12:36:28 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 21:16:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -char **token_to_argv(t_astnode *node) +char **token_to_argv(t_cmd *cmd) { char **my_tab; int index; @@ -20,66 +20,50 @@ char **token_to_argv(t_astnode *node) char **content; t_ld *ld; - if (node->type == TK_WORD || node->type == TK_ASSIGNEMENT_WORD) + ld = cmd->token; + my_tab = NULL; + while (ld) { - ld = node->data.cmd.token; - my_tab = NULL; - while (ld) + content = ld->content; + if ((expand = glob(content[0], (unsigned char *)content[1], (unsigned char *)content[2]))) { - content = ld->content; - if ((expand = glob(content[0], (unsigned char *)content[1], (unsigned char *)content[2]))) - { - index = -1; - while (expand[++index]) - my_tab = ft_sstradd(my_tab, expand[index]); - ft_tabdel(&expand); - } - ld = ld->next; + index = -1; + while (expand[++index]) + my_tab = ft_sstradd(my_tab, expand[index]); + ft_tabdel(&expand); } - return (my_tab); + ld = ld->next; } - else if (node->type == TK_SUBSHELL) - return (ft_sstrdup(node->data.sstr)); - return (NULL); + return (my_tab); } -int exec_command(t_btree **ast) +int exec_job(t_btree **ast) { - t_astnode *node; - t_process *p; - t_job *job; + t_list *cmd; + t_process p; + t_list *first_process; int fds[2]; - node = (*ast)->item; - p = &data_singleton()->exec.process; - job = &data_singleton()->exec.job; - if (!(p->av = token_to_argv(node))) + cmd = ((t_astnode *)(*ast)->item)->data; + exec = &data_singleton()->exec; + if (pop(&exec.op_stack) == TK_AMP) + exec->attrs |= JOB_BG; + first_process = NULL; + fds[PIPE_READ] = STDIN; + while (cmd) { - DG("globbing error"); - return (1); + p.fdin = fds[PIPE_READ]; + p.fdout = cmd->next ? pipe(fds) && fds[PIPE_WRITE] : STDOUT; + process_reset(&p); + if (!(p.av = token_to_argv(cmd->content))) + return (1); + process_setexec(cmd->content, &p); + if (!(launch_process(p))) + ft_lstadd(&first_process, ft_lstnew(&p, sizeof(p))); + cmd = cmd->next; } - process_setexec(node->type, p); - if (p->pipe_count) - { - pipe(fds); - p->fdout = fds[PIPE_WRITE]; - p->to_close = fds[PIPE_READ]; - p->pipe_count--; - } - if (!(launch_process(p))) - { - job_addprocess(p); - if (IS_PIPEEND(p)) - { - JOB_IS_FG(job->attributes) ? - put_job_in_foreground(job, 0): - put_job_in_background(job, 0); - job->pgid = 0; - } - } - if (p->fdout == fds[PIPE_WRITE]) - p->fdin = fds[PIPE_READ]; - process_reset(p); + add_new_job(first_process, EXEC_IS_FG(exec->attrs)); + ft_lstadd(&jobc->first_job, ft_lstnew(&job, sizeof(*job))); // btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_or_if.c b/42sh/src/exec/exec_or_if.c index 63995843..a0c8e3f6 100644 --- a/42sh/src/exec/exec_or_if.c +++ b/42sh/src/exec/exec_or_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 21:06:17 by jhalford #+# #+# */ -/* Updated: 2017/02/05 22:12:08 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:02:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,24 +14,31 @@ int exec_or_if(t_btree **ast) { - t_data *data; + /* t_data *data; */ + t_exec *exec; - data = data_singleton(); - if (data->exec.aol_status == NULL - || (data->exec.aol_search == TK_AND_IF - && *data->exec.aol_status == '0') - || (data->exec.aol_search == TK_OR_IF - && *data->exec.aol_status != '0')) - { - ft_exec(&(*ast)->left); - data->exec.aol_status = ft_getenv(data->env, "?"); - } - data->exec.aol_search = TK_OR_IF; - if (*data->exec.aol_status != '0' - || ((t_astnode*)(*ast)->right->item)->type != TK_COMMAND) - ft_exec(&(*ast)->right); - data->exec.aol_status = NULL; - data->exec.aol_search = 0; + exec = &data_singleton()->exec; + push(&exec->op_stack, TK_OR_IF); + ft_exec(&(*ast)->left); + exec->attrs |= JOB_OR_IF; + ft_exec(&(*ast)->right); + + /* data = data_singleton(); */ + /* if (data->exec.aol_status == NULL */ + /* || (data->exec.aol_search == TK_AND_IF */ + /* && *data->exec.aol_status == '0') */ + /* || (data->exec.aol_search == TK_OR_IF */ + /* && *data->exec.aol_status != '0')) */ + /* { */ + /* ft_exec(&(*ast)->left); */ + /* data->exec.aol_status = ft_getenv(data->env, "?"); */ + /* } */ + /* data->exec.aol_search = TK_OR_IF; */ + /* if (*data->exec.aol_status != '0' */ + /* || ((t_astnode*)(*ast)->right->item)->type != TK_COMMAND) */ + /* ft_exec(&(*ast)->right); */ + /* data->exec.aol_status = NULL; */ + /* data->exec.aol_search = 0; */ // btree_delone(ast, &ast_free); return (0); diff --git a/42sh/src/exec/exec_redir.c b/42sh/src/exec/exec_redir.c deleted file mode 100644 index 52b8c96d..00000000 --- a/42sh/src/exec/exec_redir.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_redir.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 17:27:51 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:38:01 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "exec.h" - -int exec_redir(t_btree **ast) -{ - t_astnode *node; - t_process *p; - - p = &data_singleton()->exec.process; - node = (*ast)->item; -// node->data.redir.type = node->type; -// ft_lsteadd(&p->redirs, ft_lstnew(&node->data.redir,sizeof(node->data.redir))); - ft_exec(&(*ast)->left); -// btree_delone(ast, &ast_free); - return (0); -} diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 33d99589..0d49fe4f 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/02/06 18:34:38 by ariard ### ########.fr */ +/* Updated: 2017/03/02 20:41:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,13 @@ int exec_semi(t_btree **ast) { - ft_exec(&(*ast)->left); - ft_exec(&(*ast)->right); + t_exec *exec; + exec = &data_singleton()->exec; + push(&exec->op_stack, TK_SEMI); + ft_exec(&(*ast)->left); + exec->attrs ~= ~JOB_AOL_MASK; + ft_exec(&(*ast)->right); // btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 1994a502..42875868 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/02/21 18:50:05 by ariard ### ########.fr */ +/* Updated: 2017/03/02 20:53:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,24 +15,18 @@ t_execmap g_execmap[] = { {TK_NEWLINE, &exec_semi}, - {TK_AND_IF, &exec_and_if}, - {TK_OR_IF, &exec_or_if}, {TK_SEMI, &exec_semi}, {TK_AMP, &exec_ampersand}, - {TK_PIPE, &exec_pipe}, - {TK_LESS, &exec_redir}, - {TK_GREAT, &exec_redir}, - {TK_DLESS, &exec_redir}, - {TK_DGREAT, &exec_redir}, - {TK_LESSAND, &exec_redir}, - {TK_GREATAND, &exec_redir}, + {TK_AND_IF, &exec_and_if}, + {TK_OR_IF, &exec_or_if}, + /* {TK_PIPE, &exec_pipe}, */ {TK_WHILE, &exec_while}, {TK_IF, &exec_if}, {TK_ELIF, &exec_elif}, {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, - {TK_SUBSHELL, &exec_command}, - {TK_WORD, &exec_command}, + /* {TK_SUBSHELL, &exec_}, */ + {TK_WORD, &exec_job}, {0, 0}, }; @@ -51,8 +45,7 @@ int ft_exec(t_btree **ast) { /* DG("match : %s and %s", */ /* read_state(item->type), read_state(g_execmap[i].type)); */ - /* return ((*g_execmap[i].f)(ast)); */ - (*g_execmap[i].f)(ast); + return ((*g_execmap[i].f)(ast)); } i++; } diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 1676f69f..65184fc3 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:39:15 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:29:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index a4253467..d62970e6 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:44:23 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 19:44:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index 853325b4..638f1e75 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:42:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:44:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,14 @@ void process_reset(t_process *p) { - p->fdout = STDOUT; - p->to_close = 0; p->av = NULL; + p->path = NULL; + p->execf = NULL; p->pid = 0; + /* p->fdin = STDIN; */ + /* p->fdout = STDOUT; */ + p->to_close = 0; p->redirs = NULL; - p->attributes &= ~(PROCESS_STATE_MASK | PROCESS_TYPE_MASK); + p->status = -1; + p->attributes = 0; } diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index f54afb2c..fd2f9848 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,25 +6,26 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:41:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 21:00:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_setexec(t_type type, t_process *p) +int process_setexec(t_cmd *cmd, t_process *p) { + t_flag type; + + type = cmd->type; p->path = NULL; - if (type == TK_SUBSHELL) - { - p->execf = &execve; - p->attributes |= PROCESS_SUBSHELL; - p->path = ft_strdup(p->av[0]); - } + /* if (type == TK_SUBSHELL) */ + /* { */ + /* p->execf = &execve; */ + /* p->attributes |= PROCESS_SUBSHELL; */ + /* p->path = ft_strdup(p->av[0]); */ + /* } */ else if ((p->execf = is_builtin(p))) - { p->attributes |= PROCESS_BUILTIN; - } else if (ft_strchr(p->av[0], '/')) { p->execf = &execve; diff --git a/42sh/src/exec/process_setgroup.c b/42sh/src/exec/process_setgroup.c index a7ada487..16223c08 100644 --- a/42sh/src/exec/process_setgroup.c +++ b/42sh/src/exec/process_setgroup.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:48:10 by jhalford #+# #+# */ -/* Updated: 2017/01/11 14:45:36 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:13:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_addprocess.c b/42sh/src/job-control/add_new_job.c similarity index 56% rename from 42sh/src/job-control/job_addprocess.c rename to 42sh/src/job-control/add_new_job.c index 2e946d6a..88e31d8b 100644 --- a/42sh/src/job-control/job_addprocess.c +++ b/42sh/src/job-control/add_new_job.c @@ -1,37 +1,35 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* job_addprocess.c :+: :+: :+: */ +/* add_new_job.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:42:53 by jhalford ### ########.fr */ +/* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ +/* Updated: 2017/03/02 21:04:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "job_control.h" -int job_addprocess(t_process *p) +int add_new_job(t_list *first_process, int foreground) { t_jobc *jobc; - t_job *job; + t_job job; + if (!first_process) + return (1); jobc = &data_singleton()->jobc; - job = &data_singleton()->exec.job; - if (IS_PIPESTART(p)) - { - job_update_id(); - job->id = jobc->current_id; - job->pgid = p->pid; - ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); - } - job = jobc->first_job->content; - if (p->pid > 0) - { - ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p))); - } - if (JOB_IS_BG(job->attributes) && IS_PIPEEND(p)) + job_update_id(); + job->id = jobc->current_id; + job->pgid = ((t_process*)first_process->content)->pid; + job->attrs = foreground ? 0 : JOB_BG; + job->first_process = first_process; + ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); + if (JOB_IS_FG(job->attrs)) + put_job_in_foreground(job, 0); + else job_notify_new(job); + put_job_in_background(job, 0); return (0); } diff --git a/42sh/src/job-control/job_update_id.c b/42sh/src/job-control/job_update_id.c index 08ac73d2..1fba6f36 100644 --- a/42sh/src/job-control/job_update_id.c +++ b/42sh/src/job-control/job_update_id.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 13:33:08 by jhalford #+# #+# */ -/* Updated: 2017/01/10 13:22:11 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:59:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index ce23bf71..eb84a650 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 13:59:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 17:48:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/put_job_in_background.c b/42sh/src/job-control/put_job_in_background.c index 09f1b482..895b58a9 100644 --- a/42sh/src/job-control/put_job_in_background.c +++ b/42sh/src/job-control/put_job_in_background.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 15:03:29 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:52:28 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:57:36 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 187ca02f..3f783821 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:10:45 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:59:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index 78530edc..1e56f815 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:39:47 by ariard ### ########.fr */ +/* Updated: 2017/03/02 18:20:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_assignement_word.c b/42sh/src/lexer/lexer_assignement_word.c index 70429bed..a6bae9dd 100644 --- a/42sh/src/lexer/lexer_assignement_word.c +++ b/42sh/src/lexer/lexer_assignement_word.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 20:28:13 by ariard #+# #+# */ -/* Updated: 2017/02/24 21:00:13 by ariard ### ########.fr */ +/* Updated: 2017/03/02 19:11:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 25f2e6ef..f3253e06 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/01 14:06:03 by ariard ### ########.fr */ +/* Updated: 2017/03/02 18:12:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 56e9179d..554fe821 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/02/21 22:41:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 21:02:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,25 +23,26 @@ int data_init(void) data->env = ft_sstrdup(environ); data->comp = NULL; data->opts = SH_OPTS_JOBC; - data->exec.process.path = NULL; - data->exec.process.av = NULL; - data->exec.process.to_close = 0; - data->exec.process.fdin = STDIN; - data->exec.process.fdout = STDOUT; - data->exec.process.pid = 0; - data->exec.process.attributes = 0; - data->exec.process.redirs = NULL; - data->exec.process.pipe_count = 0; - data->exec.fd0save = fcntl(0, F_DUPFD_CLOEXEC); - data->exec.fd1save = fcntl(1, F_DUPFD_CLOEXEC); - data->exec.fd2save = fcntl(2, F_DUPFD_CLOEXEC); + /* data->exec.process.path = NULL; */ + /* data->exec.process.av = NULL; */ + /* data->exec.process.to_close = 0; */ + /* data->exec.process.fdin = STDIN; */ + /* data->exec.process.fdout = STDOUT; */ + /* data->exec.process.pid = 0; */ + /* data->exec.process.attributes = 0; */ + /* data->exec.process.redirs = NULL; */ + data->exec.fd_save[0] = fcntl(0, F_DUPFD_CLOEXEC); + data->exec.fd_save[1] = fcntl(1, F_DUPFD_CLOEXEC); + data->exec.fd_save[2] = fcntl(2, F_DUPFD_CLOEXEC); + data->exec.op_stack = NULL; + data->attrs = 0; - data->exec.aol_status = NULL; - data->exec.aol_search = 0; - data->exec.job.id = 0; - data->exec.job.pgid = 0; - data->exec.job.attributes = 0; - data->exec.job.first_process = 0; + /* data->exec.aol_status = NULL; */ + /* data->exec.aol_search = 0; */ + /* data->exec.job.id = 0; */ + /* data->exec.job.pgid = 0; */ + /* data->exec.job.attributes = 0; */ + /* data->exec.job.first_process = 0; */ data->jobc.first_job = NULL; data->jobc.current_id = 1; diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 6b35fe87..58fb1d73 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/03/01 15:56:54 by ariard ### ########.fr */ +/* Updated: 2017/03/02 17:16:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index f0a1e2d9..109005cf 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/02 12:37:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 21:00:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index 4e64df18..7ad9da23 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/02/21 20:14:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/02 20:38:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 3faa94a2..e2af80b4 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:46:31 by ariard ### ########.fr */ +/* Updated: 2017/03/02 19:11:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,14 +48,21 @@ int add_cmd(t_btree **ast, t_list **lst) && node->type != TK_PAREN_CLOSE && node->type != TK_WORD && node->type != REDIR) return (add_cmd(&(*ast)->right, lst)); - my_tab = NULL; node = (*ast)->item; node->type = token->type; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { DG("add data"); - my_tab = ft_sstradd(my_tab, token->data); - my_tab = ft_sstradd(my_tab, (char *)token->esc); + /* my_tab = ft_sstradd(NULL, token->data); */ + /* my_tab = ft_sstradd(my_tab, (char *)token->esc); */ + /* my_tab = ft_sstradd(my_tab, (char *)token->esc2); */ + if ((my_tab = (char **)malloc(sizeof(char *) * 4))) + { + my_tab[0] = ft_strdup(token->data); + my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); + my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); + my_tab[3] = NULL; + } ft_ld_pushback(&node->data.cmd.token, my_tab); } return (0); From 37d9898f5955359a99965a851ac5e12739d774b6 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Thu, 2 Mar 2017 22:02:53 +0100 Subject: [PATCH 111/206] doing pipe + lst cmds --- 42sh/file1 | 0 42sh/file2 | 14 ++++++++++++++ 42sh/includes/parser.h | 4 ++-- 42sh/includes/types.h | 3 ++- 42sh/libft | 2 +- 42sh/src/exec/ast_free.c | 4 +++- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_number.c | 12 ++++++++++-- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/ft_putast.c | 4 +++- 42sh/src/main/main.c | 4 ++-- 42sh/src/parser/add_cmd.c | 7 ++++--- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_func.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_redir.c | 6 +++--- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/add_subshell.c | 3 +-- 42sh/src/parser/aggregate_sym.c | 11 ++++++----- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 11 ++++------- 42sh/src/parser/parser_init.c | 2 +- 42sh/src/parser/produce_sym.c | 8 ++++---- 42sh/src/parser/push_stack.c | 2 +- 42sh/src/parser/read_stack.c | 2 +- 42sh/src/parser/tree_wrapper.c | 6 +++--- 27 files changed, 73 insertions(+), 48 deletions(-) create mode 100644 42sh/file1 create mode 100644 42sh/file2 diff --git a/42sh/file1 b/42sh/file1 new file mode 100644 index 00000000..e69de29b diff --git a/42sh/file2 b/42sh/file2 new file mode 100644 index 00000000..37e50d1b --- /dev/null +++ b/42sh/file2 @@ -0,0 +1,14 @@ +total 576 +-rwxr-xr-x 1 ariard 2016_paris 690 Feb 21 15:30 update_makefile.sh +drwxr-xr-x 13 ariard 2016_paris 442 Feb 21 15:30 src +drwxr-xr-x 28 ariard 2016_paris 952 Feb 25 18:21 sample +drwxr-xr-x 6 ariard 2016_paris 204 Feb 21 15:30 pdf +drwxr-xr-x 13 ariard 2016_paris 442 Mar 2 20:15 objs +drwxr-xr-x 12 ariard 2016_paris 408 Mar 2 20:15 libft +drwxr-xr-x 19 ariard 2016_paris 646 Mar 2 20:36 includes +-rw-r--r-- 1 ariard 2016_paris 0 Mar 2 20:40 file2 +-rw-r--r-- 1 ariard 2016_paris 0 Mar 2 20:40 file1 +-rw-r--r-- 1 ariard 2016_paris 4396 Feb 21 15:40 donovan_segaults_06-02 +-rw-r--r-- 1 ariard 2016_paris 21985 Mar 2 20:39 STDBUG +-rw-r--r-- 1 ariard 2016_paris 8051 Mar 1 16:42 Makefile +-rwxr-xr-x 1 ariard 2016_paris 246884 Mar 2 20:38 42sh diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 7001687d..690e3ac8 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/01 22:39:00 by ariard ### ########.fr */ +/* Updated: 2017/03/02 22:02:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -163,7 +163,7 @@ struct s_cmd union u_astdata { - t_cmd cmd; + t_list *cmds; t_list *wordlist; char **sstr; char *str; diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 3445dc7b..398625af 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/01 22:39:16 by ariard ### ########.fr */ +/* Updated: 2017/03/02 20:36:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -159,6 +159,7 @@ enum e_sym FUNC_NAME, CLOSE_LIST, REDIR, + JOB, ALL = 200, }; diff --git a/42sh/libft b/42sh/libft index bfc8ca20..8f6e64fa 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit bfc8ca207ab4d39f0140322c0f1d368137304a3c +Subproject commit 8f6e64fa9b4ac1dd3e3d5200fb93471ddfeedd40 diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 66abd247..de356f4f 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:36:20 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,8 @@ void ast_free(void *data, size_t content_size) (void)node; (void)data; (void)content_size; + + return ; /* (void)content_size; node = data; diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index d5688999..d2acede7 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:39:29 by ariard ### ########.fr */ +/* Updated: 2017/03/01 23:40:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 3bb079b7..8759c156 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:39:33 by ariard ### ########.fr */ +/* Updated: 2017/03/01 23:39:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,12 +29,20 @@ int lexer_number(t_list **alst, t_lexer *lexer) lexer->state = state; return (lexer_lex(alst, lexer)); } - else if (ft_isdigit(lexer->str[lexer->pos])) + else if (ft_isdigit(lexer->str[lexer->pos]) + && (lexer->str[lexer->pos + 1] == '>' || lexer->str[lexer->pos + 1] == '<')) { token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_number(alst, lexer)); } + else + { + token->type = TK_WORD; + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_lex(alst, lexer)); + } lexer->state = DEFAULT; return (lexer_lex(alst, lexer)); } diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 25f2e6ef..37d82adc 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/01 14:06:03 by ariard ### ########.fr */ +/* Updated: 2017/03/01 23:32:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 6b35fe87..b9731110 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/03/01 15:56:54 by ariard ### ########.fr */ +/* Updated: 2017/03/02 20:39:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ char *ft_putast(void *nodein) t_astnode *node; node = nodein; + if (node->type == JOB) + return ("JOB"); if (node->type == REDIR) return ("REDIR"); if (node->type == CLOSE_LIST) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 1050a47c..a4ca3108 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/01 22:59:40 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,12 +63,12 @@ int handle_instruction(int fd) else if (parser.state == ERROR) error_syntax(&token); token = NULL; - ast = NULL; } DG("succesful parsing:"); btree_print(STDBUG, ast, &ft_putast); /* if (ft_exec(&ast)) */ /* return (1); */ + btree_del(&ast, &ast_free); ft_add_str_in_history(lexer.str); return (0); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 3faa94a2..e07d5ffc 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:46:31 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:53:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,17 +45,18 @@ int add_cmd(t_btree **ast, t_list **lst) else if (isfunc(ast, lst)) return (add_func_cmd(ast, lst)); else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != TK_WORD + && node->type != TK_PAREN_CLOSE && node->type != JOB && node->type != REDIR) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; node = (*ast)->item; - node->type = token->type; + node->type = JOB; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { DG("add data"); my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); + my_tab = ft_sstradd(my_tab, (char *)token->esc2); ft_ld_pushback(&node->data.cmd.token, my_tab); } return (0); diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index a3987a98..400c85f9 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/03/01 15:59:58 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index ada2a7be..1680e828 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ -/* Updated: 2017/02/25 00:32:00 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:41:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 78608a48..b141fe65 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/02/25 19:18:01 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:41:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index ae36029c..71ca1719 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:44:53 by ariard ### ########.fr */ +/* Updated: 2017/03/02 22:01:51 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ int isdir_sep(t_btree **ast, t_list **list) if (*ast) { node = (*ast)->item; - if ((node->type == TK_WORD || node->type == REDIR) + if (node->type == JOB && (token->type == TK_LESS || token->type == TK_GREAT || token->type == TK_GREATAND || token->type == TK_LESSAND || token->type == TK_DLESS || token->type == TK_DGREAT)) @@ -47,7 +47,7 @@ int isdir_word(t_btree **ast, t_list **list) { node = (*ast)->item; if (token->type == TK_WORD && node->type == REDIR) - return (1); + return ((node->type = JOB)); } return (0); } diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 076f16f8..65a93ce7 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/03/01 18:02:14 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:41:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 17e83953..63f1ecde 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ -/* Updated: 2017/02/24 23:38:40 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:41:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,6 @@ int issubshell(t_btree **ast, t_list **lst) node = NULL; token = (*lst)->content; - DG("test loop"); if (*ast) { node = (*ast)->item; diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 07bcf532..87e64a66 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:55:14 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:41:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -107,6 +107,7 @@ t_aggrematch g_aggrematch[] = {IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER}, {IO_HERE, ALL, IO_REDIRECT, 0}, {IO_REDIRECT, CMD_SUPERIOR, CMD_SUPERIOR, CMD_SUPERIOR}, + {IO_REDIRECT, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, REDIRECT_LIST}, //to check @@ -305,20 +306,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; - DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); +// DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index f1360913..733129e4 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:39:39 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:41:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 4c0fc578..cae28a05 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -1009,7 +1009,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index fbf5b2da..ef80af07 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -29,13 +29,11 @@ static int end_instruction(t_sym sym) int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { - (void)ast; - if (parser->state == SUCCESS || parser->state == ERROR) - parser_init(parser); while (*token) { produce_sym(*parser->stack, parser->new_sym, token); - DG("new sym %s", read_state(*parser->new_sym)); + //DG("new sym %s", read_state(*parser->new_sym)); + if (eval_sym(*parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); else @@ -43,14 +41,14 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) aggregate_sym(&parser->stack, parser->new_sym, &parser->state); push_stack(++parser->stack, *parser->new_sym); } - ft_read_stack(parser->stack); +// ft_read_stack(parser->stack); DG("\n"); if (*parser->stack == PROGRAM) parser->state = SUCCESS; else parser->state = UNDEFINED; build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); + // btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(*parser->stack) && !(*token)->next)) insert_linebreak(token); else @@ -58,6 +56,5 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) } if (parser->state == SUCCESS) DG("sucessful parsing"); - DG("yolo"); return (0); } diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 3e78e937..b15a1fce 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:54:37 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 26a0448b..ae71c3fd 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/01 14:40:24 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -105,8 +105,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; - DG("produce stack : %s && token : %s", read_state(stack), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(stack), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -114,7 +114,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c index 1d0d9278..11b0576d 100644 --- a/42sh/src/parser/push_stack.c +++ b/42sh/src/parser/push_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:48:30 by ariard #+# #+# */ -/* Updated: 2017/02/13 20:19:33 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 8373fc1f..0c845b90 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/01 22:53:39 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 4a17daca..7de56874 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:47:13 by ariard ### ########.fr */ +/* Updated: 2017/03/02 21:40:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,8 +26,8 @@ int gen_node(t_btree **ast) if (!*ast) { *ast = btree_create_node(&item, sizeof(item)); - ((t_astnode *)(*ast)->item)->data.cmd.redir = NULL; - ((t_astnode *)(*ast)->item)->data.cmd.token = NULL; + ft_bzero((void *)&((t_astnode *)(*ast)->item)->data, sizeof(t_astdata)); +// ((t_astnode *)(*ast)->item)->data.cmd.token = NULL; ((t_astnode *)(*ast)->item)->nest = 0; ((t_astnode *)(*ast)->item)->full = 0; ((t_astnode *)(*ast)->item)->type = 0; From 75f1da13f2fd06ce15897231593a898a1958dab6 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Fri, 3 Mar 2017 00:05:37 +0100 Subject: [PATCH 112/206] before pull --- 42sh/src/parser/add_cmd.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index d2e3e825..2b78d205 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -1,6 +1,29 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ +" ============================================================================ +" Netrw Directory Listing (netrw v140) +" /Users/antoineriard/42sh +" Sorted by name +" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$ +" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec +" ============================================================================ +../ +.git/ +includes/ +libft/ +pdf/ +sample/ +src/ +.gitignore +.gitmodules +.tags +.valgrind.supp +Makefile +STDBUG +donovan_segaults_06-02 +update_makefile.sh* +.swp /* add_cmd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ From b9d8b949be4a08bcbde7f5d000810389dc3b58e1 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Fri, 3 Mar 2017 02:00:15 +0100 Subject: [PATCH 113/206] perdu entre les 2 libs de lst :( to-do tomorroz --- 42sh/Makefile | 1 + 42sh/includes/parser.h | 7 ++++--- 42sh/libft | 2 +- 42sh/src/exec/exec_command.c | 3 ++- 42sh/src/parser/add_cmd.c | 32 ++++++++------------------------ 42sh/src/parser/add_pipe.c | 12 ++++++++++++ 42sh/src/parser/add_redir.c | 16 +++++++++++----- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/tree_wrapper.c | 1 - 9 files changed, 40 insertions(+), 36 deletions(-) create mode 100644 42sh/src/parser/add_pipe.c diff --git a/42sh/Makefile b/42sh/Makefile index d9ff1983..9fdd0857 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -236,6 +236,7 @@ parser/add_sep.c\ parser/add_case.c\ parser/add_func.c\ parser/add_redir.c\ +parser/add_pipe.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 690e3ac8..0623fd22 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -124,6 +124,7 @@ int add_subshell_sep(t_btree **ast, t_list **lst); int add_func_cmd(t_btree **ast, t_list **lst); int add_func_sep(t_btree **ast, t_list **lst); int add_one_func(t_btree **ast, t_list **lst); +int add_pipe(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); @@ -171,9 +172,9 @@ union u_astdata struct s_astnode { - int pattern; - int nest; - int full; + int pattern; + int nest; + int full; t_type type; t_astdata data; }; diff --git a/42sh/libft b/42sh/libft index 8f6e64fa..bfc8ca20 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 8f6e64fa9b4ac1dd3e3d5200fb93471ddfeedd40 +Subproject commit bfc8ca207ab4d39f0140322c0f1d368137304a3c diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 7873b14a..c1bbe62e 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -22,7 +22,8 @@ char **token_to_argv(t_astnode *node) if (node->type == TK_WORD || node->type == TK_ASSIGNEMENT_WORD) { - ld = node->data.cmd.token; + ld = NULL; +// ld = node->data.cmd.token; my_tab = NULL; while (ld) { diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index c65a3b69..d3e0cf1b 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -1,29 +1,6 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -" ============================================================================ -" Netrw Directory Listing (netrw v140) -" /Users/antoineriard/42sh -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec -" ============================================================================ -../ -.git/ -includes/ -libft/ -pdf/ -sample/ -src/ -.gitignore -.gitmodules -.tags -.valgrind.supp -Makefile -STDBUG -donovan_segaults_06-02 -update_makefile.sh* -.swp /* add_cmd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ @@ -39,6 +16,7 @@ int add_cmd(t_btree **ast, t_list **lst) { t_token *token; t_astnode *node; + t_cmd *cmd; char **my_tab; if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) @@ -76,11 +54,17 @@ int add_cmd(t_btree **ast, t_list **lst) node->type = JOB; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { + DG("add data"); + return ; + if (!node->data.cmds) + node->data.cmds = ft_lstnew(&cmd, sizeof(t_ld)); + ft_lstlast(node->data.cmds)->content; my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); my_tab = ft_sstradd(my_tab, (char *)token->esc2); - ft_ld_pushback(&node->data.cmd.token, my_tab); + + ft_ld_pushback(&cmd->token, my_tab); } return (0); } diff --git a/42sh/src/parser/add_pipe.c b/42sh/src/parser/add_pipe.c new file mode 100644 index 00000000..7615e5d8 --- /dev/null +++ b/42sh/src/parser/add_pipe.c @@ -0,0 +1,12 @@ +#include "parser.h" + +int add_pipe(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_cmd *cmd; + + (void)lst; + node = (*ast)->item; + ft_lsteadd(&node->data.cmds, ft_lstnew(&cmd, sizeof(cmd))); + return (0); +} diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 71ca1719..1e5a22dc 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -57,17 +57,19 @@ int add_redir_word(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; t_redir *redir; + t_cmd *cmd; token = (*lst)->content; node = (*ast)->item; - if (node->data.cmd.redir) + cmd = (ft_lstlast(node->data.cmds))->content; + if (cmd->redir) { DG("add file"); - redir = (ft_lstlast(node->data.cmd.redir))->content; + redir = (ft_lstlast(cmd->redir))->content; if (redir->type == TK_DLESS) redir->word.word = NULL; - else if (ft_stris((char *)token->data, &ft_isdigit)) - redir->word.fd = ft_atoi(token->data); +// else if (ft_stris((char *)token->data, &ft_isdigit)) +// redir->word.fd = ft_atoi(token->data); else redir->word.word = token->data; } @@ -79,6 +81,7 @@ int add_redir_type(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; t_redir *redir; + t_cmd *cmd; DG("add redir"); if (!*ast) @@ -88,6 +91,9 @@ int add_redir_type(t_btree **ast, t_list **lst) node->type = REDIR; redir = ft_memalloc(sizeof(redir)); redir->type = token->type; - ft_lsteadd(&node->data.cmd.redir, ft_lstnew(redir, sizeof(redir))); + if (!node->data.cmds) + node->data.cmds = ft_lstnew(&cmd, sizeof(cmd)); + cmd = (node->data.cmds)->content; + ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); return (0); } diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 733129e4..033c3820 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -15,7 +15,7 @@ t_treematch g_treematch[] = { {TK_WORD, &add_cmd}, - {TK_PIPE, &add_sep}, + {TK_PIPE, &add_pipe}, {TK_SEMI, &add_sep}, {TK_GREAT, &add_cmd}, {TK_LESS, &add_cmd}, diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 7de56874..b17b786c 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -27,7 +27,6 @@ int gen_node(t_btree **ast) { *ast = btree_create_node(&item, sizeof(item)); ft_bzero((void *)&((t_astnode *)(*ast)->item)->data, sizeof(t_astdata)); -// ((t_astnode *)(*ast)->item)->data.cmd.token = NULL; ((t_astnode *)(*ast)->item)->nest = 0; ((t_astnode *)(*ast)->item)->full = 0; ((t_astnode *)(*ast)->item)->type = 0; From 37d815cb576b2c21d5c1d8ed7d6f14b1dafa38d4 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Fri, 3 Mar 2017 02:36:25 +0100 Subject: [PATCH 114/206] fuck it --- 42sh/src/parser/add_cmd.c | 19 +++++++++++++------ 42sh/src/parser/add_redir.c | 16 ++++++++++++++-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index d3e0cf1b..4fcccbc6 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -17,6 +17,7 @@ int add_cmd(t_btree **ast, t_list **lst) t_token *token; t_astnode *node; t_cmd *cmd; + t_redir *redir; char **my_tab; if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) @@ -54,16 +55,22 @@ int add_cmd(t_btree **ast, t_list **lst) node->type = JOB; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { - DG("add data"); - return ; - if (!node->data.cmds) - node->data.cmds = ft_lstnew(&cmd, sizeof(t_ld)); - ft_lstlast(node->data.cmds)->content; my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); my_tab = ft_sstradd(my_tab, (char *)token->esc2); - + if (!node->data.cmds) + { + DG("new cmd"); + cmd = ft_memalloc(sizeof(cmd)); + ft_ld_new(&cmd->token, my_tab); + redir = ft_memalloc(sizeof(redir)); + ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); + ft_lsteadd(&node->data.cmds, ft_lstnew(&cmd, sizeof(t_ld))); + } + else + cmd = ft_lstlast(node->data.cmds)->content; + DG("again"); ft_ld_pushback(&cmd->token, my_tab); } return (0); diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 1e5a22dc..7601e164 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -92,8 +92,20 @@ int add_redir_type(t_btree **ast, t_list **lst) redir = ft_memalloc(sizeof(redir)); redir->type = token->type; if (!node->data.cmds) + { + cmd = ft_memalloc(sizeof(cmd)); + cmd->token = NULL; + cmd->redir = NULL; node->data.cmds = ft_lstnew(&cmd, sizeof(cmd)); - cmd = (node->data.cmds)->content; - ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); + } + cmd = ft_lstlast(node->data.cmds)->content; + DG("still"); + if (!cmd->redir) + cmd->redir = ft_lstnew(redir, sizeof(redir)); + else + { + DG("flag"); + ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); + } return (0); } From a4d00931447735cdcb0ac232ff531b20f6d7cf41 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Fri, 3 Mar 2017 14:20:26 +0100 Subject: [PATCH 115/206] good state --- 42sh/includes/parser.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 690e3ac8..ca8608e4 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/02 22:02:15 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:16:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -163,7 +163,7 @@ struct s_cmd union u_astdata { - t_list *cmds; + t_cmd cmd; t_list *wordlist; char **sstr; char *str; From b90a17f2fabf29d49a127dcd26d5c62a74bfd0e3 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Fri, 3 Mar 2017 14:37:22 +0100 Subject: [PATCH 116/206] googd redir --- 42sh/Makefile | 26 ++++++++++++------------- 42sh/includes/types.h | 4 ++-- 42sh/libft | 2 +- 42sh/src/main/ft_putast.c | 6 +++--- 42sh/src/parser/add_cmd.c | 22 ++++----------------- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_func.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_pipe.c | 12 ------------ 42sh/src/parser/add_redir.c | 34 ++++++++------------------------- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/add_subshell.c | 2 +- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/build_tree.c | 4 ++-- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/parser_init.c | 2 +- 42sh/src/parser/pop_stack.c | 2 +- 42sh/src/parser/produce_sym.c | 2 +- 42sh/src/parser/push_stack.c | 2 +- 42sh/src/parser/read_stack.c | 2 +- 42sh/src/parser/tree_wrapper.c | 2 +- 21 files changed, 46 insertions(+), 90 deletions(-) delete mode 100644 42sh/src/parser/add_pipe.c diff --git a/42sh/Makefile b/42sh/Makefile index 9fdd0857..dfca0908 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/01 16:42:16 by ariard ### ########.fr # +# Updated: 2017/03/03 14:36:32 by ariard ### ########.fr # # # # **************************************************************************** # @@ -62,10 +62,14 @@ exec/ast_free.c\ exec/bad_fd.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ +exec/exec_case.c\ +exec/exec_case_branch.c\ exec/exec_command.c\ exec/exec_default.c\ exec/exec_elif.c\ exec/exec_else.c\ +exec/exec_for.c\ +exec/exec_func.c\ exec/exec_if.c\ exec/exec_less.c\ exec/exec_or_if.c\ @@ -73,11 +77,8 @@ exec/exec_pipe.c\ exec/exec_redir.c\ exec/exec_semi.c\ exec/exec_until.c\ -exec/exec_while.c\ exec/exec_var.c\ -exec/exec_for.c\ -exec/exec_case.c\ -exec/exec_case_branch.c\ +exec/exec_while.c\ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ @@ -174,9 +175,11 @@ lexer/get_reserved_words.c\ lexer/get_state_global.c\ lexer/get_state_redir.c\ lexer/insert_newline.c\ +lexer/lexer_assignement_word.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ lexer/lexer_comment.c\ +lexer/lexer_curly_brackets.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ lexer/lexer_dless.c\ @@ -191,8 +194,6 @@ lexer/lexer_lex.c\ lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_paren.c\ -lexer/lexer_curly_brackets.c\ -lexer/lexer_assignement_word.c\ lexer/lexer_quote.c\ lexer/lexer_sep.c\ lexer/lexer_word.c\ @@ -228,15 +229,14 @@ main/shell_exit.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ -parser/add_cmd.c\ -parser/add_subshell.c\ -parser/add_condition.c\ -parser/add_loop.c\ -parser/add_sep.c\ parser/add_case.c\ +parser/add_cmd.c\ +parser/add_condition.c\ parser/add_func.c\ +parser/add_loop.c\ parser/add_redir.c\ -parser/add_pipe.c\ +parser/add_sep.c\ +parser/add_subshell.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 398625af..06dd7ad0 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:36:25 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:33:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -159,7 +159,7 @@ enum e_sym FUNC_NAME, CLOSE_LIST, REDIR, - JOB, + CMD, ALL = 200, }; diff --git a/42sh/libft b/42sh/libft index bfc8ca20..8f6e64fa 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit bfc8ca207ab4d39f0140322c0f1d368137304a3c +Subproject commit 8f6e64fa9b4ac1dd3e3d5200fb93471ddfeedd40 diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index b9731110..7bce3fb5 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:39:36 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:34:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,8 +17,8 @@ char *ft_putast(void *nodein) t_astnode *node; node = nodein; - if (node->type == JOB) - return ("JOB"); + if (node->type == CMD) + return ("CMD"); if (node->type == REDIR) return ("REDIR"); if (node->type == CLOSE_LIST) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 4fcccbc6..ff54406f 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:53:48 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:33:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,8 +16,6 @@ int add_cmd(t_btree **ast, t_list **lst) { t_token *token; t_astnode *node; - t_cmd *cmd; - t_redir *redir; char **my_tab; if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) @@ -47,31 +45,19 @@ int add_cmd(t_btree **ast, t_list **lst) else if (isfunc(ast, lst)) return (add_func_cmd(ast, lst)); else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != JOB + && node->type != TK_PAREN_CLOSE && node->type != CMD && node->type != REDIR) return (add_cmd(&(*ast)->right, lst)); my_tab = NULL; node = (*ast)->item; - node->type = JOB; + node->type = CMD; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { DG("add data"); my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); my_tab = ft_sstradd(my_tab, (char *)token->esc2); - if (!node->data.cmds) - { - DG("new cmd"); - cmd = ft_memalloc(sizeof(cmd)); - ft_ld_new(&cmd->token, my_tab); - redir = ft_memalloc(sizeof(redir)); - ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); - ft_lsteadd(&node->data.cmds, ft_lstnew(&cmd, sizeof(t_ld))); - } - else - cmd = ft_lstlast(node->data.cmds)->content; - DG("again"); - ft_ld_pushback(&cmd->token, my_tab); + ft_ld_pushback(&node->data.cmd.token, my_tab); } return (0); } diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 400c85f9..64aa8a6d 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:40:59 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index 1680e828..e29c7d8b 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:41:01 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index b141fe65..fa17904c 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:41:02 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_pipe.c b/42sh/src/parser/add_pipe.c deleted file mode 100644 index 7615e5d8..00000000 --- a/42sh/src/parser/add_pipe.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "parser.h" - -int add_pipe(t_btree **ast, t_list **lst) -{ - t_astnode *node; - t_cmd *cmd; - - (void)lst; - node = (*ast)->item; - ft_lsteadd(&node->data.cmds, ft_lstnew(&cmd, sizeof(cmd))); - return (0); -} diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 7601e164..f3cc03bd 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/02 22:01:51 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:35:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ int isdir_sep(t_btree **ast, t_list **list) if (*ast) { node = (*ast)->item; - if (node->type == JOB + if (node->type == CMD && (token->type == TK_LESS || token->type == TK_GREAT || token->type == TK_GREATAND || token->type == TK_LESSAND || token->type == TK_DLESS || token->type == TK_DGREAT)) @@ -47,7 +47,7 @@ int isdir_word(t_btree **ast, t_list **list) { node = (*ast)->item; if (token->type == TK_WORD && node->type == REDIR) - return ((node->type = JOB)); + return ((node->type = CMD)); } return (0); } @@ -57,19 +57,17 @@ int add_redir_word(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; t_redir *redir; - t_cmd *cmd; token = (*lst)->content; node = (*ast)->item; - cmd = (ft_lstlast(node->data.cmds))->content; - if (cmd->redir) + if (node->data.cmd.redir) { DG("add file"); - redir = (ft_lstlast(cmd->redir))->content; + redir = (ft_lstlast(node->data.cmd.redir))->content; if (redir->type == TK_DLESS) redir->word.word = NULL; -// else if (ft_stris((char *)token->data, &ft_isdigit)) -// redir->word.fd = ft_atoi(token->data); + else if (ft_stris((char *)token->data, &ft_isdigit)) + redir->word.fd = ft_atoi(token->data); else redir->word.word = token->data; } @@ -81,7 +79,6 @@ int add_redir_type(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; t_redir *redir; - t_cmd *cmd; DG("add redir"); if (!*ast) @@ -91,21 +88,6 @@ int add_redir_type(t_btree **ast, t_list **lst) node->type = REDIR; redir = ft_memalloc(sizeof(redir)); redir->type = token->type; - if (!node->data.cmds) - { - cmd = ft_memalloc(sizeof(cmd)); - cmd->token = NULL; - cmd->redir = NULL; - node->data.cmds = ft_lstnew(&cmd, sizeof(cmd)); - } - cmd = ft_lstlast(node->data.cmds)->content; - DG("still"); - if (!cmd->redir) - cmd->redir = ft_lstnew(redir, sizeof(redir)); - else - { - DG("flag"); - ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); - } + ft_lsteadd(&node->data.cmd.redir, ft_lstnew(redir, sizeof(redir))); return (0); } diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 65a93ce7..5aa2d8f5 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:41:07 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 63f1ecde..03fc263a 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:41:11 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 87e64a66..113d812c 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:41:13 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 033c3820..a2929cb6 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:41:15 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:35:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ t_treematch g_treematch[] = { {TK_WORD, &add_cmd}, - {TK_PIPE, &add_pipe}, + {TK_PIPE, &add_sep}, {TK_SEMI, &add_sep}, {TK_GREAT, &add_cmd}, {TK_LESS, &add_cmd}, diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 7dde6502..13100924 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:53:53 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:27:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index b15a1fce..083e3fd3 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:40:37 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:28:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index 4d2b8fe5..07f967bd 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ -/* Updated: 2017/02/15 19:52:42 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:28:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index ae71c3fd..c21fec05 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:40:41 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:28:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c index 11b0576d..d94e722b 100644 --- a/42sh/src/parser/push_stack.c +++ b/42sh/src/parser/push_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:48:30 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:40:45 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:28:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 0c845b90..38e51155 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:40:47 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:28:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index b17b786c..c66b39e3 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/02 21:40:48 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:28:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From d0c9baeeb8a77092eaf20feae416890300edd844 Mon Sep 17 00:00:00 2001 From: wescande Date: Fri, 3 Mar 2017 16:11:42 +0100 Subject: [PATCH 117/206] modif assignment word --- 42sh/src/lexer/get_state_global.c | 6 ++--- 42sh/src/lexer/lexer_word.c | 44 ++++++++++++++++++++++++++++++- 42sh/src/lexer/token_append.c | 3 +-- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index 78530edc..bf82cf09 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:39:47 by ariard ### ########.fr */ +/* Updated: 2017/03/03 15:06:07 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,9 +35,9 @@ t_lexstate get_state_global(t_lexer *lexer) return (PAREN); else if (c == '{' || c == '}') return (CURLY_BRACKETS); - else if (c == '=') +/* else if (c == '=') return (ASSIGNEMENT_WORD); - else if (c == 0) +*/ else if (c == 0) return (END); return (0); } diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 37d82adc..8e6dd81e 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,12 +6,53 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/01 23:32:59 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:00:13 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" +static int word_is_assignment(t_token *token) +{ + const int len = ft_strlen(token->data); + int pos = -1; + char c; + + while (++pos < len) + { + if (is_char_esc(token->esc, token->data, token->data + pos)) + return (0); + c = token->data[pos]; + if (!ft_isalnum(c) && c != '_' && c != '-') + return (0); + } + return (1); +} + +int lexer_word(t_list **alst, t_lexer *lexer) +{ + t_token *token; + t_lexstate state; + + token = (*alst)->content; + token->type = TK_WORD; + if ((state = get_state_global(lexer)) + || (state = get_state_redir(lexer))) + { + lexer->state = state; + return (lexer_lex(alst, lexer)); + } + if (lexer->str[lexer->pos] == '=' && word_is_assignment(token)) + { + lexer->state = ASSIGNEMENT_WORD; + return (lexer_lex(alst, lexer)); + } + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_lex(alst, lexer)); +} + +/* int lexer_word(t_list **alst, t_lexer *lexer) { t_token *token; @@ -33,3 +74,4 @@ int lexer_word(t_list **alst, t_lexer *lexer) lexer->pos++; return (lexer_lex(alst, lexer)); } +*/ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 0ec12be6..75de9fb1 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,13 +6,12 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/02/24 20:33:59 by ariard ### ########.fr */ +/* Updated: 2017/03/03 15:12:41 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" - int token_append_char(t_token *token, char c, short int esc, short int esc2) { From 418859e9e89db3b1632a6731ff7fe671ee1ea4bb Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 16:51:18 +0100 Subject: [PATCH 118/206] it compiles ! much more testing for simple commands to work --- 42sh/Makefile | 3 +- 42sh/includes/exec.h | 42 ++++++++------- 42sh/includes/job_control.h | 6 ++- 42sh/src/builtin/builtin_env.c | 2 +- 42sh/src/exec/exec_ampersand.c | 4 +- 42sh/src/exec/exec_and_if.c | 4 +- 42sh/src/exec/exec_case.c | 15 ++++-- 42sh/src/exec/exec_case_branch.c | 21 ++++---- 42sh/src/exec/exec_command.c | 53 ++++++++++--------- 42sh/src/exec/exec_elif.c | 14 +++-- 42sh/src/exec/exec_else.c | 11 ++-- 42sh/src/exec/exec_for.c | 2 +- 42sh/src/exec/exec_if.c | 15 ++++-- 42sh/src/exec/exec_less.c | 32 ------------ 42sh/src/exec/exec_or_if.c | 4 +- 42sh/src/exec/exec_pipe.c | 11 ++-- 42sh/src/exec/exec_semi.c | 4 +- 42sh/src/exec/exec_until.c | 4 +- 42sh/src/exec/exec_var.c | 4 +- 42sh/src/exec/exec_while.c | 4 +- 42sh/src/exec/ft_exec.c | 4 +- 42sh/src/exec/launch_process.c | 15 +++--- 42sh/src/exec/process_reset.c | 2 +- 42sh/src/exec/process_setexec.c | 15 ++---- 42sh/src/exec/process_setgroup.c | 4 +- 42sh/src/glob/command_getoutput.c | 59 +++++++++++----------- 42sh/src/job-control/add_new_job.c | 11 ++-- 42sh/src/job-control/do_job_notification.c | 6 +-- 42sh/src/job-control/mark_job_as_running.c | 4 +- 42sh/src/lexer/lexer_bquote.c | 4 +- 42sh/src/main/data_init.c | 5 +- 42sh/src/main/main.c | 2 +- 32 files changed, 190 insertions(+), 196 deletions(-) delete mode 100644 42sh/src/exec/exec_less.c diff --git a/42sh/Makefile b/42sh/Makefile index 6492f853..73049a56 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -71,7 +71,6 @@ exec/exec_else.c\ exec/exec_for.c\ exec/exec_func.c\ exec/exec_if.c\ -exec/exec_less.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ exec/exec_semi.c\ @@ -135,11 +134,11 @@ history/history_parsing_toolz.c\ history/history_parsing_toolz_2.c\ history/list_toolz.c\ history/surch_in_history.c\ +job-control/add_new_job.c\ job-control/builtin_bg.c\ job-control/builtin_fg.c\ job-control/builtin_jobs.c\ job-control/do_job_notification.c\ -job-control/job_addprocess.c\ job-control/job_cmp_id.c\ job-control/job_format.c\ job-control/job_format_head.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 3090d73e..bace5d56 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:02:14 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:39:06 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,18 +29,23 @@ # define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4) # define PROCESS_STATE_MASK (1 << 5 | 1 << 6 | 1 << 7 | 1 << 8) -# define IS_PIPESTART(p) (p->fdin == STDIN) -# define IS_PIPEEND(p) (p->fdout == STDOUT) +# define IS_PIPESTART(p) ((p).fdin == STDIN) +# define IS_PIPEEND(p) ((p).fdout == STDOUT) # define IS_PIPESINGLE(p) (IS_PIPESTART(p) && IS_PIPEEND(p)) -# define EXEC_BG (1 << 1) -# define EXEC_AND_IF (1 << 2) -# define EXEC_OR_IF (1 << 3) -# define EXEC_IS_BG(j) (j & EXEC_BG) -# define EXEC_IS_FG(j) (!EXEC_IS_BG(j)) -# define EXEC_IS_AND_IF(j) (j & EXEC_AND_IF) -# define EXEC_IS_OR_IF(j) (j & EXEC_JOB_OR_IF) -# define EXEC_AOL_MASK (EXEC_AND_IF | EXEC_OR_IF) +# define EXEC_BG (1 << 1) +# define EXEC_AND_IF (1 << 2) +# define EXEC_OR_IF (1 << 3) +# define EXEC_IF_BRANCH (1 << 4) +# define EXEC_CASE_BRANCH (1 << 5) +# define EXEC_IS_BG(j) (j & EXEC_BG) +# define EXEC_IS_FG(j) (!EXEC_IS_BG(j)) +# define EXEC_IS_AND_IF(j) (j & EXEC_AND_IF) +# define EXEC_IS_OR_IF(j) (j & EXEC_JOB_OR_IF) +# define EXEC_AOL_MASK (EXEC_AND_IF | EXEC_OR_IF) + +# define EXEC_IS_IF_BRANCH(j) (j & EXEC_IF_BRANCH) +# define EXEC_IS_CASE_BRANCH(j) (j & EXEC_CASE_BRANCH) # include "libft.h" # include "types.h" @@ -58,20 +63,19 @@ struct s_process t_list *redirs; int status; t_flag attributes; - t_condition if_branch; - t_condition case_branch; - char *case_pattern; }; struct s_exec { /* char *aol_status; */ /* int aol_search; */ - /* t_job job; */ + t_job job; /* t_process process; */ int fd_save[3]; t_flag attrs; + int fdin; t_list *op_stack; + char *case_pattern; }; struct s_execmap @@ -101,7 +105,7 @@ int exec_or_if(t_btree **ast); int exec_and_if(t_btree **ast); int exec_pipe(t_btree **ast); /* int exec_redir(t_btree **ast); */ -int exec_job(t_btree **ast); +int exec_cmd(t_btree **ast); int exec_while(t_btree **ast); int exec_if(t_btree **ast); @@ -115,7 +119,7 @@ int exec_case(t_btree **ast); int exec_case_branch(t_btree **ast); int launch_process(t_process *p); -int process_setexec(t_type type, t_process *p); +int process_setexec(t_process *p); int process_setgroup(t_process *p, pid_t pid); void process_setsig(void); void process_free(void *content, size_t content_size); @@ -138,6 +142,8 @@ void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); -char **token_to_argv(t_astnode *node); +char **token_to_argv(t_ld *ld); + +int add_new_job(t_job *job); #endif diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index 744dcad4..0437435c 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:01:59 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:38:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,8 @@ # define JOB_NOTIFIED (1 << 0) # define JOB_BG (1 << 1) +# define JOB_IS_BG(j) (j & JOB_BG) +# define JOB_IS_FG(j) (!JOB_IS_BG(j)) # define JOBS_OPTS_L (1 << 0) @@ -28,7 +30,7 @@ struct s_job { int id; pid_t pgid; - t_flag attributes; + t_flag attrs; t_list *first_process; struct termios tmodes; }; diff --git a/42sh/src/builtin/builtin_env.c b/42sh/src/builtin/builtin_env.c index 64b2f931..100cd236 100644 --- a/42sh/src/builtin/builtin_env.c +++ b/42sh/src/builtin/builtin_env.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:14:20 by jhalford #+# #+# */ -/* Updated: 2017/02/17 15:56:55 by gwojda ### ########.fr */ +/* Updated: 2017/03/03 16:07:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index dcd4e16f..d32ad177 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:02:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:05:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int exec_ampersand(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_AMP); ft_exec(&(*ast)->left); - exec->attrs &= ~JOB_BG; + exec->attrs &= ~EXEC_BG; ft_exec(&(*ast)->right); /* if (SH_HAS_JOBC(data_singleton()->opts)) */ diff --git a/42sh/src/exec/exec_and_if.c b/42sh/src/exec/exec_and_if.c index b475724e..874f8004 100644 --- a/42sh/src/exec/exec_and_if.c +++ b/42sh/src/exec/exec_and_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:28 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:41:02 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:05:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ int exec_and_if(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_AND_IF); ft_exec(&(*ast)->left); - exec->attrs |= JOB_AND_IF; + exec->attrs |= EXEC_AND_IF; ft_exec(&(*ast)->right); /* data = data_singleton(); */ diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index dd671440..29f478ab 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/01 16:29:20 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:29:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,11 +15,16 @@ int exec_case(t_btree **ast) { t_astnode *node; - char **av; + /* char **av; */ + t_exec *exec; + + exec = &data_singleton()->exec; + /* data_singleton()->exec.process.case_branch = 0; */ + exec->attrs |= EXEC_CASE_BRANCH; - data_singleton()->exec.process.case_branch = 0; node = (*ast)->item; - av = token_to_argv(node); - data_singleton()->exec.process.case_pattern = av[0]; + /* av = token_to_argv(node); */ + /* data_singleton()->exec.process.case_pattern = av[0]; */ + /* exec->case_pattern = av[0]; */ return (0); } diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index 2102769c..1d45eeb5 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:31:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:28:15 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,16 +15,19 @@ int exec_case_branch(t_btree **ast) { t_astnode *node; - char **av; + /* char **av; */ + t_exec *exec; - if (data_singleton()->exec.process.case_branch == 1) + exec = &data_singleton()->exec; + /* if (data_singleton()->exec.process.case_branch == 1) */ + if (EXEC_IS_CASE_BRANCH(exec->attrs)) return (0); node = (*ast)->item; - av = token_to_argv(node); - if (ft_strcmp(av[0], data_singleton()->exec.process.case_pattern) == 1) - { - data_singleton()->exec.process.case_branch = 1; - ft_exec(&(*ast)->right); - } + /* av = token_to_argv(node); */ + /* if (ft_strcmp(av[0], data_singleton()->exec.process.case_pattern) == 1) */ + /* { */ + /* data_singleton()->exec.process.case_branch = 1; */ + /* ft_exec(&(*ast)->right); */ + /* } */ return (0); } diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index e22d5585..ac3023bb 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,21 +6,19 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:16:23 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:36:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -char **token_to_argv(t_cmd *cmd) +char **token_to_argv(t_ld *ld) { char **my_tab; int index; char **expand; char **content; - t_ld *ld; - ld = cmd->token; my_tab = NULL; while (ld) { @@ -37,33 +35,40 @@ char **token_to_argv(t_cmd *cmd) return (my_tab); } -int exec_job(t_btree **ast) +int exec_cmd(t_btree **ast) { - t_list *cmd; + t_cmd *cmd; + t_job *job; + t_exec *exec; t_process p; - t_list *first_process; int fds[2]; + int op; - cmd = ((t_astnode *)(*ast)->item)->data; + cmd = &((t_astnode *)(*ast)->item)->data.cmd; exec = &data_singleton()->exec; - if (pop(&exec.op_stack) == TK_AMP) - exec->attrs |= JOB_BG; - first_process = NULL; + job = &data_singleton()->exec.job; + process_reset(&p); + op = pop(&exec->op_stack); + fds[PIPE_WRITE] = STDOUT; fds[PIPE_READ] = STDIN; - while (cmd) + if (op == TK_AMP) + exec->attrs |= JOB_BG; + else if (op == TK_PIPE) + pipe(fds); + p.fdin = exec->fdin; + p.fdout = fds[PIPE_WRITE]; + exec->fdin = fds[PIPE_READ]; + if (IS_PIPESTART(p)) { - p.fdin = fds[PIPE_READ]; - p.fdout = cmd->next ? pipe(fds) && fds[PIPE_WRITE] : STDOUT; - process_reset(&p); - if (!(p.av = token_to_argv(cmd->content))) - return (1); - process_setexec(cmd->content, &p); - if (!(launch_process(p))) - ft_lstadd(&first_process, ft_lstnew(&p, sizeof(p))); - cmd = cmd->next; + job->first_process = NULL; + job->attrs = EXEC_IS_FG(exec->attrs) ? 0 : JOB_BG; } - add_new_job(first_process, EXEC_IS_FG(exec->attrs)); - ft_lstadd(&jobc->first_job, ft_lstnew(&job, sizeof(*job))); -// btree_delone(ast, &ast_free); + if (!(p.av = token_to_argv(cmd->token))) + return (1); + process_setexec(&p); + if (!(launch_process(&p))) + ft_lstadd(&job->first_process, ft_lstnew(&p, sizeof(p))); + if (IS_PIPEEND(p)) + add_new_job(job); return (0); } diff --git a/42sh/src/exec/exec_elif.c b/42sh/src/exec/exec_elif.c index ffefcdba..be3bc119 100644 --- a/42sh/src/exec/exec_elif.c +++ b/42sh/src/exec/exec_elif.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:08:53 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:35:47 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:14:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,18 @@ int exec_elif(t_btree **ast) { - if (data_singleton()->exec.process.if_branch == 1) + t_exec *exec; + + exec = &data_singleton()->exec; + /* if (data_singleton()->exec.process.if_branch == 1) */ + if (EXEC_IS_IF_BRANCH(exec->attrs)) return (0); ft_exec(&(*ast)->left); - if (data_singleton()->exec.process.status == 1) + if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")) + /* if (data_singleton()->exec.process.status == 1) */ { - data_singleton()->exec.process.if_branch = 1; + /* data_singleton()->exec.process.if_branch = 1; */ + exec->attrs |= EXEC_IF_BRANCH; ft_exec(&(*ast)->right); } return (0); diff --git a/42sh/src/exec/exec_else.c b/42sh/src/exec/exec_else.c index 9b31f5c6..739753c9 100644 --- a/42sh/src/exec/exec_else.c +++ b/42sh/src/exec/exec_else.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:55:07 by ariard #+# #+# */ -/* Updated: 2017/02/06 19:13:05 by ariard ### ########.fr */ +/* Updated: 2017/03/03 15:56:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,14 @@ int exec_else(t_btree **ast) { - if (data_singleton()->exec.process.if_branch == 0) + t_exec *exec; + + exec = &data_singleton()->exec; + if (EXEC_IS_IF_BRANCH(exec->attrs)) + /* if (data_singleton()->exec.process.if_branch == 0) */ { - data_singleton()->exec.process.if_branch = 1; + exec->attrs |= EXEC_IF_BRANCH; + /* data_singleton()->exec.process.if_branch = 1; */ ft_exec(&(*ast)->right); } return (0); diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index e1defebc..1eed20e7 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:42:21 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:26:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index 81aab2a7..cd03b39f 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/02/20 22:31:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:30:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,11 +14,18 @@ int exec_if(t_btree **ast) { - data_singleton()->exec.process.if_branch = 0; + t_exec *exec; + + exec = &data_singleton()->exec; + + /* data_singleton()->exec.process.if_branch = 0; */ + exec->attrs &= ~EXEC_IF_BRANCH; ft_exec(&(*ast)->left); - if (data_singleton()->exec.process.status == 1) + /* if (data_singleton()->exec.process.status == 1) */ + if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) { - data_singleton()->exec.process.if_branch = 1; + /* data_singleton()->exec.process.if_branch = 1; */ + exec->attrs |= EXEC_IF_BRANCH; ft_exec(&(*ast)->right); } return (0); diff --git a/42sh/src/exec/exec_less.c b/42sh/src/exec/exec_less.c deleted file mode 100644 index 1bbdb78c..00000000 --- a/42sh/src/exec/exec_less.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_less.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/11/14 17:27:08 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:37:28 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "exec.h" - -int exec_less(t_btree **ast) -{ - t_astnode *node; - int fd; - - fd = 0; - node = (*ast)->item; -// fd = open(node->data.redir.word.word, O_RDONLY); - data_singleton()->exec.process.fdin = fd; - /* ft_strappend(&data->exec.process.command, "<"); */ - /* ft_strappend(&data->exec.process.command, node->data.redir.word.word); */ - ft_exec(&(*ast)->left); - data_singleton()->exec.process.fdin = STDIN; - /* data->exec.process.command = NULL; */ - -// btree_delone(ast, &ast_free); - return (0); -} diff --git a/42sh/src/exec/exec_or_if.c b/42sh/src/exec/exec_or_if.c index a0c8e3f6..ec6bc226 100644 --- a/42sh/src/exec/exec_or_if.c +++ b/42sh/src/exec/exec_or_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 21:06:17 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:02:34 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:07:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ int exec_or_if(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_OR_IF); ft_exec(&(*ast)->left); - exec->attrs |= JOB_OR_IF; + exec->attrs |= EXEC_OR_IF; ft_exec(&(*ast)->right); /* data = data_singleton(); */ diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index 9a1a90bc..63c280c0 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 21:13:23 by jhalford #+# #+# */ -/* Updated: 2017/02/21 21:47:43 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:27:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,13 +14,10 @@ int exec_pipe(t_btree **ast) { - t_data *data; - t_process *p; + t_exec *exec; - DG("exec pipe"); - data = data_singleton(); - p = &data->exec.process; - p->pipe_count++; + exec = &data_singleton()->exec; + push(&exec->op_stack, TK_PIPE); ft_exec(&(*ast)->left); ft_exec(&(*ast)->right); /* btree_delone(ast, &ast_free); */ diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 0d49fe4f..e8720350 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:41:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:26:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int exec_semi(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_SEMI); ft_exec(&(*ast)->left); - exec->attrs ~= ~JOB_AOL_MASK; + exec->attrs &= ~EXEC_AOL_MASK; ft_exec(&(*ast)->right); // btree_delone(ast, &ast_free); return (0); diff --git a/42sh/src/exec/exec_until.c b/42sh/src/exec/exec_until.c index 6f1e0c33..e2cf5791 100644 --- a/42sh/src/exec/exec_until.c +++ b/42sh/src/exec/exec_until.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/02/06 20:42:21 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:30:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ int exec_until(t_btree **ast) { ft_exec(&(*ast)->left); - while (data_singleton()->exec.process.status == 0) + while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) { ft_exec(&(*ast)->right); ft_exec(&(*ast)->left); diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index e830950d..016c24a6 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:05:35 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:28:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int exec_var(t_btree **ast) char **av; node = (*ast)->item; - av = token_to_argv(node); + /* av = token_to_argv(node); */ builtin_setenv("setenv", av, data_singleton()->local_var); return (0); } diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index d9824950..e8ff4ac8 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:05:35 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:05:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ int exec_while(t_btree **ast) { ft_exec(&(*ast)->left); - while (data_singleton()->exec.process.status == 1) + while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")) { ft_exec(&(*ast)->right); ft_exec(&(*ast)->left); diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 42875868..e3579dc9 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:53:28 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:28:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ t_execmap g_execmap[] = {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, /* {TK_SUBSHELL, &exec_}, */ - {TK_WORD, &exec_job}, + {TK_WORD, &exec_cmd}, {0, 0}, }; diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 65184fc3..76fbd434 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:29:33 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:29:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,12 +18,7 @@ int launch_process(t_process *p) int pid; exec = &data_singleton()->exec; - if (p->attributes & PROCESS_UNKNOWN) - { - ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); - set_exitstatus(127, 1); - } - else if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(p)) + if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) { if (process_redirect(p)) return (1); @@ -43,6 +38,12 @@ int launch_process(t_process *p) pid = fork(); if (pid == 0) { + if (p->attributes & PROCESS_UNKNOWN) + { + ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); + exit(127); + /* set_exitstatus(127, 1); */ + } process_setgroup(p, 0); process_setsig(); if (process_redirect(p)) diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index 638f1e75..54dffa26 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:44:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:36:06 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index fd2f9848..4f74a7be 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,25 +6,16 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:00:51 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:32:15 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_setexec(t_cmd *cmd, t_process *p) +int process_setexec(t_process *p) { - t_flag type; - - type = cmd->type; p->path = NULL; - /* if (type == TK_SUBSHELL) */ - /* { */ - /* p->execf = &execve; */ - /* p->attributes |= PROCESS_SUBSHELL; */ - /* p->path = ft_strdup(p->av[0]); */ - /* } */ - else if ((p->execf = is_builtin(p))) + if ((p->execf = is_builtin(p))) p->attributes |= PROCESS_BUILTIN; else if (ft_strchr(p->av[0], '/')) { diff --git a/42sh/src/exec/process_setgroup.c b/42sh/src/exec/process_setgroup.c index 16223c08..8654d2f8 100644 --- a/42sh/src/exec/process_setgroup.c +++ b/42sh/src/exec/process_setgroup.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:48:10 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:13:48 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:34:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ int process_setgroup(t_process *p, pid_t pid) if (!j->pgid) j->pgid = pid ? pid : getpid(); setpgid(pid, j->pgid); - if (pid == 0 && JOB_IS_FG(j->attributes)) + if (pid == 0 && JOB_IS_FG(j->attrs)) tcsetpgrp(STDIN, j->pgid); return (0); } diff --git a/42sh/src/glob/command_getoutput.c b/42sh/src/glob/command_getoutput.c index fdf3dda4..30cbc11f 100644 --- a/42sh/src/glob/command_getoutput.c +++ b/42sh/src/glob/command_getoutput.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 14:01:59 by jhalford #+# #+# */ -/* Updated: 2017/02/24 22:04:43 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:45:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,33 +15,34 @@ char *command_getoutput(char *command) { - int fds[2]; - t_btree *ast; - t_astnode item; - char *output; - char buf[BUF_SIZE + 1]; - int ret; - t_exec *exec; + return (command); + /* int fds[2]; */ + /* t_btree *ast; */ + /* t_astnode item; */ + /* char *output; */ + /* char buf[BUF_SIZE + 1]; */ + /* int ret; */ + /* t_exec *exec; */ - output = NULL; - exec = &data_singleton()->exec; - item.type = TK_SUBSHELL; - item.data.sstr = malloc(4 * sizeof(char *)); - item.data.sstr[0] = ft_strdup(data_singleton()->argv[0]); - item.data.sstr[1] = ft_strdup("-c"); - item.data.sstr[2] = ft_strdup(command); - item.data.sstr[3] = NULL; - ast = btree_create_node(&item, sizeof(item)); - pipe(fds); - exec->process.fdout = fds[PIPE_WRITE]; - exec_command(&ast); - exec->process.fdout = STDOUT; - close(fds[PIPE_WRITE]); - while ((ret = read(fds[PIPE_READ], buf, BUF_SIZE))) - { - buf[ret] = 0; - ft_strappend(&output, buf); - } - close(fds[PIPE_READ]); - return (output); + /* output = NULL; */ + /* exec = &data_singleton()->exec; */ + /* item.type = TK_SUBSHELL; */ + /* item.data.sstr = malloc(4 * sizeof(char *)); */ + /* item.data.sstr[0] = ft_strdup(data_singleton()->argv[0]); */ + /* item.data.sstr[1] = ft_strdup("-c"); */ + /* item.data.sstr[2] = ft_strdup(command); */ + /* item.data.sstr[3] = NULL; */ + /* ast = btree_create_node(&item, sizeof(item)); */ + /* pipe(fds); */ + /* exec->process.fdout = fds[PIPE_WRITE]; */ + /* exec_command(&ast); */ + /* exec->process.fdout = STDOUT; */ + /* close(fds[PIPE_WRITE]); */ + /* while ((ret = read(fds[PIPE_READ], buf, BUF_SIZE))) */ + /* { */ + /* buf[ret] = 0; */ + /* ft_strappend(&output, buf); */ + /* } */ + /* close(fds[PIPE_READ]); */ + /* return (output); */ } diff --git a/42sh/src/job-control/add_new_job.c b/42sh/src/job-control/add_new_job.c index 88e31d8b..2797edc2 100644 --- a/42sh/src/job-control/add_new_job.c +++ b/42sh/src/job-control/add_new_job.c @@ -6,25 +6,22 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:04:51 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:47:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "job_control.h" -int add_new_job(t_list *first_process, int foreground) +int add_new_job(t_job *job) { t_jobc *jobc; - t_job job; - if (!first_process) + if (!job->first_process) return (1); jobc = &data_singleton()->jobc; job_update_id(); job->id = jobc->current_id; - job->pgid = ((t_process*)first_process->content)->pid; - job->attrs = foreground ? 0 : JOB_BG; - job->first_process = first_process; + job->pgid = ((t_process*)job->first_process->content)->pid; ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); if (JOB_IS_FG(job->attrs)) put_job_in_foreground(job, 0); diff --git a/42sh/src/job-control/do_job_notification.c b/42sh/src/job-control/do_job_notification.c index 74eff978..0e2aeef6 100644 --- a/42sh/src/job-control/do_job_notification.c +++ b/42sh/src/job-control/do_job_notification.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 13:01:19 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:47:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:46:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,14 +27,14 @@ int do_job_notification(void) { j = jlist->content; if (job_is_completed(j->id) - || (job_is_stopped(j->id) && !(j->attributes & JOB_NOTIFIED))) + || (job_is_stopped(j->id) && !(j->attrs & JOB_NOTIFIED))) { ret = 1; job_notify_change(j->id); if (job_is_completed(j->id)) job_remove(j->id); else - j->attributes |= JOB_NOTIFIED; + j->attrs |= JOB_NOTIFIED; } jlist = jlist->next; } diff --git a/42sh/src/job-control/mark_job_as_running.c b/42sh/src/job-control/mark_job_as_running.c index ea82a0e7..86e5cf01 100644 --- a/42sh/src/job-control/mark_job_as_running.c +++ b/42sh/src/job-control/mark_job_as_running.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/08 14:40:40 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:08:11 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:47:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,5 +28,5 @@ void mark_job_as_running(t_job *j) } plist = plist->next; } - j->attributes &= ~JOB_NOTIFIED; + j->attrs &= ~JOB_NOTIFIED; } diff --git a/42sh/src/lexer/lexer_bquote.c b/42sh/src/lexer/lexer_bquote.c index 0ffbc04e..bf8a9b7f 100644 --- a/42sh/src/lexer/lexer_bquote.c +++ b/42sh/src/lexer/lexer_bquote.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */ -/* Updated: 2017/02/17 15:36:49 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:48:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,7 @@ int lexer_bquote(t_list **alst, t_lexer *lexer) push(&lexer->stack, lexer->state); return (lexer_lex(alst, lexer)); } - top_state = *(int*)pop(&lexer->stack)->content; + top_state = pop(&lexer->stack); lexer->state = top_state == DQUOTE_BQUOTE ? DQUOTE : DEFAULT; return (lexer_lex(alst, lexer)); } diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 554fe821..0a157747 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:02:17 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 16:48:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,8 @@ int data_init(void) data->exec.fd_save[1] = fcntl(1, F_DUPFD_CLOEXEC); data->exec.fd_save[2] = fcntl(2, F_DUPFD_CLOEXEC); data->exec.op_stack = NULL; - data->attrs = 0; + data->exec.fdin = STDIN; + data->exec.attrs = 0; /* data->exec.aol_status = NULL; */ /* data->exec.aol_search = 0; */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 109005cf..9b6b8fb6 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:00:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 15:59:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 5159c30b67077e62fddbf39ffe3b0ecf97bdc9ae Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 16:59:21 +0100 Subject: [PATCH 119/206] new libft for pop --- 42sh/libft | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/42sh/libft b/42sh/libft index 8f6e64fa..318efc7c 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 8f6e64fa9b4ac1dd3e3d5200fb93471ddfeedd40 +Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec From d0b821c483863918972534d06ca5c4f6fdc2bda9 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Fri, 3 Mar 2017 17:19:39 +0100 Subject: [PATCH 120/206] pipe fix grammar + assignement word parsing --- 42sh/Makefile | 3 ++- 42sh/includes/parser.h | 10 +++++--- 42sh/src/addls | 1 + 42sh/src/main/ft_putast.c | 2 +- 42sh/src/parser/add_cmd.c | 4 ++- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/add_var.c | 45 +++++++++++++++++++++++++++++++++ 42sh/src/parser/aggregate_sym.c | 11 ++++---- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/eval_sym.c | 3 ++- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 8 +++--- 12 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 42sh/src/addls create mode 100644 42sh/src/parser/add_var.c diff --git a/42sh/Makefile b/42sh/Makefile index dfca0908..3dc7d3f8 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/03 14:36:32 by ariard ### ########.fr # +# Updated: 2017/03/03 16:05:17 by ariard ### ########.fr # # # # **************************************************************************** # @@ -237,6 +237,7 @@ parser/add_loop.c\ parser/add_redir.c\ parser/add_sep.c\ parser/add_subshell.c\ +parser/add_var.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 925cb1d9..7ca24e5f 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/03 14:16:02 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:07:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -125,17 +125,21 @@ int add_func_cmd(t_btree **ast, t_list **lst); int add_func_sep(t_btree **ast, t_list **lst); int add_one_func(t_btree **ast, t_list **lst); int add_pipe(t_btree **ast, t_list **lst); +int add_var(t_btree **ast, t_list **lst); + int isloop(t_btree **ast, t_list **lst); int iscase(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); int issubshell(t_btree **ast, t_list **lst); int isfunc(t_btree **ast, t_list **lst); -int join_ast(t_btree **ast, t_btree **new_node); -int gen_node(t_btree **ast); int isdir(t_btree **ast); int iscondition(t_btree **ast, t_list **list); int isdir_sep(t_btree **ast, t_list **list); int isdir_word(t_btree **ast, t_list **list); +int isvar(t_btree **ast, t_list **list); + +int join_ast(t_btree **ast, t_btree **new_node); +int gen_node(t_btree **ast); /* * Build AST diff --git a/42sh/src/addls b/42sh/src/addls new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/42sh/src/addls @@ -0,0 +1 @@ + diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 7bce3fb5..5fdc87b3 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/03/03 14:34:25 by ariard ### ########.fr */ +/* Updated: 2017/03/03 14:56:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index ff54406f..9605f7a1 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:33:19 by ariard ### ########.fr */ +/* Updated: 2017/03/03 15:34:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,8 @@ int add_cmd(t_btree **ast, t_list **lst) gen_node(ast); else if (isdir_word(ast, lst)) return (add_redir_word(ast, lst)); + else if (isvar(ast, lst)) + return (add_var(ast, lst)); else if (isloop(ast, lst) == 3) return (add_loop_condition(ast, lst)); else if (isloop(ast, lst)) diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 5aa2d8f5..04a6fde0 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:40 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:05:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_var.c b/42sh/src/parser/add_var.c new file mode 100644 index 00000000..ad11bf54 --- /dev/null +++ b/42sh/src/parser/add_var.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_var.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/03 15:08:16 by ariard #+# #+# */ +/* Updated: 2017/03/03 16:17:27 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int isvar(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type != TK_ASSIGNEMENT_WORD && token->type == TK_ASSIGNEMENT_WORD) + return (1); + } + return (0); +} + +int add_var(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_btree *new_node; + + if (!*ast) + return (0); + new_node = NULL; + gen_node(&new_node); + join_ast(ast, &new_node); + node = (new_node)->item; + node->type = TK_SEMI; + add_cmd(&new_node, lst); + return (0); +} diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 113d812c..0a47c660 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:46 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:35:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,7 @@ t_aggrematch g_aggrematch[] = {TK_PAREN_OPEN, CMD_SUPERIOR, FUNC_NAME, CMD_SUPERIOR}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, {TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, @@ -306,20 +307,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) int i; i = 0; -// DG("aggregate head %s && sym %s", -// read_state(**stack), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(**stack), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(**stack, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); -// DG("stack after pop: %s", read_state(**stack)); + DG("stack after pop: %s", read_state(**stack)); } if (eval_sym(**stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index a2929cb6..246cd41d 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:35:40 by ariard ### ########.fr */ +/* Updated: 2017/03/03 15:08:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index cae28a05..8add5de6 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -393,6 +393,7 @@ t_stackmatch g_stackmatch[] = {TK_AMP, TERM}, {TK_PIPE, PATTERN}, {TK_PIPE, CMD_SUPERIOR}, + {TK_PIPE, PIPE_SEMI_SEQUENCE}, {PATTERN_CASE, TK_IN}, {PATTERN_CASE, CASE_LIST_NS}, {TK_PAREN_OPEN, COMPLETE_COMMANDS}, @@ -1009,7 +1010,7 @@ int eval_sym(t_sym stack, t_sym new_sym) { int i; -// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index ef80af07..5889b603 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -32,7 +32,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) while (*token) { produce_sym(*parser->stack, parser->new_sym, token); - //DG("new sym %s", read_state(*parser->new_sym)); + DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(*parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c21fec05..af056626 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:28:05 by ariard ### ########.fr */ +/* Updated: 2017/03/03 16:22:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -105,8 +105,8 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) int i; token = (*lst)->content; -// DG("produce stack : %s && token : %s", read_state(stack), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(stack), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -114,7 +114,7 @@ int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && stack == g_prodmatch[i].stack) { -// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; From 2ad34631e30e663ba6634ae607f10ccef63abfd6 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 17:58:08 +0100 Subject: [PATCH 121/206] parentheses dont trigger more input after lexing --- 42sh/Makefile | 6 +----- 42sh/includes/lexer.h | 4 ++-- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/lexer/get_lexer_stack.c | 12 ++++++++++++ 42sh/src/lexer/get_state_global.c | 2 +- 42sh/src/lexer/lexer_bquote.c | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_lex.c | 4 ++-- 42sh/src/lexer/lexer_number.c | 2 +- 42sh/src/lexer/lexer_paren.c | 12 ++++++++++++ 42sh/src/lexer/lexer_word.c | 26 +------------------------- 42sh/src/main/data_init.c | 2 +- 42sh/src/main/main.c | 8 +++++--- 13 files changed, 41 insertions(+), 43 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index ae67e26f..3b26beb7 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,11 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -<<<<<<< HEAD -# Updated: 2017/03/03 14:36:32 by ariard ### ########.fr # -======= -# Updated: 2017/03/02 16:23:48 by jhalford ### ########.fr # ->>>>>>> pda_execution +# Updated: 2017/03/03 17:56:12 by jhalford ### ########.fr # # # # **************************************************************************** # diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 927d5dec..078b2005 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/02 17:15:15 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:55:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,7 @@ | TK_DO | TK_IF | TK_FI | TK_THEN | TK_ELIF | TK_ELSE) enum e_lexstate { + PAREN, DEFAULT, NEWLINE, DELIM, @@ -39,7 +40,6 @@ enum e_lexstate BQUOTE, DQUOTE_BQUOTE, BACKSLASH, - PAREN, CURLY_BRACKETS, ASSIGNEMENT_WORD, COMMENT, diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index d39de6f2..cf915722 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:31:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:37:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_lexer_stack.c b/42sh/src/lexer/get_lexer_stack.c index 10ce9b70..d8c449ec 100644 --- a/42sh/src/lexer/get_lexer_stack.c +++ b/42sh/src/lexer/get_lexer_stack.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_lexer_stack.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/03 17:39:45 by jhalford #+# #+# */ +/* Updated: 2017/03/03 17:40:24 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "lexer.h" int get_lexer_stack(t_lexer lexer) diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index e677ed39..550e7b2c 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:31:47 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:56:09 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_bquote.c b/42sh/src/lexer/lexer_bquote.c index bf8a9b7f..b4360556 100644 --- a/42sh/src/lexer/lexer_bquote.c +++ b/42sh/src/lexer/lexer_bquote.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:48:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:45:53 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index d2acede7..94bf796c 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/03/01 23:40:16 by ariard ### ########.fr */ +/* Updated: 2017/03/03 17:55:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 27535a56..75f0e4f1 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/02/24 21:38:42 by ariard ### ########.fr */ +/* Updated: 2017/03/03 17:55:55 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = { + &lexer_paren, &lexer_default, &lexer_newline, &lexer_delim, @@ -30,7 +31,6 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_bquote, &lexer_bquote, &lexer_backslash, - &lexer_paren, &lexer_curly_brackets, &lexer_assignement_word, &lexer_comment, diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 8759c156..90562cb1 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/01 23:39:37 by ariard ### ########.fr */ +/* Updated: 2017/03/03 17:35:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_paren.c b/42sh/src/lexer/lexer_paren.c index dd795357..e80b6a1a 100644 --- a/42sh/src/lexer/lexer_paren.c +++ b/42sh/src/lexer/lexer_paren.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_paren.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/03 17:37:15 by jhalford #+# #+# */ +/* Updated: 2017/03/03 17:48:28 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "lexer.h" int lexer_paren(t_list **alst, t_lexer *lexer) diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 50ad864f..066379f2 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:31:56 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:56:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,27 +51,3 @@ int lexer_word(t_list **alst, t_lexer *lexer) lexer->pos++; return (lexer_lex(alst, lexer)); } - -/* -int lexer_word(t_list **alst, t_lexer *lexer) -{ - t_token *token; - t_lexstate state; - - token = (*alst)->content; - token->type = TK_WORD; - if ((state = get_state_global(lexer))) - { - lexer->state = state; - return (lexer_lex(alst, lexer)); - } - if ((state = get_state_redir(lexer))) - { - lexer->state = state; - return (lexer_lex(alst, lexer)); - } - token_append(token, lexer, 0, 0); - lexer->pos++; - return (lexer_lex(alst, lexer)); -} -*/ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 0a157747..1aa6c777 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:48:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:39:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 75ce40bd..820abfb9 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:32:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:55:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,6 @@ int handle_instruction(int fd) if ((ret = readline(fd, get_lexer_stack(lexer) || parser.state == UNDEFINED, &str))) { - /* ft_putstr("bonjour"); */ if (ret == -1) return (-1); return (parser.state == UNDEFINED ? error_EOF() : 1); @@ -42,9 +41,11 @@ int handle_instruction(int fd) else if (get_lexer_stack(lexer) == DLESS) lexer.state = DLESS; ltoken = ft_lstlast(token); + DG(); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); - if (get_lexer_stack(lexer)) + DG(); + if (get_lexer_stack(lexer) > 1) continue ; lexer.state = DEFAULT; token_print(token); @@ -62,6 +63,7 @@ int handle_instruction(int fd) error_syntax(&token); token = NULL; } + DG(); DG("Before execution:"); btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) From 67751202645e0bc05c0467b82cc0414d5cd892d9 Mon Sep 17 00:00:00 2001 From: wescande Date: Fri, 3 Mar 2017 17:59:39 +0100 Subject: [PATCH 122/206] protection de segv au lancement du shell (redirection entrante & nom de fichier non valid) --- 42sh/src/main/main.c | 9 +++++++-- 42sh/src/main/shell_get_avdata.c | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index a4ca3108..8ac2065d 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:40:50 by ariard ### ########.fr */ +/* Updated: 2017/03/03 17:49:18 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,7 @@ int handle_instruction(int fd) if ((ret = readline(fd, get_lexer_stack(lexer) || parser.state == UNDEFINED, &str))) { + ft_putnbr(ret); ft_putstr("bonjour"); if (ret == -1) return (-1); @@ -108,7 +109,11 @@ int main(int ac, char **av) shell_init(ac, av); DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF"); - fd = get_input_fd(); + if ((fd = get_input_fd() < 0)) + { + ft_printf("{red}%s: No such file or directory\n{eoc}", SHELL_NAME); + return (1); + } while (handle_instruction(fd) == 0) { // lexer_clean; diff --git a/42sh/src/main/shell_get_avdata.c b/42sh/src/main/shell_get_avdata.c index 6194cbf3..16a34d13 100644 --- a/42sh/src/main/shell_get_avdata.c +++ b/42sh/src/main/shell_get_avdata.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 17:14:52 by jhalford #+# #+# */ -/* Updated: 2017/01/19 20:56:05 by ariard ### ########.fr */ +/* Updated: 2017/03/03 17:33:33 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ char *shell_get_avdata() data = data_singleton(); av = data->argv; i = 1; - while (av[i][0] == '-') + while (av[i] && av[i][0] == '-') { if (ft_strcmp(av[i], "--") == 0) { From d146126135c19da7df2293bfaae34b5d90589aef Mon Sep 17 00:00:00 2001 From: wescande Date: Fri, 3 Mar 2017 18:01:25 +0100 Subject: [PATCH 123/206] rectif makefile --- 42sh/Makefile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index ae67e26f..eb5de9c9 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,11 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -<<<<<<< HEAD -# Updated: 2017/03/03 14:36:32 by ariard ### ########.fr # -======= -# Updated: 2017/03/02 16:23:48 by jhalford ### ########.fr # ->>>>>>> pda_execution +# Updated: 2017/03/03 18:00:59 by wescande ### ########.fr # # # # **************************************************************************** # From 03c62f69a691cb0886daf1b73278cf21a193dc1e Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 18:03:17 +0100 Subject: [PATCH 124/206] stuff --- 42sh/Makefile | 2 +- 42sh/includes/lexer.h | 2 +- 42sh/src/exec/exec_command.c | 3 ++- 42sh/src/exec/exec_semi.c | 5 ++++- 42sh/src/exec/ft_exec.c | 9 +++++---- 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/main/main.c | 5 +---- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index 3b26beb7..e13fd4e3 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/03 17:56:12 by jhalford ### ########.fr # +# Updated: 2017/03/03 17:58:15 by jhalford ### ########.fr # # # # **************************************************************************** # diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 078b2005..12f76e17 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:55:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:58:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index cf915722..801cb235 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:37:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:59:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,6 +49,7 @@ int exec_cmd(t_btree **ast) job = &data_singleton()->exec.job; process_reset(&p); op = pop(&exec->op_stack); + DG("op=%i", op); fds[PIPE_WRITE] = STDOUT; fds[PIPE_READ] = STDIN; if (op == TK_AMP) diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index e8720350..58013f17 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:26:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:01:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,8 +17,11 @@ int exec_semi(t_btree **ast) t_exec *exec; exec = &data_singleton()->exec; + DG(); push(&exec->op_stack, TK_SEMI); + DG(); ft_exec(&(*ast)->left); + DG(); exec->attrs &= ~EXEC_AOL_MASK; ft_exec(&(*ast)->right); // btree_delone(ast, &ast_free); diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index e3579dc9..5d3b8090 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:28:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:02:55 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ t_execmap g_execmap[] = {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, /* {TK_SUBSHELL, &exec_}, */ - {TK_WORD, &exec_cmd}, + {CMD, &exec_cmd}, {0, 0}, }; @@ -36,6 +36,7 @@ int ft_exec(t_btree **ast) int i; i = 0; + DG(); if (!*ast) return (0); item = (*ast)->item; @@ -43,8 +44,8 @@ int ft_exec(t_btree **ast) { if (item->type == g_execmap[i].type) { - /* DG("match : %s and %s", */ - /* read_state(item->type), read_state(g_execmap[i].type)); */ + DG("match : %s and %s", + read_state(item->type), read_state(g_execmap[i].type)); return ((*g_execmap[i].f)(ast)); } i++; diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index 396dc6d3..31b45b4b 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/02/09 19:55:04 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:00:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 820abfb9..6e67591b 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:55:01 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 17:58:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,10 +41,8 @@ int handle_instruction(int fd) else if (get_lexer_stack(lexer) == DLESS) lexer.state = DLESS; ltoken = ft_lstlast(token); - DG(); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); - DG(); if (get_lexer_stack(lexer) > 1) continue ; lexer.state = DEFAULT; @@ -63,7 +61,6 @@ int handle_instruction(int fd) error_syntax(&token); token = NULL; } - DG(); DG("Before execution:"); btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) From 4c44407b65c8d734138eea855584293e0fbb9c21 Mon Sep 17 00:00:00 2001 From: wescande Date: Fri, 3 Mar 2017 18:49:39 +0100 Subject: [PATCH 125/206] correctif on some stuff + ajout framework for test --- 42sh/TESTSHELL/simple_cmd/echo.test | 1 + 42sh/TESTSHELL/simple_cmd/ls.test | 1 + 42sh/TESTSHELL/simple_cmd/pwd.test | 1 + 42sh/TESTSHELL/stderr_ref | 0 42sh/TESTSHELL/stderr_test | 0 42sh/TESTSHELL/stdin_ref | 14 +++++++ 42sh/TESTSHELL/stdin_test | 43 ++++++++++++++++++++ 42sh/src/exec/exec_command.c | 2 +- 42sh/src/job-control/add_new_job.c | 4 +- 42sh/src/job-control/put_job_in_foreground.c | 3 +- 42sh/src/line-editing/readline.c | 2 +- 42sh/src/main/main.c | 9 +++- 42sh/test_framework.sh | 41 +++++++++++++++++++ 13 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 42sh/TESTSHELL/simple_cmd/echo.test create mode 100644 42sh/TESTSHELL/simple_cmd/ls.test create mode 100644 42sh/TESTSHELL/simple_cmd/pwd.test create mode 100644 42sh/TESTSHELL/stderr_ref create mode 100644 42sh/TESTSHELL/stderr_test create mode 100644 42sh/TESTSHELL/stdin_ref create mode 100644 42sh/TESTSHELL/stdin_test create mode 100755 42sh/test_framework.sh diff --git a/42sh/TESTSHELL/simple_cmd/echo.test b/42sh/TESTSHELL/simple_cmd/echo.test new file mode 100644 index 00000000..3997594c --- /dev/null +++ b/42sh/TESTSHELL/simple_cmd/echo.test @@ -0,0 +1 @@ +echo 'je suis un test' diff --git a/42sh/TESTSHELL/simple_cmd/ls.test b/42sh/TESTSHELL/simple_cmd/ls.test new file mode 100644 index 00000000..9e2740c6 --- /dev/null +++ b/42sh/TESTSHELL/simple_cmd/ls.test @@ -0,0 +1 @@ +ls diff --git a/42sh/TESTSHELL/simple_cmd/pwd.test b/42sh/TESTSHELL/simple_cmd/pwd.test new file mode 100644 index 00000000..f748bdd0 --- /dev/null +++ b/42sh/TESTSHELL/simple_cmd/pwd.test @@ -0,0 +1 @@ +pwd diff --git a/42sh/TESTSHELL/stderr_ref b/42sh/TESTSHELL/stderr_ref new file mode 100644 index 00000000..e69de29b diff --git a/42sh/TESTSHELL/stderr_test b/42sh/TESTSHELL/stderr_test new file mode 100644 index 00000000..e69de29b diff --git a/42sh/TESTSHELL/stdin_ref b/42sh/TESTSHELL/stdin_ref new file mode 100644 index 00000000..b689ff6b --- /dev/null +++ b/42sh/TESTSHELL/stdin_ref @@ -0,0 +1,14 @@ +42sh +Makefile +TESTSHELL +donovan_segaults_06-02 +file1 +file2 +includes +libft +objs +pdf +sample +src +test_framework.sh +update_makefile.sh diff --git a/42sh/TESTSHELL/stdin_test b/42sh/TESTSHELL/stdin_test new file mode 100644 index 00000000..4b6a7bbd --- /dev/null +++ b/42sh/TESTSHELL/stdin_test @@ -0,0 +1,43 @@ + main.c 107start of shell JOBC is ON + token_print.c 21 token print + token_print.c 25 token : TK_WORD data [ls] + + insert_newline.c 19 insert newline + ft_parse.c 45  + + build_tree.c 83 func TK : 'TK_WORD' TK : 'TK_WORD' + add_cmd.c 55 add data + ft_parse.c 45  + + build_tree.c 83 func TK : 'TK_NEWLINE' TK : 'TK_NEWLINE' + add_sep.c 21 add sep + ft_parse.c 45  + + ft_parse.c 58 sucessful parsing + main.c 64 Before execution: + NEW + +----+ + CMD + ft_exec.c 39  + ft_exec.c 48 match : TK_NEWLINE and TK_NEWLINE + exec_semi.c 20  + exec_semi.c 22  + ft_exec.c 39  + ft_exec.c 48 match : NON-DEFINED and NON-DEFINED + exec_command.c 52 op=2118139328 +42sh +Makefile +TESTSHELL +donovan_segaults_06-02 +file1 +file2 +includes +libft +objs +pdf +sample +src +test_framework.sh +update_makefile.sh + exec_semi.c 24  + ft_exec.c 39  diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 801cb235..e3133e1f 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:59:42 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:44:43 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/add_new_job.c b/42sh/src/job-control/add_new_job.c index 2797edc2..3838a178 100644 --- a/42sh/src/job-control/add_new_job.c +++ b/42sh/src/job-control/add_new_job.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:47:47 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:44:42 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,9 @@ int add_new_job(t_job *job) if (JOB_IS_FG(job->attrs)) put_job_in_foreground(job, 0); else + { job_notify_new(job); put_job_in_background(job, 0); + } return (0); } diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 3f783821..636853ed 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:59:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:44:44 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,6 @@ int put_job_in_foreground(t_job *j, int cont) jobc = &data_singleton()->jobc; tcsetpgrp(STDIN, j->pgid); tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); - if (cont) { tcsetattr(STDIN, TCSADRAIN, &j->tmodes); diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index 8f79d589..6d8f7f48 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/03/02 12:36:35 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:29:03 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 07287a11..9f6b966d 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:05:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:33:40 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,10 +63,14 @@ int handle_instruction(int fd) } DG("Before execution:"); btree_print(STDBUG, ast, &ft_putast); + DG(); if (ft_exec(&ast)) return (1); + DG(); btree_del(&ast, &ast_free); + DG(); ft_add_str_in_history(lexer.str); + DG(); return (0); } @@ -83,6 +87,7 @@ int get_input_fd() return (fd); else if (data->opts & SH_OPTS_LC) { + DG(); pipe(fds); fd = fds[PIPE_READ]; file = shell_get_avdata(); @@ -105,7 +110,7 @@ int main(int ac, char **av) shell_init(ac, av); DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF"); - if ((fd = get_input_fd() < 0)) + if ((fd = get_input_fd()) < 0) { ft_printf("{red}%s: No such file or directory\n{eoc}", SHELL_NAME); return (1); diff --git a/42sh/test_framework.sh b/42sh/test_framework.sh new file mode 100755 index 00000000..eb97fe43 --- /dev/null +++ b/42sh/test_framework.sh @@ -0,0 +1,41 @@ +SHELL=$1 +TOTAL_TEST=0 +NBR_TEST_SUCCESS=0 +unset LIST_TEST +LIST_TEST='./TESTSHELL/*'/'*'.test +DIR_TEST=./TESTSHELL + +do_test() { + +for TEST in $LIST_TEST +do + + ($SHELL < $TEST 1> ${DIR_TEST}/stdin_test 2> ${DIR_TEST}/stderr_test) + (bash < $TEST 1> ${DIR_TEST}/stdin_ref 2> ${DIR_TEST}/stderr_ref) + + if ! diff ${DIR_TEST}/stdin_test ${DIR_TEST}/stdin_ref > /dev/null || + ! diff ${DIR_TEST}/stderr_test ${DIR_TEST}/stderr_test > /dev/null + then + echo "\033[0;31mFAILURE $TEST" >> ${DIR_TEST}/resultat + else + ((NBR_TEST_SUCCESS++)) + fi + ((TOTAL_TEST++)) +done +} + +do_test + +if [ -e ${DIR_TEST}/resultat ] +then + cat ${DIR_TEST}/resultat +fi +echo "\033[0;32mYou succeed $NBR_TEST_SUCCESS tests on $TOTAL_TEST" + +rm -f $DIR_TEST/resultat + +#add random input sed -n $RANDOM "p" /usr/share/dict/words +#add timeout +#charging phase of test +#real verification of references +#to add extranous comportement From 20e96b751fd7b6a876b1c917d38c160a73e416cb Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 18:50:13 +0100 Subject: [PATCH 126/206] pipes work --- 42sh/Makefile | 2 +- 42sh/includes/job_control.h | 4 +-- 42sh/includes/types.h | 2 +- 42sh/src/exec/exec_command.c | 17 +++++++++-- 42sh/src/exec/exec_semi.c | 5 +--- 42sh/src/exec/ft_exec.c | 5 ++-- 42sh/src/exec/launch_process.c | 5 +++- .../mark_process_status.c} | 5 ++-- 42sh/src/exec/process_redirect.c | 6 ++-- 42sh/src/job-control/add_new_job.c | 9 ++---- 42sh/src/job-control/job_update_id.c | 2 +- 42sh/src/job-control/job_update_status.c | 4 +-- 42sh/src/job-control/job_wait.c | 28 ++++++++++++------- 42sh/src/job-control/put_job_in_foreground.c | 4 ++- 42sh/src/parser/read_stack.c | 4 ++- 15 files changed, 62 insertions(+), 40 deletions(-) rename 42sh/src/{job-control/process_mark_status.c => exec/mark_process_status.c} (90%) diff --git a/42sh/Makefile b/42sh/Makefile index 7d39d7e5..be5adabc 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -81,6 +81,7 @@ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ exec/launch_process.c\ +exec/mark_process_status.c\ exec/process_redirect.c\ exec/process_reset.c\ exec/process_setexec.c\ @@ -159,7 +160,6 @@ job-control/mark_job_as_running.c\ job-control/process_cmp_pid.c\ job-control/process_format.c\ job-control/process_free.c\ -job-control/process_mark_status.c\ job-control/put_job_in_background.c\ job-control/put_job_in_foreground.c\ job-control/sigchld_handler.c\ diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index 0437435c..b8f04fa4 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:38:51 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:35:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,7 +58,7 @@ void job_format_head(t_job *j); void job_update_status(void); void mark_job_as_running (t_job *j); -int process_mark_status(pid_t pid, int status); +int mark_process_status(pid_t pid, int status); int job_is_stopped(int id); int job_is_completed(int id); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 893007b4..d134e8c9 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:30:47 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:19:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 801cb235..c794768e 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:59:42 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:49:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,15 +49,19 @@ int exec_cmd(t_btree **ast) job = &data_singleton()->exec.job; process_reset(&p); op = pop(&exec->op_stack); - DG("op=%i", op); fds[PIPE_WRITE] = STDOUT; fds[PIPE_READ] = STDIN; if (op == TK_AMP) exec->attrs |= JOB_BG; else if (op == TK_PIPE) + { pipe(fds); + DG("%i -> PIPE -> %i", fds[PIPE_WRITE], fds[PIPE_READ]); + } p.fdin = exec->fdin; + p.to_close = fds[PIPE_READ]; p.fdout = fds[PIPE_WRITE]; + p.redirs = cmd->redir; exec->fdin = fds[PIPE_READ]; if (IS_PIPESTART(p)) { @@ -69,7 +73,16 @@ int exec_cmd(t_btree **ast) process_setexec(&p); if (!(launch_process(&p))) ft_lstadd(&job->first_process, ft_lstnew(&p, sizeof(p))); + if (fds[PIPE_WRITE] != STDOUT) + close(fds[PIPE_WRITE]); if (IS_PIPEEND(p)) add_new_job(job); + if (JOB_IS_FG(job->attrs)) + put_job_in_foreground(job, 0); + else + { + job_notify_new(job); + put_job_in_background(job, 0); + } return (0); } diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 58013f17..f664b25e 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:01:38 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:10:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,8 @@ int exec_semi(t_btree **ast) t_exec *exec; exec = &data_singleton()->exec; - DG(); push(&exec->op_stack, TK_SEMI); - DG(); ft_exec(&(*ast)->left); - DG(); exec->attrs &= ~EXEC_AOL_MASK; ft_exec(&(*ast)->right); // btree_delone(ast, &ast_free); diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 5d3b8090..1c46fea9 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:02:55 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:26:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ t_execmap g_execmap[] = {TK_AMP, &exec_ampersand}, {TK_AND_IF, &exec_and_if}, {TK_OR_IF, &exec_or_if}, - /* {TK_PIPE, &exec_pipe}, */ + {TK_PIPE, &exec_pipe}, {TK_WHILE, &exec_while}, {TK_IF, &exec_if}, {TK_ELIF, &exec_elif}, @@ -36,7 +36,6 @@ int ft_exec(t_btree **ast) int i; i = 0; - DG(); if (!*ast) return (0); item = (*ast)->item; diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 76fbd434..085ce337 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:29:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:49:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,9 @@ int launch_process(t_process *p) int pid; exec = &data_singleton()->exec; + DG("gonna launch [%s]", p->av[0]); + DG("fdin=[%i]", p->fdin); + DG("fdout=[%i]", p->fdout); if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) { if (process_redirect(p)) diff --git a/42sh/src/job-control/process_mark_status.c b/42sh/src/exec/mark_process_status.c similarity index 90% rename from 42sh/src/job-control/process_mark_status.c rename to 42sh/src/exec/mark_process_status.c index fd285c0b..2665128d 100644 --- a/42sh/src/job-control/process_mark_status.c +++ b/42sh/src/exec/mark_process_status.c @@ -6,17 +6,18 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:50:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:32:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "job_control.h" -int process_mark_status(pid_t pid, int status) +int mark_process_status(pid_t pid, int status) { t_list *plist; t_process *p; + DG("PMS pid=%i,s=%i", pid, status); if (pid > 1) { if ((plist = job_getprocess(pid))) diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index d62970e6..c13cf802 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/03/02 19:44:42 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:49:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,10 +48,10 @@ int process_redirect(t_process *p) } redirs = redirs->next; } - if (p->to_close != 0) + if (p->to_close != STDIN) close(p->to_close); if (p->fdin != STDIN) - dup2_close(p->fdout, STDOUT); + dup2_close(p->fdin, STDIN); if (p->fdout != STDOUT) dup2_close(p->fdout, STDOUT); return (0); diff --git a/42sh/src/job-control/add_new_job.c b/42sh/src/job-control/add_new_job.c index 2797edc2..daf402e6 100644 --- a/42sh/src/job-control/add_new_job.c +++ b/42sh/src/job-control/add_new_job.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:47:47 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:49:39 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int add_new_job(t_job *job) { t_jobc *jobc; + DG("adding new job"); if (!job->first_process) return (1); jobc = &data_singleton()->jobc; @@ -23,10 +24,6 @@ int add_new_job(t_job *job) job->id = jobc->current_id; job->pgid = ((t_process*)job->first_process->content)->pid; ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); - if (JOB_IS_FG(job->attrs)) - put_job_in_foreground(job, 0); - else - job_notify_new(job); - put_job_in_background(job, 0); + job = jobc->first_job->content; return (0); } diff --git a/42sh/src/job-control/job_update_id.c b/42sh/src/job-control/job_update_id.c index 1fba6f36..8b423e52 100644 --- a/42sh/src/job-control/job_update_id.c +++ b/42sh/src/job-control/job_update_id.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 13:33:08 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:59:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:18:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_update_status.c b/42sh/src/job-control/job_update_status.c index 1fa30cd5..6ab2df78 100644 --- a/42sh/src/job-control/job_update_status.c +++ b/42sh/src/job-control/job_update_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:50:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:37:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,6 @@ void job_update_status(void) pid_t pid; pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG); - while (!process_mark_status(pid, status)) + while (!mark_process_status(pid, status)) pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG); } diff --git a/42sh/src/job-control/job_wait.c b/42sh/src/job-control/job_wait.c index 62f5ebef..eb5a1546 100644 --- a/42sh/src/job-control/job_wait.c +++ b/42sh/src/job-control/job_wait.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */ -/* Updated: 2017/01/31 13:44:17 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:38:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,15 +17,23 @@ int job_wait(int id) pid_t pid; int status; - if (job_is_stopped(id)) - return (0); - job_update_status(); - pid = waitpid(WAIT_ANY, &status, WUNTRACED); - while (!process_mark_status(pid, status) - && !job_is_completed(id) - && !job_is_stopped(id)) - { + DG("job wait [%i]", id); + /* if (job_is_stopped(id)) */ + /* return (0); */ + /* job_update_status(); */ + /* DG("after update status"); */ + /* pid = waitpid(WAIT_ANY, &status, WUNTRACED); */ + /* while (!process_mark_status(pid, status) */ + /* && !job_is_completed(id) */ + /* && !job_is_stopped(id)) */ + /* { */ + + /* pid = waitpid(WAIT_ANY, &status, WUNTRACED); */ + /* } */ + do pid = waitpid(WAIT_ANY, &status, WUNTRACED); - } + while (!mark_process_status(pid, status) + && !job_is_stopped(id) + && !job_is_completed(id)); return (0); } diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 3f783821..fefd9cdd 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:59:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:38:14 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,9 @@ int put_job_in_foreground(t_job *j, int cont) if (kill(-j->pgid, SIGCONT) < 0) DG("kill(SIGCONT) failed"); } + DG("before wait"); job_wait(j->id); + DG("after wait"); job_remove(j->id); tcsetpgrp(STDIN, jobc->shell_pgid); diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 38e51155..1f79a713 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:28:12 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:09:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -194,6 +194,8 @@ char *read_state(t_sym current) return ("ALL"); if (current == NEWLINE_LIST) return ("NEWLINE_LIST"); + if (current == CMD) + return ("CMD"); if (current != 0) return ("NON-DEFINED"); if (current == 0) From 8b88d41ed9556819936ffdd4480f348b8a7c68d4 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 19:05:42 +0100 Subject: [PATCH 127/206] trying to make files work --- 42sh/sample/ls | 1 + 42sh/src/exec/exec_command.c | 16 +++++---- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/mark_process_status.c | 4 +-- 42sh/src/job-control/add_new_job.c | 3 +- 42sh/src/job-control/job_getprocess.c | 2 +- 42sh/src/job-control/job_remove.c | 2 +- 42sh/src/job-control/job_update_status.c | 8 ++--- 42sh/src/job-control/job_wait.c | 14 +------- 42sh/src/job-control/put_job_in_foreground.c | 37 ++++++++++++-------- 42sh/src/main/data_init.c | 2 +- 42sh/src/main/main.c | 11 +++--- 12 files changed, 51 insertions(+), 51 deletions(-) create mode 100644 42sh/sample/ls diff --git a/42sh/sample/ls b/42sh/sample/ls new file mode 100644 index 00000000..9e2740c6 --- /dev/null +++ b/42sh/sample/ls @@ -0,0 +1 @@ +ls diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 32162a94..b63752a6 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:50:48 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:02:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -76,13 +76,15 @@ int exec_cmd(t_btree **ast) if (fds[PIPE_WRITE] != STDOUT) close(fds[PIPE_WRITE]); if (IS_PIPEEND(p)) - add_new_job(job); - if (JOB_IS_FG(job->attrs)) - put_job_in_foreground(job, 0); - else { - job_notify_new(job); - put_job_in_background(job, 0); + add_new_job(job); + if (JOB_IS_FG(job->attrs)) + put_job_in_foreground(job, 0); + else + { + job_notify_new(job); + put_job_in_background(job, 0); + } } return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 1c46fea9..b4b3c578 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:26:31 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:03:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/mark_process_status.c b/42sh/src/exec/mark_process_status.c index 2665128d..32679242 100644 --- a/42sh/src/exec/mark_process_status.c +++ b/42sh/src/exec/mark_process_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:32:23 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:02:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,9 +17,9 @@ int mark_process_status(pid_t pid, int status) t_list *plist; t_process *p; - DG("PMS pid=%i,s=%i", pid, status); if (pid > 1) { + DG("MPS pid=%i,s=%i", pid, status); if ((plist = job_getprocess(pid))) { p = plist->content; diff --git a/42sh/src/job-control/add_new_job.c b/42sh/src/job-control/add_new_job.c index 4343cb0d..3e345d1d 100644 --- a/42sh/src/job-control/add_new_job.c +++ b/42sh/src/job-control/add_new_job.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:51:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:54:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,5 @@ int add_new_job(t_job *job) job->id = jobc->current_id; job->pgid = ((t_process*)job->first_process->content)->pid; ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); - job = jobc->first_job->content; return (0); } diff --git a/42sh/src/job-control/job_getprocess.c b/42sh/src/job-control/job_getprocess.c index a5d421c3..52bb8229 100644 --- a/42sh/src/job-control/job_getprocess.c +++ b/42sh/src/job-control/job_getprocess.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 15:07:30 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:07:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:03:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_remove.c b/42sh/src/job-control/job_remove.c index 9c94db11..2ffe9c8a 100644 --- a/42sh/src/job-control/job_remove.c +++ b/42sh/src/job-control/job_remove.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */ -/* Updated: 2017/01/31 13:44:26 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:53:32 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_update_status.c b/42sh/src/job-control/job_update_status.c index 6ab2df78..5e314792 100644 --- a/42sh/src/job-control/job_update_status.c +++ b/42sh/src/job-control/job_update_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:37:10 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:56:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ void job_update_status(void) int status; pid_t pid; - pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG); - while (!mark_process_status(pid, status)) - pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG); + do + pid = waitpid (WAIT_ANY, &status, WUNTRACED|WNOHANG); + while (!mark_process_status (pid, status)); } diff --git a/42sh/src/job-control/job_wait.c b/42sh/src/job-control/job_wait.c index eb5a1546..6a1c380a 100644 --- a/42sh/src/job-control/job_wait.c +++ b/42sh/src/job-control/job_wait.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:38:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:54:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,18 +18,6 @@ int job_wait(int id) int status; DG("job wait [%i]", id); - /* if (job_is_stopped(id)) */ - /* return (0); */ - /* job_update_status(); */ - /* DG("after update status"); */ - /* pid = waitpid(WAIT_ANY, &status, WUNTRACED); */ - /* while (!process_mark_status(pid, status) */ - /* && !job_is_completed(id) */ - /* && !job_is_stopped(id)) */ - /* { */ - - /* pid = waitpid(WAIT_ANY, &status, WUNTRACED); */ - /* } */ do pid = waitpid(WAIT_ANY, &status, WUNTRACED); while (!mark_process_status(pid, status) diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 50b18485..71411673 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:52:03 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:57:58 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,21 +16,28 @@ int put_job_in_foreground(t_job *j, int cont) { t_jobc *jobc; - jobc = &data_singleton()->jobc; - tcsetpgrp(STDIN, j->pgid); - tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); - if (cont) + if (SH_HAS_JOBC(data_singleton()->opts)) { - tcsetattr(STDIN, TCSADRAIN, &j->tmodes); - if (kill(-j->pgid, SIGCONT) < 0) - DG("kill(SIGCONT) failed"); + jobc = &data_singleton()->jobc; + + tcsetpgrp(STDIN, j->pgid); + tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); + if (cont) + { + tcsetattr(STDIN, TCSADRAIN, &j->tmodes); + if (kill(-j->pgid, SIGCONT) < 0) + DG("kill(SIGCONT) failed"); + } + job_wait(j->id); + job_remove(j->id); + + tcsetpgrp(STDIN, jobc->shell_pgid); + + tcgetattr(STDIN, &j->tmodes); + tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); + tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); } - job_wait(j->id); - job_remove(j->id); - - tcsetpgrp(STDIN, jobc->shell_pgid); - - tcgetattr(STDIN, &j->tmodes); - tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); + else + job_wait(j->id); return (0); } diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 1aa6c777..591cc8c0 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:39:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 18:55:05 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 9f6b966d..f79cb83a 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:33:40 by wescande ### ########.fr */ +/* Updated: 2017/03/03 19:05:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -97,7 +97,10 @@ int get_input_fd() return (fd); } else if ((file = shell_get_avdata())) - return (open(file, O_RDONLY)); + { + if (fd = open(file, O_RDONLY)) + return (fd); + } else return (STDIN); } @@ -108,13 +111,13 @@ int main(int ac, char **av) setlocale(LC_ALL, ""); shell_init(ac, av); - DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s", - SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF"); if ((fd = get_input_fd()) < 0) { ft_printf("{red}%s: No such file or directory\n{eoc}", SHELL_NAME); return (1); } + DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s, fd=[%i]", + SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF", fd); while (handle_instruction(fd) == 0) { // lexer_clean; From f62ef4d9c0f147f2fc917af1b57424ba6e7257e2 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 19:47:06 +0100 Subject: [PATCH 128/206] reading from files now works --- 42sh/src/exec/exec_ampersand.c | 5 +++-- 42sh/src/exec/exec_command.c | 5 +---- 42sh/src/job-control/add_new_job.c | 2 +- 42sh/src/job-control/job_getprocess.c | 2 +- 42sh/src/job-control/job_wait.c | 2 +- 42sh/src/job-control/put_job_in_foreground.c | 10 +++++----- 42sh/src/main/data_init.c | 4 ++-- 42sh/src/main/main.c | 7 ++++--- 42sh/src/main/shell_get_opts.c | 5 ++++- 42sh/src/main/shell_init.c | 2 +- 10 files changed, 23 insertions(+), 21 deletions(-) diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index d32ad177..4480fc2e 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:05:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:35:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,12 +16,13 @@ int exec_ampersand(t_btree **ast) { t_exec *exec; + if (!SH_HAS_JOBC(data_singleton()->opts)) + return (exec_semi(ast)); exec = &data_singleton()->exec; push(&exec->op_stack, TK_AMP); ft_exec(&(*ast)->left); exec->attrs &= ~EXEC_BG; ft_exec(&(*ast)->right); - /* if (SH_HAS_JOBC(data_singleton()->opts)) */ /* data_singleton()->exec.job.attributes |= JOB_BG; */ /* ft_exec(&(*ast)->left); */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index b63752a6..b4acaccf 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:02:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:46:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -54,10 +54,7 @@ int exec_cmd(t_btree **ast) if (op == TK_AMP) exec->attrs |= JOB_BG; else if (op == TK_PIPE) - { pipe(fds); - DG("%i -> PIPE -> %i", fds[PIPE_WRITE], fds[PIPE_READ]); - } p.fdin = exec->fdin; p.to_close = fds[PIPE_READ]; p.fdout = fds[PIPE_WRITE]; diff --git a/42sh/src/job-control/add_new_job.c b/42sh/src/job-control/add_new_job.c index 3e345d1d..3e866fac 100644 --- a/42sh/src/job-control/add_new_job.c +++ b/42sh/src/job-control/add_new_job.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:54:10 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:33:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_getprocess.c b/42sh/src/job-control/job_getprocess.c index 52bb8229..3ad82217 100644 --- a/42sh/src/job-control/job_getprocess.c +++ b/42sh/src/job-control/job_getprocess.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/31 15:07:30 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:03:01 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:42:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_wait.c b/42sh/src/job-control/job_wait.c index 6a1c380a..38f18f8f 100644 --- a/42sh/src/job-control/job_wait.c +++ b/42sh/src/job-control/job_wait.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:54:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:42:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 71411673..c5b75d0b 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:57:58 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:46:03 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,12 +16,10 @@ int put_job_in_foreground(t_job *j, int cont) { t_jobc *jobc; + jobc = &data_singleton()->jobc; if (SH_HAS_JOBC(data_singleton()->opts)) { - jobc = &data_singleton()->jobc; - tcsetpgrp(STDIN, j->pgid); - tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); if (cont) { tcsetattr(STDIN, TCSADRAIN, &j->tmodes); @@ -35,9 +33,11 @@ int put_job_in_foreground(t_job *j, int cont) tcgetattr(STDIN, &j->tmodes); tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); - tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); } else + { job_wait(j->id); + job_remove(j->id); + } return (0); } diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 591cc8c0..78d413f7 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:55:05 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:45:05 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ int data_init(void) data = data_singleton(); data->env = ft_sstrdup(environ); data->comp = NULL; - data->opts = SH_OPTS_JOBC; + data->opts = 0; /* data->exec.process.path = NULL; */ /* data->exec.process.av = NULL; */ /* data->exec.process.to_close = 0; */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index f79cb83a..9bbf2a54 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:05:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:37:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -98,7 +98,8 @@ int get_input_fd() } else if ((file = shell_get_avdata())) { - if (fd = open(file, O_RDONLY)) + if ((fd = open(file, O_RDONLY | O_CLOEXEC)) < 0) + return (-1); return (fd); } else @@ -113,7 +114,7 @@ int main(int ac, char **av) shell_init(ac, av); if ((fd = get_input_fd()) < 0) { - ft_printf("{red}%s: No such file or directory\n{eoc}", SHELL_NAME); + ft_printf("{red}%s: %s: No such file or directory\n{eoc}", SHELL_NAME, shell_get_avdata()); return (1); } DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s, fd=[%i]", diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 215f2145..b0789b58 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/02/21 15:37:22 by ariard ### ########.fr */ +/* Updated: 2017/03/03 19:45:39 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,7 +41,10 @@ void shell_get_opts(int ac, char **av) i = 1; if (isatty(STDIN) && !av[1]) + { data_singleton()->opts |= SH_INTERACTIVE; + data_singleton()->opts |= SH_OPTS_JOBC; + } while (i < ac && av[i][0] == '-') { if (ft_strcmp(av[i], "--") == 0) diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index 7ad9da23..272440d7 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:38:23 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:45:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From b1b0cbdd92ddcf26726f76669572c10fe2892494 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 3 Mar 2017 19:53:59 +0100 Subject: [PATCH 129/206] builtins segfault patch --- 42sh/src/exec/launch_process.c | 3 ++- 42sh/src/main/shell_get_opts.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 085ce337..52919e69 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:49:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:53:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ int launch_process(t_process *p) if (process_redirect(p)) return (1); set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); + return (0); } else { diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index b0789b58..98742c4b 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:45:39 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 19:53:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 29692ef8fa129e9c007ada816adb899ad7a593b9 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Fri, 3 Mar 2017 20:02:53 +0100 Subject: [PATCH 130/206] ast free --- 42sh/Makefile | 3 ++- 42sh/file1 | 0 42sh/file2 | 14 -------------- 42sh/includes/exec.h | 3 ++- 42sh/includes/parser.h | 2 +- 42sh/src/exec/ast_free.c | 32 +++++++++++++++----------------- 42sh/src/exec/redir_free.c | 29 +++++++++++++++++++++++++++++ 42sh/src/lexer/token_free.c | 2 +- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_cmd.c | 4 ++-- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_redir.c | 11 +++++------ 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 6 ++---- 42sh/src/parser/read_stack.c | 2 +- 15 files changed, 63 insertions(+), 51 deletions(-) delete mode 100644 42sh/file1 delete mode 100644 42sh/file2 create mode 100644 42sh/src/exec/redir_free.c diff --git a/42sh/Makefile b/42sh/Makefile index 3dc7d3f8..2fbc2bc6 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/03 16:05:17 by ariard ### ########.fr # +# Updated: 2017/03/03 18:20:32 by ariard ### ########.fr # # # # **************************************************************************** # @@ -59,6 +59,7 @@ completion/c_sizing.c\ completion/c_terminal.c\ completion/completion.c\ exec/ast_free.c\ +exec/redir_free.c\ exec/bad_fd.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ diff --git a/42sh/file1 b/42sh/file1 deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/file2 b/42sh/file2 deleted file mode 100644 index 37e50d1b..00000000 --- a/42sh/file2 +++ /dev/null @@ -1,14 +0,0 @@ -total 576 --rwxr-xr-x 1 ariard 2016_paris 690 Feb 21 15:30 update_makefile.sh -drwxr-xr-x 13 ariard 2016_paris 442 Feb 21 15:30 src -drwxr-xr-x 28 ariard 2016_paris 952 Feb 25 18:21 sample -drwxr-xr-x 6 ariard 2016_paris 204 Feb 21 15:30 pdf -drwxr-xr-x 13 ariard 2016_paris 442 Mar 2 20:15 objs -drwxr-xr-x 12 ariard 2016_paris 408 Mar 2 20:15 libft -drwxr-xr-x 19 ariard 2016_paris 646 Mar 2 20:36 includes --rw-r--r-- 1 ariard 2016_paris 0 Mar 2 20:40 file2 --rw-r--r-- 1 ariard 2016_paris 0 Mar 2 20:40 file1 --rw-r--r-- 1 ariard 2016_paris 4396 Feb 21 15:40 donovan_segaults_06-02 --rw-r--r-- 1 ariard 2016_paris 21985 Mar 2 20:39 STDBUG --rw-r--r-- 1 ariard 2016_paris 8051 Mar 1 16:42 Makefile --rwxr-xr-x 1 ariard 2016_paris 246884 Mar 2 20:38 42sh diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index a115f3cb..81140b50 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:20:15 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:39:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -130,6 +130,7 @@ char *ft_findexec(char *path, char *file); void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); +void redir_free(void *data, size_t content_size); char **token_to_argv(t_astnode *node); diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 7ca24e5f..167ffecb 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:07:33 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:18:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index de356f4f..487cf063 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,34 +6,32 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:40:54 by ariard ### ########.fr */ +/* Updated: 2017/03/03 19:59:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" +void read_redir(void *data) +{ + t_redir *redir; + + redir = data; + DG("file : [%s]", redir->word.word); +} + void ast_free(void *data, size_t content_size) { t_astnode *node; - (void)node; - (void)data; - (void)content_size; - - return ; -/* (void)content_size; node = data; - if (node->type == TK_COMMAND) + if (node->type == CMD) + { ft_ld_clear(&node->data.cmd.token, &ft_tabdel); - else if (node->type == TK_SUBSHELL) - { - ft_sstrfree(node->data.sstr); - node->data.sstr = NULL; + ft_lstdel(&node->data.cmd.redir, &redir_free); } - else if (node->type == TK_LESS || node->type == TK_GREAT || node->type == TK_DGREAT) - { - ft_strdel(&node->data.cmd.redir.word.word); - } -*/ +// if (node->type == WORDLIST) +// do clear + } diff --git a/42sh/src/exec/redir_free.c b/42sh/src/exec/redir_free.c new file mode 100644 index 00000000..9e0a1b06 --- /dev/null +++ b/42sh/src/exec/redir_free.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* redir_free.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/03 18:12:57 by ariard #+# #+# */ +/* Updated: 2017/03/03 20:02:24 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +void redir_free(void *data, size_t content_size) +{ + t_redir *redir; + + (void)content_size; + redir = data; + if (redir->type == TK_GREAT || redir->type == TK_LESS || redir->type == TK_DGREAT) + ft_strdel(&redir->word.word); + else + redir->word.fd = 0; + redir->type = 0; + redir->n = 0; + redir->close = 1; + free(redir); +} diff --git a/42sh/src/lexer/token_free.c b/42sh/src/lexer/token_free.c index 09fb728f..d88b0e1b 100644 --- a/42sh/src/lexer/token_free.c +++ b/42sh/src/lexer/token_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:30 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:55:25 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:57:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index a4ca3108..3867ddad 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:40:50 by ariard ### ########.fr */ +/* Updated: 2017/03/03 19:30:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 9605f7a1..fa49951e 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/03 15:34:38 by ariard ### ########.fr */ +/* Updated: 2017/03/03 19:43:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,7 +59,7 @@ int add_cmd(t_btree **ast, t_list **lst) my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); my_tab = ft_sstradd(my_tab, (char *)token->esc2); - ft_ld_pushback(&node->data.cmd.token, my_tab); + ft_ld_pushback(&node->data.cmd.token, my_tab); } return (0); } diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index fa17904c..a26d2755 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:27 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:01:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index f3cc03bd..7d88688e 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:35:14 by ariard ### ########.fr */ +/* Updated: 2017/03/03 20:02:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -69,7 +69,7 @@ int add_redir_word(t_btree **ast, t_list **lst) else if (ft_stris((char *)token->data, &ft_isdigit)) redir->word.fd = ft_atoi(token->data); else - redir->word.word = token->data; + redir->word.word = ft_strdup(token->data); } return (0); } @@ -78,7 +78,7 @@ int add_redir_type(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; - t_redir *redir; + t_redir redir; DG("add redir"); if (!*ast) @@ -86,8 +86,7 @@ int add_redir_type(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; node->type = REDIR; - redir = ft_memalloc(sizeof(redir)); - redir->type = token->type; - ft_lsteadd(&node->data.cmd.redir, ft_lstnew(redir, sizeof(redir))); + redir.type = token->type; + ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 5889b603..8672cfc8 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -33,7 +33,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { produce_sym(*parser->stack, parser->new_sym, token); DG("new sym %s", read_state(*parser->new_sym)); - + DG("number of token to treat: %d", ft_lstsize(*token)); if (eval_sym(*parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index af056626..f7e07c32 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:22:31 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:43:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,13 +88,11 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST}, {TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, - {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, - {TK_SEMI, TERM, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, {TK_SEMI, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {TK_AMP, CMD_SUPERIOR, SEPARATOR_OP}, - {TK_AMP, TERM, SEPARATOR_OP}, {TK_AMP, LIST, SEPARATOR_OP}, + {TK_AMP, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {0, 0, 0}, }; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 38e51155..e033924e 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:28:12 by ariard ### ########.fr */ +/* Updated: 2017/03/03 18:44:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From ed0c3803b0acd0499b54eee9a5f317abeb2d6e4d Mon Sep 17 00:00:00 2001 From: wescande Date: Fri, 3 Mar 2017 20:13:55 +0100 Subject: [PATCH 131/206] rectif builtin cd : ajout du -- pour stopper les args, ajout des messages d'erreurs pour trops d'arguments ou home not set --- 42sh/src/builtin/builtin_cd.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/42sh/src/builtin/builtin_cd.c b/42sh/src/builtin/builtin_cd.c index b827f88c..4884205e 100644 --- a/42sh/src/builtin/builtin_cd.c +++ b/42sh/src/builtin/builtin_cd.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:57:53 by jhalford #+# #+# */ -/* Updated: 2017/02/21 11:13:47 by ariard ### ########.fr */ +/* Updated: 2017/03/03 20:12:45 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ #define HAS_CDOPT_P(x) (x & CD_OPT_P) #define HAS_CDOPT_L(x) (x & CD_OPT_L) #define CDERR_1 "{red}cd: no such file or directory: %s{eoc}\n" +#define CDERR_2 "{red}cd: HOME not set{eoc}\n" +#define CDERR_3 "{red}cd: too many arguments{eoc}\n" static char *builtin_cd_special(char *const av[], char *const env[]) { @@ -25,7 +27,15 @@ static char *builtin_cd_special(char *const av[], char *const env[]) if (!*av) { if (!(target = ft_getenv((char**)env, "HOME"))) + { + ft_dprintf(2, CDERR_2); return (NULL); + } + } + else if (*av && *(av + 1)) + { + ft_dprintf(2, CDERR_3); + return (NULL); } else if (ft_strcmp(*av, "-") == 0) target = ft_strdup(ft_getenv((char**)env, "OLDPWD")); @@ -38,10 +48,8 @@ static int builtin_cd_opts(char *const av[], int *opts) { int i; int j; - int tmp_opts; i = 1; - tmp_opts = 0; if (av) while (av[i] && av[i][0] == '-' && av[i][1]) { @@ -49,35 +57,37 @@ static int builtin_cd_opts(char *const av[], int *opts) while (av[i][++j]) { if (av[i][j] == 'P') - tmp_opts |= CDOPT_P; + *opts = CDOPT_P; else if (av[i][j] == 'L') - tmp_opts |= CDOPT_L; + *opts = CDOPT_L; + else if (av[i][j] == '-') + return (i + 1); else return (i); } - *opts |= tmp_opts; - i++; + ++i; } return (i); } -int builtin_cd(const char *path, char *const av[], char *const envp[]) +int builtin_cd(const char *path, + char *const av[], char *const envp[]) { int i; int opts; char *target; char *cwd; - opts = 0; + opts = CDOPT_L; i = builtin_cd_opts(av, &opts); if (!(target = builtin_cd_special(av + i, envp))) - return (0); + return (1); cwd = getcwd(NULL, 0); builtin_setenv(path, (char*[3]){"OLDPWD", cwd, NULL}, envp); free(cwd); if (chdir(target)) { - ft_printf(CDERR_1, target); + ft_dprintf(2, CDERR_1, target); return (1); } else if (target != av[i]) From 6ce2a1ec14305b693ded2b103a5ce2cc64474582 Mon Sep 17 00:00:00 2001 From: wescande Date: Fri, 3 Mar 2017 20:45:36 +0100 Subject: [PATCH 132/206] rectif free on expand_var --- 42sh/Makefile | 3 +- 42sh/includes/exec.h | 4 +-- 42sh/includes/glob.h | 5 +-- 42sh/src/exec/exec_command.c | 8 ++--- 42sh/src/exec/exec_var.c | 4 +-- 42sh/src/glob/expand_home.c | 51 ++++++++++++++++++++++++++ 42sh/src/glob/expand_var.c | 3 +- 42sh/src/glob/glob.c | 69 +++++++++++++++++++++--------------- 8 files changed, 105 insertions(+), 42 deletions(-) create mode 100644 42sh/src/glob/expand_home.c diff --git a/42sh/Makefile b/42sh/Makefile index f8a561a6..fabb7a5a 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -59,7 +59,6 @@ completion/c_sizing.c\ completion/c_terminal.c\ completion/completion.c\ exec/ast_free.c\ -exec/redir_free.c\ exec/bad_fd.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ @@ -88,6 +87,7 @@ exec/process_reset.c\ exec/process_setexec.c\ exec/process_setgroup.c\ exec/process_setsig.c\ +exec/redir_free.c\ exec/redirect_dgreat.c\ exec/redirect_dless.c\ exec/redirect_great.c\ @@ -101,6 +101,7 @@ glob/esc_print.c\ glob/expand_bquote.c\ glob/expand_brace.c\ glob/expand_esc.c\ +glob/expand_home.c\ glob/expand_var.c\ glob/ft_strsplit_esc.c\ glob/ft_strsplit_spe.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 4784ce77..be67f404 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/03 20:07:01 by ariard ### ########.fr */ +/* Updated: 2017/03/03 20:28:08 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -143,7 +143,7 @@ void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); void redir_free(void *data, size_t content_size); -char **token_to_argv(t_ld *ld); +char **token_to_argv(t_ld *ld, int do_match); int add_new_job(t_job *job); diff --git a/42sh/includes/glob.h b/42sh/includes/glob.h index 33019718..26d18d42 100644 --- a/42sh/includes/glob.h +++ b/42sh/includes/glob.h @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:31:18 by wescande #+# #+# */ -/* Updated: 2017/02/20 19:03:45 by wescande ### ########.fr */ +/* Updated: 2017/03/03 20:39:05 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,7 +62,7 @@ typedef struct s_bquote ** interface of glob. */ char **glob(char *str, unsigned char *esc, - unsigned char *dbl_esc); + unsigned char *dbl_esc, int do_match); void esc_print(char *str, unsigned char *esc); /* @@ -96,6 +96,7 @@ void modify_esc_split(unsigned char *esc_dest, void expand_brace(t_glob *tglob); void expand_bquote(t_glob *gl); void expand_var(t_glob *tglob); +void expand_home(t_glob *gl, char *str); int match_pattern(t_glob *tglob, char *str, char *full_word); int dir_research(t_glob *tglob, char *p, char *pat, int rec); char **gen_tab(const char *pat, const unsigned char *esc, diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index b4acaccf..b867ae89 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,13 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:46:11 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 20:28:21 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -char **token_to_argv(t_ld *ld) +char **token_to_argv(t_ld *ld, int do_match) { char **my_tab; int index; @@ -23,7 +23,7 @@ char **token_to_argv(t_ld *ld) while (ld) { content = ld->content; - if ((expand = glob(content[0], (unsigned char *)content[1], (unsigned char *)content[2]))) + if ((expand = glob(content[0], (unsigned char *)content[1], (unsigned char *)content[2], do_match))) { index = -1; while (expand[++index]) @@ -65,7 +65,7 @@ int exec_cmd(t_btree **ast) job->first_process = NULL; job->attrs = EXEC_IS_FG(exec->attrs) ? 0 : JOB_BG; } - if (!(p.av = token_to_argv(cmd->token))) + if (!(p.av = token_to_argv(cmd->token, 1))) return (1); process_setexec(&p); if (!(launch_process(&p))) diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index 016c24a6..3952d5e6 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:28:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/03 20:32:27 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int exec_var(t_btree **ast) char **av; node = (*ast)->item; - /* av = token_to_argv(node); */ + av = token_to_argv(node->data.cmd.token, 0); builtin_setenv("setenv", av, data_singleton()->local_var); return (0); } diff --git a/42sh/src/glob/expand_home.c b/42sh/src/glob/expand_home.c new file mode 100644 index 00000000..79c56448 --- /dev/null +++ b/42sh/src/glob/expand_home.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* expand_home.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/03 14:11:46 by wescande #+# #+# */ +/* Updated: 2017/03/03 20:23:49 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "glob.h" + +void do_expand_home(t_bquote *me, char *home) +{ + char **old_tab; + char **new_tab; + + old_tab = CH(*me->wk); + new_tab = gen_tab(ft_strjoin(home, me->str + 1), + calc_expand_esc(me->esc, 0, + (int[2]){ft_strlen(home), 1}, + (int[2]){1, ft_strlen(me->str) - 1}), + calc_expand_esc(me->esc2, 0, + (int[2]){ft_strlen(home), 1}, + (int[2]){1, ft_strlen(me->str) - 1}), 0); + (*me->wk)->content = new_tab; + ft_tabdel(&old_tab); +} + +void expand_home(t_glob *gl, char *home) +{ + t_bquote me; + + me = (t_bquote){NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + gl->m_pat = ft_ld_front(gl->m_pat); + while (gl->m_pat) + { + me.wk = &gl->m_pat; + me.esc = UCH(gl->m_pat)[1]; + me.esc2 = UCH(gl->m_pat)[2]; + me.str = CH(gl->m_pat)[0]; + if (!is_char_esc(me.esc, me.str, me.str) && me.str[0] == '~') + do_expand_home(&me, home); + if (!gl->m_pat->next) + break ; + gl->m_pat = gl->m_pat->next; + } + gl->m_pat = ft_ld_front(gl->m_pat); +} diff --git a/42sh/src/glob/expand_var.c b/42sh/src/glob/expand_var.c index 05c77e8a..31453a98 100644 --- a/42sh/src/glob/expand_var.c +++ b/42sh/src/glob/expand_var.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 16:09:27 by wescande #+# #+# */ -/* Updated: 2017/02/24 22:05:34 by ariard ### ########.fr */ +/* Updated: 2017/03/03 20:38:36 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,7 +42,6 @@ static void insert_var(t_glob *gl, char *pos, char *name, char *content) gl->esc2 = new_esc; ft_strdel(&s1); ft_strdel(&s2); - ft_strdel(&content); } static char *get_name(t_glob *gl, const char *pat) diff --git a/42sh/src/glob/glob.c b/42sh/src/glob/glob.c index b25b86ec..91b58a4a 100644 --- a/42sh/src/glob/glob.c +++ b/42sh/src/glob/glob.c @@ -6,27 +6,27 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:29:54 by wescande #+# #+# */ -/* Updated: 2017/02/24 22:05:48 by ariard ### ########.fr */ +/* Updated: 2017/03/03 20:38:53 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "glob.h" /* -** glob return expansion of a string. -** pattern searched are *, ?, [a-z], [!a-z], [^a-z], {ab, ac}, ** -** input parameters are : -** -char *pat -> pattern string to be looking for match -** -char *esc -> escape binary sequence of *pat -** -char **env -> env var. could be NULL -** to just expanse in local directory and not in path dir -*/ + ** glob return expansion of a string. + ** pattern searched are *, ?, [a-z], [!a-z], [^a-z], {ab, ac}, ** + ** input parameters are : + ** -char *pat -> pattern string to be looking for match + ** -char *esc -> escape binary sequence of *pat + ** -char **env -> env var. could be NULL + ** to just expanse in local directory and not in path dir + */ static char **treat_glob(t_glob *gl) { char **ret; - ret= NULL; + ret = NULL; ft_ld_clear(&gl->m_pat, &ft_tabdel); ft_ld_reverse(&gl->match); ret = ft_ld_to_tab(gl->match); @@ -34,8 +34,20 @@ static char **treat_glob(t_glob *gl) return (ret); } +static void normal_expand_before_match(t_glob *gl, int do_match) +{ + char *home; + + expand_var(gl); + expand_bquote(gl); + if (do_match) + expand_brace(gl); + if ((home = ft_getenv(data_singleton()->env, "HOME"))) + expand_home(gl, home); +} + char **glob(char *pat, unsigned char *esc, - unsigned char *esc2) + unsigned char *esc2, int do_match) { t_glob gl; int len; @@ -43,23 +55,22 @@ char **glob(char *pat, unsigned char *esc, len = ft_strlen(pat); gl = (t_glob){0, 0, ft_strdup(pat), dup_char_esc(esc, (len >> 3) + 1), dup_char_esc(esc2, (len >> 3) + 1), NULL, NULL}; - expand_var(&gl); - expand_bquote(&gl); - expand_brace(&gl); - while (gl.m_pat && !(gl.found = 0)) - { - gl.cur_dir = 1; - gl.pat = CH(gl.m_pat)[0]; - if ((gl.esc = UCH(gl.m_pat)[1]) && gl.pat[0] != '/') - dir_research(&gl, ".", gl.pat, 0); - else - dir_research(&gl, "/", gl.pat + 1, 0); - if (!gl.found) - ft_ld_pushfront(&gl.match, - ft_strjoin(gl.cur_dir ? "" : "./", CH(gl.m_pat)[0])); - if (!gl.m_pat->next) - break ; - gl.m_pat = gl.m_pat->next; - } + normal_expand_before_match(&gl, do_match); + if (do_match) + while (gl.m_pat && !(gl.found = 0)) + { + gl.cur_dir = 1; + gl.pat = CH(gl.m_pat)[0]; + if ((gl.esc = UCH(gl.m_pat)[1]) && gl.pat[0] != '/') + dir_research(&gl, ".", gl.pat, 0); + else + dir_research(&gl, "/", gl.pat + 1, 0); + if (!gl.found) + ft_ld_pushfront(&gl.match, + ft_strjoin(gl.cur_dir ? "" : "./", CH(gl.m_pat)[0])); + if (!gl.m_pat->next) + break ; + gl.m_pat = gl.m_pat->next; + } return (treat_glob(&gl)); } From af311380f49f690026f9cd3c5e2bd916da748613 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sat, 4 Mar 2017 01:26:20 +0100 Subject: [PATCH 133/206] further streamile grammar around pipe --- 42sh/includes/types.h | 1 + 42sh/src/parser/aggregate_sym.c | 18 +++-- 42sh/src/parser/eval_sym.c | 134 ++++++++++++++++++-------------- 42sh/src/parser/produce_sym.c | 4 +- 42sh/src/parser/read_stack.c | 2 + 5 files changed, 92 insertions(+), 67 deletions(-) diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 29e02f83..202fd14e 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -149,6 +149,7 @@ enum e_sym FUNC, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, + SEQUENCE, AND_OR_MAJOR, AND_OR_MINOR, END_COMMAND, diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 0a47c660..764c1bd5 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -24,8 +24,9 @@ t_aggrematch g_aggrematch[] = {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CMD_SUPERIOR, FUNC_NAME, CMD_SUPERIOR}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, - {TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, - {TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {TK_PIPE, CMD_SUPERIOR, SEQUENCE, CMD_SUPERIOR}, + {TK_PIPE, PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE}, +// {TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, {TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, @@ -61,7 +62,6 @@ t_aggrematch g_aggrematch[] = //to abstract TK_ESAC {LINEBREAK, TK_PAREN_CLOSE, FUNC, FNAME}, //paren open - {LINEBREAK, TK_PIPE, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {LINEBREAK, CMD_SUPERIOR, SEPARATOR_OP, 0}, {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, @@ -126,7 +126,7 @@ t_aggrematch g_aggrematch[] = {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, COMPOUND_COMMAND}, {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, CMD_PREFIX}, {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, CMD_NAME}, - {CMD_SUFFIX, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR}, + {CMD_SUFFIX, CMD_SUPERIOR, CMD_SUPERIOR, CMD_SUPERIOR}, //to abstract {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_PAREN_OPEN, SIMPLE_COMMAND, 0}, @@ -157,8 +157,10 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, CASE_LIST_NS, CMD_SUPERIOR, 0}, {CMD_NAME, COMPLETE_CONDITION, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, - {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, + {CMD_NAME, SEQUENCE, CMD_SUPERIOR, 0}, +// {CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0}, {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0}, + {CMD_SUPERIOR, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE}, {SIMPLE_COMMAND, ALL, COMMAND, 0}, {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, {DO_GROUP, IN, FOR_CLAUSE, TK_FOR}, @@ -197,7 +199,9 @@ t_aggrematch g_aggrematch[] = {AND_OR_MINOR, TK_LBRACE, AND_OR_MAJOR, 0}, {AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, - {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {COMMAND, SEQUENCE, PIPE_SEMI_SEQUENCE, 0}, +// {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, +// watch {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, CASE_LIST_NS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0}, @@ -217,6 +221,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, + {END_COMMAND, SEQUENCE, PIPE_SEQUENCE, SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {END_COMMAND, AND_OR_MAJOR, LIST, AND_OR_MAJOR}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, @@ -235,6 +240,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, COMPLETE_CONDITION, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {END_COMMAND, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, + {PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_UNTIL, PIPELINE, 0}, {PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 8add5de6..38303faf 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -37,6 +37,8 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, SEPARATOR_OP}, {TK_IO_NUMBER, NEWLINE_LIST}, {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, + {TK_IO_NUMBER, SEQUENCE}, +// watch! {TK_IO_NUMBER, CMD_SUPERIOR}, {TK_IO_NUMBER, AND_OR_MAJOR}, {TK_AND_IF, AND_OR}, @@ -49,6 +51,8 @@ t_stackmatch g_stackmatch[] = {TK_DSEMI, COMPOUND_LIST}, {TK_DSEMI, CASE_LIST_NS}, {TK_DSEMI, PIPE_SEMI_SEQUENCE}, + {TK_DSEMI, SEQUENCE}, +// watch! {TK_LESS, TK_IO_NUMBER}, {TK_LESS, REDIRECT_LIST}, {TK_LESS, CMD_SUFFIX}, @@ -63,6 +67,8 @@ t_stackmatch g_stackmatch[] = {TK_LESS, SEPARATOR_OP}, {TK_LESS, NEWLINE_LIST}, {TK_LESS, PIPE_SEMI_SEQUENCE}, + {TK_LESS, SEQUENCE}, +// watch ! {TK_LESS, CMD_SUPERIOR}, {TK_LESS, AND_OR_MAJOR}, {TK_GREAT, TK_IO_NUMBER}, @@ -79,6 +85,8 @@ t_stackmatch g_stackmatch[] = {TK_GREAT, SEPARATOR_OP}, {TK_GREAT, NEWLINE_LIST}, {TK_GREAT, PIPE_SEMI_SEQUENCE}, + {TK_GREAT, SEQUENCE}, +// watch ! //duplicate and extend {TK_GREAT, CMD_SUPERIOR}, {TK_GREAT, AND_OR_MAJOR}, @@ -97,6 +105,8 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, SEPARATOR_OP}, {TK_DLESS, NEWLINE_LIST}, {TK_DLESS, PIPE_SEMI_SEQUENCE}, + {TK_DLESS, SEQUENCE}, +// watch ! {TK_DLESS, CMD_SUPERIOR}, {TK_DLESS, AND_OR_MAJOR}, @@ -115,6 +125,8 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, SEPARATOR_OP}, {TK_DLESSDASH, NEWLINE_LIST}, {TK_DLESSDASH, PIPE_SEMI_SEQUENCE}, + {TK_DLESSDASH, SEQUENCE}, +// watch ! {TK_DLESSDASH, CMD_SUPERIOR}, {TK_DLESSDASH, AND_OR_MAJOR}, @@ -133,6 +145,8 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, SEPARATOR_OP}, {TK_DGREAT, NEWLINE_LIST}, {TK_DGREAT, PIPE_SEMI_SEQUENCE}, + {TK_DGREAT, SEQUENCE}, +// watch ! {TK_DGREAT, CMD_SUPERIOR}, {TK_DGREAT, AND_OR_MAJOR}, @@ -151,6 +165,8 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, SEPARATOR_OP}, {TK_LESSAND, NEWLINE_LIST}, {TK_LESSAND, PIPE_SEMI_SEQUENCE}, + {TK_LESSAND, SEQUENCE}, +// watch ! {TK_LESSAND, CMD_SUPERIOR}, {TK_LESSAND, AND_OR_MAJOR}, @@ -169,44 +185,11 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, SEPARATOR_OP}, {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, + {TK_GREATAND, SEQUENCE}, +// watch ! {TK_GREATAND, CMD_SUPERIOR}, {TK_GREATAND, AND_OR_MAJOR}, - {TK_LESSGREAT, TK_IO_NUMBER}, - {TK_LESSGREAT, REDIRECT_LIST}, - {TK_LESSGREAT, CMD_SUFFIX}, - {TK_LESSGREAT, CMD_PREFIX}, - {TK_LESSGREAT, CMD_WORD}, - {TK_LESSGREAT, CMD_NAME}, - {TK_LESSGREAT, LINEBREAK}, - {TK_LESSGREAT, TK_PAREN_OPEN}, - {TK_LESSGREAT, TK_LBRACE}, - {TK_LESSGREAT, COMPLETE_COMMANDS}, - {TK_LESSGREAT, TK_BANG}, - {TK_LESSGREAT, TK_BANG}, - {TK_LESSGREAT, SEPARATOR_OP}, - {TK_LESSGREAT, NEWLINE_LIST}, - {TK_LESSGREAT, PIPE_SEMI_SEQUENCE}, - {TK_LESSGREAT, CMD_SUPERIOR}, - {TK_LESSGREAT, AND_OR_MAJOR}, - - {TK_CLOBBER, TK_IO_NUMBER}, - {TK_CLOBBER, REDIRECT_LIST}, - {TK_CLOBBER, CMD_SUFFIX}, - {TK_CLOBBER, CMD_PREFIX}, - {TK_CLOBBER, CMD_WORD}, - {TK_CLOBBER, CMD_NAME}, - {TK_CLOBBER, LINEBREAK}, - {TK_CLOBBER, TK_PAREN_OPEN}, - {TK_CLOBBER, TK_LBRACE}, - {TK_CLOBBER, COMPLETE_COMMANDS}, - {TK_CLOBBER, TK_BANG}, - {TK_CLOBBER, TK_BANG}, - {TK_CLOBBER, SEPARATOR_OP}, - {TK_CLOBBER, NEWLINE_LIST}, - {TK_CLOBBER, PIPE_SEMI_SEQUENCE}, - {TK_CLOBBER, CMD_SUPERIOR}, - {TK_CLOBBER, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, {TK_IF, TK_PAREN_OPEN}, @@ -216,7 +199,8 @@ t_stackmatch g_stackmatch[] = {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, {TK_IF, NEWLINE_LIST}, - {TK_IF, PIPE_SEMI_SEQUENCE}, + {TK_IF, SEQUENCE}, +// watch ! {TK_IF, TK_WHILE}, {TK_IF, TK_UNTIL}, {TK_IF, TK_IF}, @@ -267,7 +251,8 @@ t_stackmatch g_stackmatch[] = {TK_CASE, COMPOUND_LIST}, {TK_CASE, NEWLINE_LIST}, {TK_CASE, SEPARATOR_OP}, - {TK_CASE, PIPE_SEMI_SEQUENCE}, + {TK_CASE, SEQUENCE}, +// watch ! {TK_IN, TK_WORD}, {TK_IN, NAME}, {TK_ESAC, CASE_LIST_NS}, @@ -280,7 +265,8 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_BANG}, {TK_WHILE, SEPARATOR_OP}, {TK_WHILE, NEWLINE_LIST}, - {TK_WHILE, PIPE_SEMI_SEQUENCE}, + {TK_WHILE, SEQUENCE}, +// watch ! {TK_WHILE, TK_DO}, {TK_WHILE, TK_PAREN_CLOSE}, {TK_WHILE, TK_WHILE}, @@ -299,7 +285,8 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, TK_BANG}, {TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, NEWLINE_LIST}, - {TK_UNTIL, PIPE_SEMI_SEQUENCE}, + {TK_UNTIL, SEQUENCE}, +// watch ! {TK_UNTIL, TK_DO}, {TK_UNTIL, TK_PAREN_CLOSE}, {TK_UNTIL, TK_WHILE}, @@ -319,7 +306,8 @@ t_stackmatch g_stackmatch[] = {TK_FOR, TK_BANG}, {TK_FOR, SEPARATOR_OP}, {TK_FOR, NEWLINE_LIST}, - {TK_FOR, PIPE_SEMI_SEQUENCE}, + {TK_FOR, SEQUENCE}, +// watch ! {TK_FOR, TK_DO}, {TK_FOR, TK_PAREN_CLOSE}, {TK_FOR, TK_WHILE}, @@ -337,7 +325,8 @@ t_stackmatch g_stackmatch[] = {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, NEWLINE_LIST}, - {TK_LBRACE, PIPE_SEMI_SEQUENCE}, + {TK_LBRACE, SEQUENCE}, +// watch ! {TK_LBRACE, AND_OR_MAJOR}, {TK_LBRACE, TK_WHILE}, {TK_LBRACE, TK_UNTIL}, @@ -402,7 +391,8 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, NEWLINE_LIST}, - {TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE}, + {TK_PAREN_OPEN, SEQUENCE}, +// watch ! {TK_PAREN_OPEN, AND_OR_MAJOR}, {TK_PAREN_OPEN, TK_WHILE}, {TK_PAREN_OPEN, TK_UNTIL}, @@ -420,6 +410,7 @@ t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, + {END_COMMAND, SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE}, {END_COMMAND, AND_OR_MAJOR}, {END_COMMAND, TK_WHILE}, @@ -532,6 +523,8 @@ t_stackmatch g_stackmatch[] = {IO_HERE, SEPARATOR_OP}, {IO_HERE, NEWLINE_LIST}, {IO_HERE, PIPE_SEMI_SEQUENCE}, + {IO_HERE, SEQUENCE}, +// watch ! {FILENAME, TK_LESS}, {FILENAME, TK_LESSAND}, {FILENAME, TK_GREAT}, @@ -553,6 +546,8 @@ t_stackmatch g_stackmatch[] = {IO_FILE, SEPARATOR_OP}, {IO_FILE, NEWLINE_LIST}, {IO_FILE, PIPE_SEMI_SEQUENCE}, + {IO_FILE, SEQUENCE}, +// watch ! {IO_REDIRECT, REDIRECT_LIST}, {IO_REDIRECT, CMD_SUPERIOR}, {IO_REDIRECT, CMD_SUFFIX}, @@ -568,6 +563,8 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, SEPARATOR_OP}, {IO_REDIRECT, NEWLINE_LIST}, {IO_REDIRECT, PIPE_SEMI_SEQUENCE}, + {IO_REDIRECT, SEQUENCE}, +// watch !/ {REDIRECT_LIST, COMPOUND_COMMAND}, {CMD_SUFFIX, CMD_WORD}, {CMD_SUFFIX, CMD_NAME}, @@ -580,7 +577,8 @@ t_stackmatch g_stackmatch[] = {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, {CMD_PREFIX, NEWLINE_LIST}, - {CMD_PREFIX, PIPE_SEMI_SEQUENCE}, + {CMD_PREFIX, SEQUENCE}, +// watch ! {CMD_WORD, CMD_PREFIX}, {CMD_NAME, COMPLETE_COMMANDS}, {CMD_NAME, LINEBREAK}, @@ -590,7 +588,8 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, - {CMD_NAME, PIPE_SEMI_SEQUENCE}, + {CMD_NAME, SEQUENCE}, +// watch ! {CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, TK_WHILE}, {CMD_NAME, TK_UNTIL}, @@ -624,7 +623,8 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, SEPARATOR_OP}, {CMD_SUPERIOR, NEWLINE_LIST}, {CMD_SUPERIOR, TK_PIPE}, - {CMD_SUPERIOR, PIPE_SEMI_SEQUENCE}, + {CMD_SUPERIOR, SEQUENCE}, +// watch ! {CMD_SUPERIOR, AND_OR_MAJOR}, {SIMPLE_COMMAND, TK_WHILE}, @@ -646,7 +646,8 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, - {SIMPLE_COMMAND, PIPE_SEMI_SEQUENCE}, + {SIMPLE_COMMAND, SEQUENCE}, +// watch ! {SIMPLE_COMMAND, AND_OR_MAJOR}, {DO_GROUP, CMD_SUPERIOR}, {DO_GROUP, COMPOUND_LIST}, @@ -675,7 +676,8 @@ t_stackmatch g_stackmatch[] = {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, {BRACE_GROUP, NEWLINE_LIST}, - {BRACE_GROUP, PIPE_SEMI_SEQUENCE}, + {BRACE_GROUP, SEQUENCE}, +// watch ! {FNAME, LINEBREAK}, {FNAME, TK_PAREN_OPEN}, {FNAME, TK_LBRACE}, @@ -684,7 +686,8 @@ t_stackmatch g_stackmatch[] = {FNAME, TK_BANG}, {FNAME, SEPARATOR_OP}, {FNAME, NEWLINE_LIST}, - {FNAME, PIPE_SEMI_SEQUENCE}, + {FNAME, SEQUENCE}, +// watch ! {FUNCTION_BODY, FUNC}, {FUNCTION_DEFINITION, LINEBREAK}, {FUNCTION_DEFINITION, TK_PAREN_OPEN}, @@ -694,7 +697,8 @@ t_stackmatch g_stackmatch[] = {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, SEPARATOR_OP}, {FUNCTION_DEFINITION, NEWLINE_LIST}, - {FUNCTION_DEFINITION, PIPE_SEMI_SEQUENCE}, + {FUNCTION_DEFINITION, SEQUENCE}, +// watch ! {UNTIL_CLAUSE, LINEBREAK}, {UNTIL_CLAUSE, TK_PAREN_OPEN}, {UNTIL_CLAUSE, TK_LBRACE}, @@ -702,7 +706,8 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, - {UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE}, + {UNTIL_CLAUSE, SEQUENCE}, +// watch ! {UNTIL_CLAUSE, TK_DO}, {UNTIL_CLAUSE, TK_PAREN_CLOSE}, {UNTIL_CLAUSE, TK_WHILE}, @@ -720,7 +725,8 @@ t_stackmatch g_stackmatch[] = {WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, NEWLINE_LIST}, - {WHILE_CLAUSE, PIPE_SEMI_SEQUENCE}, + {WHILE_CLAUSE, SEQUENCE}, +// watch ! {WHILE_CLAUSE, TK_DO}, {WHILE_CLAUSE, TK_PAREN_CLOSE}, {WHILE_CLAUSE, TK_WHILE}, @@ -742,7 +748,8 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, NEWLINE_LIST}, - {IF_CLAUSE, PIPE_SEMI_SEQUENCE}, + {IF_CLAUSE, SEQUENCE}, +// watch ! {IF_CLAUSE, TK_DO}, {IF_CLAUSE, TK_PAREN_CLOSE}, {IF_CLAUSE, TK_WHILE}, @@ -763,7 +770,8 @@ t_stackmatch g_stackmatch[] = {BRACE_CLAUSE, TK_BANG}, {BRACE_CLAUSE, SEPARATOR_OP}, {BRACE_CLAUSE, NEWLINE_LIST}, - {BRACE_CLAUSE, PIPE_SEMI_SEQUENCE}, + {BRACE_CLAUSE, SEQUENCE}, +// watch ! {BRACE_CLAUSE, TK_DO}, {BRACE_CLAUSE, TK_PAREN_CLOSE}, {BRACE_CLAUSE, TK_WHILE}, @@ -788,7 +796,8 @@ t_stackmatch g_stackmatch[] = {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, SEPARATOR_OP}, {CASE_CLAUSE, NEWLINE_LIST}, - {CASE_CLAUSE, PIPE_SEMI_SEQUENCE}, + {CASE_CLAUSE, SEQUENCE}, +// watch ! {CASE_CLAUSE, TK_PAREN_CLOSE}, {CASE_CLAUSE, CASE_LIST_NS}, {CASE_CLAUSE, TK_DO}, @@ -815,7 +824,8 @@ t_stackmatch g_stackmatch[] = {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, SEPARATOR_OP}, {FOR_CLAUSE, NEWLINE_LIST}, - {FOR_CLAUSE, PIPE_SEMI_SEQUENCE}, + {FOR_CLAUSE, SEQUENCE}, +// watch ! {FOR_CLAUSE, TK_DO}, {FOR_CLAUSE, TK_PAREN_CLOSE}, {FOR_CLAUSE, TK_WHILE}, @@ -849,10 +859,10 @@ t_stackmatch g_stackmatch[] = {SUBSHELL, TK_BANG}, {SUBSHELL, SEPARATOR_OP}, {SUBSHELL, NEWLINE_LIST}, - {SUBSHELL, PIPE_SEMI_SEQUENCE}, + {SUBSHELL, SEQUENCE}, +// watch ! {SUBSHELL, SEPARATOR_OP}, {SUBSHELL, NEWLINE_LIST}, - {SUBSHELL, PIPE_SEMI_SEQUENCE}, {SUBSHELL, TK_DO}, {SUBSHELL, TK_PAREN_CLOSE}, {SUBSHELL, TK_WHILE}, @@ -873,7 +883,8 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, SEPARATOR_OP}, {COMPOUND_COMMAND, NEWLINE_LIST}, - {COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE}, + {COMPOUND_COMMAND, SEQUENCE}, +// watch ! {COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, TK_DO}, {COMPOUND_COMMAND, TK_PAREN_CLOSE}, @@ -905,9 +916,10 @@ t_stackmatch g_stackmatch[] = {COMMAND, TK_BANG}, {COMMAND, SEPARATOR_OP}, {COMMAND, NEWLINE_LIST}, - {COMMAND, PIPE_SEMI_SEQUENCE}, + {COMMAND, SEQUENCE}, {COMMAND, AND_OR_MAJOR}, - {AND_OR_MINOR, PIPE_SEMI_SEQUENCE}, + {AND_OR_MINOR, SEQUENCE}, +// watch ! {AND_OR_MINOR, LINEBREAK}, {AND_OR_MINOR, TK_PAREN_OPEN}, {AND_OR_MINOR, TK_LBRACE}, @@ -953,6 +965,8 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, + {SEQUENCE, PIPE_SEMI_SEQUENCE}, + {SEQUENCE, SEQUENCE}, {PIPELINE, TK_WHILE}, {PIPELINE, TK_UNTIL}, {PIPELINE, TK_DO}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index f7e07c32..ed3e0fca 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -26,6 +26,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, CMD_WORD, CMD_SUFFIX}, {TK_WORD, CMD_NAME, CMD_SUFFIX}, {TK_WORD, CMD_SUPERIOR, CMD_SUFFIX}, + {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_SUFFIX}, {TK_WORD, LINEBREAK, CMD_NAME}, {TK_WORD, TK_PIPE, CMD_NAME}, {TK_WORD, AND_OR, CMD_NAME}, @@ -43,7 +44,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, COMPLETE_CONDITION, CMD_NAME}, {TK_WORD, NEWLINE_LIST, CMD_NAME}, {TK_WORD, TK_BANG, CMD_NAME}, - {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME}, + {TK_WORD, SEQUENCE, CMD_NAME}, {TK_WORD, SEPARATOR_OP, CMD_NAME}, {TK_WORD, TK_PAREN_OPEN, CMD_NAME}, {TK_WORD, TK_LBRACE, CMD_NAME}, @@ -81,6 +82,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, TK_LBRACE, NEWLINE_LIST}, {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, {TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK}, + {TK_NEWLINE, SEQUENCE, LINEBREAK}, {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, {TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_CONDITION, NEWLINE_LIST}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 03af345b..d16bac78 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == SEQUENCE) + return ("SEQUENCE"); if (current == LINEBREAK) return ("LINEBREAK"); if (current == CLOSE_LIST) From dc423db8589f14770c4bace2561e02762a62611b Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sat, 4 Mar 2017 02:17:06 +0100 Subject: [PATCH 134/206] stack is now a beautiful linked list --- 42sh/includes/parser.h | 13 ++++++++++--- 42sh/includes/types.h | 1 + 42sh/parser_init.c | 0 42sh/src/parser/aggregate_sym.c | 13 ++++++++----- 42sh/src/parser/eval_sym.c | 10 ++++++---- 42sh/src/parser/ft_parse.c | 22 +++++++++++++--------- 42sh/src/parser/parser_init.c | 6 ++++-- 42sh/src/parser/pop_stack.c | 22 ++++++++++++++++++---- 42sh/src/parser/produce_sym.c | 10 ++++++---- 42sh/src/parser/push_stack.c | 6 ++++-- 10 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 42sh/parser_init.c diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index c5257a09..49220b89 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -33,7 +33,7 @@ enum e_parstate struct s_parser { t_parstate state; - t_sym *stack; + t_list *stack; t_sym *new_sym; }; @@ -75,13 +75,20 @@ extern t_errormatch g_errormatch[]; void parser_init(t_parser *parser); int ft_parse(t_btree **ast, t_list **token, t_parser *parser); -int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); +int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst); +int eval_sym(t_list **stack, t_sym new_sym); +int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state); + +int push_stack(t_list **stack, t_sym new_sym); +int pop_stack(t_list **stack, t_sym erase_sym); + +/*int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); int eval_sym(t_sym stack, t_sym new_sym); int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state); int push_stack(t_sym *stack, t_sym new_sym); int pop_stack(t_sym **stack, t_sym erase_sym); - +*/ int error_syntax(t_list **token); int error_EOF(void); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 202fd14e..d107d0b4 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -162,6 +162,7 @@ enum e_sym REDIR, CMD, ALL = 200, + TERMINUS = 300, }; #endif diff --git a/42sh/parser_init.c b/42sh/parser_init.c new file mode 100644 index 00000000..e69de29b diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 764c1bd5..5bb0d31a 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -308,17 +308,19 @@ t_aggrematch g_aggrematch[] = {0, 0, 0, 0}, }; -int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) +int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) { + t_sym *head; int i; i = 0; + head = (*stack)->content; DG("aggregate head %s && sym %s", - read_state(**stack), read_state(*new_sym)); + read_state(*head), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top - && MATCH_STACK(**stack, g_aggrematch[i].under)) + && MATCH_STACK(*head, g_aggrematch[i].under)) { DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); @@ -326,9 +328,10 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state) if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); - DG("stack after pop: %s", read_state(**stack)); + head = (*stack)->content; + DG("stack after pop: %s", read_state(*head)); } - if (eval_sym(**stack, *new_sym)) + if (eval_sym(stack, *new_sym)) return ((*state = ERROR)); aggregate_sym(stack, new_sym, state); return (0); diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 38303faf..81a62e54 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -1020,15 +1020,17 @@ t_stackmatch g_stackmatch[] = {0, 0}, }; -int eval_sym(t_sym stack, t_sym new_sym) +int eval_sym(t_list **stack, t_sym new_sym) { - int i; + t_sym *head; + int i; - DG("eval head %s && sym %s", read_state(stack), read_state(new_sym)); + head = (*stack)->content; + DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { - if (new_sym == g_stackmatch[i].top && stack == g_stackmatch[i].under) + if (new_sym == g_stackmatch[i].top && *head == g_stackmatch[i].under) return (0); i++; } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 8672cfc8..2aae5a10 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -19,37 +19,41 @@ static void insert_linebreak(t_list **lst) token->type = LINEBREAK; } -static int end_instruction(t_sym sym) +static int end_instruction(t_list **stack) { - if (sym == CMD_SUPERIOR || sym == PIPE_SEMI_SEQUENCE - || sym == COMPLETE_COMMANDS || sym == END_COMMAND) + t_sym *head; + + head = (*stack)->content; + if (*head == CMD_SUPERIOR || *head == PIPE_SEMI_SEQUENCE + || *head == COMPLETE_COMMANDS || *head == END_COMMAND) return (1); return (0); } int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { + t_sym *head; + while (*token) { - produce_sym(*parser->stack, parser->new_sym, token); + produce_sym(&parser->stack, parser->new_sym, token); DG("new sym %s", read_state(*parser->new_sym)); - DG("number of token to treat: %d", ft_lstsize(*token)); - if (eval_sym(*parser->stack, *parser->new_sym)) + if (eval_sym(&parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); else { aggregate_sym(&parser->stack, parser->new_sym, &parser->state); - push_stack(++parser->stack, *parser->new_sym); + push_stack(&parser->stack, *parser->new_sym); } // ft_read_stack(parser->stack); DG("\n"); - if (*parser->stack == PROGRAM) + if (*(head = (parser->stack)->content) == PROGRAM) parser->state = SUCCESS; else parser->state = UNDEFINED; build_tree(ast, token); // btree_print(STDBUG, *ast, &ft_putast); - if ((end_instruction(*parser->stack) && !(*token)->next)) + if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free); diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 083e3fd3..9d1f40dc 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -16,6 +16,8 @@ void parser_init(t_parser *parser) { parser->state = SUCCESS; parser->new_sym = ft_memalloc(sizeof(t_sym)); - parser->stack = ft_memalloc(sizeof(t_sym) * 1000); - push_stack(parser->stack, LINEBREAK); + push_stack(&parser->stack, TERMINUS); + push_stack(&parser->stack, LINEBREAK); +// parser->stack = ft_memalloc(sizeof(t_sym) * 1000); +// push_stack(parser->stack, LINEBREAK); } diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index 07f967bd..eea77345 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -12,15 +12,29 @@ #include "parser.h" -int pop_stack(t_sym **stack, t_sym erase_sym) +int pop_stack(t_list **stack, t_sym erase_sym) { - t_sym *temp; + t_sym *head; + t_list *temp; -// DG("pop until :%s", read_state(erase_sym)); + DG("pop until :%s", read_state(erase_sym)); + head = (*stack)->content; + while ((*stack) && *head != erase_sym) + { + temp = *stack; + (*stack) = (*stack)->next; + ft_lstdelone(&temp, NULL); + head = (*stack)->content; + } + temp = *stack; + (*stack) = (*stack)->next; + ft_lstdelone(&temp, NULL); +/* + DG("pop until :%s", read_state(erase_sym)); temp = *stack; while (*temp != erase_sym) *temp-- = 0; *temp-- = 0; *stack = temp; - return (0); + */ return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index ed3e0fca..717c15ca 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -99,20 +99,22 @@ t_prodmatch g_prodmatch[] = {0, 0, 0}, }; -int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst) +int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) { t_token *token; - int i; + t_sym *head; + int i; token = (*lst)->content; - DG("produce stack : %s && token : %s", read_state(stack), + head = (*stack)->content; + DG("produce stack : %s && token : %s", read_state(*head), read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) { if (token->type == g_prodmatch[i].token - && stack == g_prodmatch[i].stack) + && *head == g_prodmatch[i].stack) { DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c index d94e722b..0ac6061b 100644 --- a/42sh/src/parser/push_stack.c +++ b/42sh/src/parser/push_stack.c @@ -12,8 +12,10 @@ #include "parser.h" -int push_stack(t_sym *stack, t_sym new_sym) +//int push_stack(t_sym *stack, t_sym new_sym) +int push_stack(t_list **stack, t_sym sym) { - *stack = new_sym; + ft_lstadd(stack, ft_lstnew(&sym, sizeof(sym))); +// *stack = sym; return (0); } From 0f684e618956c0898747546bb82e3755eb88b3b1 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Sat, 4 Mar 2017 02:51:52 +0100 Subject: [PATCH 135/206] clean instruction (token, parser, error) whatever succes or error, still issue lexing after syntax error --- 42sh/Makefile | 1 + 42sh/includes/minishell.h | 3 +++ 42sh/includes/parser.h | 4 ++-- 42sh/src/main/instruction_free.c | 9 +++++++++ 42sh/src/main/main.c | 10 +++++----- 42sh/src/parser/error_syntax.c | 17 ++++++++++++----- 6 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 42sh/src/main/instruction_free.c diff --git a/42sh/Makefile b/42sh/Makefile index fabb7a5a..e608d9a8 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -228,6 +228,7 @@ main/shell_exit.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ +main/instruction_free.c\ parser/add_case.c\ parser/add_cmd.c\ parser/add_condition.c\ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 3b482e3c..383a14c9 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -78,6 +78,9 @@ void shell_exit(void); int data_init(void); void data_exit(void); +int instruction_free(t_list **token, t_parser *parser, + t_btree **ast); + char *ft_putast(void *node); void ft_putast2(void *node); diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 49220b89..296de442 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -89,8 +89,8 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state); int push_stack(t_sym *stack, t_sym new_sym); int pop_stack(t_sym **stack, t_sym erase_sym); */ -int error_syntax(t_list **token); -int error_EOF(void); +int error_syntax(t_list **token, t_parser *parser, t_btree **ast); +int error_EOF(t_list **token, t_parser *parser, t_btree **ast); int ft_read_stack(t_sym *stack); char *read_state(t_sym current); diff --git a/42sh/src/main/instruction_free.c b/42sh/src/main/instruction_free.c new file mode 100644 index 00000000..4864e2ce --- /dev/null +++ b/42sh/src/main/instruction_free.c @@ -0,0 +1,9 @@ +#include "parser.h" + +int instruction_free(t_list **token, t_parser *parser, t_btree **ast) +{ + ft_lstdel(token, &token_free); + ft_lstdel(&parser->stack, NULL); + btree_del(ast, &ast_free); + return (0); +} diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index fddbc046..9a53abbc 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -33,7 +33,8 @@ int handle_instruction(int fd) { if (ret == -1) return (-1); - return (parser.state == UNDEFINED ? error_EOF() : 1); + return (parser.state == UNDEFINED ? error_EOF(&token, + &parser, &ast) : 1); } ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) @@ -56,16 +57,15 @@ int handle_instruction(int fd) if (parser.state == SUCCESS) break ; else if (parser.state == ERROR && !SH_IS_INTERACTIVE(data_singleton()->opts)) - return (error_syntax(&token)); + return (error_syntax(&token, &parser, &ast)); else if (parser.state == ERROR) - error_syntax(&token); - token = NULL; + error_syntax(&token, &parser, &ast); } DG("Before execution:"); btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); - btree_del(&ast, &ast_free); + instruction_free(&token, &parser, &ast); ft_add_str_in_history(lexer.str); return (0); } diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 13100924..470c3b87 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -50,13 +50,16 @@ t_errormatch g_errormatch[] = {0, NULL}, }; -int error_syntax(t_list **lst) +int error_syntax(t_list **lst, t_parser *parser, + t_btree **ast) { t_token *token; int i; - + int temp; + token = (*lst)->content; i = 0; + temp = 0; while (g_errormatch[i].token) { if (g_errormatch[i].token == token->type) @@ -64,16 +67,20 @@ int error_syntax(t_list **lst) ft_putstr_fd("syntax error near unexpected token `", 2); ft_putstr_fd(g_errormatch[i].error, 2); ft_putstr_fd("'\n", 2); - return (1); + temp = 1; + break ; } i++; } - ft_putstr_fd("grammar error, notify ariard", 2); + instruction_free(lst, parser, ast); + if (temp == 0) + ft_putstr_fd("grammar error, notify ariard", 2); return (1); } -int error_EOF(void) +int error_EOF(t_list **lst, t_parser *parser, t_btree **ast) { ft_putstr_fd("syntax error near unexpected EOF", 2); + instruction_free(lst, parser, ast); return (1); } From 3dc47431baab8c2d7d4de7eedd9d2e6b7db5b26f Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sat, 4 Mar 2017 16:51:38 +0100 Subject: [PATCH 136/206] gestion error ok + moar grammar pipe --- 42sh/includes/minishell.h | 3 ++- 42sh/src/lexer/lexer_init.c | 2 +- 42sh/src/line-editing/readline.c | 2 +- 42sh/src/main/instruction_free.c | 1 + 42sh/src/main/main.c | 7 +++++-- 42sh/src/parser/aggregate_sym.c | 3 ++- 42sh/src/parser/error_syntax.c | 6 +++--- 42sh/src/parser/eval_sym.c | 1 + 8 files changed, 16 insertions(+), 9 deletions(-) diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 383a14c9..59e15890 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/02 17:15:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 16:46:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,6 +42,7 @@ # define SH_MODE_MASK (SH_MODE_INPUT | SH_MODE_EXEC) # define SH_HAS_JOBC(b) (b & SH_OPTS_JOBC) # define SH_IS_INTERACTIVE(b) (b & SH_INTERACTIVE) +# define SH_NO_INTERACTIVE(b) !(b & SH_INTERACTIVE) # define SH_MSG_NOJOBC "no job-control" diff --git a/42sh/src/lexer/lexer_init.c b/42sh/src/lexer/lexer_init.c index 2c4a0c2f..799a52db 100644 --- a/42sh/src/lexer/lexer_init.c +++ b/42sh/src/lexer/lexer_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:08 by ariard #+# #+# */ -/* Updated: 2017/02/21 16:19:34 by ariard ### ########.fr */ +/* Updated: 2017/03/04 16:32:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index 6d8f7f48..770d2163 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/03/03 18:29:03 by wescande ### ########.fr */ +/* Updated: 2017/03/04 16:50:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/instruction_free.c b/42sh/src/main/instruction_free.c index 4864e2ce..5f27155a 100644 --- a/42sh/src/main/instruction_free.c +++ b/42sh/src/main/instruction_free.c @@ -3,6 +3,7 @@ int instruction_free(t_list **token, t_parser *parser, t_btree **ast) { ft_lstdel(token, &token_free); + token = NULL; ft_lstdel(&parser->stack, NULL); btree_del(ast, &ast_free); return (0); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 9a53abbc..b1bedc83 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/03 20:05:06 by ariard ### ########.fr */ +/* Updated: 2017/03/04 16:49:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,11 +36,14 @@ int handle_instruction(int fd) return (parser.state == UNDEFINED ? error_EOF(&token, &parser, &ast) : 1); } + DG("after readline %s", str); + DG("in lexer %s", lexer.str); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); else if (get_lexer_stack(lexer) == DLESS) lexer.state = DLESS; + DG("after readline %s", lexer.str); ltoken = ft_lstlast(token); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); @@ -56,7 +59,7 @@ int handle_instruction(int fd) continue ; if (parser.state == SUCCESS) break ; - else if (parser.state == ERROR && !SH_IS_INTERACTIVE(data_singleton()->opts)) + else if (parser.state == ERROR && SH_IS_INTERACTIVE(data_singleton()->opts)) return (error_syntax(&token, &parser, &ast)); else if (parser.state == ERROR) error_syntax(&token, &parser, &ast); diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 5bb0d31a..03ae7a56 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:35:04 by ariard ### ########.fr */ +/* Updated: 2017/03/04 16:16:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -127,6 +127,7 @@ t_aggrematch g_aggrematch[] = {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, CMD_PREFIX}, {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, CMD_NAME}, {CMD_SUFFIX, CMD_SUPERIOR, CMD_SUPERIOR, CMD_SUPERIOR}, + {CMD_SUFFIX, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, //to abstract {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0}, {CMD_PREFIX, TK_PAREN_OPEN, SIMPLE_COMMAND, 0}, diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 470c3b87..fd27abe1 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:52 by ariard ### ########.fr */ +/* Updated: 2017/03/04 16:50:44 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -75,12 +75,12 @@ int error_syntax(t_list **lst, t_parser *parser, instruction_free(lst, parser, ast); if (temp == 0) ft_putstr_fd("grammar error, notify ariard", 2); - return (1); + return (0); } int error_EOF(t_list **lst, t_parser *parser, t_btree **ast) { ft_putstr_fd("syntax error near unexpected EOF", 2); instruction_free(lst, parser, ast); - return (1); + return (0); } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 81a62e54..9acbc37a 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -569,6 +569,7 @@ t_stackmatch g_stackmatch[] = {CMD_SUFFIX, CMD_WORD}, {CMD_SUFFIX, CMD_NAME}, {CMD_SUFFIX, CMD_SUPERIOR}, + {CMD_SUFFIX, PIPE_SEMI_SEQUENCE}, {CMD_PREFIX, LINEBREAK}, {CMD_PREFIX, TK_PAREN_OPEN}, {CMD_PREFIX, TK_LBRACE}, From 7d660fec7ce51c09ae247d20f2da602b540bd26e Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sat, 4 Mar 2017 18:02:38 +0100 Subject: [PATCH 137/206] execution if/elif/else + while ok --- 42sh/sample/if/01_if_easy.sh | 13 ++++++------- 42sh/sample/while/while01.sh | 10 +++++----- 42sh/src/exec/ast_free.c | 2 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/exec_elif.c | 7 ++----- 42sh/src/exec/exec_else.c | 11 ++++------- 42sh/src/exec/exec_if.c | 5 +---- 42sh/src/exec/exec_semi.c | 2 +- 42sh/src/exec/exec_while.c | 7 +++++-- 42sh/src/exec/ft_exec.c | 6 +----- 42sh/src/main/main.c | 5 +---- 42sh/src/parser/add_cmd.c | 7 +++++-- 42sh/src/parser/ft_parse.c | 2 +- 13 files changed, 34 insertions(+), 45 deletions(-) diff --git a/42sh/sample/if/01_if_easy.sh b/42sh/sample/if/01_if_easy.sh index f7d0a10c..198b0a62 100644 --- a/42sh/sample/if/01_if_easy.sh +++ b/42sh/sample/if/01_if_easy.sh @@ -1,10 +1,9 @@ -if ls +if cat wef4eeef then - ls -elif ls + echo Conditon 1 +elif cat yulu then - ls -elif ls -then - ls + echo Condition 2 +else + echo Condition 3 fi diff --git a/42sh/sample/while/while01.sh b/42sh/sample/while/while01.sh index f2897742..2c1dad18 100644 --- a/42sh/sample/while/while01.sh +++ b/42sh/sample/while/while01.sh @@ -1,11 +1,11 @@ -while ls +while pwd do - while ls + while cat rwgwghe do - pwd + echo Hello World done - while ls + while pwd do - pwd + echo Bonjour ca va done done diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 487cf063..efee8bea 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:59:33 by ariard ### ########.fr */ +/* Updated: 2017/03/04 17:09:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index b867ae89..f2b1394f 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/03 20:28:21 by wescande ### ########.fr */ +/* Updated: 2017/03/04 17:11:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_elif.c b/42sh/src/exec/exec_elif.c index be3bc119..34ad5d9a 100644 --- a/42sh/src/exec/exec_elif.c +++ b/42sh/src/exec/exec_elif.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:08:53 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:14:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 17:45:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,14 +17,11 @@ int exec_elif(t_btree **ast) t_exec *exec; exec = &data_singleton()->exec; - /* if (data_singleton()->exec.process.if_branch == 1) */ if (EXEC_IS_IF_BRANCH(exec->attrs)) return (0); ft_exec(&(*ast)->left); - if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")) - /* if (data_singleton()->exec.process.status == 1) */ + if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) { - /* data_singleton()->exec.process.if_branch = 1; */ exec->attrs |= EXEC_IF_BRANCH; ft_exec(&(*ast)->right); } diff --git a/42sh/src/exec/exec_else.c b/42sh/src/exec/exec_else.c index 739753c9..7bc6b172 100644 --- a/42sh/src/exec/exec_else.c +++ b/42sh/src/exec/exec_else.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:55:07 by ariard #+# #+# */ -/* Updated: 2017/03/03 15:56:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 18:00:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,11 +18,8 @@ int exec_else(t_btree **ast) exec = &data_singleton()->exec; if (EXEC_IS_IF_BRANCH(exec->attrs)) - /* if (data_singleton()->exec.process.if_branch == 0) */ - { - exec->attrs |= EXEC_IF_BRANCH; - /* data_singleton()->exec.process.if_branch = 1; */ - ft_exec(&(*ast)->right); - } + return (0); + exec->attrs |= EXEC_IF_BRANCH; + ft_exec(&(*ast)->left); return (0); } diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index cd03b39f..02f972e6 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:30:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 17:37:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,13 +18,10 @@ int exec_if(t_btree **ast) exec = &data_singleton()->exec; - /* data_singleton()->exec.process.if_branch = 0; */ exec->attrs &= ~EXEC_IF_BRANCH; ft_exec(&(*ast)->left); - /* if (data_singleton()->exec.process.status == 1) */ if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) { - /* data_singleton()->exec.process.if_branch = 1; */ exec->attrs |= EXEC_IF_BRANCH; ft_exec(&(*ast)->right); } diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index f664b25e..5f03aa23 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:10:34 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 17:23:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index e8ff4ac8..192913ca 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:05:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 17:19:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,12 @@ int exec_while(t_btree **ast) { + DG("exec while condition"); ft_exec(&(*ast)->left); - while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")) + DG("ret :[%s]", ft_getenv(data_singleton()->env, "?")); + while (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0"))) { + DG("in the while"); ft_exec(&(*ast)->right); ft_exec(&(*ast)->left); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index b4b3c578..ae3234c0 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:03:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 17:16:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,11 +42,7 @@ int ft_exec(t_btree **ast) while (g_execmap[i].type) { if (item->type == g_execmap[i].type) - { - DG("match : %s and %s", - read_state(item->type), read_state(g_execmap[i].type)); return ((*g_execmap[i].f)(ast)); - } i++; } return (0); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index b1bedc83..3a713be8 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/04 16:49:23 by ariard ### ########.fr */ +/* Updated: 2017/03/04 17:35:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,14 +36,11 @@ int handle_instruction(int fd) return (parser.state == UNDEFINED ? error_EOF(&token, &parser, &ast) : 1); } - DG("after readline %s", str); - DG("in lexer %s", lexer.str); ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); else if (get_lexer_stack(lexer) == DLESS) lexer.state = DLESS; - DG("after readline %s", lexer.str); ltoken = ft_lstlast(token); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 32368c49..f4fd2dd8 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/03 20:04:08 by ariard ### ########.fr */ +/* Updated: 2017/03/04 17:08:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,7 +51,10 @@ int add_cmd(t_btree **ast, t_list **lst) && node->type != REDIR) return (add_cmd(&(*ast)->right, lst)); node = (*ast)->item; - node->type = CMD; + if (token->type != TK_WORD) + node->type = token->type; + else + node->type = CMD; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { DG("add data"); diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 2aae5a10..cd00ce9a 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -52,7 +52,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else parser->state = UNDEFINED; build_tree(ast, token); - // btree_print(STDBUG, *ast, &ft_putast); + btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else From 56b106ee0f84f683758c80cfc666c8762b1fb218 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sat, 4 Mar 2017 22:08:31 +0100 Subject: [PATCH 138/206] gen ast cleand --- 42sh/includes/parser.h | 25 +++-- 42sh/includes/types.h | 3 +- 42sh/sample/case/case.sh | 6 +- 42sh/sample/mix/mix.sh | 18 +++- 42sh/sample/until/01_until.sh | 10 +- 42sh/sample/while/while01.sh | 2 +- 42sh/src/exec/exec_case.c | 3 +- 42sh/src/exec/exec_case_branch.c | 3 +- 42sh/src/exec/exec_else.c | 2 +- 42sh/src/exec/exec_for.c | 5 +- 42sh/src/exec/exec_until.c | 6 +- 42sh/src/hash_table/ft_add_hash.c | 2 +- 42sh/src/hash_table/hash.c | 2 +- 42sh/src/hash_table/hash_str.c | 2 +- 42sh/src/lexer/lexer_lex.c | 2 +- .../line-editing/lib_line_editing/tool_line.c | 2 +- .../src/line-editing/lib_line_editing/toolz.c | 2 +- .../lib_line_editing/toolz_termcaps.c | 2 +- 42sh/src/main/main.c | 4 +- 42sh/src/parser/add_case.c | 51 ++++++++-- 42sh/src/parser/add_cmd.c | 99 +++++++++++++------ 42sh/src/parser/add_cmd2.c | 71 +++++++++++++ 42sh/src/parser/add_condition.c | 30 ++++-- 42sh/src/parser/add_loop.c | 25 +++-- 42sh/src/parser/add_redir.c | 2 +- 42sh/src/parser/add_sep.c | 10 +- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/ft_parse.c | 5 +- 42sh/src/parser/tree_wrapper.c | 17 +++- 29 files changed, 311 insertions(+), 102 deletions(-) create mode 100644 42sh/src/parser/add_cmd2.c diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 296de442..da36d5d1 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -1,5 +1,5 @@ /* ************************************************************************** */ -/* */ /* ::: :::::::: */ +/* */ /* parser.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ @@ -82,13 +82,6 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state); int push_stack(t_list **stack, t_sym new_sym); int pop_stack(t_list **stack, t_sym erase_sym); -/*int produce_sym(t_sym stack, t_sym *new_sym, t_list **lst); -int eval_sym(t_sym stack, t_sym new_sym); -int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state); - -int push_stack(t_sym *stack, t_sym new_sym); -int pop_stack(t_sym **stack, t_sym erase_sym); -*/ int error_syntax(t_list **token, t_parser *parser, t_btree **ast); int error_EOF(t_list **token, t_parser *parser, t_btree **ast); @@ -113,6 +106,7 @@ int build_tree(t_btree **ast, t_list **lst); int add_sep(t_btree **ast, t_list **lst); int add_cmd(t_btree **ast, t_list **lst); + int add_file(t_btree **ast, t_list **lst); int add_loop_cmd(t_btree **ast, t_list **lst); int add_loop_sep(t_btree **ast, t_list **lst); @@ -132,10 +126,15 @@ int add_func_sep(t_btree **ast, t_list **lst); int add_one_func(t_btree **ast, t_list **lst); int add_pipe(t_btree **ast, t_list **lst); int add_var(t_btree **ast, t_list **lst); +int add_null(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); +int isloop_condition(t_btree **ast, t_list **lst); int iscase(t_btree **ast, t_list **lst); +int iscase_pattern(t_btree **ast, t_list **lst); +int iscase_branch(t_btree **ast, t_list **lst); int iscondition(t_btree **ast, t_list **lst); +int iscondition_branch(t_btree **ast, t_list **lst); int issubshell(t_btree **ast, t_list **lst); int isfunc(t_btree **ast, t_list **lst); int isdir(t_btree **ast); @@ -143,9 +142,19 @@ int iscondition(t_btree **ast, t_list **list); int isdir_sep(t_btree **ast, t_list **list); int isdir_word(t_btree **ast, t_list **list); int isvar(t_btree **ast, t_list **list); +int isnull(t_btree **ast, t_list **list); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); +int superflous_token(t_btree **ast, t_list **list); + +struct s_distrostree +{ + int (*test)(t_btree **ast, t_list **lst); + int (*add)(t_btree **ast, t_list **lst); +}; + +extern t_distrostree g_distrostree[]; union u_word { diff --git a/42sh/includes/types.h b/42sh/includes/types.h index d107d0b4..bdf68621 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/03 20:07:30 by ariard ### ########.fr */ +/* Updated: 2017/03/04 19:50:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,6 +50,7 @@ typedef struct s_prodmatch t_prodmatch; typedef struct s_stackmatch t_stackmatch; typedef struct s_errormatch t_errormatch; typedef struct s_treematch t_treematch; +typedef struct s_distrostree t_distrostree; t_data *data_singleton(); diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index d89cd66d..0f288357 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -1,6 +1,4 @@ case $rental in - ("bus") case $rental in - ("yolo") echo bonjour - esac ;; - ("van") echo yolo ;; + ( "bus" ) echo Hello world ;; + ( "van" ) echo Comment va ? ;; esac diff --git a/42sh/sample/mix/mix.sh b/42sh/sample/mix/mix.sh index 36437d5c..795c1e37 100644 --- a/42sh/sample/mix/mix.sh +++ b/42sh/sample/mix/mix.sh @@ -1,11 +1,21 @@ if ls then - ls ; cat + pwd ; echo "Salut" while ls do - until ls + until pwd do - pwd - done + echo KO SI JE M AFFICHE + done + if cat faux + then + echo BONJOUR MAKEFILE + elif [ -f Makefile ] + then + echo BONJOUR MAKEFILE + else + echo KO SI JE M M AFFICHE + fi + echo "Encore une" done fi diff --git a/42sh/sample/until/01_until.sh b/42sh/sample/until/01_until.sh index 4233c43f..2a531998 100644 --- a/42sh/sample/until/01_until.sh +++ b/42sh/sample/until/01_until.sh @@ -1,11 +1,11 @@ -until ls +until cat wefwef do - until ls - do - pwd | cat - done until ls do pwd ; ls done + until cat eqwfewf + do + ls | cat + done done diff --git a/42sh/sample/while/while01.sh b/42sh/sample/while/while01.sh index 2c1dad18..403f8702 100644 --- a/42sh/sample/while/while01.sh +++ b/42sh/sample/while/while01.sh @@ -1,4 +1,4 @@ -while pwd +while ls do while cat rwgwghe do diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index 29f478ab..0a0cebaa 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:29:52 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 18:18:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ int exec_case(t_btree **ast) /* char **av; */ t_exec *exec; + return (0); exec = &data_singleton()->exec; /* data_singleton()->exec.process.case_branch = 0; */ exec->attrs |= EXEC_CASE_BRANCH; diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index 1d45eeb5..0cef16d4 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:28:15 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 18:23:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ int exec_case_branch(t_btree **ast) /* char **av; */ t_exec *exec; + return (0); exec = &data_singleton()->exec; /* if (data_singleton()->exec.process.case_branch == 1) */ if (EXEC_IS_CASE_BRANCH(exec->attrs)) diff --git a/42sh/src/exec/exec_else.c b/42sh/src/exec/exec_else.c index 7bc6b172..72e132b1 100644 --- a/42sh/src/exec/exec_else.c +++ b/42sh/src/exec/exec_else.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:55:07 by ariard #+# #+# */ -/* Updated: 2017/03/04 18:00:47 by ariard ### ########.fr */ +/* Updated: 2017/03/04 18:06:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index 1eed20e7..eba6c713 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:26:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 18:17:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,8 +18,7 @@ int exec_for(t_btree **ast) t_list *temp; // char **av = NULL; char *var; - - + node = (*ast)->item; temp = node->data.wordlist; var = temp->content; diff --git a/42sh/src/exec/exec_until.c b/42sh/src/exec/exec_until.c index e2cf5791..eb0ebff2 100644 --- a/42sh/src/exec/exec_until.c +++ b/42sh/src/exec/exec_until.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:30:13 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 18:16:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,9 +15,11 @@ int exec_until(t_btree **ast) { ft_exec(&(*ast)->left); - while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) + while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "1") == 0) { + DG("before right"); ft_exec(&(*ast)->right); + DG("before left"); ft_exec(&(*ast)->left); } return (0); diff --git a/42sh/src/hash_table/ft_add_hash.c b/42sh/src/hash_table/ft_add_hash.c index ba18cc91..055d7654 100644 --- a/42sh/src/hash_table/ft_add_hash.c +++ b/42sh/src/hash_table/ft_add_hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:20:11 by gwojda #+# #+# */ -/* Updated: 2017/02/18 14:38:21 by gwojda ### ########.fr */ +/* Updated: 2017/03/04 18:51:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/hash_table/hash.c b/42sh/src/hash_table/hash.c index 8a9a1eea..b7022ec5 100644 --- a/42sh/src/hash_table/hash.c +++ b/42sh/src/hash_table/hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:06:19 by gwojda #+# #+# */ -/* Updated: 2017/02/21 20:57:19 by ariard ### ########.fr */ +/* Updated: 2017/03/04 18:50:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/hash_table/hash_str.c b/42sh/src/hash_table/hash_str.c index a7aa38f1..6755896a 100644 --- a/42sh/src/hash_table/hash_str.c +++ b/42sh/src/hash_table/hash_str.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:32:18 by gwojda #+# #+# */ -/* Updated: 2017/02/21 20:57:42 by ariard ### ########.fr */ +/* Updated: 2017/03/04 18:51:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 75f0e4f1..a9d2b823 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:55:55 by jhalford ### ########.fr */ +/* Updated: 2017/03/04 20:51:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/lib_line_editing/tool_line.c b/42sh/src/line-editing/lib_line_editing/tool_line.c index 4047df37..f3b07f70 100644 --- a/42sh/src/line-editing/lib_line_editing/tool_line.c +++ b/42sh/src/line-editing/lib_line_editing/tool_line.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/20 18:20:23 by gwojda #+# #+# */ -/* Updated: 2017/02/03 17:50:48 by gwojda ### ########.fr */ +/* Updated: 2017/03/04 18:51:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/lib_line_editing/toolz.c b/42sh/src/line-editing/lib_line_editing/toolz.c index 8f872021..6fd315c8 100644 --- a/42sh/src/line-editing/lib_line_editing/toolz.c +++ b/42sh/src/line-editing/lib_line_editing/toolz.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/16 17:06:30 by gwojda #+# #+# */ -/* Updated: 2017/02/04 18:16:34 by gwojda ### ########.fr */ +/* Updated: 2017/03/04 18:52:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/lib_line_editing/toolz_termcaps.c b/42sh/src/line-editing/lib_line_editing/toolz_termcaps.c index 637b5aef..856f779f 100644 --- a/42sh/src/line-editing/lib_line_editing/toolz_termcaps.c +++ b/42sh/src/line-editing/lib_line_editing/toolz_termcaps.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/08 12:35:11 by gwojda #+# #+# */ -/* Updated: 2017/02/14 11:13:10 by gwojda ### ########.fr */ +/* Updated: 2017/03/04 18:51:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 3a713be8..256f42f2 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/04 17:35:55 by ariard ### ########.fr */ +/* Updated: 2017/03/04 19:29:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,7 +62,7 @@ int handle_instruction(int fd) error_syntax(&token, &parser, &ast); } DG("Before execution:"); - btree_print(STDBUG, ast, &ft_putast); +// btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); instruction_free(&token, &parser, &ast); diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 7eba9636..a6fb19a5 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_case.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ +/* Updated: 2017/03/04 21:54:21 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "parser.h" int iscase(t_btree **ast, t_list **lst) @@ -5,6 +17,22 @@ int iscase(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type == TK_CASE || node->type == TK_PAREN_OPEN) + return (1); + } + return (0); +} + +int iscase_pattern(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + node = NULL; token = (*lst)->content; if (*ast) @@ -13,11 +41,23 @@ int iscase(t_btree **ast, t_list **lst) if ((node->type == TK_CASE || node->type == TK_PAREN_OPEN) && token->type == TK_WORD && node->pattern == 0) return (1); + } + return (0); +} + +int iscase_branch(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; if ((node->type == TK_PAREN_OPEN || node->type == TK_CASE) && node->nest == 0 && token->type == TK_PAREN_OPEN) - return (3); - if (node->type == TK_CASE || node->type == TK_PAREN_OPEN) - return (2); + return (1); } return (0); } @@ -43,11 +83,6 @@ int add_case_cmd(t_btree **ast, t_list **lst) return (add_cmd(&(*ast)->right, lst)); } -int add_case_sep(t_btree **ast, t_list **lst) -{ - return (add_sep(&(*ast)->right, lst)); -} - int add_pattern(t_btree **ast, t_list **lst) { t_astnode *node; diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index f4fd2dd8..691cfd9b 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,50 +6,86 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/04 17:08:04 by ariard ### ########.fr */ +/* Updated: 2017/03/04 22:05:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" +t_distrostree g_distrostree[] = +{ + {&superflous_token, &add_null}, + {&isdir_sep, &add_redir_type}, + {&isdir_word, &add_redir_word}, + {&isvar, &add_var}, + {&isloop_condition, &add_loop_condition}, + {&isloop, &add_loop_cmd}, + {&iscondition_branch, &add_branch}, + {&iscondition, &add_condition_cmd}, + {&iscase_pattern, &add_pattern}, + {&iscase_branch, &add_branch}, + {&iscase, &add_case_cmd}, + {&issubshell, &add_subshell_cmd}, + {&isfunc, &add_func_cmd}, + {&isnull, &add_null}, + +}; + +int superflous_token(t_btree **ast, t_list **lst) +{ + t_token *token; + + (void)ast; + DG("superflous token"); + if (*lst) + { + token = (*lst)->content; + if (token->type == TK_IN || token->type == TK_PAREN_OPEN) + return (1); + } + return (0); +} + +static int no_del_token(t_btree **ast, t_list **lst) +{ + t_astnode *node; + + (void)lst; + node = NULL; + if (*ast) + { + node = (*ast)->item; + if (node->type != TK_DO && node->type != TK_THEN && node->type != TK_PAREN_CLOSE + && node->type != CMD && node->type != REDIR) + return (1); + } + return (0); +} + int add_cmd(t_btree **ast, t_list **lst) { t_token *token; t_astnode *node; char **my_tab; + int i; - if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) - return (0); - else if (isdir_sep(ast, lst)) - return (add_redir_type(ast, lst)); - else if (!*ast) + i = 0; + DG("add cmd"); + while (i < 14) + { + DG("test"); + if (g_distrostree[i].test(ast, lst) == 1) + { + DG("add : %d", i); + return (g_distrostree[i].add(ast, lst)); + } + i++; + } + if (!*ast) gen_node(ast); - else if (isdir_word(ast, lst)) - return (add_redir_word(ast, lst)); - else if (isvar(ast, lst)) - return (add_var(ast, lst)); - else if (isloop(ast, lst) == 3) - return (add_loop_condition(ast, lst)); - else if (isloop(ast, lst)) - return (add_loop_cmd(ast, lst)); - else if (iscondition(ast, lst) == 1) - return (add_condition_cmd(ast, lst)); - else if (iscondition(ast, lst) == 2) - return (add_branch(ast, lst)); - else if (iscase(ast, lst) == 1) - return (add_pattern(ast, lst)); - else if (iscase(ast, lst) == 2) - return (add_case_cmd(ast, lst)); - else if (iscase(ast, lst) == 3) - return (add_branch(ast, lst)); - else if (issubshell(ast, lst)) - return (add_subshell_cmd(ast, lst)); - else if (isfunc(ast, lst)) - return (add_func_cmd(ast, lst)); - else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != CMD - && node->type != REDIR) + else if (no_del_token(ast, lst)) return (add_cmd(&(*ast)->right, lst)); + token = (*lst)->content; node = (*ast)->item; if (token->type != TK_WORD) node->type = token->type; @@ -57,7 +93,6 @@ int add_cmd(t_btree **ast, t_list **lst) node->type = CMD; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { - DG("add data"); if ((my_tab = (char **)malloc(sizeof(char *) * 4))) { my_tab[0] = ft_strdup(token->data); diff --git a/42sh/src/parser/add_cmd2.c b/42sh/src/parser/add_cmd2.c new file mode 100644 index 00000000..5f99ca94 --- /dev/null +++ b/42sh/src/parser/add_cmd2.c @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_cmd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ +/* Updated: 2017/03/04 21:31:18 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int add_cmd(t_btree **ast, t_list **lst) +{ + t_token *token; + t_astnode *node; + char **my_tab; + + if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) + return (0); + else if (isdir_sep(ast, lst)) + return (add_redir_type(ast, lst)); + else if (!*ast) + gen_node(ast); + else if (isdir_word(ast, lst)) + return (add_redir_word(ast, lst)); + else if (isvar(ast, lst)) + return (add_var(ast, lst)); + else if (isloop(ast, lst) == 3) + return (add_loop_condition(ast, lst)); + else if (isloop(ast, lst)) + return (add_loop_cmd(ast, lst)); + else if (iscondition(ast, lst) == 1) + return (add_condition_cmd(ast, lst)); + else if (iscondition(ast, lst) == 2) + return (add_branch(ast, lst)); + else if (iscase(ast, lst) == 1) + return (add_pattern(ast, lst)); + else if (iscase(ast, lst) == 2) + return (add_case_cmd(ast, lst)); + else if (iscase(ast, lst) == 3) + return (add_branch(ast, lst)); + else if (issubshell(ast, lst)) + return (add_subshell_cmd(ast, lst)); + else if (isfunc(ast, lst)) + return (add_func_cmd(ast, lst)); + else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN + && node->type != TK_PAREN_CLOSE && node->type != CMD + && node->type != REDIR) + return (add_cmd(&(*ast)->right, lst)); + node = (*ast)->item; + if (token->type != TK_WORD) + node->type = token->type; + else + node->type = CMD; + if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) + { + DG("add data"); + if ((my_tab = (char **)malloc(sizeof(char *) * 4))) + { + my_tab[0] = ft_strdup(token->data); + my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); + my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); + my_tab[3] = NULL; + } + ft_ld_pushback(&node->data.cmd.token, my_tab); + } + return (0); +} diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 64aa8a6d..d73dc8d1 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:21 by ariard ### ########.fr */ +/* Updated: 2017/03/04 21:51:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,27 @@ int iscondition(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; + node = NULL; + token = (*lst)->content; + DG("iscondition"); + if (*ast) + { + node = (*ast)->item; + if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE) + && node->full == 0) + return (1); + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && iscondition(&(*ast)->right, lst)) + return (1); + } + return (0); +} + +int iscondition_branch(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + node = NULL; token = (*lst)->content; if (*ast) @@ -25,12 +46,6 @@ int iscondition(t_btree **ast, t_list **lst) if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) && (token->type == TK_ELIF || token->type == TK_ELSE) && node->nest == 0) - return (2); - if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE) - && node->full == 0) - return (1); - if ((node->type == TK_NEWLINE || node->type == TK_SEMI - || node->type == TK_AMP) && iscondition(&(*ast)->right, lst) == 1) return (1); } return (0); @@ -41,6 +56,7 @@ int add_condition_cmd(t_btree **ast, t_list **lst) t_token *token; t_astnode *node; + DG("add condition"); token = (*lst)->content; node = (*ast)->item; if (token->type == TK_IF && (node->type == TK_IF || node->type == TK_ELIF diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index a26d2755..5c39e299 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/03 18:01:55 by ariard ### ########.fr */ +/* Updated: 2017/03/04 22:05:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,17 +19,13 @@ int isloop(t_btree **ast, t_list **lst) node = NULL; token = (*lst)->content; + DG("isloop"); if (*ast) { node = (*ast)->item; - if (node->type == TK_FOR && token->type == TK_WORD && node->pattern == 0) - return (3); if ((node->type == TK_NEWLINE || node->type == TK_SEMI || node->type == TK_AMP) && isloop(&(*ast)->right, lst) == 1) return (1); - if ((node->type == TK_WHILE || node->type == TK_UNTIL - || node->type == TK_FOR) && node->full == 1) - return (2); if ((node->type == TK_WHILE || node->type == TK_UNTIL || node->type == TK_FOR) && node->full == 0) return (1); @@ -37,6 +33,23 @@ int isloop(t_btree **ast, t_list **lst) return (0); } +int isloop_condition(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type == TK_FOR && token->type == TK_WORD + && node->pattern == 0) + return (1); + } + return (0); +} + int add_loop_cmd(t_btree **ast, t_list **lst) { t_token *token; diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 7d88688e..6e7eb442 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/03 20:02:22 by ariard ### ########.fr */ +/* Updated: 2017/03/04 20:00:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 04a6fde0..111c7786 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:05:24 by ariard ### ########.fr */ +/* Updated: 2017/03/04 21:43:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,12 +19,12 @@ int add_sep(t_btree **ast, t_list **lst) t_btree *new_node; DG("add sep"); - if (isloop(ast, lst) == 1) + if (isloop(ast, lst)) return (add_loop_sep(ast, lst)); - else if (iscondition(ast, lst) == 1) + else if (iscondition(ast, lst)) return (add_condition_sep(ast, lst)); - else if (iscase(ast, lst) == 2) - return (add_case_sep(ast, lst)); + else if (iscase(ast, lst)) + return (add_sep(&(*ast)->right, lst)); else if (issubshell(ast, lst)) return (add_subshell_sep(ast, lst)); else if (isfunc(ast, lst)) diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 246cd41d..1848f810 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/03 15:08:55 by ariard ### ########.fr */ +/* Updated: 2017/03/04 20:56:42 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index cd00ce9a..c0d40cd6 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -39,7 +39,10 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) produce_sym(&parser->stack, parser->new_sym, token); DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(&parser->stack, *parser->new_sym)) +{ + DG("ERRROR"); return ((parser->state = ERROR)); +} else { aggregate_sym(&parser->stack, parser->new_sym, &parser->state); @@ -52,7 +55,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else parser->state = UNDEFINED; build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); +// btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index c66b39e3..07be0e9c 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:28:14 by ariard ### ########.fr */ +/* Updated: 2017/03/04 21:20:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,3 +34,18 @@ int gen_node(t_btree **ast) } return (0); } + +int isnull(t_btree **ast, t_list **lst) +{ + (void)ast; + (void)lst; + return (-1); +} + +int add_null(t_btree **ast, t_list **lst) +{ + (void)ast; + (void)lst; + return (-1); +} + From 566cd522ae19da2830deb35c81ab2f53ddc2d843 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 15:07:43 +0100 Subject: [PATCH 139/206] builtins no longer remain in job control --- 42sh/Makefile | 5 +- 42sh/includes/exec.h | 3 +- 42sh/src/exec/exec_command.c | 50 ++++--------- 42sh/src/exec/launch_process.c | 4 +- 42sh/src/exec/set_process.c | 41 +++++++++++ .../{add_new_job.c => job_addprocess.c} | 31 +++++--- 42sh/src/lexer/lexer_paren.c | 2 +- 42sh/src/parser/add_cmd2.c | 71 ------------------- 8 files changed, 81 insertions(+), 126 deletions(-) create mode 100644 42sh/src/exec/set_process.c rename 42sh/src/job-control/{add_new_job.c => job_addprocess.c} (56%) delete mode 100644 42sh/src/parser/add_cmd2.c diff --git a/42sh/Makefile b/42sh/Makefile index e608d9a8..6fb08372 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -95,6 +95,7 @@ exec/redirect_greatand.c\ exec/redirect_less.c\ exec/redirect_lessand.c\ exec/set_exitstatus.c\ +exec/set_process.c\ glob/command_getoutput.c\ glob/dir_glob.c\ glob/esc_print.c\ @@ -137,11 +138,11 @@ history/history_parsing_toolz.c\ history/history_parsing_toolz_2.c\ history/list_toolz.c\ history/surch_in_history.c\ -job-control/add_new_job.c\ job-control/builtin_bg.c\ job-control/builtin_fg.c\ job-control/builtin_jobs.c\ job-control/do_job_notification.c\ +job-control/job_addprocess.c\ job-control/job_cmp_id.c\ job-control/job_format.c\ job-control/job_format_head.c\ @@ -223,12 +224,12 @@ main/data_exit.c\ main/data_init.c\ main/data_singleton.c\ main/ft_putast.c\ +main/instruction_free.c\ main/main.c\ main/shell_exit.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ -main/instruction_free.c\ parser/add_case.c\ parser/add_cmd.c\ parser/add_condition.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index be67f404..25f430e4 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/03 20:28:08 by wescande ### ########.fr */ +/* Updated: 2017/03/05 15:04:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -119,6 +119,7 @@ int exec_case(t_btree **ast); int exec_case_branch(t_btree **ast); int launch_process(t_process *p); +int set_process(t_process *p, t_btree *ast); int process_setexec(t_process *p); int process_setgroup(t_process *p, pid_t pid); void process_setsig(void); diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index f2b1394f..f8907f9b 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/04 17:11:10 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:03:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,51 +37,25 @@ char **token_to_argv(t_ld *ld, int do_match) int exec_cmd(t_btree **ast) { - t_cmd *cmd; - t_job *job; - t_exec *exec; t_process p; - int fds[2]; - int op; + t_job *job; - cmd = &((t_astnode *)(*ast)->item)->data.cmd; - exec = &data_singleton()->exec; job = &data_singleton()->exec.job; - process_reset(&p); - op = pop(&exec->op_stack); - fds[PIPE_WRITE] = STDOUT; - fds[PIPE_READ] = STDIN; - if (op == TK_AMP) - exec->attrs |= JOB_BG; - else if (op == TK_PIPE) - pipe(fds); - p.fdin = exec->fdin; - p.to_close = fds[PIPE_READ]; - p.fdout = fds[PIPE_WRITE]; - p.redirs = cmd->redir; - exec->fdin = fds[PIPE_READ]; - if (IS_PIPESTART(p)) - { - job->first_process = NULL; - job->attrs = EXEC_IS_FG(exec->attrs) ? 0 : JOB_BG; - } - if (!(p.av = token_to_argv(cmd->token, 1))) + if (set_process(&p, *ast)) return (1); - process_setexec(&p); if (!(launch_process(&p))) - ft_lstadd(&job->first_process, ft_lstnew(&p, sizeof(p))); - if (fds[PIPE_WRITE] != STDOUT) - close(fds[PIPE_WRITE]); - if (IS_PIPEEND(p)) { - add_new_job(job); - if (JOB_IS_FG(job->attrs)) - put_job_in_foreground(job, 0); - else + job_addprocess(&p); + if (IS_PIPEEND(p)) { - job_notify_new(job); - put_job_in_background(job, 0); + if (JOB_IS_FG(job->attrs)) + put_job_in_foreground(job, 0); + else + put_job_in_background(job, 0); } + job->pgid = 0; } + if (p.fdout != STDOUT) + close(p.fdout); return (0); } diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 52919e69..ab304058 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:53:26 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 14:41:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ int launch_process(t_process *p) if (process_redirect(p)) return (1); set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); - return (0); + return (1); } else { diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c new file mode 100644 index 00000000..8c4b27c4 --- /dev/null +++ b/42sh/src/exec/set_process.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ +/* Updated: 2017/03/05 15:05:23 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int set_process(t_process *p, t_btree *ast) +{ + t_exec *exec; + t_cmd *cmd; + int op; + int fds[2]; + + cmd = &((t_astnode *)ast->item)->data.cmd; + process_reset(p); + exec = &data_singleton()->exec; + op = pop(&exec->op_stack); + if (!(p->av = token_to_argv(cmd->token, 1))) + return (1); + fds[PIPE_WRITE] = STDOUT; + fds[PIPE_READ] = STDIN; + if (op == TK_AMP) + exec->attrs |= JOB_BG; + else if (op == TK_PIPE) + pipe(fds); + p->fdin = exec->fdin; + p->to_close = fds[PIPE_READ]; + p->fdout = fds[PIPE_WRITE]; + exec->fdin = fds[PIPE_READ]; + p->redirs = cmd->redir; + process_setexec(p); + return (0); +} diff --git a/42sh/src/job-control/add_new_job.c b/42sh/src/job-control/job_addprocess.c similarity index 56% rename from 42sh/src/job-control/add_new_job.c rename to 42sh/src/job-control/job_addprocess.c index 3e866fac..a4ace432 100644 --- a/42sh/src/job-control/add_new_job.c +++ b/42sh/src/job-control/job_addprocess.c @@ -1,28 +1,37 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* add_new_job.c :+: :+: :+: */ +/* job_addprocess.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:33:29 by jhalford ### ########.fr */ +/* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */ +/* Updated: 2017/03/05 15:05:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "job_control.h" -int add_new_job(t_job *job) +int job_addprocess(t_process *p) { t_jobc *jobc; + t_job *job; - DG("adding new job"); - if (!job->first_process) - return (1); jobc = &data_singleton()->jobc; - job_update_id(); - job->id = jobc->current_id; - job->pgid = ((t_process*)job->first_process->content)->pid; - ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); + job = &data_singleton()->exec.job; + if (IS_PIPESTART(*p)) + { + job_update_id(); + job->id = jobc->current_id; + job->pgid = p->pid; + ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); + } + job = jobc->first_job->content; + if (p->pid > 0) + { + ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p))); + } + if (JOB_IS_BG(job->attrs) && IS_PIPEEND(*p)) + job_notify_new(job); return (0); } diff --git a/42sh/src/lexer/lexer_paren.c b/42sh/src/lexer/lexer_paren.c index e80b6a1a..d903a645 100644 --- a/42sh/src/lexer/lexer_paren.c +++ b/42sh/src/lexer/lexer_paren.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 17:37:15 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:48:28 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 14:46:43 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd2.c b/42sh/src/parser/add_cmd2.c deleted file mode 100644 index 5f99ca94..00000000 --- a/42sh/src/parser/add_cmd2.c +++ /dev/null @@ -1,71 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* add_cmd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:31:18 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int add_cmd(t_btree **ast, t_list **lst) -{ - t_token *token; - t_astnode *node; - char **my_tab; - - if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) - return (0); - else if (isdir_sep(ast, lst)) - return (add_redir_type(ast, lst)); - else if (!*ast) - gen_node(ast); - else if (isdir_word(ast, lst)) - return (add_redir_word(ast, lst)); - else if (isvar(ast, lst)) - return (add_var(ast, lst)); - else if (isloop(ast, lst) == 3) - return (add_loop_condition(ast, lst)); - else if (isloop(ast, lst)) - return (add_loop_cmd(ast, lst)); - else if (iscondition(ast, lst) == 1) - return (add_condition_cmd(ast, lst)); - else if (iscondition(ast, lst) == 2) - return (add_branch(ast, lst)); - else if (iscase(ast, lst) == 1) - return (add_pattern(ast, lst)); - else if (iscase(ast, lst) == 2) - return (add_case_cmd(ast, lst)); - else if (iscase(ast, lst) == 3) - return (add_branch(ast, lst)); - else if (issubshell(ast, lst)) - return (add_subshell_cmd(ast, lst)); - else if (isfunc(ast, lst)) - return (add_func_cmd(ast, lst)); - else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != CMD - && node->type != REDIR) - return (add_cmd(&(*ast)->right, lst)); - node = (*ast)->item; - if (token->type != TK_WORD) - node->type = token->type; - else - node->type = CMD; - if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) - { - DG("add data"); - if ((my_tab = (char **)malloc(sizeof(char *) * 4))) - { - my_tab[0] = ft_strdup(token->data); - my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); - my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); - my_tab[3] = NULL; - } - ft_ld_pushback(&node->data.cmd.token, my_tab); - } - return (0); -} From 9a038e9290a80905bf2c12fd05b1cdf2187d3b94 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 15:19:18 +0100 Subject: [PATCH 140/206] && || seem to work now --- 42sh/includes/exec.h | 4 ++-- 42sh/src/exec/exec_and_if.c | 3 ++- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/exec_if.c | 2 +- 42sh/src/exec/exec_or_if.c | 5 +++-- 42sh/src/exec/set_process.c | 7 ++++++- 42sh/src/job-control/job_addprocess.c | 2 +- 42sh/src/main/main.c | 4 ++-- 8 files changed, 18 insertions(+), 11 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 25f430e4..f81bbeef 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:04:49 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:14:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,7 +41,7 @@ # define EXEC_IS_BG(j) (j & EXEC_BG) # define EXEC_IS_FG(j) (!EXEC_IS_BG(j)) # define EXEC_IS_AND_IF(j) (j & EXEC_AND_IF) -# define EXEC_IS_OR_IF(j) (j & EXEC_JOB_OR_IF) +# define EXEC_IS_OR_IF(j) (j & EXEC_OR_IF) # define EXEC_AOL_MASK (EXEC_AND_IF | EXEC_OR_IF) # define EXEC_IS_IF_BRANCH(j) (j & EXEC_IF_BRANCH) diff --git a/42sh/src/exec/exec_and_if.c b/42sh/src/exec/exec_and_if.c index 874f8004..42ee38a7 100644 --- a/42sh/src/exec/exec_and_if.c +++ b/42sh/src/exec/exec_and_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:28 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:05:42 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:18:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,7 @@ int exec_and_if(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_AND_IF); ft_exec(&(*ast)->left); + exec->attrs &= ~EXEC_OR_IF; exec->attrs |= EXEC_AND_IF; ft_exec(&(*ast)->right); diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index f8907f9b..a0656c3a 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:03:35 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:14:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index 02f972e6..c1a59aef 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/04 17:37:11 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:12:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_or_if.c b/42sh/src/exec/exec_or_if.c index ec6bc226..5cc45a5e 100644 --- a/42sh/src/exec/exec_or_if.c +++ b/42sh/src/exec/exec_or_if.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 21:06:17 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:07:35 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:18:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,8 @@ int exec_or_if(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_OR_IF); ft_exec(&(*ast)->left); - exec->attrs |= EXEC_OR_IF; + exec->attrs &= ~EXEC_AND_IF; + exec->attrs = EXEC_OR_IF; ft_exec(&(*ast)->right); /* data = data_singleton(); */ diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 8c4b27c4..878ce011 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:05:23 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:18:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,11 @@ int set_process(t_process *p, t_btree *ast) process_reset(p); exec = &data_singleton()->exec; op = pop(&exec->op_stack); + if ((EXEC_IS_AND_IF(exec->attrs) + && ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") != 0) + || (EXEC_IS_OR_IF(exec->attrs) + && ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0)) + return (1); if (!(p->av = token_to_argv(cmd->token, 1))) return (1); fds[PIPE_WRITE] = STDOUT; diff --git a/42sh/src/job-control/job_addprocess.c b/42sh/src/job-control/job_addprocess.c index a4ace432..8afe2cee 100644 --- a/42sh/src/job-control/job_addprocess.c +++ b/42sh/src/job-control/job_addprocess.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:05:21 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:12:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 256f42f2..7ebb7a70 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/04 19:29:28 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:16:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,7 +62,7 @@ int handle_instruction(int fd) error_syntax(&token, &parser, &ast); } DG("Before execution:"); -// btree_print(STDBUG, ast, &ft_putast); + btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); instruction_free(&token, &parser, &ast); From eb6e1048122b3bcedbd157839ca782a45b14b0a4 Mon Sep 17 00:00:00 2001 From: william Date: Sun, 5 Mar 2017 15:44:12 +0100 Subject: [PATCH 141/206] compilation sous linux possible, mise en commentaire des variables set but not used --- 42sh/Makefile | 16 ++++++++-------- 42sh/libft | 2 +- 42sh/src/builtin/bt_read_parse.c | 4 +--- 42sh/src/exec/exec_case.c | 7 ++++--- 42sh/src/exec/exec_case_branch.c | 7 ++++--- 42sh/src/exec/launch_process.c | 6 +++--- 42sh/src/job-control/sigchld_handler.c | 6 +++--- 42sh/src/job-control/sigtstp_handler.c | 6 +++--- 42sh/src/lexer/lexer_comment.c | 6 +++--- .../lib_line_editing/toolz_parseur.c | 6 +++--- 42sh/src/line-editing/move_up_and_down.c | 6 +++--- 42sh/src/main/main.c | 3 +-- 42sh/src/parser/add_case.c | 7 ++++--- 42sh/src/parser/add_condition.c | 6 +++--- 42sh/src/parser/add_loop.c | 6 +++--- 42sh/src/parser/add_subshell.c | 7 ++++--- 16 files changed, 51 insertions(+), 50 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index 6fb08372..28d213b4 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,7 +6,7 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/03 20:06:37 by ariard ### ########.fr # +#* Updated: 2017/03/05 15:36:45 by wescande ### ########.fr *# # # # **************************************************************************** # @@ -260,13 +260,13 @@ all : @make -j $(NAME) $(NAME): $(LIBFT_LIB) $(OBJ_DIR) $(OBJS) - @$(CC) $(FLAGS) $(D_FLAGS) \ + @$(CC) $(OBJS) -o $(NAME) \ -I $(INC_DIR) \ -I $(LIBFT_INC) \ $(LIBS) \ - $(LIBFT_LIB) $(OBJS) \ - -o $(NAME) - @printf "\r\e[48;5;15;38;5;25m✅ MAKE $(NAME)\e[0m\e[K\n" + $(LIBFT_LIB) \ + $(FLAGS) $(D_FLAGS) + @printf "\r\033[48;5;15;38;5;25m✅ MAKE $(NAME)\033[0m\033[K\n" $(LIBFT_LIB): @make -C $(LIBFT_DIR) @@ -280,7 +280,7 @@ $(OBJ_DIR)%.o : $(SRC_DIR)%.c | $(OBJ_DIR) @$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB))))) @$(eval COLOR=$(shell echo $$(($(PERCENT)%35+196)))) @$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB))))) - @printf "\r\e[38;5;11m⌛ MAKE %10.10s : %2d%% \e[48;5;%dm%*s\e[0m%*s\e[48;5;255m \e[0m \e[38;5;11m %*s\e[0m\e[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) "$@" + @printf "\r\033[38;5;11m⌛ MAKE %10.10s : %2d%% \033[48;5;%dm%*s\033[0m%*s\033[48;5;255m \033[0m \033[38;5;11m %*s\033[0m\033[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) "$@" @$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\ -I $(INC_DIR)\ -I $(LIBFT_INC) @@ -288,14 +288,14 @@ $(OBJ_DIR)%.o : $(SRC_DIR)%.c | $(OBJ_DIR) clean: cleanlib @rm -rf $(OBJ_DIR) - @printf "\r\e[38;5;202m✖ clean $(NAME).\e[0m\e[K\n" + @printf "\r\033[38;5;202m✖ clean $(NAME).\033[0m\033[K\n" cleanlib: @make -C $(LIBFT_DIR) clean fclean: clean fcleanlib @rm -f $(NAME) - @printf "\r\e[38;5;196m❌ fclean $(NAME).\e[0m\e[K\n" + @printf "\r\033[38;5;196m❌ fclean $(NAME).\033[0m\033[K\n" fcleanlib: cleanlib @make -C $(LIBFT_DIR) fclean diff --git a/42sh/libft b/42sh/libft index 318efc7c..282df927 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec +Subproject commit 282df927230b2c6da253f8fc9d7ca0eedc0fe30c diff --git a/42sh/src/builtin/bt_read_parse.c b/42sh/src/builtin/bt_read_parse.c index b23672f1..15aaff94 100644 --- a/42sh/src/builtin/bt_read_parse.c +++ b/42sh/src/builtin/bt_read_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/27 18:25:22 by jhalford #+# #+# */ -/* Updated: 2017/01/27 19:40:14 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:28:10 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,11 +30,9 @@ int bt_read_parse(t_read *data, char **av) { int i; int j; - int k; t_readopt *opt; i = 1; - k = 0; while (av[i]) { j = 0; diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index 0a0cebaa..b200ab15 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/04 18:18:29 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:29:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,16 +14,17 @@ int exec_case(t_btree **ast) { - t_astnode *node; +// t_astnode *node; /* char **av; */ t_exec *exec; + (void)ast; return (0); exec = &data_singleton()->exec; /* data_singleton()->exec.process.case_branch = 0; */ exec->attrs |= EXEC_CASE_BRANCH; - node = (*ast)->item; +// node = (*ast)->item; /* av = token_to_argv(node); */ /* data_singleton()->exec.process.case_pattern = av[0]; */ /* exec->case_pattern = av[0]; */ diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index 0cef16d4..32652b44 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/04 18:23:29 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:29:46 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,16 +14,17 @@ int exec_case_branch(t_btree **ast) { - t_astnode *node; +// t_astnode *node; /* char **av; */ t_exec *exec; + (void)ast; return (0); exec = &data_singleton()->exec; /* if (data_singleton()->exec.process.case_branch == 1) */ if (EXEC_IS_CASE_BRANCH(exec->attrs)) return (0); - node = (*ast)->item; +// node = (*ast)->item; /* av = token_to_argv(node); */ /* if (ft_strcmp(av[0], data_singleton()->exec.process.case_pattern) == 1) */ /* { */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index ab304058..ce715746 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 14:41:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:30:04 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,10 @@ int launch_process(t_process *p) { - t_exec *exec; +// t_exec *exec; int pid; - exec = &data_singleton()->exec; +// exec = &data_singleton()->exec; DG("gonna launch [%s]", p->av[0]); DG("fdin=[%i]", p->fdin); DG("fdout=[%i]", p->fdout); diff --git a/42sh/src/job-control/sigchld_handler.c b/42sh/src/job-control/sigchld_handler.c index 87f795c7..4fe9724a 100644 --- a/42sh/src/job-control/sigchld_handler.c +++ b/42sh/src/job-control/sigchld_handler.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 17:37:56 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:09:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:30:35 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,8 @@ void sigchld_handler(int signo) { - t_data *data; +// t_data *data; (void)signo; - data = data_singleton(); +// data = data_singleton(); } diff --git a/42sh/src/job-control/sigtstp_handler.c b/42sh/src/job-control/sigtstp_handler.c index e6c9b923..5244b9c0 100644 --- a/42sh/src/job-control/sigtstp_handler.c +++ b/42sh/src/job-control/sigtstp_handler.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 15:14:53 by jhalford #+# #+# */ -/* Updated: 2017/01/22 19:03:32 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:30:58 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,10 @@ void sigtstp_handler(int signo) { - t_jobc *jobc; +// t_jobc *jobc; (void)signo; - jobc = &data_singleton()->jobc; +// jobc = &data_singleton()->jobc; DG("got SIGTSTP pid=%i, pgrp=%i, shell_pgid=%i", getpid(), getpgrp(), data_singleton()->jobc.shell_pgid); ft_putchar('\x1A'); } diff --git a/42sh/src/lexer/lexer_comment.c b/42sh/src/lexer/lexer_comment.c index 1ae43e79..8a302869 100644 --- a/42sh/src/lexer/lexer_comment.c +++ b/42sh/src/lexer/lexer_comment.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 12:15:59 by jhalford #+# #+# */ -/* Updated: 2017/02/20 21:03:53 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:31:17 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,9 @@ int lexer_comment(t_list **alst, t_lexer *lexer) { - t_token *token; +// t_token *token; - token = (*alst)->content; +// token = (*alst)->content; if (lexer->str[lexer->pos] == '\n') return (lexer_lex(&(*alst)->next, lexer)); return (lexer_comment(alst, lexer)); diff --git a/42sh/src/line-editing/lib_line_editing/toolz_parseur.c b/42sh/src/line-editing/lib_line_editing/toolz_parseur.c index a0781e12..7c14dc9b 100644 --- a/42sh/src/line-editing/lib_line_editing/toolz_parseur.c +++ b/42sh/src/line-editing/lib_line_editing/toolz_parseur.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/16 16:14:46 by gwojda #+# #+# */ -/* Updated: 2017/02/02 14:29:34 by gwojda ### ########.fr */ +/* Updated: 2017/03/05 15:31:42 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,12 @@ char *ft_realloc_imput(char *str, int a, size_t pos) { - int i; +// int i; char tmp[2]; char *str_tmp; char *new_str; - i = 0; +// i = 0; tmp[0] = (char)a; tmp[1] = '\0'; if (!str) diff --git a/42sh/src/line-editing/move_up_and_down.c b/42sh/src/line-editing/move_up_and_down.c index 26eaa8d8..742f232a 100644 --- a/42sh/src/line-editing/move_up_and_down.c +++ b/42sh/src/line-editing/move_up_and_down.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:21:40 by gwojda #+# #+# */ -/* Updated: 2017/02/14 11:18:54 by gwojda ### ########.fr */ +/* Updated: 2017/03/05 15:32:18 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,9 +40,9 @@ static void ft_up_2(size_t *pos, char *str) void ft_up(void) { - int i; +// int i; - i = 0; +// i = 0; if (!STR || !POS) return ; if (STR[POS - 1] == '\n') diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 7ebb7a70..30c69115 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:16:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:42:31 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -83,7 +83,6 @@ int get_input_fd() return (fd); else if (data->opts & SH_OPTS_LC) { - DG(); pipe(fds); fd = fds[PIPE_READ]; file = shell_get_avdata(); diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index a6fb19a5..0eb38a40 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:54:21 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:33:58 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,10 +15,11 @@ int iscase(t_btree **ast, t_list **lst) { t_astnode *node; - t_token *token; +// t_token *token; + (void)lst; node = NULL; - token = (*lst)->content; +// token = (*lst)->content; if (*ast) { node = (*ast)->item; diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index d73dc8d1..6dd90ac6 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:51:34 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:32:49 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,10 +15,10 @@ int iscondition(t_btree **ast, t_list **lst) { t_astnode *node; - t_token *token; +// t_token *token; node = NULL; - token = (*lst)->content; +// token = (*lst)->content; DG("iscondition"); if (*ast) { diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 5c39e299..3096eb61 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/04 22:05:26 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:33:35 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,10 +15,10 @@ int isloop(t_btree **ast, t_list **lst) { t_astnode *node; - t_token *token; +// t_token *token; node = NULL; - token = (*lst)->content; +// token = (*lst)->content; DG("isloop"); if (*ast) { diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 03fc263a..02618324 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:44 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:34:12 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,10 +15,11 @@ int issubshell(t_btree **ast, t_list **lst) { t_astnode *node; - t_token *token; +// t_token *token; + (void)lst; node = NULL; - token = (*lst)->content; +// token = (*lst)->content; if (*ast) { node = (*ast)->item; From 0e85867fd8554b528f85f01b1d32e9d8c04673da Mon Sep 17 00:00:00 2001 From: william Date: Sun, 5 Mar 2017 16:09:49 +0100 Subject: [PATCH 142/206] IO_NUMBER sur plusieurs digits --- 42sh/src/lexer/lexer_number.c | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 90562cb1..0bcd4b66 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:35:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:03:31 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,12 +19,41 @@ int lexer_number(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = TK_IO_NUMBER; - if ((state = get_state_global(lexer))) + if ((state = get_state_global(lexer)) + || (state = get_state_redir(lexer))) { lexer->state = state; return (lexer_lex(alst, lexer)); } - else if ((state = get_state_redir(lexer))) + else if (ft_isdigit(lexer->str[lexer->pos]) + && (ft_isdigit(lexer->str[lexer->pos + 1]) + || lexer->str[lexer->pos + 1] == '>' + || lexer->str[lexer->pos + 1] == '<')) + { + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_number(alst, lexer)); + } + else + { + token->type = TK_WORD; + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_lex(alst, lexer)); + } + lexer->state = DEFAULT; + return (lexer_lex(alst, lexer)); +} +/* +int lexer_number(t_list **alst, t_lexer *lexer) +{ + t_token *token; + t_lexstate state; + + token = (*alst)->content; + token->type = TK_IO_NUMBER; + if ((state = get_state_global(lexer)) + || (state = get_state_redir(lexer))) { lexer->state = state; return (lexer_lex(alst, lexer)); @@ -46,3 +75,4 @@ int lexer_number(t_list **alst, t_lexer *lexer) lexer->state = DEFAULT; return (lexer_lex(alst, lexer)); } +*/ From ee883b38a9b5fd29b017700d55d21bb2d718e579 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 16:30:48 +0100 Subject: [PATCH 143/206] parens and curly braces lexing OK --- 42sh/Makefile | 2 +- 42sh/includes/exec.h | 2 +- 42sh/includes/job_control.h | 2 +- 42sh/includes/lexer.h | 6 +- 42sh/src/exec/ast_free.c | 3 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/launch_process.c | 73 +++++++++---------- 42sh/src/exec/process_redirect.c | 2 +- 42sh/src/exec/redir_free.c | 15 ++-- 42sh/src/exec/set_process.c | 2 +- 42sh/src/job-control/process_free.c | 4 +- 42sh/src/lexer/get_lexer_stack.c | 2 +- 42sh/src/lexer/get_state_global.c | 3 +- ..._curly_brackets.c => lexer_curly_braces.c} | 35 +++------ 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_lex.c | 6 +- 42sh/src/lexer/lexer_paren.c | 20 ++--- 42sh/src/lexer/token_print.c | 3 +- 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_get_opts.c | 2 +- 20 files changed, 84 insertions(+), 104 deletions(-) rename 42sh/src/lexer/{lexer_curly_brackets.c => lexer_curly_braces.c} (52%) diff --git a/42sh/Makefile b/42sh/Makefile index 6fb08372..7a5d7b54 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -179,7 +179,7 @@ lexer/lexer_assignement_word.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ lexer/lexer_comment.c\ -lexer/lexer_curly_brackets.c\ +lexer/lexer_curly_braces.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ lexer/lexer_dless.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index f81bbeef..15db9b28 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:14:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:19:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index b8f04fa4..62c32983 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:35:49 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:28:37 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 12f76e17..89fa6f55 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:58:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:28:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,8 +23,8 @@ | TK_DO | TK_IF | TK_FI | TK_THEN | TK_ELIF | TK_ELSE) enum e_lexstate { - PAREN, DEFAULT, + PAREN, NEWLINE, DELIM, SEP, @@ -111,7 +111,7 @@ int lexer_dquote(t_list **alst, t_lexer *lexer); int lexer_bquote(t_list **alst, t_lexer *lexer); int lexer_backslash(t_list **alst, t_lexer *lexer); int lexer_paren(t_list **alst, t_lexer *lexer); -int lexer_curly_brackets(t_list **alst, t_lexer *lexer); +int lexer_curly_braces(t_list **alst, t_lexer *lexer); int lexer_assignement_word(t_list **alst, t_lexer *lexer); int lexer_comment(t_list **alst, t_lexer *lexer); int lexer_end(t_list **alst, t_lexer *lexer); diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index efee8bea..4cb2db38 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/04 17:09:11 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:58:16 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,5 +33,4 @@ void ast_free(void *data, size_t content_size) } // if (node->type == WORDLIST) // do clear - } diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index a0656c3a..ac516c54 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:14:10 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:42:36 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index ab304058..85cade9b 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 14:41:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:42:37 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,9 +18,9 @@ int launch_process(t_process *p) int pid; exec = &data_singleton()->exec; - DG("gonna launch [%s]", p->av[0]); - DG("fdin=[%i]", p->fdin); - DG("fdout=[%i]", p->fdout); + /* DG("gonna launch [%s]", p->av[0]); */ + /* DG("fdin=[%i]", p->fdin); */ + /* DG("fdout=[%i]", p->fdout); */ if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) { if (process_redirect(p)) @@ -28,41 +28,38 @@ int launch_process(t_process *p) set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); return (1); } - else + p->attributes &= ~PROCESS_STATE_MASK; + p->attributes |= PROCESS_RUNNING; + if (p->attributes & (PROCESS_BINARY | PROCESS_SCRIPT) + && access(p->path, X_OK) == -1) { - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes |= PROCESS_RUNNING; - if (p->attributes & (PROCESS_BINARY | PROCESS_SCRIPT) - && access(p->path, X_OK) == -1) - { - ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); - set_exitstatus(126, 1); - return (1); - } - pid = fork(); - if (pid == 0) - { - if (p->attributes & PROCESS_UNKNOWN) - { - ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); - exit(127); - /* set_exitstatus(127, 1); */ - } - process_setgroup(p, 0); - process_setsig(); - if (process_redirect(p)) - exit (1); - (*p->execf)(p->path, p->av, data_singleton()->env); - exit(43); - } - else if (pid > 0) - { - p->pid = pid; - process_setgroup(p, pid); - return (0); - } - else if (pid == -1) - ft_dprintf(2, "{red}%s: internal fork error{eoc}\n", SHELL_NAME); + ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); + set_exitstatus(126, 1); + return (1); } + pid = fork(); + if (pid == 0) + { + if (p->attributes & PROCESS_UNKNOWN) + { + ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); + exit(127); + } + process_setgroup(p, 0); + process_setsig(); + DG("gonna redirect"); + if (process_redirect(p)) + exit (1); + (*p->execf)(p->path, p->av, data_singleton()->env); + ft_dprintf(2, "{red}%s: internal excve error{eoc}\n", SHELL_NAME); + } + else if (pid > 0) + { + p->pid = pid; + process_setgroup(p, pid); + return (0); + } + else if (pid == -1) + ft_dprintf(2, "{red}%s: internal fork error{eoc}\n", SHELL_NAME); return (1); } diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index c13cf802..39b807b6 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:49:27 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:59:06 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/redir_free.c b/42sh/src/exec/redir_free.c index 9e0a1b06..41ed42d2 100644 --- a/42sh/src/exec/redir_free.c +++ b/42sh/src/exec/redir_free.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 18:12:57 by ariard #+# #+# */ -/* Updated: 2017/03/03 20:02:24 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:58:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,11 +19,14 @@ void redir_free(void *data, size_t content_size) (void)content_size; redir = data; if (redir->type == TK_GREAT || redir->type == TK_LESS || redir->type == TK_DGREAT) + { + /* DG("word.word: %s", redir->word.word); */ ft_strdel(&redir->word.word); - else - redir->word.fd = 0; - redir->type = 0; - redir->n = 0; - redir->close = 1; + } + /* else */ + /* redir->word.fd = 0; */ + /* redir->type = 0; */ + /* redir->n = 0; */ + /* redir->close = 1; */ free(redir); } diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 878ce011..88a39993 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:18:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 15:42:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index eb84a650..ea62d4bf 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/02 17:48:50 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:00:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,6 @@ void process_free(void *content, size_t content_size) p = content; ft_strdel(&p->path); ft_sstrfree(p->av); - ft_lstdel(&p->redirs, ft_lst_cfree); + /* ft_lstdel(&p->redirs, ft_lst_cfree); */ free(p); } diff --git a/42sh/src/lexer/get_lexer_stack.c b/42sh/src/lexer/get_lexer_stack.c index d8c449ec..a574564c 100644 --- a/42sh/src/lexer/get_lexer_stack.c +++ b/42sh/src/lexer/get_lexer_stack.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 17:39:45 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:40:24 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:27:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index 550e7b2c..d6af9653 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:56:09 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:28:14 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,7 @@ t_lexstate get_state_global(t_lexer *lexer) char c; c = lexer->str[lexer->pos]; + DG("check, c=%c", lexer->str[lexer->pos]); if (ft_is_delim(c)) return (DELIM); else if (c == '#') diff --git a/42sh/src/lexer/lexer_curly_brackets.c b/42sh/src/lexer/lexer_curly_braces.c similarity index 52% rename from 42sh/src/lexer/lexer_curly_brackets.c rename to 42sh/src/lexer/lexer_curly_braces.c index e63356d1..1674027a 100644 --- a/42sh/src/lexer/lexer_curly_brackets.c +++ b/42sh/src/lexer/lexer_curly_braces.c @@ -1,46 +1,35 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* lexer_curly_brackets.c :+: :+: :+: */ +/* lexer_curly_braces.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ +/* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/24 21:24:50 by ariard #+# #+# */ -/* Updated: 2017/02/24 21:48:52 by ariard ### ########.fr */ +/* Created: 2017/03/05 16:29:35 by jhalford #+# #+# */ +/* Updated: 2017/03/05 16:29:36 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int lexer_curly_brackets(t_list **alst, t_lexer *lexer) +int lexer_curly_braces(t_list **alst, t_lexer *lexer) { - t_token *token; - t_list **lst; + t_token *token; - DG("lexer curly brackets"); - lst = alst; - if (*alst) - { - token = (*alst)->content; - if (token->type) - lst = &(*alst)->next; - } - token = token_init(); - *lst = ft_lstnew(token, sizeof(*token)); - token = (*lst)->content; + token = (*alst)->content; + if (token->type) + lexer_lex(&(*alst)->next, lexer); if (lexer->str[lexer->pos] == '{') { - DG("lbrace"); token->type = TK_LBRACE; - push(&lexer->stack, CURLY_BRACKETS); + push(&lexer->stack, PAREN); } - else if (lexer->stack && *(int*)lexer->stack->content == CURLY_BRACKETS) + else if (get_lexer_stack(*lexer)) { - DG("rbrace"); token->type = TK_RBRACE; pop(&lexer->stack); } lexer->pos++; lexer->state = DEFAULT; - return (lexer_lex(&(*lst)->next, lexer)); + return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 94bf796c..0fff3b18 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:55:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:20:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index a9d2b823..c5900571 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/04 20:51:21 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:28:15 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,8 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = { - &lexer_paren, &lexer_default, + &lexer_paren, &lexer_newline, &lexer_delim, &lexer_sep, @@ -31,7 +31,7 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_bquote, &lexer_bquote, &lexer_backslash, - &lexer_curly_brackets, + &lexer_curly_braces, &lexer_assignement_word, &lexer_comment, &lexer_end, diff --git a/42sh/src/lexer/lexer_paren.c b/42sh/src/lexer/lexer_paren.c index d903a645..ee205745 100644 --- a/42sh/src/lexer/lexer_paren.c +++ b/42sh/src/lexer/lexer_paren.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 17:37:15 by jhalford #+# #+# */ -/* Updated: 2017/03/05 14:46:43 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:29:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,29 +15,21 @@ int lexer_paren(t_list **alst, t_lexer *lexer) { t_token *token; - t_list **lst; - lst = alst; - if (*alst) - { - token = (*alst)->content; - if (token->type) - lst = &(*alst)->next; - } - token = token_init(); - *lst = ft_lstnew(token, sizeof(*token)); - token = (*lst)->content; + token = (*alst)->content; + if (token->type) + lexer_lex(&(*alst)->next, lexer); if (lexer->str[lexer->pos] == '(') { token->type = TK_PAREN_OPEN; push(&lexer->stack, PAREN); } - else if (lexer->stack && *(int*)lexer->stack->content == PAREN) + else if (get_lexer_stack(*lexer)) { token->type = TK_PAREN_CLOSE; pop(&lexer->stack); } lexer->pos++; lexer->state = DEFAULT; - return (lexer_lex(&(*lst)->next, lexer)); + return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index 98c29591..4f71879f 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:25:30 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:27:58 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,6 @@ void token_print(t_list *lst) while (lst) { - DG("token print"); if (lst->content) token = lst->content; if (token->type) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 7ebb7a70..639ed5ce 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:16:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:30:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 98742c4b..6e259f08 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:53:11 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:28:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 2b456eac9c88e9be1f3cb113af1f407f3bd65df8 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sun, 5 Mar 2017 16:40:22 +0100 Subject: [PATCH 144/206] rectification cleanage code --- 42sh/includes/parser.h | 4 +- 42sh/sample/for/for.sh | 9 +---- 42sh/src/exec/ast_free.c | 4 +- 42sh/src/exec/exec_for.c | 4 +- 42sh/src/lexer/lexer_lex.c | 2 +- 42sh/src/lexer/lexer_paren.c | 2 +- 42sh/src/main/ft_putast.c | 4 +- 42sh/src/main/main.c | 4 +- 42sh/src/parser/add_case.c | 2 +- 42sh/src/parser/add_cmd.c | 4 +- 42sh/src/parser/add_cmd2.c | 71 --------------------------------- 42sh/src/parser/add_loop.c | 7 ++-- 42sh/src/parser/add_redir.c | 8 ++-- 42sh/src/parser/aggregate_sym.c | 11 +++-- 42sh/src/parser/build_tree.c | 3 +- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 7 +--- 42sh/src/parser/pop_stack.c | 12 +----- 42sh/src/parser/produce_sym.c | 8 ++-- 42sh/src/parser/tree_wrapper.c | 2 +- 20 files changed, 41 insertions(+), 129 deletions(-) delete mode 100644 42sh/src/parser/add_cmd2.c diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index da36d5d1..d654f75b 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -26,8 +26,6 @@ enum e_parstate SUCCESS, }; -# define TK_REDIR(x) (TK_LESS <= x && x <= TK_GREATAND) - # define MATCH_STACK(x, y) (x == y || y == ALL) struct s_parser @@ -174,12 +172,12 @@ struct s_cmd { t_list *redir; t_ld *token; + t_list *wordlist; }; union u_astdata { t_cmd cmd; - t_list *wordlist; char **sstr; char *str; }; diff --git a/42sh/sample/for/for.sh b/42sh/sample/for/for.sh index 90cfffe6..9d942c9e 100644 --- a/42sh/sample/for/for.sh +++ b/42sh/sample/for/for.sh @@ -1,11 +1,4 @@ for i in hello bonjour salut comment do - for i in echo - do - pwd - done - for i in echo - do - pwd - done + ls done diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index efee8bea..c4b1a6f8 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/04 17:09:11 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:24:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ void ast_free(void *data, size_t content_size) if (node->type == CMD) { ft_ld_clear(&node->data.cmd.token, &ft_tabdel); - ft_lstdel(&node->data.cmd.redir, &redir_free); +// ft_lstdel(&node->data.cmd.redir, &redir_free); } // if (node->type == WORDLIST) // do clear diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index eba6c713..270e12e2 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/04 18:17:05 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:22:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ int exec_for(t_btree **ast) char *var; node = (*ast)->item; - temp = node->data.wordlist; + temp = node->data.cmd.wordlist; var = temp->content; builtin_setenv("setenv", (char*[]){var, 0}, data_singleton()->local_var); while (temp) diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index a9d2b823..cb734fb5 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/04 20:51:21 by ariard ### ########.fr */ +/* Updated: 2017/03/05 14:52:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_paren.c b/42sh/src/lexer/lexer_paren.c index e80b6a1a..bb517adf 100644 --- a/42sh/src/lexer/lexer_paren.c +++ b/42sh/src/lexer/lexer_paren.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 17:37:15 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:48:28 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 14:47:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index d2f3fd6e..25fc6457 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/03/03 20:05:54 by ariard ### ########.fr */ +/* Updated: 2017/03/05 14:57:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ char *ft_putast(void *nodein) t_astnode *node; node = nodein; + if (node->type == WORDLIST) + return ("WORDLIST"); if (node->type == CMD) return ("CMD"); if (node->type == REDIR) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 256f42f2..0dbee69a 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/04 19:29:28 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:38:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,7 +62,7 @@ int handle_instruction(int fd) error_syntax(&token, &parser, &ast); } DG("Before execution:"); -// btree_print(STDBUG, ast, &ft_putast); + btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); instruction_free(&token, &parser, &ast); diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index a6fb19a5..8955d666 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:54:21 by ariard ### ########.fr */ +/* Updated: 2017/03/05 14:47:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 691cfd9b..4b42a3dc 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/04 22:05:47 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:34:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,7 +36,6 @@ int superflous_token(t_btree **ast, t_list **lst) t_token *token; (void)ast; - DG("superflous token"); if (*lst) { token = (*lst)->content; @@ -73,7 +72,6 @@ int add_cmd(t_btree **ast, t_list **lst) DG("add cmd"); while (i < 14) { - DG("test"); if (g_distrostree[i].test(ast, lst) == 1) { DG("add : %d", i); diff --git a/42sh/src/parser/add_cmd2.c b/42sh/src/parser/add_cmd2.c deleted file mode 100644 index 5f99ca94..00000000 --- a/42sh/src/parser/add_cmd2.c +++ /dev/null @@ -1,71 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* add_cmd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:31:18 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "parser.h" - -int add_cmd(t_btree **ast, t_list **lst) -{ - t_token *token; - t_astnode *node; - char **my_tab; - - if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) - return (0); - else if (isdir_sep(ast, lst)) - return (add_redir_type(ast, lst)); - else if (!*ast) - gen_node(ast); - else if (isdir_word(ast, lst)) - return (add_redir_word(ast, lst)); - else if (isvar(ast, lst)) - return (add_var(ast, lst)); - else if (isloop(ast, lst) == 3) - return (add_loop_condition(ast, lst)); - else if (isloop(ast, lst)) - return (add_loop_cmd(ast, lst)); - else if (iscondition(ast, lst) == 1) - return (add_condition_cmd(ast, lst)); - else if (iscondition(ast, lst) == 2) - return (add_branch(ast, lst)); - else if (iscase(ast, lst) == 1) - return (add_pattern(ast, lst)); - else if (iscase(ast, lst) == 2) - return (add_case_cmd(ast, lst)); - else if (iscase(ast, lst) == 3) - return (add_branch(ast, lst)); - else if (issubshell(ast, lst)) - return (add_subshell_cmd(ast, lst)); - else if (isfunc(ast, lst)) - return (add_func_cmd(ast, lst)); - else if ((node = (*ast)->item)->type != TK_DO && node->type != TK_THEN - && node->type != TK_PAREN_CLOSE && node->type != CMD - && node->type != REDIR) - return (add_cmd(&(*ast)->right, lst)); - node = (*ast)->item; - if (token->type != TK_WORD) - node->type = token->type; - else - node->type = CMD; - if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) - { - DG("add data"); - if ((my_tab = (char **)malloc(sizeof(char *) * 4))) - { - my_tab[0] = ft_strdup(token->data); - my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); - my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); - my_tab[3] = NULL; - } - ft_ld_pushback(&node->data.cmd.token, my_tab); - } - return (0); -} diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 5c39e299..fc775e97 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/04 22:05:26 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:51:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,7 +43,7 @@ int isloop_condition(t_btree **ast, t_list **lst) if (*ast) { node = (*ast)->item; - if (node->type == TK_FOR && token->type == TK_WORD + if (node->type == TK_FOR && (token->type == TK_WORD || token->type == TK_NAME) && node->pattern == 0) return (1); } @@ -94,7 +94,8 @@ int add_loop_condition(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; - ft_lsteadd(&node->data.wordlist, ft_lstnew(ft_strdup(token->data), + DG("add word"); + ft_lsteadd(&node->data.cmd.wordlist, ft_lstnew(ft_strdup(token->data), ft_strlen(token->data))); return (0); } diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 6e7eb442..947bd8d5 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/04 20:00:46 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:39:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,7 +47,10 @@ int isdir_word(t_btree **ast, t_list **list) { node = (*ast)->item; if (token->type == TK_WORD && node->type == REDIR) - return ((node->type = CMD)); + { + node->type = CMD; + return (1); + } } return (0); } @@ -80,7 +83,6 @@ int add_redir_type(t_btree **ast, t_list **lst) t_token *token; t_redir redir; - DG("add redir"); if (!*ast) gen_node(ast); token = (*lst)->content; diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 03ae7a56..fb79eb04 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -1,5 +1,4 @@ -/* ************************************************************************** */ -/* */ +/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* aggregate_sym.c :+: :+: :+: */ /* +:+ +:+ +:+ */ @@ -316,21 +315,21 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) i = 0; head = (*stack)->content; - DG("aggregate head %s && sym %s", - read_state(*head), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(*head), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(*head, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); head = (*stack)->content; - DG("stack after pop: %s", read_state(*head)); +// DG("stack after pop: %s", read_state(*head)); } if (eval_sym(stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 1848f810..0ebefed7 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/04 20:56:42 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:04:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,6 +41,7 @@ t_treematch g_treematch[] = {TK_PAREN_OPEN, &add_cmd}, {TK_PAREN_CLOSE, &add_cmd}, {TK_FOR, &add_cmd}, + {TK_NAME, &add_cmd}, {TK_ASSIGNEMENT_WORD, &add_cmd}, {SUBSHELL, &add_cmd}, {TK_LBRACE, &add_cmd}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 9acbc37a..6a5f0724 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -1027,7 +1027,7 @@ int eval_sym(t_list **stack, t_sym new_sym) int i; head = (*stack)->content; - DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index c0d40cd6..b959f9c5 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -37,12 +37,9 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) while (*token) { produce_sym(&parser->stack, parser->new_sym, token); - DG("new sym %s", read_state(*parser->new_sym)); +// DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(&parser->stack, *parser->new_sym)) -{ - DG("ERRROR"); return ((parser->state = ERROR)); -} else { aggregate_sym(&parser->stack, parser->new_sym, &parser->state); @@ -55,7 +52,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else parser->state = UNDEFINED; build_tree(ast, token); -// btree_print(STDBUG, *ast, &ft_putast); + btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index eea77345..b2b8c9d7 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:28:02 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:28:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ int pop_stack(t_list **stack, t_sym erase_sym) t_sym *head; t_list *temp; - DG("pop until :%s", read_state(erase_sym)); head = (*stack)->content; while ((*stack) && *head != erase_sym) { @@ -29,12 +28,5 @@ int pop_stack(t_list **stack, t_sym erase_sym) temp = *stack; (*stack) = (*stack)->next; ft_lstdelone(&temp, NULL); -/* - DG("pop until :%s", read_state(erase_sym)); - temp = *stack; - while (*temp != erase_sym) - *temp-- = 0; - *temp-- = 0; - *stack = temp; - */ return (0); + return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 717c15ca..c2302123 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/03 18:43:13 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:12:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -107,8 +107,8 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) token = (*lst)->content; head = (*stack)->content; - DG("produce stack : %s && token : %s", read_state(*head), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(*head), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -116,7 +116,7 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && *head == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 07be0e9c..d85ce201 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:20:16 by ariard ### ########.fr */ +/* Updated: 2017/03/05 15:19:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 503512252356ed04269e073d0a78bc05962938ff Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sun, 5 Mar 2017 16:46:05 +0100 Subject: [PATCH 145/206] merge --- 42sh/src/lexer/lexer_number.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 90562cb1..d9eb81e5 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:35:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 16:44:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From e645db2f0fa64c034947af736936f85b8f65284a Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 16:49:21 +0100 Subject: [PATCH 146/206] changed libft preprocessor apple/linux dichotomy --- 42sh/libft | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/42sh/libft b/42sh/libft index 282df927..0270e365 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 282df927230b2c6da253f8fc9d7ca0eedc0fe30c +Subproject commit 0270e3651474c1b20bb0d6873f5c6188ccf43897 From 9bd9130ca646fdde0c8cad31356d6d5eb7282e78 Mon Sep 17 00:00:00 2001 From: william Date: Sun, 5 Mar 2017 17:18:37 +0100 Subject: [PATCH 147/206] rectif lexer number multi token --- 42sh/src/lexer/lexer_number.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 0bcd4b66..c5f1ce93 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:03:31 by wescande ### ########.fr */ +/* Updated: 2017/03/05 17:15:52 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,14 +26,20 @@ int lexer_number(t_list **alst, t_lexer *lexer) return (lexer_lex(alst, lexer)); } else if (ft_isdigit(lexer->str[lexer->pos]) - && (ft_isdigit(lexer->str[lexer->pos + 1]) - || lexer->str[lexer->pos + 1] == '>' - || lexer->str[lexer->pos + 1] == '<')) + && ft_isdigit(lexer->str[lexer->pos + 1])) { token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_number(alst, lexer)); } + else if (ft_isdigit(lexer->str[lexer->pos]) + && (lexer->str[lexer->pos + 1] == '>' + || lexer->str[lexer->pos + 1] == '<')) + { + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_lex(&(*alst)->next, lexer)); + } else { token->type = TK_WORD; @@ -41,8 +47,6 @@ int lexer_number(t_list **alst, t_lexer *lexer) lexer->pos++; return (lexer_lex(alst, lexer)); } - lexer->state = DEFAULT; - return (lexer_lex(alst, lexer)); } /* int lexer_number(t_list **alst, t_lexer *lexer) From b6c0355904e3cc3265abdfd5017c9b8c7badfb37 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sun, 5 Mar 2017 17:20:43 +0100 Subject: [PATCH 148/206] redir without IO_NUMBER good --- 42sh/file | 16 ++++++++++++++++ 42sh/libft | 2 +- 42sh/src/exec/ast_free.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_number.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/parser/add_redir.c | 5 ++++- 42sh/src/parser/tree_wrapper.c | 4 ++-- 8 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 42sh/file diff --git a/42sh/file b/42sh/file new file mode 100644 index 00000000..614d43df --- /dev/null +++ b/42sh/file @@ -0,0 +1,16 @@ +total 576 +-rwxr-xr-x 1 ariard 2016_paris 249036 Mar 5 17:14 42sh +-rw-r--r-- 1 ariard 2016_paris 8133 Mar 5 16:46 Makefile +-rw-r--r-- 1 ariard 2016_paris 16999 Mar 5 17:15 STDBUG +drwxr-xr-x 7 ariard 2016_paris 238 Mar 4 14:53 TESTSHELL +-rw-r--r-- 1 ariard 2016_paris 4396 Mar 4 14:53 donovan_segaults_06-02 +-rw-r--r-- 1 ariard 2016_paris 0 Mar 5 17:15 file +drwxr-xr-x 16 ariard 2016_paris 544 Mar 5 16:46 includes +drwxr-xr-x 12 ariard 2016_paris 408 Mar 5 16:50 libft +drwxr-xr-x 13 ariard 2016_paris 442 Mar 5 16:50 objs +-rw-r--r-- 1 ariard 2016_paris 0 Mar 4 14:53 parser_init.c +drwxr-xr-x 6 ariard 2016_paris 204 Mar 4 14:53 pdf +drwxr-xr-x 29 ariard 2016_paris 986 Mar 4 14:53 sample +drwxr-xr-x 14 ariard 2016_paris 476 Mar 4 14:53 src +-rwxr-xr-x 1 ariard 2016_paris 890 Mar 4 14:53 test_framework.sh +-rwxr-xr-x 1 ariard 2016_paris 690 Mar 4 14:53 update_makefile.sh diff --git a/42sh/libft b/42sh/libft index 282df927..318efc7c 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 282df927230b2c6da253f8fc9d7ca0eedc0fe30c +Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 15b0f5b5..93baaec6 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:50:06 by ariard ### ########.fr */ +/* Updated: 2017/03/05 17:02:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 026a0f4a..648aa8a0 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/02/25 19:56:31 by ariard ### ########.fr */ +/* Updated: 2017/03/05 17:08:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 0d0b2c3b..f429ca83 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:48:47 by ariard ### ########.fr */ +/* Updated: 2017/03/05 17:01:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 066379f2..d10c9e48 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/03 17:56:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 17:07:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 947bd8d5..7a7472c5 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/05 16:39:29 by ariard ### ########.fr */ +/* Updated: 2017/03/05 17:14:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -87,6 +87,9 @@ int add_redir_type(t_btree **ast, t_list **lst) gen_node(ast); token = (*lst)->content; node = (*ast)->item; + if (!(node->type == TK_IO_NUMBER)) + redir.n = (token->type == TK_LESS || token->type == TK_DLESS + || token->type == TK_LESSAND) ? STDIN : STDOUT; node->type = REDIR; redir.type = token->type; ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index d85ce201..ed89c93e 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:19:25 by ariard ### ########.fr */ +/* Updated: 2017/03/05 16:56:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ int gen_node(t_btree **ast) ft_bzero((void *)&((t_astnode *)(*ast)->item)->data, sizeof(t_astdata)); ((t_astnode *)(*ast)->item)->nest = 0; ((t_astnode *)(*ast)->item)->full = 0; - ((t_astnode *)(*ast)->item)->type = 0; + ((t_astnode *)(*ast)->item)->type = TK_NEWLINE; ((t_astnode *)(*ast)->item)->pattern = 0; } return (0); From b998f45e497a72e433dd058058bca53756479626 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 17:30:32 +0100 Subject: [PATCH 149/206] comments with # --- 42sh/Makefile | 1 - 42sh/includes/lexer.h | 3 +-- 42sh/src/lexer/get_state_global.c | 4 +--- 42sh/src/lexer/lexer_comment.c | 23 ----------------------- 42sh/src/lexer/lexer_dquote.c | 2 +- 42sh/src/lexer/lexer_end.c | 18 ++++++++++++++---- 42sh/src/lexer/lexer_lex.c | 8 +++++--- 42sh/src/main/shell_get_opts.c | 2 +- 8 files changed, 23 insertions(+), 38 deletions(-) delete mode 100644 42sh/src/lexer/lexer_comment.c diff --git a/42sh/Makefile b/42sh/Makefile index e0bfe3a8..5a75871a 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -178,7 +178,6 @@ lexer/insert_newline.c\ lexer/lexer_assignement_word.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ -lexer/lexer_comment.c\ lexer/lexer_curly_braces.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 89fa6f55..74fd80bc 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:28:17 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 17:29:09 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,7 +42,6 @@ enum e_lexstate BACKSLASH, CURLY_BRACKETS, ASSIGNEMENT_WORD, - COMMENT, END, }; diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index d6af9653..a723edc5 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:28:14 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 17:29:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,8 +20,6 @@ t_lexstate get_state_global(t_lexer *lexer) DG("check, c=%c", lexer->str[lexer->pos]); if (ft_is_delim(c)) return (DELIM); - else if (c == '#') - return (COMMENT); else if (c == '&' || c == ';' || c == '|') return (SEP); else if (c == '\\') diff --git a/42sh/src/lexer/lexer_comment.c b/42sh/src/lexer/lexer_comment.c deleted file mode 100644 index 8a302869..00000000 --- a/42sh/src/lexer/lexer_comment.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_comment.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/07 12:15:59 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:31:17 by wescande ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_comment(t_list **alst, t_lexer *lexer) -{ -// t_token *token; - -// token = (*alst)->content; - if (lexer->str[lexer->pos] == '\n') - return (lexer_lex(&(*alst)->next, lexer)); - return (lexer_comment(alst, lexer)); -} diff --git a/42sh/src/lexer/lexer_dquote.c b/42sh/src/lexer/lexer_dquote.c index 3c241889..b158a14d 100644 --- a/42sh/src/lexer/lexer_dquote.c +++ b/42sh/src/lexer/lexer_dquote.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:58 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:52:24 by ariard ### ########.fr */ +/* Updated: 2017/03/05 17:09:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_end.c b/42sh/src/lexer/lexer_end.c index 2ec70dd2..dcc162c8 100644 --- a/42sh/src/lexer/lexer_end.c +++ b/42sh/src/lexer/lexer_end.c @@ -1,13 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_end.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/05 16:58:24 by jhalford #+# #+# */ +/* Updated: 2017/03/05 17:29:17 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "lexer.h" int lexer_end(t_list **alst, t_lexer *lexer) { t_token *token; - if ((*alst && (lexer->state == QUOTE - || lexer->state == DQUOTE - || lexer->state == BQUOTE)) - || get_lexer_stack(*lexer) == DLESS) + if ((*alst && (lexer->state == QUOTE || lexer->state == DQUOTE + || lexer->state == BQUOTE)) || get_lexer_stack(*lexer) == DLESS) { ft_strappend(&lexer->str, (char[]){'\n', 0}); lexer->pos++; diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index c5900571..06c72698 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:28:15 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 17:30:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,6 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_backslash, &lexer_curly_braces, &lexer_assignement_word, - &lexer_comment, &lexer_end, }; @@ -51,7 +50,10 @@ int lexer_lex(t_list **alst, t_lexer *lexer) { t_token *token; - if (lexer->str[lexer->pos] == 0) + if (lexer->str[lexer->pos] == 0 + || (lexer->str[lexer->pos] == '#' + && lexer->state != QUOTE + && lexer->state != DQUOTE)) return (lexer_end(alst, lexer)); if (!*alst) { diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 6e259f08..2b03c6ae 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:28:38 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 17:09:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 25a8e2f65ea31c98041affdda8addb26700cda58 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 18:15:09 +0100 Subject: [PATCH 150/206] getoutput temporary fix --- 42sh/src/exec/launch_process.c | 7 ++++--- 42sh/src/exec/process_setexec.c | 2 +- 42sh/src/glob/command_getoutput.c | 4 ++-- 42sh/src/main/shell_get_opts.c | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 6aa02d84..8dd68e79 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:32:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:08:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,11 +45,12 @@ int launch_process(t_process *p) } process_setgroup(p, 0); process_setsig(); - DG("gonna redirect"); if (process_redirect(p)) exit (1); + if (p->attributes & PROCESS_BUILTIN) + exit((*p->execf)(p->path, p->av, data_singleton()->env)); (*p->execf)(p->path, p->av, data_singleton()->env); - ft_dprintf(2, "{red}%s: internal excve error{eoc}\n", SHELL_NAME); + ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); } else if (pid > 0) { diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 4f74a7be..89be21a8 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:32:15 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:09:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/glob/command_getoutput.c b/42sh/src/glob/command_getoutput.c index 30cbc11f..4949cd86 100644 --- a/42sh/src/glob/command_getoutput.c +++ b/42sh/src/glob/command_getoutput.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 14:01:59 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:45:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:07:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ char *command_getoutput(char *command) { - return (command); + return (ft_strdup(command)); /* int fds[2]; */ /* t_btree *ast; */ /* t_astnode item; */ diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 2b03c6ae..0eee3eb4 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:09:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 17:45:37 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From cba548d0ae307186d495d963a4bb6245b8dedefa Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sun, 5 Mar 2017 18:17:51 +0100 Subject: [PATCH 151/206] redir io number seems good --- 42sh/Makefile | 1 + 42sh/includes/parser.h | 10 +++----- 42sh/src/exec/ast_free.c | 4 ++-- 42sh/src/exec/redir_free.c | 6 ++--- 42sh/src/exec/redirect_dgreat.c | 4 ++-- 42sh/src/exec/redirect_dless.c | 2 +- 42sh/src/exec/redirect_great.c | 4 ++-- 42sh/src/exec/redirect_greatand.c | 7 +++++- 42sh/src/exec/redirect_less.c | 6 ++--- 42sh/src/exec/redirect_lessand.c | 7 +++++- 42sh/src/lexer/lexer_number.c | 3 +-- 42sh/src/parser/add_case.c | 2 +- 42sh/src/parser/add_number.c | 40 +++++++++++++++++++++++++++++++ 42sh/src/parser/add_redir.c | 34 +++++++++----------------- 14 files changed, 81 insertions(+), 49 deletions(-) create mode 100644 42sh/src/parser/add_number.c diff --git a/42sh/Makefile b/42sh/Makefile index e0bfe3a8..34a6b874 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -239,6 +239,7 @@ parser/add_redir.c\ parser/add_sep.c\ parser/add_subshell.c\ parser/add_var.c\ +parser/add_number.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index d654f75b..a6fbd771 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -125,6 +125,7 @@ int add_one_func(t_btree **ast, t_list **lst); int add_pipe(t_btree **ast, t_list **lst); int add_var(t_btree **ast, t_list **lst); int add_null(t_btree **ast, t_list **lst); +int add_ionumbr(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); int isloop_condition(t_btree **ast, t_list **lst); @@ -141,6 +142,7 @@ int isdir_sep(t_btree **ast, t_list **list); int isdir_word(t_btree **ast, t_list **list); int isvar(t_btree **ast, t_list **list); int isnull(t_btree **ast, t_list **list); +int isionumber(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); @@ -154,17 +156,11 @@ struct s_distrostree extern t_distrostree g_distrostree[]; -union u_word -{ - char *word; - int fd; -}; - struct s_redir { t_flag type; int n; - t_word word; + char *word; int close; }; diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 93baaec6..4975673e 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:02:27 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:05:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ void read_redir(void *data) t_redir *redir; redir = data; - DG("file : [%s]", redir->word.word); + DG("file : [%s]", redir->word); } void ast_free(void *data, size_t content_size) diff --git a/42sh/src/exec/redir_free.c b/42sh/src/exec/redir_free.c index 41ed42d2..5befbe63 100644 --- a/42sh/src/exec/redir_free.c +++ b/42sh/src/exec/redir_free.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 18:12:57 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:58:13 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:06:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,11 +20,9 @@ void redir_free(void *data, size_t content_size) redir = data; if (redir->type == TK_GREAT || redir->type == TK_LESS || redir->type == TK_DGREAT) { - /* DG("word.word: %s", redir->word.word); */ - ft_strdel(&redir->word.word); + ft_strdel(&redir->word); } /* else */ - /* redir->word.fd = 0; */ /* redir->type = 0; */ /* redir->n = 0; */ /* redir->close = 1; */ diff --git a/42sh/src/exec/redirect_dgreat.c b/42sh/src/exec/redirect_dgreat.c index 62e01058..f890172b 100644 --- a/42sh/src/exec/redirect_dgreat.c +++ b/42sh/src/exec/redirect_dgreat.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:07:37 by jhalford #+# #+# */ -/* Updated: 2017/02/06 22:27:10 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:10:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int redirect_dgreat(t_redir *redir) int fdnew; fdnew = redir->n; - if ((fdold = open(redir->word.word, + if ((fdold = open(redir->word, O_WRONLY | O_CREAT | O_APPEND, 0644)) < 0) { DG("open errno=%i", errno); diff --git a/42sh/src/exec/redirect_dless.c b/42sh/src/exec/redirect_dless.c index 36f4a25a..0244098d 100644 --- a/42sh/src/exec/redirect_dless.c +++ b/42sh/src/exec/redirect_dless.c @@ -17,7 +17,7 @@ int redirect_dless(t_redir *redir) char *str; pipe(fds); - str = redir->word.word; + str = redir->word; write(fds[PIPE_WRITE], str, ft_strlen(str)); close(fds[PIPE_WRITE]); dup2(fds[PIPE_READ], 0); diff --git a/42sh/src/exec/redirect_great.c b/42sh/src/exec/redirect_great.c index bd6e170a..4ec227d8 100644 --- a/42sh/src/exec/redirect_great.c +++ b/42sh/src/exec/redirect_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:03:53 by jhalford #+# #+# */ -/* Updated: 2017/02/06 22:42:05 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:07:25 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int redirect_great(t_redir* redir) int fdnew; fdnew = redir->n; - if ((fdold = open(redir->word.word, + if ((fdold = open(redir->word, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { DG("open errno=%i", errno); diff --git a/42sh/src/exec/redirect_greatand.c b/42sh/src/exec/redirect_greatand.c index 70658424..34803f72 100644 --- a/42sh/src/exec/redirect_greatand.c +++ b/42sh/src/exec/redirect_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:12:31 by jhalford #+# #+# */ -/* Updated: 2017/02/07 17:54:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:12:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,11 @@ int redirect_greatand(t_redir *redir) int fdold; int fdnew; + (void)redir; + (void)fdold; + (void)fdnew; DG("redir greatand"); + /* if (redir->close) { close(redir->n); @@ -33,5 +37,6 @@ int redirect_greatand(t_redir *redir) dup2_close(fdold, fdnew); else return (bad_fd(fdold)); + */ return (0); } diff --git a/42sh/src/exec/redirect_less.c b/42sh/src/exec/redirect_less.c index 8619db29..7942ce1a 100644 --- a/42sh/src/exec/redirect_less.c +++ b/42sh/src/exec/redirect_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:09:53 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:42:53 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:11:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,10 +18,10 @@ int redirect_less(t_redir *redir) int fdnew; fdnew = redir->n; - if ((fdold = open(redir->word.word, O_RDONLY)) < 0) + if ((fdold = open(redir->word, O_RDONLY)) < 0) { ft_dprintf(2, "{red}%s: no such file or directory: %s{eoc}\n", - SHELL_NAME, redir->word.word); + SHELL_NAME, redir->word); exit (1); } dup2(fdold, fdnew); diff --git a/42sh/src/exec/redirect_lessand.c b/42sh/src/exec/redirect_lessand.c index 15da4123..0442941d 100644 --- a/42sh/src/exec/redirect_lessand.c +++ b/42sh/src/exec/redirect_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:11:18 by jhalford #+# #+# */ -/* Updated: 2017/02/07 17:54:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:13:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,10 @@ int redirect_lessand(t_redir *redir) int fdold; int fdnew; + (void)redir; + (void)fdold; + (void)fdnew; + /* if (redir->close) { close(redir->n); @@ -35,5 +39,6 @@ int redirect_lessand(t_redir *redir) } else return (bad_fd(fdold)); + */ return (0); } diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 172700d5..b7eb03b4 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,8 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:21:51 by ariard ### ########.fr */ ->>>>>>> origin/pda_execution +/* Updated: 2017/03/05 18:03:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 6b4661ed..74ab538e 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/05 16:47:15 by ariard ### ########.fr */ +/* Updated: 2017/03/05 17:30:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_number.c b/42sh/src/parser/add_number.c new file mode 100644 index 00000000..84ffe8ca --- /dev/null +++ b/42sh/src/parser/add_number.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* add_number.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/05 17:28:31 by ariard #+# #+# */ +/* Updated: 2017/03/05 18:15:40 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "parser.h" + +int isionumber(t_btree **ast, t_list **lst) +{ + t_token *token; + + (void)ast; + token = (*lst)->content; + if (token->type == TK_IO_NUMBER) + return (1); + return (0); +} + +int add_ionumber(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + t_redir redir; + + if (!*ast) + gen_node(ast); + token = (*lst)->content; + node = (*ast)->item; + node->type = token->type; + redir.n = ft_atoi(token->data); + ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); + return (0); +} diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 10f66350..46d89b71 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/05 17:22:24 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:14:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,26 +14,14 @@ int isdir_sep(t_btree **ast, t_list **list) { - t_astnode *node; t_token *token; + (void)ast; token = (*list)->content; - if (*ast) - { - node = (*ast)->item; - if (node->type == CMD - && (token->type == TK_LESS || token->type == TK_GREAT - || token->type == TK_GREATAND || token->type == TK_LESSAND - || token->type == TK_DLESS || token->type == TK_DGREAT)) - return (1); - } - if (!*ast) - { - if (token->type == TK_LESS || token->type == TK_GREAT - || token->type == TK_GREATAND || token->type == TK_LESSAND - || token->type == TK_DLESS || token->type == TK_DGREAT) - return (1); - } + if (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || token->type == TK_DGREAT) + return (1); return (0); } @@ -68,11 +56,9 @@ int add_redir_word(t_btree **ast, t_list **lst) DG("add file"); redir = (ft_lstlast(node->data.cmd.redir))->content; if (redir->type == TK_DLESS) - redir->word.word = NULL; - else if (ft_stris((char *)token->data, &ft_isdigit)) - redir->word.fd = ft_atoi(token->data); + redir->word = NULL; else - redir->word.word = ft_strdup(token->data); + redir->word = ft_strdup(token->data); } return (0); } @@ -88,10 +74,12 @@ int add_redir_type(t_btree **ast, t_list **lst) token = (*lst)->content; node = (*ast)->item; if (!(node->type == TK_IO_NUMBER)) + { redir.n = (token->type == TK_LESS || token->type == TK_DLESS || token->type == TK_LESSAND) ? STDIN : STDOUT; + ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); + } node->type = REDIR; redir.type = token->type; - ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); return (0); } From 08f437a5738a913063f0aa80b3adfaf0e6abb282 Mon Sep 17 00:00:00 2001 From: william Date: Sun, 5 Mar 2017 18:42:00 +0100 Subject: [PATCH 152/206] scission apres les TOKEN_GREAT / LESS / GREATAND / LESSAND --- 42sh/src/lexer/lexer_great.c | 11 ++++------- 42sh/src/lexer/lexer_greatand.c | 25 ++++++++++++++----------- 42sh/src/lexer/lexer_less.c | 11 ++++------- 42sh/src/lexer/lexer_lessand.c | 11 +++++++---- 42sh/src/lexer/lexer_lex.c | 4 +++- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 8bbb462b..7e43e814 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:12:58 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:20:02 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,10 +36,7 @@ int lexer_great(t_list **alst, t_lexer *lexer) lexer->state = DEFAULT; return (lexer_lex(&(*alst)->next, lexer)); } - else - { - token->type = TK_GREAT; - lexer->state = DEFAULT; - return (lexer_lex(&(*alst)->next, lexer)); - } + token->type = TK_GREAT; + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c index af86cb7f..4f802455 100644 --- a/42sh/src/lexer/lexer_greatand.c +++ b/42sh/src/lexer/lexer_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:58 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:11:03 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:23:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,19 +18,22 @@ int lexer_greatand(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = TK_GREATAND; - if (ft_isdigit(lexer->str[lexer->pos])) +/* if (ft_isdigit(lexer->str[lexer->pos])) { - token_append(token, lexer, 0, 0); - lexer->pos++; - return (lexer_greatand(alst, lexer)); - } - else if (lexer->str[lexer->pos] == '-') - { - token_append(token, lexer, 0, 0); - lexer->pos++; +// token_append(token, lexer, 0, 0); +// lexer->pos++; +// DG(); lexer->state = DEFAULT; return (lexer_lex(&(*alst)->next, lexer)); } + else if (lexer->str[lexer->pos] == '-') + { +// token_append(token, lexer, 0, 0); +// lexer->pos++; + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); + }*/ lexer->state = DEFAULT; - return (lexer_lex(alst, lexer)); + return (lexer_lex(&(*alst)->next, lexer)); + //return (lexer_lex(alst, lexer)); } diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 0aa0174c..92d6bf45 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:11:17 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:19:48 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,10 +37,7 @@ int lexer_less(t_list **alst, t_lexer *lexer) ft_lsteadd(&lexer->heredoc_stack, ft_lstnew(alst, sizeof(alst))); return (lexer_lex(&(*alst)->next, lexer)); } - else - { - token->type = TK_LESS; - lexer->state = DEFAULT; - return (lexer_lex(&(*alst)->next, lexer)); - } + token->type = TK_LESS; + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/lexer/lexer_lessand.c b/42sh/src/lexer/lexer_lessand.c index d0e79268..1e5cfb20 100644 --- a/42sh/src/lexer/lexer_lessand.c +++ b/42sh/src/lexer/lexer_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:51 by jhalford #+# #+# */ -/* Updated: 2017/02/25 20:11:10 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:05:39 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,11 +18,14 @@ int lexer_lessand(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = TK_LESSAND; - if (ft_isdigit(lexer->str[lexer->pos])) + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); +/* if (ft_isdigit(lexer->str[lexer->pos])) { token_append(token, lexer, 0, 0); lexer->pos++; - return (lexer_lessand(alst, lexer)); + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); } else if (lexer->str[lexer->pos] == '-') { @@ -32,5 +35,5 @@ int lexer_lessand(t_list **alst, t_lexer *lexer) return (lexer_lex(&(*alst)->next, lexer)); } lexer->state = DEFAULT; - return (lexer_lex(alst, lexer)); + return (lexer_lex(alst, lexer));*/ } diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index c5900571..791d9ab9 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:28:15 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 18:32:09 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,6 +51,8 @@ int lexer_lex(t_list **alst, t_lexer *lexer) { t_token *token; + ft_putnbr(__LINE__); + ft_putendl(__FILE__); if (lexer->str[lexer->pos] == 0) return (lexer_end(alst, lexer)); if (!*alst) From 314daa62a636740fdbd845c0e0f9d4fd2a2bbcf7 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Sun, 5 Mar 2017 19:19:45 +0100 Subject: [PATCH 153/206] clean subshell --- 42sh/src/parser/add_number.c | 2 +- 42sh/src/parser/error_syntax.c | 4 +++- 42sh/src/parser/eval_sym.c | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/42sh/src/parser/add_number.c b/42sh/src/parser/add_number.c index 84ffe8ca..f880f54c 100644 --- a/42sh/src/parser/add_number.c +++ b/42sh/src/parser/add_number.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 17:28:31 by ariard #+# #+# */ -/* Updated: 2017/03/05 18:15:40 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:19:26 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index fd27abe1..408d3afd 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/03/04 16:50:44 by ariard ### ########.fr */ +/* Updated: 2017/03/05 18:23:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,6 +45,8 @@ t_errormatch g_errormatch[] = {TK_FOR, "for"}, {TK_LBRACE, "{"}, {TK_RBRACE, "}"}, + {TK_PAREN_OPEN, "("}, + {TK_PAREN_CLOSE, ")"}, {TK_BANG, "!"}, {TK_IN, "in"}, {0, NULL}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 6a5f0724..1b666def 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -472,7 +472,6 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE}, {TK_PAREN_CLOSE, CASE_LIST_NS}, {TK_PAREN_CLOSE, PROGRAM}, - {TK_PAREN_CLOSE, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, TK_LBRACE}, {TK_PAREN_CLOSE, PATTERN_CASE}, {TK_PAREN_CLOSE, PATTERN}, From 40aebb29b26bddcaa063ee7bab9b206b0e4aab83 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 5 Mar 2017 19:48:56 +0100 Subject: [PATCH 154/206] redirect greatand / lessand execution done (parsing not functional yet) --- 42sh/includes/parser.h | 2 +- 42sh/src/exec/fd_is_valid.c | 2 +- 42sh/src/exec/process_redirect.c | 2 +- 42sh/src/exec/redirect_great.c | 2 +- 42sh/src/exec/redirect_greatand.c | 25 ++++++++++++------------- 42sh/src/exec/redirect_lessand.c | 29 +++++++++++++---------------- 42sh/src/lexer/lexer_lex.c | 2 +- 7 files changed, 30 insertions(+), 34 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index a6fbd771..bd2af6e5 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -161,7 +161,7 @@ struct s_redir t_flag type; int n; char *word; - int close; + /* int close; */ }; struct s_cmd diff --git a/42sh/src/exec/fd_is_valid.c b/42sh/src/exec/fd_is_valid.c index bcb6cdda..d89e0f49 100644 --- a/42sh/src/exec/fd_is_valid.c +++ b/42sh/src/exec/fd_is_valid.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 13:46:40 by jhalford #+# #+# */ -/* Updated: 2017/02/06 22:54:19 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 19:44:16 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index 39b807b6..35413937 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:59:06 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 19:40:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/redirect_great.c b/42sh/src/exec/redirect_great.c index 4ec227d8..8b9e2a9b 100644 --- a/42sh/src/exec/redirect_great.c +++ b/42sh/src/exec/redirect_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:03:53 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:07:25 by ariard ### ########.fr */ +/* Updated: 2017/03/05 19:35:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/redirect_greatand.c b/42sh/src/exec/redirect_greatand.c index 34803f72..c210c647 100644 --- a/42sh/src/exec/redirect_greatand.c +++ b/42sh/src/exec/redirect_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:12:31 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:12:26 by ariard ### ########.fr */ +/* Updated: 2017/03/05 19:44:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,26 +17,25 @@ int redirect_greatand(t_redir *redir) int fdold; int fdnew; - (void)redir; - (void)fdold; - (void)fdnew; - DG("redir greatand"); - /* - if (redir->close) + if (ft_strcmp(redir->word, "-")) { close(redir->n); return (0); } - if (redir->word.fd == redir->n) - return (0); - if (redir->word.fd > 9) - return (bad_fd(redir->word.fd)); - fdold = redir->word.fd; + if (!ft_stris(redir->word, ft_isdigit)) + { + ft_dprintf(2, "%s: %s: can only be digits", SHELL_NAME, redir->word); + return (1); + } + fdold = ft_atoi(redir->word); fdnew = redir->n; + if (fdold == fdnew) + return (0); + if (fdold > 9) + return (bad_fd(fdold)); if (fd_is_valid(fdold)) dup2_close(fdold, fdnew); else return (bad_fd(fdold)); - */ return (0); } diff --git a/42sh/src/exec/redirect_lessand.c b/42sh/src/exec/redirect_lessand.c index 0442941d..0c3b5982 100644 --- a/42sh/src/exec/redirect_lessand.c +++ b/42sh/src/exec/redirect_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:11:18 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:13:11 by ariard ### ########.fr */ +/* Updated: 2017/03/05 19:43:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,28 +17,25 @@ int redirect_lessand(t_redir *redir) int fdold; int fdnew; - (void)redir; - (void)fdold; - (void)fdnew; - /* - if (redir->close) + if (ft_strcmp(redir->word, "-")) { close(redir->n); return (0); } - if (redir->word.fd == redir->n) - return (0); - if (redir->word.fd > 9) - return (bad_fd(redir->word.fd)); - fdold = redir->word.fd; - fdnew = redir->n; - if (fd_is_valid(fdold)) + if (!ft_stris(redir->word, ft_isdigit)) { - dup2(fdold, fdnew); - close(fdold); + ft_dprintf(2, "%s: %s: can only be digits", SHELL_NAME, redir->word); + return (1); } + fdold = ft_atoi(redir->word); + fdnew = redir->n; + if (fdold == fdnew) + return (0); + if (fdold > 9) + return (bad_fd(fdold)); + if (fd_is_valid(fdold)) + dup2_close(fdold, fdnew); else return (bad_fd(fdold)); - */ return (0); } diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index bd79af4d..44a5299f 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 19:30:00 by jhalford ### ########.fr */ +/* Updated: 2017/03/05 19:31:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 4849c899e4f6a238b259c9fccf8a25fbb25b3e17 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Mon, 6 Mar 2017 01:10:54 +0100 Subject: [PATCH 155/206] execution for without expansion --- 42sh/sample/for/for.sh | 6 +++++- 42sh/src/exec/exec_for.c | 9 +++++---- 42sh/src/exec/ft_exec.c | 1 + 42sh/src/lexer/get_state_global.c | 1 - 42sh/src/parser/add_number.c | 15 ++++++++++++--- 42sh/src/parser/add_redir.c | 20 ++++++++++++++++---- 42sh/src/parser/aggregate_sym.c | 8 ++++---- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 6 +++--- 10 files changed, 48 insertions(+), 22 deletions(-) diff --git a/42sh/sample/for/for.sh b/42sh/sample/for/for.sh index 9d942c9e..d381c710 100644 --- a/42sh/sample/for/for.sh +++ b/42sh/sample/for/for.sh @@ -1,4 +1,8 @@ for i in hello bonjour salut comment do - ls + while cat efezf + do + echo INSIDE + done + ls | cat done diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index 270e12e2..91606fe6 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -22,11 +22,12 @@ int exec_for(t_btree **ast) node = (*ast)->item; temp = node->data.cmd.wordlist; var = temp->content; - builtin_setenv("setenv", (char*[]){var, 0}, data_singleton()->local_var); + temp = temp->next; +// declare error bad identifier while (temp) - { - //process expansion av = token_to_char(temp->content) - builtin_setenv("setenv", (char*[]){var, 0}, data_singleton()->local_var); + { + builtin_setenv("setenv", (char*[]){var, temp->content, 0}, + data_singleton()->local_var); ft_exec(&(*ast)->right); temp = temp->next; } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index ae3234c0..8f30eb66 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -25,6 +25,7 @@ t_execmap g_execmap[] = {TK_ELIF, &exec_elif}, {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, + {TK_FOR, &exec_for}, /* {TK_SUBSHELL, &exec_}, */ {CMD, &exec_cmd}, {0, 0}, diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index d6af9653..b49264f9 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -17,7 +17,6 @@ t_lexstate get_state_global(t_lexer *lexer) char c; c = lexer->str[lexer->pos]; - DG("check, c=%c", lexer->str[lexer->pos]); if (ft_is_delim(c)) return (DELIM); else if (c == '#') diff --git a/42sh/src/parser/add_number.c b/42sh/src/parser/add_number.c index 84ffe8ca..f2c6d3e0 100644 --- a/42sh/src/parser/add_number.c +++ b/42sh/src/parser/add_number.c @@ -15,11 +15,20 @@ int isionumber(t_btree **ast, t_list **lst) { t_token *token; + t_astnode *node; - (void)ast; token = (*lst)->content; - if (token->type == TK_IO_NUMBER) - return (1); + if (*ast) + { + node = (*ast)->item; + if (node->type == CMD && token->type == TK_IO_NUMBER) + return (1); + } + if (!*ast) + { + if (token->type == TK_IO_NUMBER) + return (1); + } return (0); } diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 46d89b71..78cce0f4 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -15,13 +15,25 @@ int isdir_sep(t_btree **ast, t_list **list) { t_token *token; + t_astnode *node; - (void)ast; token = (*list)->content; - if (token->type == TK_LESS || token->type == TK_GREAT - || token->type == TK_GREATAND || token->type == TK_LESSAND - || token->type == TK_DLESS || token->type == TK_DGREAT) + if (*ast) + { + node = (*ast)->item; + if ((node->type == CMD || node->type == TK_IO_NUMBER) && + (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || token->type == TK_DGREAT)) + return (1); + } + if (!*ast) + { + if (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || token->type == TK_DGREAT) return (1); + } return (0); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index fb79eb04..a0fdff7a 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -315,21 +315,21 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) i = 0; head = (*stack)->content; -// DG("aggregate head %s && sym %s", -// read_state(*head), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(*head), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(*head, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); head = (*stack)->content; -// DG("stack after pop: %s", read_state(*head)); + DG("stack after pop: %s", read_state(*head)); } if (eval_sym(stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 6a5f0724..9acbc37a 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -1027,7 +1027,7 @@ int eval_sym(t_list **stack, t_sym new_sym) int i; head = (*stack)->content; -// DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index b959f9c5..cd00ce9a 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -37,7 +37,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) while (*token) { produce_sym(&parser->stack, parser->new_sym, token); -// DG("new sym %s", read_state(*parser->new_sym)); + DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(&parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c2302123..bea5760b 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -107,8 +107,8 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) token = (*lst)->content; head = (*stack)->content; -// DG("produce stack : %s && token : %s", read_state(*head), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(*head), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -116,7 +116,7 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && *head == g_prodmatch[i].stack) { -// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; From 2b5b23e98146277ec67c2cc17e701fd7ea3a0b1c Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Mon, 6 Mar 2017 02:11:03 +0100 Subject: [PATCH 156/206] execution case without extension --- 42sh/sample/case/case.sh | 5 +++-- 42sh/src/exec/exec_case.c | 18 ++++++++---------- 42sh/src/exec/exec_case_branch.c | 24 +++++++++++++----------- 42sh/src/exec/ft_exec.c | 2 ++ 42sh/src/main/ft_putast.c | 2 ++ 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_case.c | 1 + 42sh/src/parser/add_cmd.c | 6 ++++-- 42sh/src/parser/add_condition.c | 1 - 42sh/src/parser/aggregate_sym.c | 9 +++++---- 42sh/src/parser/eval_sym.c | 5 +++-- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/produce_sym.c | 6 +++--- 13 files changed, 46 insertions(+), 37 deletions(-) diff --git a/42sh/sample/case/case.sh b/42sh/sample/case/case.sh index 0f288357..f41470f9 100644 --- a/42sh/sample/case/case.sh +++ b/42sh/sample/case/case.sh @@ -1,4 +1,5 @@ -case $rental in +case van in ( "bus" ) echo Hello world ;; - ( "van" ) echo Comment va ? ;; + ( "velo" ) echo Comment va ;; + ( "van" ) ls ;; esac diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index b200ab15..b167b905 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -14,19 +14,17 @@ int exec_case(t_btree **ast) { -// t_astnode *node; - /* char **av; */ - t_exec *exec; + t_astnode *node; + char *av; + t_exec *exec; (void)ast; - return (0); exec = &data_singleton()->exec; - /* data_singleton()->exec.process.case_branch = 0; */ - exec->attrs |= EXEC_CASE_BRANCH; + exec->attrs &= ~EXEC_CASE_BRANCH; -// node = (*ast)->item; - /* av = token_to_argv(node); */ - /* data_singleton()->exec.process.case_pattern = av[0]; */ - /* exec->case_pattern = av[0]; */ + node = (*ast)->item; + av = node->data.str; +// av = token_to_argv(node); + exec->case_pattern = av; return (0); } diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index 32652b44..ae8308c2 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -14,22 +14,24 @@ int exec_case_branch(t_btree **ast) { -// t_astnode *node; - /* char **av; */ + t_astnode *node; + char *av; t_exec *exec; (void)ast; - return (0); exec = &data_singleton()->exec; - /* if (data_singleton()->exec.process.case_branch == 1) */ + + DG("case"); if (EXEC_IS_CASE_BRANCH(exec->attrs)) return (0); -// node = (*ast)->item; - /* av = token_to_argv(node); */ - /* if (ft_strcmp(av[0], data_singleton()->exec.process.case_pattern) == 1) */ - /* { */ - /* data_singleton()->exec.process.case_branch = 1; */ - /* ft_exec(&(*ast)->right); */ - /* } */ + DG("case2"); + node = (*ast)->item; + av = node->data.str; +// av = token_to_argv(node); + if (ft_strcmp(av, exec->case_pattern) == 0) + { + exec->attrs |= EXEC_CASE_BRANCH; + ft_exec(&(*ast)->right); + } return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 8f30eb66..3cd63335 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -26,6 +26,8 @@ t_execmap g_execmap[] = {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_until}, {TK_FOR, &exec_for}, + {TK_CASE, &exec_case}, + {TK_PAREN_OPEN, &exec_case_branch}, /* {TK_SUBSHELL, &exec_}, */ {CMD, &exec_cmd}, {0, 0}, diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 25fc6457..955f3da4 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -17,6 +17,8 @@ char *ft_putast(void *nodein) t_astnode *node; node = nodein; + if (node->type == TK_DSEMI) + return ("TK_DSEMI"); if (node->type == WORDLIST) return ("WORDLIST"); if (node->type == CMD) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 47fed25d..875a3cf7 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -62,7 +62,7 @@ int handle_instruction(int fd) error_syntax(&token, &parser, &ast); } DG("Before execution:"); - btree_print(STDBUG, ast, &ft_putast); +// btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); instruction_free(&token, &parser, &ast); diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 74ab538e..077688d1 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -34,6 +34,7 @@ int iscase_pattern(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; + DG(" add pattern"); node = NULL; token = (*lst)->content; if (*ast) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 4b42a3dc..f0bda953 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -39,7 +39,8 @@ int superflous_token(t_btree **ast, t_list **lst) if (*lst) { token = (*lst)->content; - if (token->type == TK_IN || token->type == TK_PAREN_OPEN) + if (token->type == TK_IN || token->type == TK_PAREN_CLOSE + || token->type == TK_DSEMI) return (1); } return (0); @@ -54,7 +55,7 @@ static int no_del_token(t_btree **ast, t_list **lst) if (*ast) { node = (*ast)->item; - if (node->type != TK_DO && node->type != TK_THEN && node->type != TK_PAREN_CLOSE + if (node->type != TK_DO && node->type != TK_THEN && node->type != CMD && node->type != REDIR) return (1); } @@ -91,6 +92,7 @@ int add_cmd(t_btree **ast, t_list **lst) node->type = CMD; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { + DG("add cmd default"); if ((my_tab = (char **)malloc(sizeof(char *) * 4))) { my_tab[0] = ft_strdup(token->data); diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 6dd90ac6..44bf623b 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -19,7 +19,6 @@ int iscondition(t_btree **ast, t_list **lst) node = NULL; // token = (*lst)->content; - DG("iscondition"); if (*ast) { node = (*ast)->item; diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index a0fdff7a..93cfc4fe 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -18,6 +18,7 @@ t_aggrematch g_aggrematch[] = {TK_WORD, TK_IN, FOR_WORDLIST, TK_IN}, {TK_WORD, FOR_WORDLIST, FOR_WORDLIST, FOR_WORDLIST}, {TK_SEMI, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, + {TK_DSEMI, CMD_SUPERIOR, PIPE_SEQUENCE, CMD_SUPERIOR}, {TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, @@ -315,21 +316,21 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) i = 0; head = (*stack)->content; - DG("aggregate head %s && sym %s", - read_state(*head), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(*head), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(*head, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); head = (*stack)->content; - DG("stack after pop: %s", read_state(*head)); +// DG("stack after pop: %s", read_state(*head)); } if (eval_sym(stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 9acbc37a..af346da6 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -50,6 +50,7 @@ t_stackmatch g_stackmatch[] = {TK_DSEMI, COMPLETE_COMMANDS}, {TK_DSEMI, COMPOUND_LIST}, {TK_DSEMI, CASE_LIST_NS}, + {TK_DSEMI, CMD_SUPERIOR}, {TK_DSEMI, PIPE_SEMI_SEQUENCE}, {TK_DSEMI, SEQUENCE}, // watch! @@ -853,7 +854,7 @@ t_stackmatch g_stackmatch[] = {COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, COMPOUND_LIST}, {COMPOUND_LIST, COMPLETE_CONDITION}, - {CLOSE_LIST, PATTERN_CASE}, + {CLOSE_LIST, PATTERN}, {CLOSE_LIST, FUNC_NAME}, {SUBSHELL, LINEBREAK}, {SUBSHELL, COMPLETE_COMMANDS}, @@ -1027,7 +1028,7 @@ int eval_sym(t_list **stack, t_sym new_sym) int i; head = (*stack)->content; - DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index cd00ce9a..59c0d7b6 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -52,7 +52,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else parser->state = UNDEFINED; build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); +// btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index bea5760b..c2302123 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -107,8 +107,8 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) token = (*lst)->content; head = (*stack)->content; - DG("produce stack : %s && token : %s", read_state(*head), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(*head), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -116,7 +116,7 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && *head == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; From e675eceb87aefb4d16fe8b016718444ac5a6a91f Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Mon, 6 Mar 2017 15:58:30 +0100 Subject: [PATCH 157/206] redirection ok, further test needed --- 42sh/fi | 16 ++++++++++++++++ 42sh/file | 31 +++++++++++++++---------------- 42sh/includes/parser.h | 4 ++-- 42sh/includes/types.h | 3 +-- 42sh/libft | 2 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/process_redirect.c | 5 ++++- 42sh/src/exec/redirect_great.c | 3 ++- 42sh/src/exec/redirect_less.c | 3 ++- 42sh/src/parser/add_case.c | 4 ++-- 42sh/src/parser/add_cmd.c | 3 ++- 42sh/src/parser/add_number.c | 3 ++- 42sh/src/parser/add_redir.c | 13 +++++++++++-- 42sh/src/parser/build_tree.c | 3 ++- 42sh/src/parser/ft_parse.c | 4 ++-- 42sh/yolo | 0 18 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 42sh/fi create mode 100644 42sh/yolo diff --git a/42sh/fi b/42sh/fi new file mode 100644 index 00000000..7caa40de --- /dev/null +++ b/42sh/fi @@ -0,0 +1,16 @@ +42sh +Makefile +STDBUG +TESTSHELL +donovan_segaults_06-02 +fi +file +includes +libft +objs +parser_init.c +pdf +sample +src +test_framework.sh +update_makefile.sh diff --git a/42sh/file b/42sh/file index 614d43df..9bda8fd6 100644 --- a/42sh/file +++ b/42sh/file @@ -1,16 +1,15 @@ -total 576 --rwxr-xr-x 1 ariard 2016_paris 249036 Mar 5 17:14 42sh --rw-r--r-- 1 ariard 2016_paris 8133 Mar 5 16:46 Makefile --rw-r--r-- 1 ariard 2016_paris 16999 Mar 5 17:15 STDBUG -drwxr-xr-x 7 ariard 2016_paris 238 Mar 4 14:53 TESTSHELL --rw-r--r-- 1 ariard 2016_paris 4396 Mar 4 14:53 donovan_segaults_06-02 --rw-r--r-- 1 ariard 2016_paris 0 Mar 5 17:15 file -drwxr-xr-x 16 ariard 2016_paris 544 Mar 5 16:46 includes -drwxr-xr-x 12 ariard 2016_paris 408 Mar 5 16:50 libft -drwxr-xr-x 13 ariard 2016_paris 442 Mar 5 16:50 objs --rw-r--r-- 1 ariard 2016_paris 0 Mar 4 14:53 parser_init.c -drwxr-xr-x 6 ariard 2016_paris 204 Mar 4 14:53 pdf -drwxr-xr-x 29 ariard 2016_paris 986 Mar 4 14:53 sample -drwxr-xr-x 14 ariard 2016_paris 476 Mar 4 14:53 src --rwxr-xr-x 1 ariard 2016_paris 890 Mar 4 14:53 test_framework.sh --rwxr-xr-x 1 ariard 2016_paris 690 Mar 4 14:53 update_makefile.sh +42sh +Makefile +STDBUG +TESTSHELL +donovan_segaults_06-02 +file +includes +libft +objs +parser_init.c +pdf +sample +src +test_framework.sh +update_makefile.sh diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index bd2af6e5..49eb2ddc 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -125,7 +125,7 @@ int add_one_func(t_btree **ast, t_list **lst); int add_pipe(t_btree **ast, t_list **lst); int add_var(t_btree **ast, t_list **lst); int add_null(t_btree **ast, t_list **lst); -int add_ionumbr(t_btree **ast, t_list **lst); +int add_ionumber(t_btree **ast, t_list **lst); int isloop(t_btree **ast, t_list **lst); int isloop_condition(t_btree **ast, t_list **lst); @@ -158,7 +158,7 @@ extern t_distrostree g_distrostree[]; struct s_redir { - t_flag type; + t_type type; int n; char *word; /* int close; */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index bdf68621..68f377fc 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/04 19:50:36 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:31:28 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,6 @@ typedef struct s_redir t_redir; typedef struct s_cmd t_cmd; typedef union u_astdata t_astdata; typedef union u_word t_word; -typedef long long t_type; typedef int t_condition; typedef struct s_job t_job; diff --git a/42sh/libft b/42sh/libft index 0270e365..318efc7c 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 0270e3651474c1b20bb0d6873f5c6188ccf43897 +Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index ac516c54..fdf22068 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:42:36 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 15:03:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 3cd63335..a56782fa 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/04 17:16:30 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:01:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 8dd68e79..fc41d265 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:08:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 15:04:17 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index 35413937..2bb7f19d 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/03/05 19:40:54 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 15:12:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,11 +33,14 @@ int process_redirect(t_process *p) while (redirs) { redir = redirs->content; + DG("redir type :%s", read_state(redir->type)); + DG("redir word : %s", redir->word); if (redir->n > 9) return (bad_fd(redir->n)); i = 0; while (g_redirmap[i].type) { + DG("process redirect"); if (g_redirmap[i].type == redir->type) { if ((g_redirmap[i].f)(redir)) diff --git a/42sh/src/exec/redirect_great.c b/42sh/src/exec/redirect_great.c index 8b9e2a9b..fee82964 100644 --- a/42sh/src/exec/redirect_great.c +++ b/42sh/src/exec/redirect_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:03:53 by jhalford #+# #+# */ -/* Updated: 2017/03/05 19:35:02 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 14:58:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ int redirect_great(t_redir* redir) int fdnew; fdnew = redir->n; + DG("redir great"); if ((fdold = open(redir->word, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { diff --git a/42sh/src/exec/redirect_less.c b/42sh/src/exec/redirect_less.c index 7942ce1a..c8df2f62 100644 --- a/42sh/src/exec/redirect_less.c +++ b/42sh/src/exec/redirect_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:09:53 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:11:13 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:05:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ int redirect_less(t_redir *redir) int fdnew; fdnew = redir->n; + DG("redirect less"); if ((fdold = open(redir->word, O_RDONLY)) < 0) { ft_dprintf(2, "{red}%s: no such file or directory: %s{eoc}\n", diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 077688d1..1a87f15f 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/05 17:30:19 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:11:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,7 +34,7 @@ int iscase_pattern(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; - DG(" add pattern"); +// DG(" add pattern"); node = NULL; token = (*lst)->content; if (*ast) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index f0bda953..8a1f255a 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/05 16:34:17 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:57:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,7 @@ t_distrostree g_distrostree[] = {&iscase, &add_case_cmd}, {&issubshell, &add_subshell_cmd}, {&isfunc, &add_func_cmd}, + {&isionumber, &add_ionumber}, {&isnull, &add_null}, }; diff --git a/42sh/src/parser/add_number.c b/42sh/src/parser/add_number.c index 908cb6d5..7ed5d7de 100644 --- a/42sh/src/parser/add_number.c +++ b/42sh/src/parser/add_number.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 17:28:31 by ariard #+# #+# */ -/* Updated: 2017/03/05 18:19:26 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:56:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,6 +38,7 @@ int add_ionumber(t_btree **ast, t_list **lst) t_token *token; t_redir redir; + DG("add io_number"); if (!*ast) gen_node(ast); token = (*lst)->content; diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 78cce0f4..ce91da7c 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/05 18:14:00 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:54:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -67,6 +67,8 @@ int add_redir_word(t_btree **ast, t_list **lst) { DG("add file"); redir = (ft_lstlast(node->data.cmd.redir))->content; + DG("now redir.type :%s", read_state(redir->type)); + DG("n is ? : %d", redir->n); if (redir->type == TK_DLESS) redir->word = NULL; else @@ -80,6 +82,7 @@ int add_redir_type(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; t_redir redir; + t_redir *temp; if (!*ast) gen_node(ast); @@ -87,11 +90,17 @@ int add_redir_type(t_btree **ast, t_list **lst) node = (*ast)->item; if (!(node->type == TK_IO_NUMBER)) { + DG("add redir"); redir.n = (token->type == TK_LESS || token->type == TK_DLESS || token->type == TK_LESSAND) ? STDIN : STDOUT; + redir.type = token->type; ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); } + else + { + temp = (ft_lstlast(node->data.cmd.redir))->content; + temp->type = token->type; + } node->type = REDIR; - redir.type = token->type; return (0); } diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 0ebefed7..ff3a467b 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:04:14 by ariard ### ########.fr */ +/* Updated: 2017/03/06 15:55:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ t_treematch g_treematch[] = {TK_LESS, &add_cmd}, {TK_DGREAT, &add_cmd}, {TK_DLESS, &add_cmd}, + {TK_IO_NUMBER, &add_cmd}, {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, {TK_AMP, &add_sep}, diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index 59c0d7b6..b959f9c5 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -37,7 +37,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) while (*token) { produce_sym(&parser->stack, parser->new_sym, token); - DG("new sym %s", read_state(*parser->new_sym)); +// DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(&parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); else @@ -52,7 +52,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else parser->state = UNDEFINED; build_tree(ast, token); -// btree_print(STDBUG, *ast, &ft_putast); + btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/yolo b/42sh/yolo new file mode 100644 index 00000000..e69de29b From d3821b9ac7606bb23274169181472e4a482d6b7a Mon Sep 17 00:00:00 2001 From: wescande Date: Mon, 6 Mar 2017 16:20:06 +0100 Subject: [PATCH 158/206] some correctif --- 42sh/Makefile | 2 +- 42sh/includes/exec.h | 21 +++++++++-------- 42sh/libft | 2 +- 42sh/src/exec/exec_while.c | 4 +++- 42sh/src/exec/launch_process.c | 14 ++++++------ 42sh/src/exec/mark_process_status.c | 10 ++++----- 42sh/src/exec/process_reset.c | 4 ++-- 42sh/src/exec/process_setexec.c | 10 ++++----- 42sh/src/exec/set_process.c | 13 +++++++++-- 42sh/src/job-control/job_is_completed.c | 4 ++-- 42sh/src/job-control/job_is_stopped.c | 4 ++-- 42sh/src/job-control/mark_job_as_running.c | 8 +++---- 42sh/src/job-control/process_format.c | 26 +++++++++++++--------- 42sh/src/main/main.c | 5 ++++- 14 files changed, 72 insertions(+), 55 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index 4b83d8f5..83025081 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -280,7 +280,7 @@ $(OBJ_DIR)%.o : $(SRC_DIR)%.c | $(OBJ_DIR) @$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB))))) @$(eval COLOR=$(shell echo $$(($(PERCENT)%35+196)))) @$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB))))) - @printf "\r\033[38;5;11m⌛ MAKE %10.10s : %2d%% \033[48;5;%dm%*s\033[0m%*s\033[48;5;255m \033[0m \033[38;5;11m %*s\033[0m\033[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) "$@" + @printf "\r\033[38;5;11m⌛ MAKE %10.10s : %2d%% \033[48;5;%dm%*s\033[0m%*s\033[48;5;255m \033[0m \033[38;5;11m %*.*s\033[0m\033[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) $(DELTA) "$@" @$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\ -I $(INC_DIR)\ -I $(LIBFT_INC) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 15db9b28..4afa61d6 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:19:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:33:24 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,13 +21,14 @@ # define PROCESS_SCRIPT (1 << 2) # define PROCESS_SUBSHELL (1 << 3) # define PROCESS_UNKNOWN (1 << 4) -# define PROCESS_COMPLETED (1 << 5) -# define PROCESS_SUSPENDED (1 << 6) -# define PROCESS_RUNNING (1 << 7) -# define PROCESS_CONTINUED (1 << 8) +# define PROCESS_CONTROL (1 << 5) +# define PROCESS_COMPLETED (1 << 6) +# define PROCESS_SUSPENDED (1 << 7) +# define PROCESS_RUNNING (1 << 8) +# define PROCESS_CONTINUED (1 << 9) -# define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4) -# define PROCESS_STATE_MASK (1 << 5 | 1 << 6 | 1 << 7 | 1 << 8) +# define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5) +# define PROCESS_STATE_MASK (1 << 6 | 1 << 7 | 1 << 8 | 1 << 9) # define IS_PIPESTART(p) ((p).fdin == STDIN) # define IS_PIPEEND(p) ((p).fdout == STDOUT) @@ -62,20 +63,18 @@ struct s_process int to_close; t_list *redirs; int status; - t_flag attributes; + t_flag attrs; }; struct s_exec { - /* char *aol_status; */ - /* int aol_search; */ t_job job; - /* t_process process; */ int fd_save[3]; t_flag attrs; int fdin; t_list *op_stack; char *case_pattern; + int control_count; }; struct s_execmap diff --git a/42sh/libft b/42sh/libft index 0270e365..6a2672a1 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 0270e3651474c1b20bb0d6873f5c6188ccf43897 +Subproject commit 6a2672a19268c6481525d9aaee5bd35722bbd75a diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 192913ca..e634687a 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/04 17:19:18 by ariard ### ########.fr */ +/* Updated: 2017/03/06 12:27:23 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,13 @@ int exec_while(t_btree **ast) DG("exec while condition"); ft_exec(&(*ast)->left); DG("ret :[%s]", ft_getenv(data_singleton()->env, "?")); + ++data_singleton()->exec.control_count; while (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0"))) { DG("in the while"); ft_exec(&(*ast)->right); ft_exec(&(*ast)->left); } + --data_singleton()->exec.control_count; return (0); } diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 8dd68e79..cfd4fc08 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:08:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:28:21 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,16 +19,16 @@ int launch_process(t_process *p) /* DG("gonna launch [%s]", p->av[0]); */ /* DG("fdin=[%i]", p->fdin); */ /* DG("fdout=[%i]", p->fdout); */ - if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) + if (p->attrs & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) { if (process_redirect(p)) return (1); set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); return (1); } - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes |= PROCESS_RUNNING; - if (p->attributes & (PROCESS_BINARY | PROCESS_SCRIPT) + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_RUNNING; + if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT) && access(p->path, X_OK) == -1) { ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); @@ -38,7 +38,7 @@ int launch_process(t_process *p) pid = fork(); if (pid == 0) { - if (p->attributes & PROCESS_UNKNOWN) + if (p->attrs & PROCESS_UNKNOWN) { ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); exit(127); @@ -47,7 +47,7 @@ int launch_process(t_process *p) process_setsig(); if (process_redirect(p)) exit (1); - if (p->attributes & PROCESS_BUILTIN) + if (p->attrs & PROCESS_BUILTIN) exit((*p->execf)(p->path, p->av, data_singleton()->env)); (*p->execf)(p->path, p->av, data_singleton()->env); ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); diff --git a/42sh/src/exec/mark_process_status.c b/42sh/src/exec/mark_process_status.c index 32679242..eeca4a86 100644 --- a/42sh/src/exec/mark_process_status.c +++ b/42sh/src/exec/mark_process_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:02:54 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:28:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,13 +26,13 @@ int mark_process_status(pid_t pid, int status) p->status = status; if (WIFSTOPPED(status)) { - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes |= PROCESS_SUSPENDED; + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_SUSPENDED; } else { - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes |= PROCESS_COMPLETED; + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_COMPLETED; if (WIFSIGNALED(status)) ft_printf("{mag}%d: Terminated by signal %d.\n{eoc}", (int)pid, WTERMSIG(status)); diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index 54dffa26..7ab34d1d 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:36:06 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:29:17 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,5 +23,5 @@ void process_reset(t_process *p) p->to_close = 0; p->redirs = NULL; p->status = -1; - p->attributes = 0; + p->attrs = 0; } diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 89be21a8..0971a463 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:09:31 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:26:01 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,22 +16,22 @@ int process_setexec(t_process *p) { p->path = NULL; if ((p->execf = is_builtin(p))) - p->attributes |= PROCESS_BUILTIN; + p->attrs |= PROCESS_BUILTIN; else if (ft_strchr(p->av[0], '/')) { p->execf = &execve; - p->attributes |= PROCESS_SCRIPT; + p->attrs |= PROCESS_SCRIPT; p->path = ft_strdup(p->av[0]); } else if (ft_hash(p)) { p->execf = &execve; - p->attributes |= PROCESS_BINARY; + p->attrs |= PROCESS_BINARY; } else { p->execf = NULL; - p->attributes |= PROCESS_UNKNOWN; + p->attrs |= PROCESS_UNKNOWN; return (1); } return (0); diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 88a39993..7ec05157 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:42:45 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:26:11 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,16 @@ int set_process(t_process *p, t_btree *ast) p->to_close = fds[PIPE_READ]; p->fdout = fds[PIPE_WRITE]; exec->fdin = fds[PIPE_READ]; - p->redirs = cmd->redir; + p->redirs = ft_lstmap(cmd->redir, ft_id); + t_list *tmp = p->redirs; + while (tmp) + { + t_redir *toto = tmp->content; + printf("IIIIIIIIIIIIIIIIIIIIIII%lld |%d| {%s}\n", toto->type, toto->n, toto->word); + tmp= tmp->next; + } process_setexec(p); + if (exec->control_count) + p->attrs |= PROCESS_CONTROL; return (0); } diff --git a/42sh/src/job-control/job_is_completed.c b/42sh/src/job-control/job_is_completed.c index 8c9a0f1c..9742515a 100644 --- a/42sh/src/job-control/job_is_completed.c +++ b/42sh/src/job-control/job_is_completed.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 15:10:20 by jhalford #+# #+# */ -/* Updated: 2017/01/31 13:52:36 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:30:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ int job_is_completed(int id) while (lst) { p = lst->content; - if (!(p->attributes & PROCESS_COMPLETED)) + if (!(p->attrs & PROCESS_COMPLETED)) return (0); lst = lst->next; } diff --git a/42sh/src/job-control/job_is_stopped.c b/42sh/src/job-control/job_is_stopped.c index e6b2c80a..b7c20a91 100644 --- a/42sh/src/job-control/job_is_stopped.c +++ b/42sh/src/job-control/job_is_stopped.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */ -/* Updated: 2017/01/11 17:54:33 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:31:00 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ int job_is_stopped(int id) while (lst) { p = lst->content; - if (!(p->attributes & (PROCESS_COMPLETED | PROCESS_SUSPENDED))) + if (!(p->attrs & (PROCESS_COMPLETED | PROCESS_SUSPENDED))) return (0); lst = lst->next; } diff --git a/42sh/src/job-control/mark_job_as_running.c b/42sh/src/job-control/mark_job_as_running.c index 86e5cf01..3d5f3cfb 100644 --- a/42sh/src/job-control/mark_job_as_running.c +++ b/42sh/src/job-control/mark_job_as_running.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/08 14:40:40 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:47:28 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:30:50 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,10 +21,10 @@ void mark_job_as_running(t_job *j) while (plist) { p = plist->content; - if (p->attributes & PROCESS_SUSPENDED) + if (p->attrs & PROCESS_SUSPENDED) { - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes |= PROCESS_CONTINUED; + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_CONTINUED; } plist = plist->next; } diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index 25fe10cb..9e0f9d62 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:10:56 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 12:32:05 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ static void process_format_state(t_process *p) { int state; - state = p->attributes & PROCESS_STATE_MASK; + state = p->attrs & PROCESS_STATE_MASK; if (state == PROCESS_RUNNING) ft_putstr("running "); else if (state == PROCESS_SUSPENDED) @@ -24,8 +24,8 @@ static void process_format_state(t_process *p) else if (state == PROCESS_CONTINUED) { ft_putstr("continued"); - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes |= PROCESS_RUNNING; + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_RUNNING; } else if (state == PROCESS_COMPLETED) { @@ -42,7 +42,9 @@ static void process_format_com_long(t_list **plist) t_process *p; p = (*plist)->content; - if (p->attributes & PROCESS_SUBSHELL) + if (p->attrs & PROCESS_CONTROL) + ft_putstr("script"); + else if (p->attrs & PROCESS_SUBSHELL) { ft_putstr("( "); ft_putstr(p->av[2]); @@ -62,15 +64,17 @@ static void process_format_com_short(t_list **plist, t_flag state) while (*plist) { p = (*plist)->content; - if (!(p->attributes & state) || + if (!(p->attrs & state) || (state == PROCESS_COMPLETED && p->status != 0)) break ; - if (p->attributes & PROCESS_CONTINUED) + if (p->attrs & PROCESS_CONTINUED) { - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes &= ~PROCESS_RUNNING; + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs &= ~PROCESS_RUNNING; } - if (p->attributes & PROCESS_SUBSHELL) + if (p->attrs & PROCESS_CONTROL) + ft_putstr("script"); + else if (p->attrs & PROCESS_SUBSHELL) { ft_putstr("( "); ft_putstr(p->av[2]); @@ -90,7 +94,7 @@ void process_format(t_list **plist, int firstp, int opts) t_flag state; p = (*plist)->content; - state = p->attributes & PROCESS_STATE_MASK; + state = p->attrs & PROCESS_STATE_MASK; if (!firstp) ft_printf(" "); if (opts & JOBS_OPTS_L) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 47fed25d..aaaf6b56 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:47:43 by ariard ### ########.fr */ +/* Updated: 2017/03/06 12:39:14 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -57,7 +57,10 @@ int handle_instruction(int fd) if (parser.state == SUCCESS) break ; else if (parser.state == ERROR && SH_IS_INTERACTIVE(data_singleton()->opts)) + { + ft_add_str_in_history(lexer.str); return (error_syntax(&token, &parser, &ast)); + } else if (parser.state == ERROR) error_syntax(&token, &parser, &ast); } From e9633119e5467ebca1580e6597891ea60ef52212 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Mon, 6 Mar 2017 16:58:47 +0100 Subject: [PATCH 159/206] >& and <& check if fd is open for reading/writing specifically --- 42sh/includes/exec.h | 4 ++-- 42sh/src/exec/fd_is_valid.c | 9 ++++++--- 42sh/src/exec/redirect_greatand.c | 4 ++-- 42sh/src/exec/redirect_lessand.c | 4 ++-- 42sh/src/main/shell_get_opts.c | 2 +- 42sh/yolo | 0 6 files changed, 13 insertions(+), 10 deletions(-) delete mode 100644 42sh/yolo diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 4afa61d6..81b783cb 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:33:24 by wescande ### ########.fr */ +/* Updated: 2017/03/06 16:56:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -126,7 +126,7 @@ void process_free(void *content, size_t content_size); void process_reset(t_process *p); void process_resetfds(void); -int fd_is_valid(int fd); +int fd_is_valid(int fd, int flag); int bad_fd(int fd); int process_redirect(t_process *p); int redirect_great(t_redir *redir); diff --git a/42sh/src/exec/fd_is_valid.c b/42sh/src/exec/fd_is_valid.c index d89e0f49..39fac840 100644 --- a/42sh/src/exec/fd_is_valid.c +++ b/42sh/src/exec/fd_is_valid.c @@ -6,13 +6,16 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/03 13:46:40 by jhalford #+# #+# */ -/* Updated: 2017/03/05 19:44:16 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 16:58:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int fd_is_valid(int fd) +int fd_is_valid(int fd, int has_flag) { - return (fcntl(fd, F_GETFD) != -1 || errno != EBADF); + int flags; + + flags = fcntl(fd, F_GETFD); + return ((flags != -1 || errno != EBADF) && flags & has_flag); } diff --git a/42sh/src/exec/redirect_greatand.c b/42sh/src/exec/redirect_greatand.c index c210c647..002375e8 100644 --- a/42sh/src/exec/redirect_greatand.c +++ b/42sh/src/exec/redirect_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:12:31 by jhalford #+# #+# */ -/* Updated: 2017/03/05 19:44:10 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 16:54:43 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ int redirect_greatand(t_redir *redir) return (0); if (fdold > 9) return (bad_fd(fdold)); - if (fd_is_valid(fdold)) + if (fd_is_valid(fdold, O_RDONLY)) dup2_close(fdold, fdnew); else return (bad_fd(fdold)); diff --git a/42sh/src/exec/redirect_lessand.c b/42sh/src/exec/redirect_lessand.c index 0c3b5982..bb9987d6 100644 --- a/42sh/src/exec/redirect_lessand.c +++ b/42sh/src/exec/redirect_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:11:18 by jhalford #+# #+# */ -/* Updated: 2017/03/05 19:43:42 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 16:53:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ int redirect_lessand(t_redir *redir) return (0); if (fdold > 9) return (bad_fd(fdold)); - if (fd_is_valid(fdold)) + if (fd_is_valid(fdold, O_WRONLY)) dup2_close(fdold, fdnew); else return (bad_fd(fdold)); diff --git a/42sh/src/main/shell_get_opts.c b/42sh/src/main/shell_get_opts.c index 0eee3eb4..dc75dddd 100644 --- a/42sh/src/main/shell_get_opts.c +++ b/42sh/src/main/shell_get_opts.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 14:04:48 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:45:37 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 16:52:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/yolo b/42sh/yolo deleted file mode 100644 index e69de29b..00000000 From 8873f31f7935ac6310598769773bb7ed506ae6b0 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Mon, 6 Mar 2017 17:57:51 +0100 Subject: [PATCH 160/206] protection stack symbolique --- 42sh/fi | 16 ------ 42sh/file | 15 ------ 42sh/includes/lexer.h | 9 +++- 42sh/includes/types.h | 3 +- 42sh/src/lexer/get_reserved_words.c | 79 +++++++++++++++++------------ 42sh/src/main/main.c | 4 +- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/aggregate_sym.c | 11 ++-- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 5 +- 42sh/src/parser/parser_init.c | 5 +- 42sh/src/parser/pop_stack.c | 17 ++++--- 42sh/src/parser/produce_sym.c | 8 +-- 42sh/yolo | 0 15 files changed, 87 insertions(+), 91 deletions(-) delete mode 100644 42sh/fi delete mode 100644 42sh/file delete mode 100644 42sh/yolo diff --git a/42sh/fi b/42sh/fi deleted file mode 100644 index 7caa40de..00000000 --- a/42sh/fi +++ /dev/null @@ -1,16 +0,0 @@ -42sh -Makefile -STDBUG -TESTSHELL -donovan_segaults_06-02 -fi -file -includes -libft -objs -parser_init.c -pdf -sample -src -test_framework.sh -update_makefile.sh diff --git a/42sh/file b/42sh/file deleted file mode 100644 index 9bda8fd6..00000000 --- a/42sh/file +++ /dev/null @@ -1,15 +0,0 @@ -42sh -Makefile -STDBUG -TESTSHELL -donovan_segaults_06-02 -file -includes -libft -objs -parser_init.c -pdf -sample -src -test_framework.sh -update_makefile.sh diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 74fd80bc..9cd38208 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:29:09 by jhalford ### ########.fr */ +/* Updated: 2017/03/06 17:52:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,6 +63,13 @@ struct s_lexer t_list *heredoc_stack; }; +struct s_rvwords +{ + char *word; + int type; +}; + +extern t_rvwords g_rvwords[]; extern int (*g_lexer[])(t_list **alst, t_lexer *lexer); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 68f377fc..ddeed664 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:31:28 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:51:59 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ typedef enum e_mode t_mode; typedef struct s_lexer t_lexer; typedef enum e_lexstate t_lexstate; typedef struct s_token t_token; +typedef struct s_rvwords t_rvwords; typedef struct s_ld t_ld; typedef struct s_astnode t_astnode; diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 139d4c1f..6f29ae61 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,62 +6,77 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/21 21:06:16 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:56:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" -int get_reserved_words(t_list **alst) + +t_rvwords g_rvwords[] = +{ + {"while", TK_WHILE}, + {"done", TK_DONE}, + {"do", TK_DO}, + {"if", TK_IF}, + {"then", TK_THEN}, + {"fi", TK_FI}, + {"elif", TK_ELIF}, + {"else", TK_ELSE}, + {"until", TK_UNTIL}, + {"case", TK_CASE}, + {"esac", TK_ESAC}, + {"for", TK_FOR}, + {"null", 0}, +}; + + +static int recognization_rvwords(t_token *pv_tk) +{ + if (!pv_tk || (pv_tk->type == TK_NEWLINE || pv_tk->type == TK_AMP + || pv_tk->type == TK_SEMI || pv_tk->type == TK_WHILE + || pv_tk->type == TK_DONE || pv_tk->type == TK_DO + || pv_tk->type == TK_IF || pv_tk->type == TK_FI || pv_tk->type == TK_THEN + || pv_tk->type == TK_ELIF || pv_tk->type == TK_ELSE)) + return (1); + return (0); +} + +int get_reserved_words(t_list **alst) { t_token *token; - t_token *previous_token; + t_token *pv_tk; t_token *ante_token; t_list *temp; + int i; temp = *alst; - previous_token = NULL; + pv_tk = NULL; ante_token = NULL; while (temp) { token = temp->content; - if (!previous_token || (previous_token->type & RW_SEP)) + //no more comp & + if (recognization_rvwords(pv_tk)) { if (token->type == TK_WORD) { - if (ft_strncmp(token->data, "while", 5) == 0) - token->type = TK_WHILE; - else if (ft_strncmp(token->data, "done", 4) == 0) - token->type = TK_DONE; - else if (ft_strncmp(token->data, "do" , 2) == 0) - token->type = TK_DO; - else if (ft_strncmp(token->data, "if", 2) == 0) - token->type = TK_IF; - else if (ft_strncmp(token->data, "then", 4) == 0) - token->type = TK_THEN; - else if(ft_strncmp(token->data, "fi", 4) == 0) - token->type = TK_FI; - else if (ft_strncmp(token->data, "elif", 4) == 0) - token->type = TK_ELIF; - else if (ft_strncmp(token->data, "else", 4) == 0) - token->type = TK_ELSE; - else if (ft_strncmp(token->data, "until", 5) == 0) - token->type = TK_UNTIL; - else if (ft_strncmp(token->data, "case", 4) == 0) - token->type = TK_CASE; - else if (ft_strncmp(token->data, "esac", 4) == 0) - token->type = TK_ESAC; - else if (ft_strncmp(token->data, "for", 3) == 0) - token->type = TK_FOR; + i = 0; + while (g_rvwords[i].type) + { + if (ft_strcmp(token->data, g_rvwords[i].word) == 0) + token->type = g_rvwords[i].type; + i++; + } } } if (ante_token && (ante_token->type == TK_CASE || ante_token->type == TK_FOR) && ft_strncmp(token->data, "in", 2) == 0) token->type = TK_IN; - if (previous_token && previous_token->type == TK_FOR && token->type == TK_WORD) + if (pv_tk && pv_tk->type == TK_FOR && token->type == TK_WORD) token->type = TK_NAME; - ante_token = previous_token; - previous_token = token; + ante_token = pv_tk; + pv_tk = token; temp = temp->next; } return (0); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 875a3cf7..cf5038e7 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:47:43 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:55:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,9 +47,9 @@ int handle_instruction(int fd) if (get_lexer_stack(lexer) > 1) continue ; lexer.state = DEFAULT; - token_print(token); if (get_reserved_words(&token)) return (1); + token_print(token); if (insert_newline(&token)) return (1); if (ft_parse(&ast, &token, &parser)) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 8a1f255a..489ec97f 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/06 15:57:48 by ariard ### ########.fr */ +/* Updated: 2017/03/06 16:40:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 93cfc4fe..4bcd5f45 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -316,21 +316,22 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) i = 0; head = (*stack)->content; -// DG("aggregate head %s && sym %s", -// read_state(*head), read_state(*new_sym)); + DG("aggregate head %s && sym %s", + read_state(*head), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(*head, g_aggrematch[i].under)) { -// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); + DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { - pop_stack(stack, g_aggrematch[i].erase_sym); + if (pop_stack(stack, g_aggrematch[i].erase_sym)) + return (1); head = (*stack)->content; -// DG("stack after pop: %s", read_state(*head)); + DG("stack after pop: %s", read_state(*head)); } if (eval_sym(stack, *new_sym)) return ((*state = ERROR)); diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 408d3afd..161b1ac3 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/03/05 18:23:57 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:50:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 8f0b9597..f17ae9c4 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -1027,7 +1027,7 @@ int eval_sym(t_list **stack, t_sym new_sym) int i; head = (*stack)->content; -// DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); + DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index b959f9c5..f87d0bcb 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -37,12 +37,13 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) while (*token) { produce_sym(&parser->stack, parser->new_sym, token); -// DG("new sym %s", read_state(*parser->new_sym)); + DG("new sym %s", read_state(*parser->new_sym)); if (eval_sym(&parser->stack, *parser->new_sym)) return ((parser->state = ERROR)); else { - aggregate_sym(&parser->stack, parser->new_sym, &parser->state); + if (aggregate_sym(&parser->stack, parser->new_sym, &parser->state)) + return (1); push_stack(&parser->stack, *parser->new_sym); } // ft_read_stack(parser->stack); diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 9d1f40dc..1c884a72 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:28:00 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:04:33 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,8 +16,7 @@ void parser_init(t_parser *parser) { parser->state = SUCCESS; parser->new_sym = ft_memalloc(sizeof(t_sym)); + parser->stack = NULL; push_stack(&parser->stack, TERMINUS); push_stack(&parser->stack, LINEBREAK); -// parser->stack = ft_memalloc(sizeof(t_sym) * 1000); -// push_stack(parser->stack, LINEBREAK); } diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index b2b8c9d7..1552953c 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ -/* Updated: 2017/03/05 16:28:52 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:09:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,16 +17,19 @@ int pop_stack(t_list **stack, t_sym erase_sym) t_sym *head; t_list *temp; - head = (*stack)->content; - while ((*stack) && *head != erase_sym) + while ((*stack) && *(head = (*stack)->content) != erase_sym) + { + temp = *stack; + (*stack) = (*stack)->next; + ft_lstdelone(&temp, NULL); + } + if (*stack) { temp = *stack; (*stack) = (*stack)->next; ft_lstdelone(&temp, NULL); - head = (*stack)->content; } - temp = *stack; - (*stack) = (*stack)->next; - ft_lstdelone(&temp, NULL); + else + return (1); return (0); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c2302123..c7432e03 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:12:59 by ariard ### ########.fr */ +/* Updated: 2017/03/06 16:43:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -107,8 +107,8 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) token = (*lst)->content; head = (*stack)->content; -// DG("produce stack : %s && token : %s", read_state(*head), -// read_state(token->type)); + DG("produce stack : %s && token : %s", read_state(*head), + read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -116,7 +116,7 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && *head == g_prodmatch[i].stack) { -// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); + DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/yolo b/42sh/yolo deleted file mode 100644 index e69de29b..00000000 From 1dbc4653fd31a2226df7e8193f0a2c302169845c Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Mon, 6 Mar 2017 19:05:43 +0100 Subject: [PATCH 161/206] expansion for + cleanage code get_reserved_word --- 42sh/Makefile | 1 + 42sh/includes/exec.h | 4 +++- 42sh/includes/lexer.h | 2 +- 42sh/includes/parser.h | 2 +- 42sh/libft | 2 +- 42sh/src/exec/error_badidentifier.c | 21 +++++++++++++++++++++ 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/exec_for.c | 26 +++++++++++++++++--------- 42sh/src/exec/exec_semi.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/set_process.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_loop.c | 13 ++++++++++--- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/tree_wrapper.c | 2 +- 16 files changed, 63 insertions(+), 24 deletions(-) create mode 100644 42sh/src/exec/error_badidentifier.c diff --git a/42sh/Makefile b/42sh/Makefile index 83025081..08954103 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -96,6 +96,7 @@ exec/redirect_less.c\ exec/redirect_lessand.c\ exec/set_exitstatus.c\ exec/set_process.c\ +exec/error_badidentifier.c\ glob/command_getoutput.c\ glob/dir_glob.c\ glob/esc_print.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 4afa61d6..e7d93dc5 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:33:24 by wescande ### ########.fr */ +/* Updated: 2017/03/06 18:11:21 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -147,4 +147,6 @@ char **token_to_argv(t_ld *ld, int do_match); int add_new_job(t_job *job); +int error_badidentifier(char *name); + #endif diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 9cd38208..d47b2e0f 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/06 17:52:13 by ariard ### ########.fr */ +/* Updated: 2017/03/06 18:28:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 49eb2ddc..25c8bcd7 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -168,7 +168,7 @@ struct s_cmd { t_list *redir; t_ld *token; - t_list *wordlist; + t_ld *wordlist; }; union u_astdata diff --git a/42sh/libft b/42sh/libft index 6a2672a1..318efc7c 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 6a2672a19268c6481525d9aaee5bd35722bbd75a +Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec diff --git a/42sh/src/exec/error_badidentifier.c b/42sh/src/exec/error_badidentifier.c new file mode 100644 index 00000000..9883f60d --- /dev/null +++ b/42sh/src/exec/error_badidentifier.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* error_badidentifier.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/06 18:03:51 by ariard #+# #+# */ +/* Updated: 2017/03/06 18:11:26 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int error_badidentifier(char *name) +{ + ft_putstr_fd("`", 2); + ft_putstr(name); + ft_putstr_fd("' not a valid identifier", 2); + return (1); +} diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index fdf22068..6bbed2be 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:03:36 by ariard ### ########.fr */ +/* Updated: 2017/03/06 18:51:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index 91606fe6..5159c515 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:22:49 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:02:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,20 +15,28 @@ int exec_for(t_btree **ast) { t_astnode *node; - t_list *temp; -// char **av = NULL; + t_ld *temp; + char **av; char *var; + int i; node = (*ast)->item; temp = node->data.cmd.wordlist; - var = temp->content; + var = ((char **)(temp->content))[0]; + if (ft_isdigit(var[0])) + return (error_badidentifier(var)); temp = temp->next; -// declare error bad identifier while (temp) - { - builtin_setenv("setenv", (char*[]){var, temp->content, 0}, - data_singleton()->local_var); - ft_exec(&(*ast)->right); + { + i = 0; + av = token_to_argv(temp, 1); + while (av[i]) + { + builtin_setenv("setenv", (char*[]){var, av[i], 0}, + data_singleton()->local_var); + ft_exec(&(*ast)->right); + i++; + } temp = temp->next; } return (0); diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 5f03aa23..c7848424 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/03/04 17:23:50 by ariard ### ########.fr */ +/* Updated: 2017/03/06 18:09:54 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index a56782fa..6b78f9cb 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:01:32 by ariard ### ########.fr */ +/* Updated: 2017/03/06 18:08:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 7ec05157..3be94f58 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:26:11 by wescande ### ########.fr */ +/* Updated: 2017/03/06 18:41:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 6f29ae61..4d14e54d 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/03/06 17:56:14 by ariard ### ########.fr */ +/* Updated: 2017/03/06 17:59:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 489ec97f..42793da2 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/06 16:40:03 by ariard ### ########.fr */ +/* Updated: 2017/03/06 18:48:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 63481be3..2bb3cd59 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/05 16:46:50 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:02:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -91,11 +91,18 @@ int add_loop_condition(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; + char **my_tab; token = (*lst)->content; node = (*ast)->item; DG("add word"); - ft_lsteadd(&node->data.cmd.wordlist, ft_lstnew(ft_strdup(token->data), - ft_strlen(token->data))); + if ((my_tab = (char **)malloc(sizeof(char *) * 4))) + { + my_tab[0] = ft_strdup(token->data); + my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); + my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); + my_tab[3] = NULL; + } + ft_ld_pushback(&node->data.cmd.wordlist, my_tab); return (0); } diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index 161b1ac3..d48228c6 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ -/* Updated: 2017/03/06 17:50:43 by ariard ### ########.fr */ +/* Updated: 2017/03/06 18:07:06 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index ed89c93e..81415d2e 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/05 16:56:00 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:01:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 4be3a84471a0fb93c3d9adc16a27c921d803885f Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Mon, 6 Mar 2017 19:46:09 +0100 Subject: [PATCH 162/206] expansion case yeaaah --- 42sh/includes/exec.h | 4 ++-- 42sh/src/exec/exec_case.c | 7 +++---- 42sh/src/exec/exec_case_branch.c | 30 ++++++++++++++++-------------- 42sh/src/exec/exec_for.c | 2 +- 42sh/src/parser/add_case.c | 12 ++++++++++-- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 7 files changed, 34 insertions(+), 25 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index e7d93dc5..d43904a2 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:11:21 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:16:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -73,7 +73,7 @@ struct s_exec t_flag attrs; int fdin; t_list *op_stack; - char *case_pattern; + char **case_pattern; int control_count; }; diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index b167b905..ed982dac 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:29:22 by wescande ### ########.fr */ +/* Updated: 2017/03/06 19:37:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ int exec_case(t_btree **ast) { t_astnode *node; - char *av; + char **av; t_exec *exec; (void)ast; @@ -23,8 +23,7 @@ int exec_case(t_btree **ast) exec->attrs &= ~EXEC_CASE_BRANCH; node = (*ast)->item; - av = node->data.str; -// av = token_to_argv(node); + av = token_to_argv(node->data.cmd.wordlist, 1); exec->case_pattern = av; return (0); } diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index ae8308c2..2d0db420 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:29:46 by wescande ### ########.fr */ +/* Updated: 2017/03/06 19:36:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,23 +15,25 @@ int exec_case_branch(t_btree **ast) { t_astnode *node; - char *av; - t_exec *exec; + char **av; + t_exec *exec; + int i; - (void)ast; exec = &data_singleton()->exec; - - DG("case"); if (EXEC_IS_CASE_BRANCH(exec->attrs)) return (0); - DG("case2"); node = (*ast)->item; - av = node->data.str; -// av = token_to_argv(node); - if (ft_strcmp(av, exec->case_pattern) == 0) - { - exec->attrs |= EXEC_CASE_BRANCH; - ft_exec(&(*ast)->right); - } + av = token_to_argv(node->data.cmd.wordlist, 1); + i = 0; + while (av[i]) + { + if (ft_strcmp(av[i], ((char **)exec->case_pattern)[0]) == 0) + { + exec->attrs |= EXEC_CASE_BRANCH; + ft_exec(&(*ast)->right); + break ; + } + i++; + } return (0); } diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index 5159c515..632f5773 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:02:36 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:37:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 1a87f15f..111d9397 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/06 15:11:04 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:36:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -89,10 +89,18 @@ int add_pattern(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; + char **my_tab; token = (*lst)->content; node = (*ast)->item; - node->data.str = ft_strdup(token->data); + if ((my_tab = (char **)malloc(sizeof(char *) * 4))) + { + my_tab[0] = ft_strdup(token->data); + my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); + my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); + my_tab[3] = NULL; + } + ft_ld_pushback(&node->data.cmd.wordlist, my_tab); node->pattern = 1; return (0); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 42793da2..b4e6b650 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/06 18:48:57 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:36:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 2bb3cd59..f15c044d 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:02:46 by ariard ### ########.fr */ +/* Updated: 2017/03/06 19:06:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From f70f8bd3b56121bfa971522f9da6af4003ac2a99 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Mon, 6 Mar 2017 23:51:26 +0100 Subject: [PATCH 163/206] exec var --- 42sh/libft | 2 +- 42sh/src/exec/exec_var.c | 17 ++++++++++++++--- 42sh/src/exec/ft_exec.c | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/42sh/libft b/42sh/libft index 318efc7c..dc155bf5 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec +Subproject commit dc155bf51cc9de83df073669a1d2a9a915f16121 diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index 3952d5e6..3bfc50ce 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -12,13 +12,24 @@ #include "exec.h" +static int set_var(char *stream, char **var, char **value) +{ + *var = ft_strdupchr(stream, '='); + stream += ft_strlenchr(stream, '=') + 1; + *value = ft_strdup(stream); + return (0); +} + int exec_var(t_btree **ast) { t_astnode *node; char **av; - + char *var; + char *value; + node = (*ast)->item; - av = token_to_argv(node->data.cmd.token, 0); - builtin_setenv("setenv", av, data_singleton()->local_var); + av = token_to_argv(node->data.cmd.token, 1); + set_var(av[0], &var, &value); + builtin_setenv("setenv", (char*[]){var, value, 0}, data_singleton()->local_var); return (0); } diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 6b78f9cb..b24b7612 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -28,6 +28,7 @@ t_execmap g_execmap[] = {TK_FOR, &exec_for}, {TK_CASE, &exec_case}, {TK_PAREN_OPEN, &exec_case_branch}, + {TK_ASSIGNEMENT_WORD, &exec_var}, /* {TK_SUBSHELL, &exec_}, */ {CMD, &exec_cmd}, {0, 0}, From bc1c16a45bfb70b7023fe60e376787437b725083 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Tue, 7 Mar 2017 01:17:58 +0100 Subject: [PATCH 164/206] parsing func stable, todo parsing brace_group --- 42sh/includes/parser.h | 1 + 42sh/sample/func/func01.sh | 9 +++---- 42sh/src/parser/add_case.c | 5 ++-- 42sh/src/parser/add_cmd.c | 6 ++--- 42sh/src/parser/add_condition.c | 3 +-- 42sh/src/parser/add_func.c | 48 ++++++++++++++++++++++++--------- 42sh/src/parser/add_loop.c | 4 +-- 42sh/src/parser/add_subshell.c | 4 --- 42sh/src/parser/aggregate_sym.c | 4 +-- 42sh/src/parser/build_tree.c | 3 --- 42sh/src/parser/read_stack.c | 2 ++ 11 files changed, 49 insertions(+), 40 deletions(-) diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 25c8bcd7..16e97a50 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -136,6 +136,7 @@ int iscondition(t_btree **ast, t_list **lst); int iscondition_branch(t_btree **ast, t_list **lst); int issubshell(t_btree **ast, t_list **lst); int isfunc(t_btree **ast, t_list **lst); +int isfunc_name(t_btree **ast, t_list **lst); int isdir(t_btree **ast); int iscondition(t_btree **ast, t_list **list); int isdir_sep(t_btree **ast, t_list **list); diff --git a/42sh/sample/func/func01.sh b/42sh/sample/func/func01.sh index d559c7d2..b60f425b 100644 --- a/42sh/sample/func/func01.sh +++ b/42sh/sample/func/func01.sh @@ -1,6 +1,3 @@ -hello() { - yolo() { - echo bonjour - } -} - +hello () ( + echo HELLO +) diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 111d9397..f5862cef 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -15,11 +15,9 @@ int iscase(t_btree **ast, t_list **lst) { t_astnode *node; -// t_token *token; (void)lst; node = NULL; -// token = (*lst)->content; if (*ast) { node = (*ast)->item; @@ -80,7 +78,8 @@ int add_case_cmd(t_btree **ast, t_list **lst) else if (token->type == TK_DSEMI && node->type == TK_PAREN_OPEN && node->nest == 0) return ((node->full = 1)); - else if (token->type == TK_ESAC) + else if ((token->type == TK_ESAC || token->type == TK_PAREN_CLOSE) + && node->nest == 0) return (0); return (add_cmd(&(*ast)->right, lst)); } diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index b4e6b650..b86635e1 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -26,10 +26,10 @@ t_distrostree g_distrostree[] = {&iscase_branch, &add_branch}, {&iscase, &add_case_cmd}, {&issubshell, &add_subshell_cmd}, + {&isfunc_name, &add_null}, {&isfunc, &add_func_cmd}, {&isionumber, &add_ionumber}, {&isnull, &add_null}, - }; int superflous_token(t_btree **ast, t_list **lst) @@ -40,8 +40,7 @@ int superflous_token(t_btree **ast, t_list **lst) if (*lst) { token = (*lst)->content; - if (token->type == TK_IN || token->type == TK_PAREN_CLOSE - || token->type == TK_DSEMI) + if (token->type == TK_IN || token->type == TK_DSEMI) return (1); } return (0); @@ -71,7 +70,6 @@ int add_cmd(t_btree **ast, t_list **lst) int i; i = 0; - DG("add cmd"); while (i < 14) { if (g_distrostree[i].test(ast, lst) == 1) diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 44bf623b..bc62c84f 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -15,10 +15,9 @@ int iscondition(t_btree **ast, t_list **lst) { t_astnode *node; -// t_token *token; + (void)lst; node = NULL; -// token = (*lst)->content; if (*ast) { node = (*ast)->item; diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index e29c7d8b..ab3e0ae2 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -12,25 +12,41 @@ #include "parser.h" -int isfunc(t_btree **ast, t_list **lst) +int isfunc_name(t_btree **ast, t_list **lst) { t_astnode *node; t_token *token; - node = NULL; token = (*lst)->content; if (*ast) { node = (*ast)->item; - if (node->type == TK_WORD && token->type == CLOSE_LIST) - { + if (node->type == CMD && token->type == TK_PAREN_OPEN) + { + DG("add func name"); node->type = FNAME; - add_one_func(ast, lst); - } + return (1); + } + if (node->type == FNAME && token->type == TK_PAREN_CLOSE && node->nest == 0) + return (1); + } + return (0); +} + +int isfunc(t_btree **ast, t_list **lst) +{ + t_astnode *node; + + (void)lst; + node = NULL; + if (*ast) + { + node = (*ast)->item; + if ((node->type == TK_NEWLINE || node->type == TK_SEMI + || node->type == TK_AMP) && isfunc(&(*ast)->right, lst) == 1) + return (1); if (node->type == FNAME && node->full == 0) return (1); - if (isfunc(&(*ast)->right, lst) == 1) - return (1); } return (0); } @@ -40,23 +56,25 @@ int add_func_cmd(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; + DG("add func cmd"); token = (*lst)->content; node = (*ast)->item; - if (token->type == CLOSE_LIST && node->nest == 0) - return (0); if ((token->type == TK_CASE || token->type == TK_WHILE || token->type == TK_IF || token->type == TK_UNTIL || token->type == TK_FOR || token->type == SUBSHELL || token->type == TK_LBRACE) && node->type == FNAME) node->nest++; if ((token->type == TK_DONE || token->type == TK_ESAC || token->type == TK_FI - || token->type == TK_RBRACE || token->type == TK_PAREN_OPEN) + || token->type == TK_RBRACE || token->type == TK_PAREN_CLOSE) && node->type == FNAME && node->nest > 0) node->nest--; if ((token->type == TK_DONE || token->type == TK_ESAC || token->type == TK_FI - || token->type == TK_RBRACE || token->type == TK_PAREN_OPEN) + || token->type == TK_RBRACE || token->type == TK_PAREN_CLOSE) && node->type == FNAME && node->nest == 0) + { node->full = 1; + add_one_func(ast, lst); + } return (add_cmd(&(*ast)->right, lst)); } @@ -67,7 +85,11 @@ int add_func_sep(t_btree **ast, t_list **lst) int add_one_func(t_btree **ast, t_list **lst) { + t_btree *func_ast; + (void)lst; - ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(ast, sizeof(*ast))); + func_ast = btree_map(*ast, &id); + ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(&func_ast, sizeof(*ast))); + DG("arbre ajoute"); return (0); } diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index f15c044d..427b0741 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -15,11 +15,9 @@ int isloop(t_btree **ast, t_list **lst) { t_astnode *node; -// t_token *token; + (void)lst; node = NULL; -// token = (*lst)->content; - DG("isloop"); if (*ast) { node = (*ast)->item; diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 02618324..80dea8e7 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -15,18 +15,14 @@ int issubshell(t_btree **ast, t_list **lst) { t_astnode *node; -// t_token *token; (void)lst; node = NULL; -// token = (*lst)->content; if (*ast) { node = (*ast)->item; if (node->type == SUBSHELL && node->full == 0) return (1); - if (node->type == TK_LBRACE && node->full == 0) - return (1); } return (0); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 4bcd5f45..cb2617fb 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -61,7 +61,6 @@ t_aggrematch g_aggrematch[] = //to abstract TK_ESAC {LINEBREAK, TK_PAREN_CLOSE, FUNC, FNAME}, -//paren open {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {LINEBREAK, CMD_SUPERIOR, SEPARATOR_OP, 0}, {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, @@ -72,6 +71,7 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, SEQUENTIAL_SEP, SEQUENTIAL_SEP, SEQUENTIAL_SEP}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, {NEWLINE_LIST, TK_PAREN_CLOSE, TK_PAREN_CLOSE, TK_PAREN_CLOSE}, + {NEWLINE_LIST, TK_PAREN_OPEN, TK_PAREN_OPEN, TK_PAREN_OPEN}, {NEWLINE_LIST, TK_IN, TK_IN, TK_IN}, {NEWLINE_LIST, TK_THEN, TK_THEN, TK_THEN}, {NEWLINE_LIST, TK_IF, TK_IF, TK_IF}, @@ -329,7 +329,7 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) if (g_aggrematch[i].erase_sym) { if (pop_stack(stack, g_aggrematch[i].erase_sym)) - return (1); + return (1); head = (*stack)->content; DG("stack after pop: %s", read_state(*head)); } diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index ff3a467b..e8b79714 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -70,12 +70,9 @@ int build_tree(t_btree **ast, t_list **lst) i = 0; token = (*lst)->content; //check bug de cache case ? -// cache = token->type; if (token->type == TK_PAREN_OPEN && cache != TK_IN && cache != TK_DSEMI && cache != TK_WORD) token->type = SUBSHELL; - if (token->type == TK_PAREN_CLOSE && cache == TK_PAREN_OPEN) - token->type = CLOSE_LIST; while (g_treematch[i].type) { if ((isseparator(token, cache) && g_treematch[i].type == token->type)) diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index d16bac78..0e7450af 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == TERMINUS) + return ("TERMINUS"); if (current == SEQUENCE) return ("SEQUENCE"); if (current == LINEBREAK) From 6c8c3ea792262ce98754b5a572952659d013d13e Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Tue, 7 Mar 2017 02:09:33 +0100 Subject: [PATCH 165/206] parsing math ok --- 42sh/Makefile | 1 + 42sh/includes/parser.h | 2 ++ 42sh/includes/types.h | 3 +++ 42sh/src/main/ft_putast.c | 2 ++ 42sh/src/parser/add_cmd.c | 2 ++ 42sh/src/parser/add_math.c | 39 +++++++++++++++++++++++++++++++++ 42sh/src/parser/aggregate_sym.c | 10 ++++++++- 42sh/src/parser/eval_sym.c | 20 +++++++++++++++++ 42sh/src/parser/produce_sym.c | 3 +++ 9 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 42sh/src/parser/add_math.c diff --git a/42sh/Makefile b/42sh/Makefile index 08954103..fe951535 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -240,6 +240,7 @@ parser/add_sep.c\ parser/add_subshell.c\ parser/add_var.c\ parser/add_number.c\ +parser/add_math.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 16e97a50..69bf088f 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -144,6 +144,8 @@ int isdir_word(t_btree **ast, t_list **list); int isvar(t_btree **ast, t_list **list); int isnull(t_btree **ast, t_list **list); int isionumber(t_btree **ast, t_list **lst); +int ismath(t_btree **ast, t_list **lst); +int ismath_expr(t_btree **ast, t_list **lst); int join_ast(t_btree **ast, t_btree **new_node); int gen_node(t_btree **ast); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index ddeed664..2af27fa4 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -160,6 +160,9 @@ enum e_sym PATTERN_CASE, FUNC_NAME, CLOSE_LIST, + MATH, + MATH_PLUS, + MATH_SUP, REDIR, CMD, ALL = 200, diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 955f3da4..405104b6 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -17,6 +17,8 @@ char *ft_putast(void *nodein) t_astnode *node; node = nodein; + if (node->type == MATH) + return ("MATH"); if (node->type == TK_DSEMI) return ("TK_DSEMI"); if (node->type == WORDLIST) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index b86635e1..0518acf6 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -25,6 +25,8 @@ t_distrostree g_distrostree[] = {&iscase_pattern, &add_pattern}, {&iscase_branch, &add_branch}, {&iscase, &add_case_cmd}, + {&ismath, &add_null}, + {&ismath_expr, &add_pattern}, {&issubshell, &add_subshell_cmd}, {&isfunc_name, &add_null}, {&isfunc, &add_func_cmd}, diff --git a/42sh/src/parser/add_math.c b/42sh/src/parser/add_math.c new file mode 100644 index 00000000..78a3f414 --- /dev/null +++ b/42sh/src/parser/add_math.c @@ -0,0 +1,39 @@ +#include "parser.h" + +int ismath(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type == SUBSHELL && token->type == SUBSHELL) + { + node->type = MATH; + return (1); + } + if (node->type == MATH && token->type == TK_PAREN_CLOSE) + return (1); + } + return (0); +} + + +int ismath_expr(t_btree **ast, t_list **lst) +{ + t_astnode *node; + t_token *token; + + node = NULL; + token = (*lst)->content; + if (*ast) + { + node = (*ast)->item; + if (node->type == MATH && token->type == TK_WORD) + return (1); + } + return (0); +} diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index cb2617fb..25d6f683 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -17,12 +17,14 @@ t_aggrematch g_aggrematch[] = {TK_WORD, TK_PIPE, PATTERN, 0}, {TK_WORD, TK_IN, FOR_WORDLIST, TK_IN}, {TK_WORD, FOR_WORDLIST, FOR_WORDLIST, FOR_WORDLIST}, + {TK_WORD, MATH, MATH, MATH}, {TK_SEMI, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, {TK_DSEMI, CMD_SUPERIOR, PIPE_SEQUENCE, CMD_SUPERIOR}, {TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CMD_SUPERIOR, FUNC_NAME, CMD_SUPERIOR}, + {TK_PAREN_OPEN, TK_PAREN_OPEN, MATH, TK_PAREN_OPEN}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_PIPE, CMD_SUPERIOR, SEQUENCE, CMD_SUPERIOR}, {TK_PIPE, PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE}, @@ -38,7 +40,9 @@ t_aggrematch g_aggrematch[] = {TK_ESAC, TK_IN, CASE_CLAUSE, TK_CASE}, {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, TK_LBRACE}, - {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, + {TK_PAREN_CLOSE, MATH, MATH_PLUS, MATH}, + {TK_PAREN_CLOSE, MATH_PLUS, MATH_SUP, MATH_PLUS}, + {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, CMD_SUPERIOR, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, SUBSHELL, TK_PAREN_OPEN}, @@ -48,14 +52,17 @@ t_aggrematch g_aggrematch[] = {TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, {TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR}, //watch this + {SEPARATOR_OP, MATH_SUP, CMD_SUPERIOR, MATH_SUP}, {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, {SEPARATOR_OP, CASE_LIST_NS, SEPARATOR, 0}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE, SEPARATOR, 0}, + {SEPARATOR, MATH_SUP, CMD_SUPERIOR, MATH_SUP}, {SEPARATOR, CMD_SUPERIOR, END_COMMAND, CMD_SUPERIOR}, {SEPARATOR, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {SEPARATOR, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, + {LINEBREAK, MATH_SUP, CMD_SUPERIOR, MATH_SUP}, {LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP}, {LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI}, @@ -67,6 +74,7 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {LINEBREAK, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, + {NEWLINE_LIST, MATH_SUP, CMD_SUPERIOR, MATH_SUP}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, SEQUENTIAL_SEP, SEQUENTIAL_SEP, SEQUENTIAL_SEP}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index f17ae9c4..d9a3de5c 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -23,6 +23,7 @@ t_stackmatch g_stackmatch[] = {TK_WORD, COMPLETE_COMMANDS}, {TK_WORD, TK_IN}, {TK_WORD, FOR_WORDLIST}, + {TK_WORD, MATH}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, {TK_IO_NUMBER, REDIRECT_LIST}, {TK_IO_NUMBER, CMD_SUFFIX}, @@ -430,17 +431,20 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, COMPOUND_LIST}, {END_COMMAND, CASE_LIST_NS}, {END_COMMAND, COMPLETE_CONDITION}, + {SEPARATOR, MATH_SUP}, {SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, TERM}, {SEPARATOR, COMPOUND_LIST}, {SEPARATOR, CASE_LIST_NS}, {SEPARATOR, PIPE_SEMI_SEQUENCE}, + {SEPARATOR_OP, MATH_SUP}, {SEPARATOR_OP, CMD_SUPERIOR}, {SEPARATOR_OP, LIST}, {SEPARATOR_OP, TERM}, {SEPARATOR_OP, CASE_LIST_NS}, {SEPARATOR_OP, COMPOUND_LIST}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, + {LINEBREAK, MATH_SUP}, {LINEBREAK, TK_SEMI}, {LINEBREAK, END_COMMAND}, {LINEBREAK, SEPARATOR_OP}, @@ -459,6 +463,8 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, PROGRAM}, {LINEBREAK, TK_PAREN_OPEN}, {LINEBREAK, TK_LBRACE}, + {TK_PAREN_CLOSE, MATH}, + {TK_PAREN_CLOSE, MATH_PLUS}, {TK_PAREN_CLOSE, TK_SEMI}, {TK_PAREN_CLOSE, END_COMMAND}, {TK_PAREN_CLOSE, SEPARATOR_OP}, @@ -478,6 +484,7 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_CLOSE, PATTERN}, {TK_PAREN_CLOSE, COMPOUND_LIST}, {TK_PAREN_CLOSE, FUNC_NAME}, + {NEWLINE_LIST, MATH_SUP}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, CASE_LIST_NS}, {NEWLINE_LIST, TK_PAREN_CLOSE}, @@ -628,6 +635,19 @@ t_stackmatch g_stackmatch[] = // watch ! {CMD_SUPERIOR, AND_OR_MAJOR}, + {MATH, LINEBREAK}, + {MATH, NEWLINE_LIST}, + {MATH, SEPARATOR}, + {MATH, SEPARATOR_OP}, + {MATH_PLUS, LINEBREAK}, + {MATH_PLUS, NEWLINE_LIST}, + {MATH_PLUS, SEPARATOR}, + {MATH_PLUS, SEPARATOR_OP}, + {MATH_SUP, LINEBREAK}, + {MATH_SUP, NEWLINE_LIST}, + {MATH_SUP, SEPARATOR}, + {MATH_SUP, SEPARATOR_OP}, + {SIMPLE_COMMAND, TK_WHILE}, {SIMPLE_COMMAND, TK_UNTIL}, {SIMPLE_COMMAND, TK_DO}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c7432e03..754f1205 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -64,6 +64,7 @@ t_prodmatch g_prodmatch[] = {TK_NAME, SEPARATOR_OP, FNAME}, {TK_NAME, NEWLINE_LIST, FNAME}, {TK_NAME, TK_FOR, NAME}, + {TK_NEWLINE, MATH_SUP, NEWLINE_LIST}, {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, {TK_NEWLINE, TK_PAREN_CLOSE, NEWLINE_LIST}, @@ -89,9 +90,11 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, CONDITION, NEWLINE_LIST}, {TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST}, {TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST}, + {TK_SEMI, MATH_SUP, SEPARATOR_OP}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, {TK_SEMI, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, + {TK_AMP, MATH_SUP, SEPARATOR_OP}, {TK_AMP, CMD_SUPERIOR, SEPARATOR_OP}, {TK_AMP, LIST, SEPARATOR_OP}, {TK_AMP, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, From dea350d9256a909d780610352fc21c871cd40b66 Mon Sep 17 00:00:00 2001 From: gwojda Date: Tue, 7 Mar 2017 11:21:21 +0100 Subject: [PATCH 166/206] fixe bug history --- 42sh/src/line-editing/readline.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index 770d2163..f9bf13df 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/03/04 16:50:05 by ariard ### ########.fr */ +/* Updated: 2017/03/07 11:20:27 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,6 +39,8 @@ void ft_init_history(void) return ; while (get_next_line(fd, &str) > 0) { + if (!*str) + continue ; ft_push_back_history(&data_singleton()->line.list_beg, ft_create_history_list(str)); free(str); From 1c41155c50b3cc3bc95789ab515a6bc17dab3dce Mon Sep 17 00:00:00 2001 From: gwojda Date: Tue, 7 Mar 2017 11:24:20 +0100 Subject: [PATCH 167/206] =?UTF-8?q?on=20a=20retrouv=C3=A9=20le=20builtin?= =?UTF-8?q?=20history?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 42sh/src/builtin/is_builtin.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index c0f39c2f..43a9aa27 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:00:13 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 11:05:55 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,7 @@ t_stof g_builtin[] = {"bg", &builtin_bg}, {"read", &builtin_read}, {"hash", &builtin_hash}, + {"history", &builtin_history}, {NULL, NULL}, }; From 6c2dbb0a57890abd8d35de68e416ae60af68fb39 Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 12:11:13 +0100 Subject: [PATCH 168/206] expansion des variables locales au shell. --- 42sh/src/glob/expand_var.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/42sh/src/glob/expand_var.c b/42sh/src/glob/expand_var.c index 31453a98..ed163a76 100644 --- a/42sh/src/glob/expand_var.c +++ b/42sh/src/glob/expand_var.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 16:09:27 by wescande #+# #+# */ -/* Updated: 2017/03/03 20:38:36 by wescande ### ########.fr */ +/* Updated: 2017/03/07 12:07:53 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -73,7 +73,8 @@ void expand_var(t_glob *gl) { if (var && *var) { - content = ft_getenv(data_singleton()->env, var); + if (!(content = ft_getenv(data_singleton()->env, var))) + content = ft_getenv(data_singleton()->local_var, var); insert_var(gl, pat, var, content); pat = gl->pat; } From 7ae114fd554e1d1ae9d4a2da125c05151355cefb Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 12:19:10 +0100 Subject: [PATCH 169/206] permet la compilation en commentant exec_var --- 42sh/Makefile | 6 +++--- 42sh/libft | 2 +- 42sh/src/exec/exec_var.c | 9 ++++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index fe951535..b9ffe23a 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -60,6 +60,7 @@ completion/c_terminal.c\ completion/completion.c\ exec/ast_free.c\ exec/bad_fd.c\ +exec/error_badidentifier.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ exec/exec_case.c\ @@ -96,7 +97,6 @@ exec/redirect_less.c\ exec/redirect_lessand.c\ exec/set_exitstatus.c\ exec/set_process.c\ -exec/error_badidentifier.c\ glob/command_getoutput.c\ glob/dir_glob.c\ glob/esc_print.c\ @@ -235,12 +235,12 @@ parser/add_cmd.c\ parser/add_condition.c\ parser/add_func.c\ parser/add_loop.c\ +parser/add_math.c\ +parser/add_number.c\ parser/add_redir.c\ parser/add_sep.c\ parser/add_subshell.c\ parser/add_var.c\ -parser/add_number.c\ -parser/add_math.c\ parser/aggregate_sym.c\ parser/build_tree.c\ parser/error_syntax.c\ diff --git a/42sh/libft b/42sh/libft index dc155bf5..a966b8a2 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit dc155bf51cc9de83df073669a1d2a9a915f16121 +Subproject commit a966b8a20028daba5580237fa0b0b18e16208f1b diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index 3bfc50ce..4eca2107 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/03 20:32:27 by wescande ### ########.fr */ +/* Updated: 2017/03/07 12:17:43 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,12 @@ static int set_var(char *stream, char **var, char **value) { - *var = ft_strdupchr(stream, '='); + (void)stream; + (void)var; + (void)value; +/* *var = ft_strdupchr(stream, '='); stream += ft_strlenchr(stream, '=') + 1; - *value = ft_strdup(stream); + value = ft_strdup(stream);*/ return (0); } From 14be331b4eef1a7277f5de92bd5af806cab5e969 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Tue, 7 Mar 2017 12:22:05 +0100 Subject: [PATCH 170/206] expr math doing --- 42sh/Makefile | 1 + 42sh/includes/exec.h | 3 +- 42sh/libft | 2 +- 42sh/src/builtin/bt_read_get.c | 2 +- 42sh/src/builtin/builtin_env.c | 2 +- 42sh/src/builtin/builtin_setenv.c | 2 +- 42sh/src/exec/exec_math.c | 81 +++++++++++++++++++++++++++++++ 42sh/src/exec/exec_var.c | 6 +-- 42sh/src/exec/ft_exec.c | 3 +- 42sh/src/parser/add_case.c | 3 +- 42sh/src/parser/add_func.c | 4 +- 42sh/src/parser/add_var.c | 2 +- 12 files changed, 98 insertions(+), 13 deletions(-) create mode 100644 42sh/src/exec/exec_math.c diff --git a/42sh/Makefile b/42sh/Makefile index fe951535..ce3e375c 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -77,6 +77,7 @@ exec/exec_semi.c\ exec/exec_until.c\ exec/exec_var.c\ exec/exec_while.c\ +exec/exec_math.c\ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index d43904a2..0aacdb69 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/06 19:16:30 by ariard ### ########.fr */ +/* Updated: 2017/03/07 11:47:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -116,6 +116,7 @@ int exec_var(t_btree **ast); int exec_for(t_btree **ast); int exec_case(t_btree **ast); int exec_case_branch(t_btree **ast); +int exec_math(t_btree **ast); int launch_process(t_process *p); int set_process(t_process *p, t_btree *ast); diff --git a/42sh/libft b/42sh/libft index dc155bf5..318efc7c 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit dc155bf51cc9de83df073669a1d2a9a915f16121 +Subproject commit 318efc7cfb7b7cc9d3714fa19fd2be7382b6adec diff --git a/42sh/src/builtin/bt_read_get.c b/42sh/src/builtin/bt_read_get.c index 62700b5a..f2e70ab1 100644 --- a/42sh/src/builtin/bt_read_get.c +++ b/42sh/src/builtin/bt_read_get.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 18:00:03 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:58:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 11:27:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/builtin/builtin_env.c b/42sh/src/builtin/builtin_env.c index 100cd236..9458300d 100644 --- a/42sh/src/builtin/builtin_env.c +++ b/42sh/src/builtin/builtin_env.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:14:20 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:07:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 11:29:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/builtin/builtin_setenv.c b/42sh/src/builtin/builtin_setenv.c index 3c803bd5..d5d5f99f 100644 --- a/42sh/src/builtin/builtin_setenv.c +++ b/42sh/src/builtin/builtin_setenv.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */ -/* Updated: 2017/02/17 13:18:25 by gwojda ### ########.fr */ +/* Updated: 2017/03/07 11:28:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_math.c b/42sh/src/exec/exec_math.c new file mode 100644 index 00000000..9bf8a3c7 --- /dev/null +++ b/42sh/src/exec/exec_math.c @@ -0,0 +1,81 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_math.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 10:58:49 by ariard #+# #+# */ +/* Updated: 2017/03/07 12:19:25 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +static int get_math(char *stream, char **var, char **value, char **operator) +{ + char *temp; + + *var = ft_strduptr(stream, &ft_isalpha); + temp = ft_sstrstr(data_singleton()->env, *var); + if (temp) + { + temp += ft_strlenchr(temp, '=') + 1; + *value = ft_strdup(temp); + if (!(ft_stris(*value, &ft_isdigit))) + { + ft_strdel(value); + *value = ft_itoa(0); + } + } + else + *value = ft_itoa(0); + stream += ft_strlen(*var); + *operator = ft_strdup(stream); + return (0); +} + +static int do_math(char **value, char *operator) +{ + long ope1; + long ope2; + + ope1 = ft_atoi(*value); + if (operator[2]) + ope2 = ft_atoi(&operator[2]); + else + ope2 = 0; + if (operator[0] == '/' && ope2 == 0) + ope1 = 0; + else + { + ope1 = (operator[0] == '+') ? ope1 + ope2 : ope1; + ope1 = (operator[0] == '-') ? ope1 - ope2 : ope1; + ope1 = (operator[0] == '/') ? ope1 / ope2 : ope1; + ope1 = (operator[0] == '*') ? ope1 * ope2 : ope1; + ope1 = (operator[0] == '%') ? ope1 % ope2 : ope1; + } + ft_strdel(value); + *value = ft_itoa(ope1); + return (0); +} + +int exec_math(t_btree **ast) +{ + t_astnode *node; + char **av; + char *var; + char *value; + char *operator; + + node = (*ast)->item; + av = token_to_argv(node->data.cmd.wordlist, 1); + get_math(av[0], &var, &value, &operator); + DG("var : %s", var); + DG("value : %s", value); + DG("operator : %s", operator); + do_math(&value, operator); + DG("value : %s", value); + builtin_setenv("setenv", (char *[]){var, value, 0}, data_singleton()->local_var); + return (0); +} diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index 3bfc50ce..ac98e0cb 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* exec_while.c :+: :+: :+: */ +/* exec_var.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/03 20:32:27 by wescande ### ########.fr */ +/* Created: 2017/03/07 11:12:05 by ariard #+# #+# */ +/* Updated: 2017/03/07 12:17:13 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index b24b7612..2a8cc5c3 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:08:06 by ariard ### ########.fr */ +/* Updated: 2017/03/07 11:50:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,7 @@ t_execmap g_execmap[] = {TK_CASE, &exec_case}, {TK_PAREN_OPEN, &exec_case_branch}, {TK_ASSIGNEMENT_WORD, &exec_var}, + {MATH, &exec_math}, /* {TK_SUBSHELL, &exec_}, */ {CMD, &exec_cmd}, {0, 0}, diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index f5862cef..4b4d5415 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:36:37 by ariard ### ########.fr */ +/* Updated: 2017/03/07 11:52:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,6 +90,7 @@ int add_pattern(t_btree **ast, t_list **lst) t_token *token; char **my_tab; + DG("add pattern"); token = (*lst)->content; node = (*ast)->item; if ((my_tab = (char **)malloc(sizeof(char *) * 4))) diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index ab3e0ae2..cc481f37 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ -/* Updated: 2017/03/03 14:27:25 by ariard ### ########.fr */ +/* Updated: 2017/03/07 10:49:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,7 +88,7 @@ int add_one_func(t_btree **ast, t_list **lst) t_btree *func_ast; (void)lst; - func_ast = btree_map(*ast, &id); +// func_ast = btree_map(*ast, &id); ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(&func_ast, sizeof(*ast))); DG("arbre ajoute"); return (0); diff --git a/42sh/src/parser/add_var.c b/42sh/src/parser/add_var.c index ad11bf54..db9ce5c2 100644 --- a/42sh/src/parser/add_var.c +++ b/42sh/src/parser/add_var.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 15:08:16 by ariard #+# #+# */ -/* Updated: 2017/03/03 16:17:27 by ariard ### ########.fr */ +/* Updated: 2017/03/07 10:47:43 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 5118a00f288268220bad05119c00bf7532505e03 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Tue, 7 Mar 2017 13:35:40 +0100 Subject: [PATCH 171/206] math ok, parsing io number tjr problemes --- 42sh/src/exec/exec_math.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/42sh/src/exec/exec_math.c b/42sh/src/exec/exec_math.c index 9bf8a3c7..c44ea5f9 100644 --- a/42sh/src/exec/exec_math.c +++ b/42sh/src/exec/exec_math.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 10:58:49 by ariard #+# #+# */ -/* Updated: 2017/03/07 12:19:25 by ariard ### ########.fr */ +/* Updated: 2017/03/07 13:33:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -71,11 +71,7 @@ int exec_math(t_btree **ast) node = (*ast)->item; av = token_to_argv(node->data.cmd.wordlist, 1); get_math(av[0], &var, &value, &operator); - DG("var : %s", var); - DG("value : %s", value); - DG("operator : %s", operator); do_math(&value, operator); - DG("value : %s", value); builtin_setenv("setenv", (char *[]){var, value, 0}, data_singleton()->local_var); return (0); } From a5f186eb592098de705b604bfb3872d85d43336e Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 7 Mar 2017 15:05:04 +0100 Subject: [PATCH 172/206] new process logic --- 42sh/includes/exec.h | 77 +++++++++++++++---------------- 42sh/includes/minishell.h | 2 +- 42sh/includes/types.h | 2 +- 42sh/src/builtin/is_builtin.c | 4 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/ft_exec.c | 4 +- 42sh/src/exec/launch_file.c | 59 +++++++++++++++++++++++ 42sh/src/exec/launch_process.c | 64 +++++++++---------------- 42sh/src/exec/process_setexec.c | 24 +++++----- 42sh/src/exec/set_process.c | 2 +- 42sh/src/hash_table/ft_add_hash.c | 4 +- 42sh/src/main/main.c | 2 +- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/produce_sym.c | 2 +- 14 files changed, 145 insertions(+), 105 deletions(-) create mode 100644 42sh/src/exec/launch_file.c diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 81b783cb..7c9c54a8 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/06 16:56:35 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 15:04:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,19 +16,12 @@ # define PIPE_READ 0 # define PIPE_WRITE 1 -# define PROCESS_BUILTIN (1 << 0) -# define PROCESS_BINARY (1 << 1) -# define PROCESS_SCRIPT (1 << 2) -# define PROCESS_SUBSHELL (1 << 3) -# define PROCESS_UNKNOWN (1 << 4) -# define PROCESS_CONTROL (1 << 5) -# define PROCESS_COMPLETED (1 << 6) -# define PROCESS_SUSPENDED (1 << 7) -# define PROCESS_RUNNING (1 << 8) -# define PROCESS_CONTINUED (1 << 9) +# define PROCESS_COMPLETED (1 << 0) +# define PROCESS_SUSPENDED (1 << 1) +# define PROCESS_RUNNING (1 << 2) +# define PROCESS_CONTINUED (1 << 3) -# define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5) -# define PROCESS_STATE_MASK (1 << 6 | 1 << 7 | 1 << 8 | 1 << 9) +# define PROCESS_STATE_MASK ((1 << 4) - (1 << 0)) # define IS_PIPESTART(p) ((p).fdin == STDIN) # define IS_PIPEEND(p) ((p).fdout == STDOUT) @@ -39,12 +32,13 @@ # define EXEC_OR_IF (1 << 3) # define EXEC_IF_BRANCH (1 << 4) # define EXEC_CASE_BRANCH (1 << 5) + +# define EXEC_AOL_MASK (EXEC_AND_IF | EXEC_OR_IF) + # define EXEC_IS_BG(j) (j & EXEC_BG) # define EXEC_IS_FG(j) (!EXEC_IS_BG(j)) # define EXEC_IS_AND_IF(j) (j & EXEC_AND_IF) # define EXEC_IS_OR_IF(j) (j & EXEC_OR_IF) -# define EXEC_AOL_MASK (EXEC_AND_IF | EXEC_OR_IF) - # define EXEC_IS_IF_BRANCH(j) (j & EXEC_IF_BRANCH) # define EXEC_IS_CASE_BRANCH(j) (j & EXEC_CASE_BRANCH) @@ -52,18 +46,34 @@ # include "types.h" # include "job_control.h" +enum e_process_type +{ + PROCESS_FUNCTION, + PROCESS_BUILTIN, + PROCESS_FILE, + PROCESS_SUBSHELL, + PROCESS_WHILE, + PROCESS_IF, + PROCESS_FOR, + PROCESS_CASE, +}; + +typedef enum e_process_type t_process_type; + struct s_process { - char **av; - char *path; - t_execf *execf; - pid_t pid; - int fdin; - int fdout; - int to_close; - t_list *redirs; - int status; - t_flag attrs; + /* char **av; */ + /* char *path; */ + /* t_execf *execf; */ + t_process_type type; + t_process_data data; + pid_t pid; + int fdin; + int fdout; + int to_close; + t_list *redirs; + int status; + t_flag attrs; }; struct s_exec @@ -77,22 +87,11 @@ struct s_exec int control_count; }; -struct s_execmap -{ - t_type type; - int (*f)(t_btree **ast); -}; - -struct s_redirmap -{ - t_flag type; - int (*f)(t_redir *redir); -}; - #include "minishell.h" -extern t_execmap g_execmap[]; -extern t_redirmap g_redirmap[]; +extern t_itof g_execmap[]; +extern t_itof g_redirmap[]; +extern t_itof g_launchmap[]; int ft_exec(t_btree **ast); diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 59e15890..7fab094a 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/04 16:46:52 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:27:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 68f377fc..237c8902 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:31:28 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:35:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index c0f39c2f..5a9577f8 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/03/02 21:00:13 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 14:43:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,7 +37,7 @@ t_execf *is_builtin(t_process *p) i = -1; while (g_builtin[++i].name) { - if (ft_strcmp(g_builtin[i].name, p->av[0]) == 0) + if (ft_strcmp(g_builtin[i].name, p->data.cmd.av[0]) == 0) return (g_builtin[i].f); } return (NULL); diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index fdf22068..53bf4591 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:03:36 by ariard ### ########.fr */ +/* Updated: 2017/03/07 15:04:00 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index a56782fa..fe167aa0 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,13 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:01:32 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:54:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -t_execmap g_execmap[] = +t_itof g_execmap[] = { {TK_NEWLINE, &exec_semi}, {TK_SEMI, &exec_semi}, diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c new file mode 100644 index 00000000..c482d419 --- /dev/null +++ b/42sh/src/exec/launch_file.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_file.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ +/* Updated: 2017/03/07 14:54:18 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int launch_file(t_process *p) +{ + int pid; + + if (p->attrs & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) + { + if (process_redirect(p)) + return (1); + set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); + return (1); + } + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_RUNNING; + if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT) + && access(p->path, X_OK) == -1) + { + ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); + set_exitstatus(126, 1); + return (1); + } + pid = fork(); + if (pid == 0) + { + if (p->attrs & PROCESS_UNKNOWN) + { + ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); + exit(127); + } + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + if (p->attrs & PROCESS_BUILTIN) + exit((*p->execf)(p->path, p->av, data_singleton()->env)); + (*p->execf)(p->path, p->av, data_singleton()->env); + ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); + } + else if (pid > 0) + { + p->pid = pid; + process_setgroup(p, pid); + return (0); + } + else if (pid == -1) + ft_dprintf(2, "{red}%s: internal fork error{eoc}\n", SHELL_NAME); + return (1); +} diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index c1029d29..ebf4c0eb 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,59 +6,39 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/06 16:20:54 by wescande ### ########.fr */ +/* Updated: 2017/03/07 15:04:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" +t_itof g_launchmap[] = +{ + {PROCESS_FUNCTION, NULL}, + {PROCESS_BUILTIN, NULL}, + {PROCESS_FILE, launch_file}, + {PROCESS_SUBSHELL, NULL}, + {PROCESS_WHILE, NULL}, + {PROCESS_IF, NULL}, + {PROCESS_FOR, NULL}, + {PROCESS_CASE, NULL}, +}; + int launch_process(t_process *p) { - int pid; + int i; + i = 0; /* DG("gonna launch [%s]", p->av[0]); */ /* DG("fdin=[%i]", p->fdin); */ /* DG("fdout=[%i]", p->fdout); */ - if (p->attrs & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) + while (g_launchmap[i].type) { - if (process_redirect(p)) - return (1); - set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); - return (1); + if (p->type == g_launchmap[i].type) + if (!g_launchmap[i].f) + return (-1); + return ((*g_launchmap[i].f)(p)); + i++; } - p->attrs &= ~PROCESS_STATE_MASK; - p->attrs |= PROCESS_RUNNING; - if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT) - && access(p->path, X_OK) == -1) - { - ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); - set_exitstatus(126, 1); - return (1); - } - pid = fork(); - if (pid == 0) - { - if (p->attrs & PROCESS_UNKNOWN) - { - ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); - exit(127); - } - process_setgroup(p, 0); - process_setsig(); - if (process_redirect(p)) - exit (1); - if (p->attrs & PROCESS_BUILTIN) - exit((*p->execf)(p->path, p->av, data_singleton()->env)); - (*p->execf)(p->path, p->av, data_singleton()->env); - ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); - } - else if (pid > 0) - { - p->pid = pid; - process_setgroup(p, pid); - return (0); - } - else if (pid == -1) - ft_dprintf(2, "{red}%s: internal fork error{eoc}\n", SHELL_NAME); - return (1); + return (-1); } diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 0971a463..1114f927 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:26:01 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:49:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,18 +15,20 @@ int process_setexec(t_process *p) { p->path = NULL; - if ((p->execf = is_builtin(p))) - p->attrs |= PROCESS_BUILTIN; - else if (ft_strchr(p->av[0], '/')) - { - p->execf = &execve; - p->attrs |= PROCESS_SCRIPT; - p->path = ft_strdup(p->av[0]); - } + /* if ((p->execf = is_function(p))) */ + /* p->type = PROCESS_FUNCTION; */ + if ((p->data.cmd.execf = is_builtin(p))) + p->type = PROCESS_BUILTIN; else if (ft_hash(p)) { - p->execf = &execve; - p->attrs |= PROCESS_BINARY; + p->data.cmd.execf = &execve; + p->type = PROCESS_FILE; + } + else if (ft_strchr(p->av[0], '/')) + { + p->data.cmd.execf = &execve; + p->type = PROCESS_FILE; + p->data.cmd.path = ft_strdup(p->av[0]); } else { diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 7ec05157..32a67674 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:26:11 by wescande ### ########.fr */ +/* Updated: 2017/03/07 15:02:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/hash_table/ft_add_hash.c b/42sh/src/hash_table/ft_add_hash.c index 055d7654..403ee64d 100644 --- a/42sh/src/hash_table/ft_add_hash.c +++ b/42sh/src/hash_table/ft_add_hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:20:11 by gwojda #+# #+# */ -/* Updated: 2017/03/04 18:51:01 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:43:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,6 @@ int ft_add_hash(t_process *p) hash.key = ft_strdup(p->av[0]); id = ft_hash_str(p->av[0]); ft_lsteadd(&(g_hash[id]), ft_lstnew(&hash, sizeof(t_hash))); - p->path = ft_strdup(hash.path); + p->data.cmd.path = ft_strdup(hash.path); return (1); } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 2576f453..0e3d9c1c 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:39:14 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:40:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 8f0b9597..9dc520c7 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -187,7 +187,7 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, {TK_GREATAND, SEQUENCE}, -// watch ! +// watch ! {TK_GREATAND, CMD_SUPERIOR}, {TK_GREATAND, AND_OR_MAJOR}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c2302123..4556574f 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:12:59 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:36:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From b2af159f64af7a98ef96e34591a1a09bbd3a3afa Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 15:12:20 +0100 Subject: [PATCH 173/206] pour merge --- 42sh/includes/exec.h | 55 ++++++++++++++++++++++++--- 42sh/src/builtin/is_builtin.c | 4 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/exec_while.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/launch_process.c | 16 ++++---- 42sh/src/exec/process_reset.c | 10 +++-- 42sh/src/exec/process_setexec.c | 16 ++++---- 42sh/src/exec/set_process.c | 14 ++----- 42sh/src/exec/set_process_cmd.c | 21 ++++++++++ 42sh/src/exec/set_process_map.c | 51 +++++++++++++++++++++++++ 42sh/src/hash_table/ft_add_hash.c | 10 ++--- 42sh/src/hash_table/is_hash.c | 8 ++-- 42sh/src/job-control/process_format.c | 10 ++--- 42sh/src/job-control/process_free.c | 8 ++-- 42sh/src/lexer/lexer_number.c | 6 ++- 16 files changed, 175 insertions(+), 60 deletions(-) create mode 100644 42sh/src/exec/set_process_cmd.c create mode 100644 42sh/src/exec/set_process_map.c diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index d43904a2..4fc79d2b 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/06 19:16:30 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:41:58 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,15 +48,60 @@ # define EXEC_IS_IF_BRANCH(j) (j & EXEC_IF_BRANCH) # define EXEC_IS_CASE_BRANCH(j) (j & EXEC_CASE_BRANCH) -# include "libft.h" +# include "../libft/includes/libft.h" # include "types.h" # include "job_control.h" +struct s_data_cmd +{ + char **av; + char *path; + t_execf *execf; +}; + +struct s_data_cond +{ + t_btree *condition; + t_btree *content; +}; + +struct s_data_list +{ + char *word; + t_ld *list_word; + t_btree *content; +}; + +union u_process_data +{ + struct s_data_cmd cmd; + struct s_data_cond d_while; + struct s_data_cond d_if; + struct s_data_cond d_else; + struct s_data_cond d_elif; + struct s_data_list d_for; +// struct s_data_cond case; +}; + +typedef union u_process_data t_pdata; +typedef struct s_data_cond t_data_while; +typedef struct s_data_cond t_data_if; struct s_process { - char **av; - char *path; - t_execf *execf; + //normal_cmd +// char **av; +// char *path; +// t_execf *execf; + //while, if, elif .... +// t_btree *condition; +// t_btree *content; + //for => utilisation du av et du content +// char **av; +// t_btree *content; + + + t_pdata data; + pid_t pid; int fdin; int fdout; diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index 43a9aa27..9c1216f0 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/03/07 11:05:55 by gwojda ### ########.fr */ +/* Updated: 2017/03/07 14:39:17 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,7 @@ t_execf *is_builtin(t_process *p) i = -1; while (g_builtin[++i].name) { - if (ft_strcmp(g_builtin[i].name, p->av[0]) == 0) + if (ft_strcmp(g_builtin[i].name, p->data.cmd.av[0]) == 0) return (g_builtin[i].f); } return (NULL); diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 6bbed2be..6a6d04be 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:51:58 by ariard ### ########.fr */ +/* Updated: 2017/03/07 15:03:54 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index e634687a..a2cf6932 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/06 12:27:23 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:33:10 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index b24b7612..cfb28bde 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:08:06 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:33:06 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index c1029d29..e3c006fc 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/06 16:20:54 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:43:48 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,15 +23,15 @@ int launch_process(t_process *p) { if (process_redirect(p)) return (1); - set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); + set_exitstatus((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env), 1); return (1); } p->attrs &= ~PROCESS_STATE_MASK; p->attrs |= PROCESS_RUNNING; if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT) - && access(p->path, X_OK) == -1) + && access(p->data.cmd.path, X_OK) == -1) { - ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); + ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); set_exitstatus(126, 1); return (1); } @@ -40,7 +40,7 @@ int launch_process(t_process *p) { if (p->attrs & PROCESS_UNKNOWN) { - ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); + ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(127); } process_setgroup(p, 0); @@ -48,9 +48,9 @@ int launch_process(t_process *p) if (process_redirect(p)) exit (1); if (p->attrs & PROCESS_BUILTIN) - exit((*p->execf)(p->path, p->av, data_singleton()->env)); - (*p->execf)(p->path, p->av, data_singleton()->env); - ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); + exit((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env)); + (*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env); + ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); } else if (pid > 0) { diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index 7ab34d1d..a3a85852 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:29:17 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:36:21 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,9 @@ void process_reset(t_process *p) { - p->av = NULL; - p->path = NULL; - p->execf = NULL; +// p->av = NULL; +// p->path = NULL; +// p->execf = NULL; p->pid = 0; /* p->fdin = STDIN; */ /* p->fdout = STDOUT; */ @@ -24,4 +24,6 @@ void process_reset(t_process *p) p->redirs = NULL; p->status = -1; p->attrs = 0; +// p->condition = NULL; +// p->content = NULL; } diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 0971a463..46f381c6 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:26:01 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:42:01 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,23 +14,23 @@ int process_setexec(t_process *p) { - p->path = NULL; - if ((p->execf = is_builtin(p))) + p->data.cmd.path = NULL; + if ((p->data.cmd.execf = is_builtin(p))) p->attrs |= PROCESS_BUILTIN; - else if (ft_strchr(p->av[0], '/')) + else if (ft_strchr(p->data.cmd.av[0], '/')) { - p->execf = &execve; + p->data.cmd.execf = &execve; p->attrs |= PROCESS_SCRIPT; - p->path = ft_strdup(p->av[0]); + p->data.cmd.path = ft_strdup(p->data.cmd.av[0]); } else if (ft_hash(p)) { - p->execf = &execve; + p->data.cmd.execf = &execve; p->attrs |= PROCESS_BINARY; } else { - p->execf = NULL; + p->data.cmd.execf = NULL; p->attrs |= PROCESS_UNKNOWN; return (1); } diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 3be94f58..8dedbcb0 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:41:01 by ariard ### ########.fr */ +/* Updated: 2017/03/07 15:07:44 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,8 +28,6 @@ int set_process(t_process *p, t_btree *ast) || (EXEC_IS_OR_IF(exec->attrs) && ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0)) return (1); - if (!(p->av = token_to_argv(cmd->token, 1))) - return (1); fds[PIPE_WRITE] = STDOUT; fds[PIPE_READ] = STDIN; if (op == TK_AMP) @@ -41,14 +39,8 @@ int set_process(t_process *p, t_btree *ast) p->fdout = fds[PIPE_WRITE]; exec->fdin = fds[PIPE_READ]; p->redirs = ft_lstmap(cmd->redir, ft_id); - t_list *tmp = p->redirs; - while (tmp) - { - t_redir *toto = tmp->content; - printf("IIIIIIIIIIIIIIIIIIIIIII%lld |%d| {%s}\n", toto->type, toto->n, toto->word); - tmp= tmp->next; - } - process_setexec(p); + if (set_process_map(p, ast, cmd)) + return (1); if (exec->control_count) p->attrs |= PROCESS_CONTROL; return (0); diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c new file mode 100644 index 00000000..869f5e8f --- /dev/null +++ b/42sh/src/exec/set_process_cmd.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_cmd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ +/* Updated: 2017/03/07 15:07:39 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd) +{ + if (!(p->data.cmd.av = token_to_argv(cmd->token, 1))) + return (1); + process_setexec(p); + return (0); +} diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c new file mode 100644 index 00000000..7959c7ea --- /dev/null +++ b/42sh/src/exec/set_process_map.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_map.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ +/* Updated: 2017/03/07 15:11:17 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +t_setprocessmap g_setprocessmap[] = +{ + {TK_NEWLINE, &exec_semi}, + {TK_SEMI, &exec_semi}, + {TK_AMP, &exec_ampersand}, + {TK_AND_IF, &exec_and_if}, + {TK_OR_IF, &exec_or_if}, + {TK_PIPE, &exec_pipe}, + {TK_WHILE, &exec_while}, + {TK_IF, &exec_if}, + {TK_ELIF, &exec_elif}, + {TK_ELSE, &exec_else}, + {TK_UNTIL, &exec_until}, + {TK_FOR, &exec_for}, + {TK_CASE, &exec_case}, + {TK_PAREN_OPEN, &exec_case_branch}, + {TK_ASSIGNEMENT_WORD, &exec_var}, + /* {TK_SUBSHELL, &exec_}, */ + {CMD, &exec_cmd}, + {0, 0}, +}; + +int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) +{ + int i; + + i = 0; + if (!ast) + return (0); + while (g_execmap[i].type) + { + if (p->type == g_setprocessmap[i].type) + return ((*g_setprocessmap[i].f)(p, ast, cmd)); + i++; + } + return (0); +} diff --git a/42sh/src/hash_table/ft_add_hash.c b/42sh/src/hash_table/ft_add_hash.c index 055d7654..659d126d 100644 --- a/42sh/src/hash_table/ft_add_hash.c +++ b/42sh/src/hash_table/ft_add_hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:20:11 by gwojda #+# #+# */ -/* Updated: 2017/03/04 18:51:01 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:44:52 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,11 +18,11 @@ int ft_add_hash(t_process *p) t_hash hash; if (!(hash.path = ft_findexec( - ft_getenv(data_singleton()->env, "PATH"), p->av[0]))) + ft_getenv(data_singleton()->env, "PATH"), p->data.cmd.av[0]))) return (0); - hash.key = ft_strdup(p->av[0]); - id = ft_hash_str(p->av[0]); + hash.key = ft_strdup(p->data.cmd.av[0]); + id = ft_hash_str(p->data.cmd.av[0]); ft_lsteadd(&(g_hash[id]), ft_lstnew(&hash, sizeof(t_hash))); - p->path = ft_strdup(hash.path); + p->data.cmd.path = ft_strdup(hash.path); return (1); } diff --git a/42sh/src/hash_table/is_hash.c b/42sh/src/hash_table/is_hash.c index 03fdf717..385401e3 100644 --- a/42sh/src/hash_table/is_hash.c +++ b/42sh/src/hash_table/is_hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:08:40 by gwojda #+# #+# */ -/* Updated: 2017/02/18 16:42:12 by gwojda ### ########.fr */ +/* Updated: 2017/03/07 14:45:20 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,12 +18,12 @@ int ft_is_hash(t_process *p) t_list *ref; int id; - id = ft_hash_str(p->av[0]); + id = ft_hash_str(p->data.cmd.av[0]); list = g_hash[id]; ref = list; while (list) { - if (!ft_strcmp(((t_hash *)list->content)->key, p->av[0])) + if (!ft_strcmp(((t_hash *)list->content)->key, p->data.cmd.av[0])) { if (access(((t_hash *)list->content)->path, X_OK)) { @@ -31,7 +31,7 @@ int ft_is_hash(t_process *p) ft_lstdelone(&list, &ft_hash_free); return (0); } - p->path = ft_strdup(((t_hash *)list->content)->path); + p->data.cmd.path = ft_strdup(((t_hash *)list->content)->path); return (1); } ref = list; diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index 9e0f9d62..c8cad1a0 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:32:05 by wescande ### ########.fr */ +/* Updated: 2017/03/07 14:46:12 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,11 +47,11 @@ static void process_format_com_long(t_list **plist) else if (p->attrs & PROCESS_SUBSHELL) { ft_putstr("( "); - ft_putstr(p->av[2]); +// ft_putstr(p->data.cmd.av[2]); ft_putstr(" )"); } else - ft_sstrprint(p->av, ' '); + ft_sstrprint(p->data.cmd.av, ' '); if ((*plist)->next) ft_putstr(" |"); (*plist) = (*plist)->next; @@ -77,11 +77,11 @@ static void process_format_com_short(t_list **plist, t_flag state) else if (p->attrs & PROCESS_SUBSHELL) { ft_putstr("( "); - ft_putstr(p->av[2]); + ft_putstr(p->data.cmd.av[2]); ft_putstr(" )"); } else - ft_sstrprint(p->av, ' '); + ft_sstrprint(p->data.cmd.av, ' '); if ((*plist)->next) ft_putstr(" | "); (*plist) = (*plist)->next; diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index ea62d4bf..d7348c90 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:00:27 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 14:46:41 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,8 +18,8 @@ void process_free(void *content, size_t content_size) (void)content_size; p = content; - ft_strdel(&p->path); - ft_sstrfree(p->av); - /* ft_lstdel(&p->redirs, ft_lst_cfree); */ + ft_strdel(&p->data.cmd.path); + ft_sstrfree(p->data.cmd.av); + ft_lstdel(&p->redirs, ft_lst_cfree); free(p); } diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index b7eb03b4..910dbd7b 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:03:34 by ariard ### ########.fr */ +/* Updated: 2017/03/07 13:55:25 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,7 @@ int lexer_number(t_list **alst, t_lexer *lexer) else if (ft_isdigit(lexer->str[lexer->pos]) && ft_isdigit(lexer->str[lexer->pos + 1])) { + DG(); token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_number(alst, lexer)); @@ -36,13 +37,16 @@ int lexer_number(t_list **alst, t_lexer *lexer) && (lexer->str[lexer->pos + 1] == '>' || lexer->str[lexer->pos + 1] == '<')) { + DG(); token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_lex(&(*alst)->next, lexer)); } else { + DG(); token->type = TK_WORD; + lexer->state = DEFAULT; token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_lex(alst, lexer)); From 74b9f837797e5db1584645f406acb2149ceb3792 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Tue, 7 Mar 2017 15:52:54 +0100 Subject: [PATCH 174/206] renforcement stack + correction erreur syntax --- 42sh/src/main/main.c | 3 ++- 42sh/src/parser/aggregate_sym.c | 12 ++++++++---- 42sh/src/parser/eval_sym.c | 26 +++++++++++++++++++++++++- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/pop_stack.c | 9 +++++---- 42sh/src/parser/produce_sym.c | 4 +++- 6 files changed, 44 insertions(+), 12 deletions(-) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 79ddbe24..7f399ee6 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/06 17:58:39 by ariard ### ########.fr */ +/* Updated: 2017/03/07 14:43:24 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,6 +52,7 @@ int handle_instruction(int fd) token_print(token); if (insert_newline(&token)) return (1); + DG("exit newline"); if (ft_parse(&ast, &token, &parser)) continue ; if (parser.state == SUCCESS) diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 25d6f683..54e8da17 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -99,7 +99,7 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, {NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK}, {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, - + {SEQUENTIAL_SEP, FOR_WORDLIST, SEQUENTIAL_SEP, FOR_WORDLIST}, //to check {FILENAME, TK_LESS, IO_FILE, TK_LESS}, {FILENAME, TK_LESSAND, IO_FILE, TK_LESSAND}, @@ -322,6 +322,8 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) t_sym *head; int i; + if (!*stack || !*new_sym || !*state) + return (1); i = 0; head = (*stack)->content; DG("aggregate head %s && sym %s", @@ -336,13 +338,15 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { - if (pop_stack(stack, g_aggrematch[i].erase_sym)) - return (1); + pop_stack(stack, g_aggrematch[i].erase_sym); head = (*stack)->content; DG("stack after pop: %s", read_state(*head)); } if (eval_sym(stack, *new_sym)) - return ((*state = ERROR)); + { + *state = ERROR; + return (1); + } aggregate_sym(stack, new_sym, state); return (0); } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index d9a3de5c..0d5a3c09 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -343,7 +343,6 @@ t_stackmatch g_stackmatch[] = {TK_LBRACE, CASE_LIST_NS}, {TK_LBRACE, COMPLETE_CONDITION}, {TK_LBRACE, TK_IN}, - {SEQUENTIAL_SEP, NAME}, {TK_RBRACE, TK_SEMI}, {TK_RBRACE, END_COMMAND}, {TK_RBRACE, SEPARATOR_OP}, @@ -412,6 +411,7 @@ t_stackmatch g_stackmatch[] = {SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, WORDLIST}, + {SEQUENTIAL_SEP, FOR_WORDLIST}, {END_COMMAND, SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE}, {END_COMMAND, AND_OR_MAJOR}, @@ -810,6 +810,7 @@ t_stackmatch g_stackmatch[] = {PATTERN, CASE_LIST}, {PATTERN, TK_IN}, {CASE_LIST_NS, LINEBREAK}, + {CASE_LIST_NS, TK_IN}, {CASE_CLAUSE, LINEBREAK}, {CASE_CLAUSE, TK_PAREN_OPEN}, {CASE_CLAUSE, TK_LBRACE}, @@ -987,6 +988,26 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, {SEQUENCE, PIPE_SEMI_SEQUENCE}, + {SEQUENCE, TK_WHILE}, + {SEQUENCE, TK_UNTIL}, + {SEQUENCE, TK_DO}, + {SEQUENCE, TK_PAREN_CLOSE}, + {SEQUENCE, TK_IF}, + {SEQUENCE, TK_ELIF}, + {SEQUENCE, TK_THEN}, + {SEQUENCE, TK_ELSE}, + {SEQUENCE, COMPOUND_LIST}, + {SEQUENCE, CASE_LIST_NS}, + {SEQUENCE, COMPLETE_CONDITION}, + {SEQUENCE, LINEBREAK}, + {SEQUENCE, TK_PAREN_OPEN}, + {SEQUENCE, TK_LBRACE}, + {SEQUENCE, COMPLETE_COMMANDS}, + {SEQUENCE, TK_BANG}, + {SEQUENCE, TK_BANG}, + {SEQUENCE, SEPARATOR_OP}, + {SEQUENCE, NEWLINE_LIST}, + {SEQUENCE, AND_OR_MAJOR}, {SEQUENCE, SEQUENCE}, {PIPELINE, TK_WHILE}, {PIPELINE, TK_UNTIL}, @@ -1038,6 +1059,7 @@ t_stackmatch g_stackmatch[] = {COMPLETE_COMMAND, COMPLETE_COMMANDS}, {COMPLETE_COMMAND, NEWLINE_LIST}, {COMPLETE_COMMANDS, COMPLETE_COMMANDS}, + {PROGRAM, TERMINUS}, {0, 0}, }; @@ -1046,6 +1068,8 @@ int eval_sym(t_list **stack, t_sym new_sym) t_sym *head; int i; + if (!*stack) + return (1); head = (*stack)->content; DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index f87d0bcb..dcd34b83 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -43,7 +43,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else { if (aggregate_sym(&parser->stack, parser->new_sym, &parser->state)) - return (1); + return (0); push_stack(&parser->stack, *parser->new_sym); } // ft_read_stack(parser->stack); diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index 1552953c..59e57a09 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 19:12:44 by ariard #+# #+# */ -/* Updated: 2017/03/06 17:09:00 by ariard ### ########.fr */ +/* Updated: 2017/03/07 15:09:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,13 +17,14 @@ int pop_stack(t_list **stack, t_sym erase_sym) t_sym *head; t_list *temp; - while ((*stack) && *(head = (*stack)->content) != erase_sym) + while ((*stack) && (*(head = (*stack)->content) != erase_sym + && *head != TERMINUS)) { - temp = *stack; + temp = *stack; (*stack) = (*stack)->next; ft_lstdelone(&temp, NULL); } - if (*stack) + if ((*stack) && *(head = (*stack)->content) != TERMINUS) { temp = *stack; (*stack) = (*stack)->next; diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 754f1205..3b60fa5e 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/06 16:43:10 by ariard ### ########.fr */ +/* Updated: 2017/03/07 15:02:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -108,6 +108,8 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) t_sym *head; int i; + if (!*stack || !*lst) + return (1); token = (*lst)->content; head = (*stack)->content; DG("produce stack : %s && token : %s", read_state(*head), From 2a215a65064ee2716df0571bfbc03ddc3abba493 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 7 Mar 2017 16:40:09 +0100 Subject: [PATCH 175/206] launch_file and launch_builtin --- 42sh/libft | 2 +- 42sh/src/exec/exec_command.c | 2 +- 42sh/src/exec/launch_builtin.c | 38 +++++++++++++++++++++++++++++++ 42sh/src/exec/launch_file.c | 36 ++++++++++------------------- 42sh/src/exec/launch_process.c | 15 +++++++++--- 42sh/src/exec/process_setexec.c | 22 +++++++++--------- 42sh/src/hash_table/ft_add_hash.c | 2 +- 42sh/src/hash_table/hash.c | 2 +- 42sh/src/main/data_init.c | 20 ++++------------ 42sh/src/main/main.c | 2 +- 42sh/src/main/shell_init.c | 2 +- 11 files changed, 84 insertions(+), 59 deletions(-) create mode 100644 42sh/src/exec/launch_builtin.c diff --git a/42sh/libft b/42sh/libft index 6a2672a1..bc489f86 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 6a2672a19268c6481525d9aaee5bd35722bbd75a +Subproject commit bc489f8664fdc24317c31b3069811f54b1178643 diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index e3179079..ebff91f8 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:09:45 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:39:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_builtin.c b/42sh/src/exec/launch_builtin.c new file mode 100644 index 00000000..6f79c917 --- /dev/null +++ b/42sh/src/exec/launch_builtin.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_builtin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 15:48:24 by jhalford #+# #+# */ +/* Updated: 2017/03/07 16:39:52 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int launch_builtin(t_process *p) +{ + pid_t pid; + + if (IS_PIPESINGLE(*p)) + { + if (process_redirect(p)) + return (1); + set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); + return (1); + } + pid = fork(); + if (pid == 0) + { + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exit((*p->execf)(p->path, p->av, data_singleton()->env)); + } + else if (pid > 0) + return (0); + else if (pid == -1) + ft_dprintf(2, "{red}%s: internal fork error{eoc}\n", SHELL_NAME); + return (1); +} diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index c482d419..c1e17302 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:54:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:39:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,45 +14,33 @@ int launch_file(t_process *p) { int pid; - if (p->attrs & PROCESS_BUILTIN && IS_PIPESINGLE(*p)) - { - if (process_redirect(p)) - return (1); - set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); - return (1); - } - p->attrs &= ~PROCESS_STATE_MASK; - p->attrs |= PROCESS_RUNNING; - if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT) - && access(p->path, X_OK) == -1) - { - ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); - set_exitstatus(126, 1); - return (1); - } pid = fork(); if (pid == 0) { - if (p->attrs & PROCESS_UNKNOWN) + if (!p->stat) { ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); exit(127); } + else if (IS_DIR(p->stat.st_mode)) + { + ft_dprintf(2, "{red}%s: %s: Is a directory{eoc}\n", SHELL_NAME, p->av[0]); + exit(126); + } + else if (access(p->path, X_OK) == -1) + { + ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); + exit(126); + } process_setgroup(p, 0); process_setsig(); if (process_redirect(p)) exit (1); - if (p->attrs & PROCESS_BUILTIN) - exit((*p->execf)(p->path, p->av, data_singleton()->env)); (*p->execf)(p->path, p->av, data_singleton()->env); ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); } else if (pid > 0) - { - p->pid = pid; - process_setgroup(p, pid); return (0); - } else if (pid == -1) ft_dprintf(2, "{red}%s: internal fork error{eoc}\n", SHELL_NAME); return (1); diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index ebf4c0eb..e9f758e8 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:04:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:39:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ t_itof g_launchmap[] = { {PROCESS_FUNCTION, NULL}, - {PROCESS_BUILTIN, NULL}, + {PROCESS_BUILTIN, launch_builtin}, {PROCESS_FILE, launch_file}, {PROCESS_SUBSHELL, NULL}, {PROCESS_WHILE, NULL}, @@ -35,9 +35,18 @@ int launch_process(t_process *p) while (g_launchmap[i].type) { if (p->type == g_launchmap[i].type) + { if (!g_launchmap[i].f) return (-1); - return ((*g_launchmap[i].f)(p)); + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_RUNNING; + if (!(*g_launchmap[i].f)(p)) + { + p->pid = pid; + process_setgroup(p, pid); + return (0); + } + } i++; } return (-1); diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 1114f927..1f6c66ab 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:49:45 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:39:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,27 +14,27 @@ int process_setexec(t_process *p) { - p->path = NULL; + p->data.cmd.path = NULL; + p->data.cmd.execf = NULL; /* if ((p->execf = is_function(p))) */ /* p->type = PROCESS_FUNCTION; */ if ((p->data.cmd.execf = is_builtin(p))) p->type = PROCESS_BUILTIN; - else if (ft_hash(p)) - { - p->data.cmd.execf = &execve; - p->type = PROCESS_FILE; - } else if (ft_strchr(p->av[0], '/')) { - p->data.cmd.execf = &execve; p->type = PROCESS_FILE; + p->data.cmd.execf = &execve; p->data.cmd.path = ft_strdup(p->av[0]); + stat(p->data.cmd.path, &p->data.cmd.stat); } else { - p->execf = NULL; - p->attrs |= PROCESS_UNKNOWN; - return (1); + p->type = PROCESS_FILE; + if (ft_hash(p)) + { + p->data.cmd.execf = &execve; + lstat(p->data.cmd.path, p->data.cmd.stat); + } } return (0); } diff --git a/42sh/src/hash_table/ft_add_hash.c b/42sh/src/hash_table/ft_add_hash.c index 403ee64d..53b0992c 100644 --- a/42sh/src/hash_table/ft_add_hash.c +++ b/42sh/src/hash_table/ft_add_hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:20:11 by gwojda #+# #+# */ -/* Updated: 2017/03/07 14:43:33 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:02:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/hash_table/hash.c b/42sh/src/hash_table/hash.c index b7022ec5..2276a4e1 100644 --- a/42sh/src/hash_table/hash.c +++ b/42sh/src/hash_table/hash.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/18 11:06:19 by gwojda #+# #+# */ -/* Updated: 2017/03/04 18:50:56 by ariard ### ########.fr */ +/* Updated: 2017/03/07 16:02:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 78d413f7..ce7e2a03 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:45:05 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:38:43 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,14 +23,6 @@ int data_init(void) data->env = ft_sstrdup(environ); data->comp = NULL; data->opts = 0; - /* data->exec.process.path = NULL; */ - /* data->exec.process.av = NULL; */ - /* data->exec.process.to_close = 0; */ - /* data->exec.process.fdin = STDIN; */ - /* data->exec.process.fdout = STDOUT; */ - /* data->exec.process.pid = 0; */ - /* data->exec.process.attributes = 0; */ - /* data->exec.process.redirs = NULL; */ data->exec.fd_save[0] = fcntl(0, F_DUPFD_CLOEXEC); data->exec.fd_save[1] = fcntl(1, F_DUPFD_CLOEXEC); data->exec.fd_save[2] = fcntl(2, F_DUPFD_CLOEXEC); @@ -38,12 +30,10 @@ int data_init(void) data->exec.fdin = STDIN; data->exec.attrs = 0; - /* data->exec.aol_status = NULL; */ - /* data->exec.aol_search = 0; */ - /* data->exec.job.id = 0; */ - /* data->exec.job.pgid = 0; */ - /* data->exec.job.attributes = 0; */ - /* data->exec.job.first_process = 0; */ + data->exec.job.id = 0; + data->exec.job.pgid = 0; + data->exec.job.attrs = 0; + data->exec.job.first_process = NULL; data->jobc.first_job = NULL; data->jobc.current_id = 1; diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index cf6c3dcc..2673700d 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:09:53 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 15:43:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index 272440d7..abf15a8e 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:45:52 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:38:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 29aff9ebb740f60de15de10f2352e8baefd6a5a0 Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 16:43:32 +0100 Subject: [PATCH 176/206] exec en cours --- 42sh/includes/exec.h | 30 ++++++++++++++--------- 42sh/libft | 2 +- 42sh/src/exec/exec_command.c | 29 +++------------------- 42sh/src/exec/exec_leaf.c | 38 +++++++++++++++++++++++++++++ 42sh/src/exec/exec_math.c | 4 +-- 42sh/src/exec/exec_while.c | 34 +++++++++++++++++++++++--- 42sh/src/exec/ft_exec.c | 22 ++++++++--------- 42sh/src/exec/launch_file.c | 18 ++++++++------ 42sh/src/exec/launch_process.c | 7 +++--- 42sh/src/exec/set_process_cmd.c | 2 +- 42sh/src/exec/set_process_map.c | 43 +++++++++++++++++---------------- 42sh/src/exec/token_to_argv.c | 38 +++++++++++++++++++++++++++++ 12 files changed, 180 insertions(+), 87 deletions(-) create mode 100644 42sh/src/exec/exec_leaf.c create mode 100644 42sh/src/exec/token_to_argv.c diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 849a1654..0ddfc138 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:17:21 by wescande ### ########.fr */ +/* Updated: 2017/03/07 16:21:44 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,6 +52,7 @@ struct s_data_cmd char **av; char *path; t_execf *execf; + struct stat stat; }; struct s_data_cond @@ -134,18 +135,19 @@ int exec_or_if(t_btree **ast); int exec_and_if(t_btree **ast); int exec_pipe(t_btree **ast); /* int exec_redir(t_btree **ast); */ -int exec_cmd(t_btree **ast); +//int exec_cmd(t_btree **ast); +int exec_leaf(t_btree **ast); -int exec_while(t_btree **ast); -int exec_if(t_btree **ast); -int exec_elif(t_btree **ast); -int exec_else(t_btree **ast); -int exec_until(t_btree **ast); -int exec_default(t_btree **ast); +//int exec_while(t_btree **ast); +//int exec_if(t_btree **ast); +//int exec_elif(t_btree **ast); +//int exec_else(t_btree **ast); +//int exec_until(t_btree **ast); +//int exec_default(t_btree **ast); int exec_var(t_btree **ast); -int exec_for(t_btree **ast); -int exec_case(t_btree **ast); -int exec_case_branch(t_btree **ast); +//int exec_for(t_btree **ast); +//int exec_case(t_btree **ast); +//int exec_case_branch(t_btree **ast); int exec_math(t_btree **ast); int launch_process(t_process *p); @@ -180,4 +182,10 @@ int add_new_job(t_job *job); int error_badidentifier(char *name); +/* +** Mapping pour set les process +*/ +int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd); + +int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd); #endif diff --git a/42sh/libft b/42sh/libft index bc489f86..4a36b1a5 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit bc489f8664fdc24317c31b3069811f54b1178643 +Subproject commit 4a36b1a5e650ada2f66034d13312367694a6481a diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 1054cc05..b35e7048 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,35 +6,12 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:17:47 by wescande ### ########.fr */ +/* Updated: 2017/03/07 16:22:44 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" - -char **token_to_argv(t_ld *ld, int do_match) -{ - char **my_tab; - int index; - char **expand; - char **content; - - my_tab = NULL; - while (ld) - { - content = ld->content; - if ((expand = glob(content[0], (unsigned char *)content[1], (unsigned char *)content[2], do_match))) - { - index = -1; - while (expand[++index]) - my_tab = ft_sstradd(my_tab, expand[index]); - ft_tabdel(&expand); - } - ld = ld->next; - } - return (my_tab); -} - +/* int exec_cmd(t_btree **ast) { t_process p; @@ -58,4 +35,4 @@ int exec_cmd(t_btree **ast) if (p.fdout != STDOUT) close(p.fdout); return (0); -} +}*/ diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c new file mode 100644 index 00000000..88a36bcc --- /dev/null +++ b/42sh/src/exec/exec_leaf.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_leaf.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ +/* Updated: 2017/03/07 15:50:04 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int exec_leaf(t_btree **ast) +{ + t_process p; + t_job *job; + + job = &data_singleton()->exec.job; + if (set_process(&p, *ast)) + return (1); + if (!(launch_process(&p))) + { + job_addprocess(&p); + if (IS_PIPEEND(p)) + { + if (JOB_IS_FG(job->attrs)) + put_job_in_foreground(job, 0); + else + put_job_in_background(job, 0); + } + job->pgid = 0; + } + if (p.fdout != STDOUT) + close(p.fdout); + return (0); +} diff --git a/42sh/src/exec/exec_math.c b/42sh/src/exec/exec_math.c index e157ef4c..0bbcc8b2 100644 --- a/42sh/src/exec/exec_math.c +++ b/42sh/src/exec/exec_math.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 10:58:49 by ariard #+# #+# */ -/* Updated: 2017/03/07 13:42:11 by ariard ### ########.fr */ +/* Updated: 2017/03/07 16:00:24 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,7 +45,7 @@ static int do_math(char **value, char *operator) ope2 = ft_atoi(&operator[2]); else ope2 = 0; - if (operator[0] == '/' && ope2 == 0) + if ((operator[0] == '/' || operator[0] == '%') && ope2 == 0) ope1 = 0; else { diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index a2cf6932..59699f38 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/07 14:33:10 by wescande ### ########.fr */ +/* Updated: 2017/03/07 16:41:50 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,16 +14,44 @@ int exec_while(t_btree **ast) { + int ret; DG("exec while condition"); ft_exec(&(*ast)->left); DG("ret :[%s]", ft_getenv(data_singleton()->env, "?")); - ++data_singleton()->exec.control_count; while (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0"))) { DG("in the while"); ft_exec(&(*ast)->right); + ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); ft_exec(&(*ast)->left); } - --data_singleton()->exec.control_count; + exit(ret); return (0); } + +static int do_while(t_process *p) +{ + int ret; + return (ret); +} + +int launch_while(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + exit(do_while(p)); + else if (pid > 0) + { + p->pid = pid; + process_setgroup(p, pid); + return (0); + } + } + else + do_while(p); + return (1); +} diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 00043e4b..07b28a64 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:18:27 by wescande ### ########.fr */ +/* Updated: 2017/03/07 16:20:18 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,18 +20,18 @@ t_itof g_execmap[] = {TK_AND_IF, &exec_and_if}, {TK_OR_IF, &exec_or_if}, {TK_PIPE, &exec_pipe}, - {TK_WHILE, &exec_while}, - {TK_IF, &exec_if}, - {TK_ELIF, &exec_elif}, - {TK_ELSE, &exec_else}, - {TK_UNTIL, &exec_until}, - {TK_FOR, &exec_for}, - {TK_CASE, &exec_case}, + {TK_WHILE, &exec_leaf}, + {TK_IF, &exec_leaf}, + {TK_ELIF, &exec_leaf}, + {TK_ELSE, &exec_leaf}, + {TK_UNTIL, &exec_leaf}, + {TK_FOR, &exec_leaf}, + {TK_CASE, &exec_leaf}, {TK_PAREN_OPEN, &exec_case_branch}, {TK_ASSIGNEMENT_WORD, &exec_var}, {MATH, &exec_math}, /* {TK_SUBSHELL, &exec_}, */ - {CMD, &exec_cmd}, + {CMD, &exec_leaf}, {0, 0}, }; @@ -44,9 +44,9 @@ int ft_exec(t_btree **ast) if (!*ast) return (0); item = (*ast)->item; - while (g_execmap[i].type) + while (g_execmap[i].id) { - if (item->type == g_execmap[i].type) + if (item->type == g_execmap[i].id) return ((*g_execmap[i].f)(ast)); i++; } diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index c482d419..3d07abf7 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,10 +6,12 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:54:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 15:53:45 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ +#include "exec.h" + int launch_file(t_process *p) { int pid; @@ -18,15 +20,15 @@ int launch_file(t_process *p) { if (process_redirect(p)) return (1); - set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1); + set_exitstatus((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env), 1); return (1); } p->attrs &= ~PROCESS_STATE_MASK; p->attrs |= PROCESS_RUNNING; if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT) - && access(p->path, X_OK) == -1) + && access(p->data.cmd.path, X_OK) == -1) { - ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]); + ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); set_exitstatus(126, 1); return (1); } @@ -35,7 +37,7 @@ int launch_file(t_process *p) { if (p->attrs & PROCESS_UNKNOWN) { - ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]); + ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(127); } process_setgroup(p, 0); @@ -43,9 +45,9 @@ int launch_file(t_process *p) if (process_redirect(p)) exit (1); if (p->attrs & PROCESS_BUILTIN) - exit((*p->execf)(p->path, p->av, data_singleton()->env)); - (*p->execf)(p->path, p->av, data_singleton()->env); - ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]); + exit((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env)); + (*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env); + ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); } else if (pid > 0) { diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 6b3a1df0..1396f6bd 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:19:05 by wescande ### ########.fr */ +/* Updated: 2017/03/07 15:42:49 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ t_itof g_launchmap[] = {PROCESS_IF, NULL}, {PROCESS_FOR, NULL}, {PROCESS_CASE, NULL}, + {0, NULL} }; int launch_process(t_process *p) @@ -29,9 +30,9 @@ int launch_process(t_process *p) int i; i = 0; - while (g_launchmap[i].type) + while (g_launchmap[i].id) { - if (p->type == g_launchmap[i].type) + if (p->type == g_launchmap[i].id) if (!g_launchmap[i].f) return (-1); return ((*g_launchmap[i].f)(p)); diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index 869f5e8f..e47714e6 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 15:07:39 by wescande ### ########.fr */ +/* Updated: 2017/03/07 15:50:51 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index 7959c7ea..ced5af20 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -6,32 +6,33 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ -/* Updated: 2017/03/07 15:11:17 by wescande ### ########.fr */ +/* Updated: 2017/03/07 15:50:56 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -t_setprocessmap g_setprocessmap[] = +t_itof g_setprocessmap[] = { - {TK_NEWLINE, &exec_semi}, - {TK_SEMI, &exec_semi}, - {TK_AMP, &exec_ampersand}, - {TK_AND_IF, &exec_and_if}, - {TK_OR_IF, &exec_or_if}, - {TK_PIPE, &exec_pipe}, - {TK_WHILE, &exec_while}, - {TK_IF, &exec_if}, - {TK_ELIF, &exec_elif}, - {TK_ELSE, &exec_else}, - {TK_UNTIL, &exec_until}, - {TK_FOR, &exec_for}, - {TK_CASE, &exec_case}, - {TK_PAREN_OPEN, &exec_case_branch}, - {TK_ASSIGNEMENT_WORD, &exec_var}, + {TK_NEWLINE, NULL}, + {TK_SEMI, NULL}, + {TK_AMP, NULL}, + {TK_AND_IF, NULL}, + {TK_OR_IF,NULL}, + {TK_PIPE, NULL}, + {TK_WHILE, NULL}, + {TK_IF, NULL}, + {TK_ELIF, NULL}, + {TK_ELSE, NULL}, + {TK_UNTIL, NULL}, + {TK_FOR, NULL}, + {TK_CASE, NULL}, + {TK_PAREN_OPEN, NULL}, + {TK_ASSIGNEMENT_WORD, NULL}, + {MATH, NULL}, /* {TK_SUBSHELL, &exec_}, */ - {CMD, &exec_cmd}, - {0, 0}, + {CMD, &set_process_cmd}, + {0, NULL} }; int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) @@ -41,9 +42,9 @@ int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) i = 0; if (!ast) return (0); - while (g_execmap[i].type) + while (g_setprocessmap[i].id) { - if (p->type == g_setprocessmap[i].type) + if (p->type == g_setprocessmap[i].id) return ((*g_setprocessmap[i].f)(p, ast, cmd)); i++; } diff --git a/42sh/src/exec/token_to_argv.c b/42sh/src/exec/token_to_argv.c new file mode 100644 index 00000000..ae10fae7 --- /dev/null +++ b/42sh/src/exec/token_to_argv.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* token_to_argv.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 15:55:53 by wescande #+# #+# */ +/* Updated: 2017/03/07 15:56:25 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +char **token_to_argv(t_ld *ld, int do_match) +{ + char **my_tab; + int index; + char **expand; + char **content; + + my_tab = NULL; + while (ld) + { + content = ld->content; + if ((expand = glob(content[0], + (unsigned char *)content[1], + (unsigned char *)content[2], do_match))) + { + index = -1; + while (expand[++index]) + my_tab = ft_sstradd(my_tab, expand[index]); + ft_tabdel(&expand); + } + ld = ld->next; + } + return (my_tab); +} From 764c62cc45a06ab2a3dd16a16dba1d8e941af340 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 7 Mar 2017 18:37:13 +0100 Subject: [PATCH 177/206] changed header layout --- 42sh/includes/builtin.h | 4 +- 42sh/includes/exec.h | 10 +-- 42sh/includes/ft_readline.h | 16 +--- 42sh/includes/glob.h | 31 +------- 42sh/includes/minishell.h | 40 ++-------- 42sh/includes/parser.h | 14 +--- 42sh/includes/types.h | 78 +++++++++++++++++--- 42sh/libft | 2 +- 42sh/src/addls | 1 - 42sh/src/builtin/bt_read_get.c | 2 +- 42sh/src/builtin/bt_read_parse.c | 2 +- 42sh/src/builtin/bt_read_term.c | 2 +- 42sh/src/builtin/builtin_cd.c | 2 +- 42sh/src/builtin/builtin_echo.c | 2 +- 42sh/src/builtin/builtin_read.c | 2 +- 42sh/src/completion/c_binary.c | 2 +- 42sh/src/completion/c_clear.c | 2 +- 42sh/src/completion/c_files.c | 2 +- 42sh/src/completion/c_init.c | 2 +- 42sh/src/completion/c_matching.c | 2 +- 42sh/src/completion/c_misc.c | 2 +- 42sh/src/completion/c_output.c | 2 +- 42sh/src/completion/c_parser.c | 2 +- 42sh/src/completion/c_pathsolver.c | 2 +- 42sh/src/completion/c_printer.c | 2 +- 42sh/src/completion/c_rematch.c | 2 +- 42sh/src/completion/c_sizing.c | 2 +- 42sh/src/completion/c_terminal.c | 2 +- 42sh/src/completion/completion.c | 2 +- 42sh/src/exec/ast_free.c | 4 +- 42sh/src/exec/error_badidentifier.c | 2 +- 42sh/src/exec/exec_ampersand.c | 4 +- 42sh/src/exec/exec_and_if.c | 2 +- 42sh/src/exec/exec_case.c | 2 +- 42sh/src/exec/exec_case_branch.c | 2 +- 42sh/src/exec/exec_command.c | 4 +- 42sh/src/exec/exec_default.c | 2 +- 42sh/src/exec/exec_elif.c | 2 +- 42sh/src/exec/exec_for.c | 2 +- 42sh/src/exec/exec_func.c | 2 +- 42sh/src/exec/exec_if.c | 2 +- 42sh/src/exec/exec_leaf.c | 4 +- 42sh/src/exec/exec_math.c | 2 +- 42sh/src/exec/exec_or_if.c | 2 +- 42sh/src/exec/exec_pipe.c | 2 +- 42sh/src/exec/exec_semi.c | 2 +- 42sh/src/exec/exec_until.c | 2 +- 42sh/src/exec/exec_var.c | 2 +- 42sh/src/exec/exec_while.c | 4 +- 42sh/src/exec/ft_exec.c | 8 +- 42sh/src/exec/launch_builtin.c | 2 +- 42sh/src/exec/launch_file.c | 4 +- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/mark_process_status.c | 2 +- 42sh/src/exec/process_redirect.c | 2 +- 42sh/src/exec/process_reset.c | 2 +- 42sh/src/exec/process_setgroup.c | 4 +- 42sh/src/exec/process_setsig.c | 2 +- 42sh/src/exec/redir_free.c | 2 +- 42sh/src/exec/redirect_dgreat.c | 2 +- 42sh/src/exec/redirect_dless.c | 2 +- 42sh/src/exec/redirect_great.c | 2 +- 42sh/src/exec/redirect_greatand.c | 2 +- 42sh/src/exec/redirect_less.c | 2 +- 42sh/src/exec/redirect_lessand.c | 2 +- 42sh/src/exec/set_process.c | 2 +- 42sh/src/exec/set_process_cmd.c | 2 +- 42sh/src/exec/set_process_map.c | 2 +- 42sh/src/exec/token_to_argv.c | 2 +- 42sh/src/glob/dir_glob.c | 2 +- 42sh/src/glob/esc_print.c | 2 +- 42sh/src/glob/expand_bquote.c | 2 +- 42sh/src/glob/expand_brace.c | 2 +- 42sh/src/glob/expand_esc.c | 2 +- 42sh/src/glob/expand_home.c | 2 +- 42sh/src/glob/expand_var.c | 2 +- 42sh/src/glob/ft_strsplit_esc.c | 2 +- 42sh/src/glob/ft_strsplit_spe.c | 2 +- 42sh/src/glob/glob.c | 2 +- 42sh/src/glob/is_char_esc.c | 2 +- 42sh/src/glob/match_pattern.c | 2 +- 42sh/src/job-control/builtin_bg.c | 2 +- 42sh/src/job-control/builtin_fg.c | 2 +- 42sh/src/job-control/builtin_jobs.c | 2 +- 42sh/src/job-control/do_job_notification.c | 2 +- 42sh/src/job-control/job_addprocess.c | 2 +- 42sh/src/job-control/job_format.c | 2 +- 42sh/src/job-control/job_format_head.c | 2 +- 42sh/src/job-control/job_free.c | 2 +- 42sh/src/job-control/job_getprocess.c | 2 +- 42sh/src/job-control/job_getrank.c | 2 +- 42sh/src/job-control/job_is_completed.c | 2 +- 42sh/src/job-control/job_is_stopped.c | 2 +- 42sh/src/job-control/job_kill_all.c | 2 +- 42sh/src/job-control/job_notify_change.c | 2 +- 42sh/src/job-control/job_notify_new.c | 2 +- 42sh/src/job-control/job_remove.c | 2 +- 42sh/src/job-control/job_run.c | 2 +- 42sh/src/job-control/job_update_status.c | 2 +- 42sh/src/job-control/job_wait.c | 2 +- 42sh/src/job-control/mark_job_as_running.c | 2 +- 42sh/src/job-control/process_format.c | 2 +- 42sh/src/job-control/process_free.c | 2 +- 42sh/src/job-control/put_job_in_background.c | 2 +- 42sh/src/job-control/put_job_in_foreground.c | 2 +- 42sh/src/lexer/get_lexer_stack.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 2 +- 42sh/src/lexer/get_state_global.c | 2 +- 42sh/src/lexer/get_state_redir.c | 2 +- 42sh/src/lexer/insert_newline.c | 2 +- 42sh/src/lexer/lexer_assignement_word.c | 4 +- 42sh/src/lexer/lexer_backslash.c | 2 +- 42sh/src/lexer/lexer_bquote.c | 2 +- 42sh/src/lexer/lexer_curly_braces.c | 2 +- 42sh/src/lexer/lexer_default.c | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_dless.c | 2 +- 42sh/src/lexer/lexer_dquote.c | 2 +- 42sh/src/lexer/lexer_end.c | 2 +- 42sh/src/lexer/lexer_great.c | 2 +- 42sh/src/lexer/lexer_greatand.c | 2 +- 42sh/src/lexer/lexer_init.c | 2 +- 42sh/src/lexer/lexer_less.c | 2 +- 42sh/src/lexer/lexer_lessand.c | 2 +- 42sh/src/lexer/lexer_lex.c | 2 +- 42sh/src/lexer/lexer_newline.c | 2 +- 42sh/src/lexer/lexer_number.c | 2 +- 42sh/src/lexer/lexer_paren.c | 2 +- 42sh/src/lexer/lexer_quote.c | 2 +- 42sh/src/lexer/lexer_sep.c | 2 +- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/lexer/token_cmp_type.c | 2 +- 42sh/src/lexer/token_free.c | 2 +- 42sh/src/lexer/token_init.c | 2 +- 42sh/src/lexer/token_print.c | 2 +- 42sh/src/main/instruction_free.c | 2 +- 42sh/src/parser/add_case.c | 2 +- 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_func.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_math.c | 2 +- 42sh/src/parser/add_number.c | 2 +- 42sh/src/parser/add_redir.c | 2 +- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/add_subshell.c | 2 +- 42sh/src/parser/add_var.c | 2 +- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/build_tree.c | 2 +- 42sh/src/parser/error_syntax.c | 2 +- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/ft_parse.c | 2 +- 42sh/src/parser/parser_init.c | 2 +- 42sh/src/parser/pop_stack.c | 2 +- 42sh/src/parser/produce_sym.c | 2 +- 42sh/src/parser/push_stack.c | 2 +- 42sh/src/parser/read_stack.c | 2 +- 42sh/src/parser/tree_wrapper.c | 2 +- 159 files changed, 249 insertions(+), 269 deletions(-) delete mode 100644 42sh/src/addls diff --git a/42sh/includes/builtin.h b/42sh/includes/builtin.h index 5efa6dff..be6045e4 100644 --- a/42sh/includes/builtin.h +++ b/42sh/includes/builtin.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:21:56 by jhalford #+# #+# */ -/* Updated: 2017/02/27 20:28:37 by ariard ### ########.fr */ +/* Updated: 2017/03/07 17:29:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,4 +32,6 @@ int builtin_bg(const char *path, char *const av[], char *const envp[]); int builtin_history(const char *path, char *const av[], char *const envp[]); int builtin_hash(const char *path, char *const av[], char *const envp[]); +extern t_stof g_builtins[]; + #endif diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 3a84ac84..1d4f65af 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,13 +6,15 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:55:12 by wescande ### ########.fr */ +/* Updated: 2017/03/07 18:35:39 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef EXEC_H # define EXEC_H +# include + # define PIPE_READ 0 # define PIPE_WRITE 1 @@ -42,11 +44,6 @@ # define EXEC_IS_IF_BRANCH(j) (j & EXEC_IF_BRANCH) # define EXEC_IS_CASE_BRANCH(j) (j & EXEC_CASE_BRANCH) -# include "../libft/includes/libft.h" -# include "types.h" -# include "job_control.h" -# include "minishell.h" - struct s_data_cmd { char **av; @@ -178,6 +175,7 @@ void redir_free(void *data, size_t content_size); char **token_to_argv(t_ld *ld, int do_match); +# include int add_new_job(t_job *job); int error_badidentifier(char *name); diff --git a/42sh/includes/ft_readline.h b/42sh/includes/ft_readline.h index 92c78218..419d74df 100644 --- a/42sh/includes/ft_readline.h +++ b/42sh/includes/ft_readline.h @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */ -/* Updated: 2017/02/21 19:51:19 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:36:00 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -54,20 +54,6 @@ # define TOUCHE_F5 892427035 # define TOUCHE_F6 925981467 -/* # define PROMPT_QUOTES "quote> " */ -/* # define PROMPT_DQUOTES "dquote> " */ -/* # define PROMPT_BQUOTES "bquote> " */ -/* # define PROMPT_ACCOLADE "cursh> " */ -/* # define PROMPT_BRACKET "subsh> " */ -/* # define PROMPT_BSLASH "> " */ - -/* # define SIZE_PROMPT_QUOTES 7 */ -/* # define SIZE_PROMPT_DQUOTES 8 */ -/* # define SIZE_PROMPT_BQUOTES 8 */ -/* # define SIZE_PROMPT_ACCOLADE 7 */ -/* # define SIZE_PROMPT_BRACKET 7 */ -/* # define SIZE_PROMPT_BSLASH 2 */ - # define IS_QUOTES (1 << 0) # define IS_BQUOTES (1 << 1) # define IS_DQUOTES (1 << 2) diff --git a/42sh/includes/glob.h b/42sh/includes/glob.h index 26d18d42..f8b965ec 100644 --- a/42sh/includes/glob.h +++ b/42sh/includes/glob.h @@ -6,15 +6,13 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:31:18 by wescande #+# #+# */ -/* Updated: 2017/03/03 20:39:05 by wescande ### ########.fr */ +/* Updated: 2017/03/07 18:18:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef GLOB_H # define GLOB_H -# include "minishell.h" - # define CH(x) ((char **)(x)->content) # define UCH(x) ((unsigned char **)(x)->content) # define SCH(x) ((char **)(x).content) @@ -105,31 +103,4 @@ char **ft_strsplit_spe(const char *str, const unsigned char *esc, char c); unsigned char **ft_strsplit_esc(const char *str, const unsigned char *esc, char c); -/* -** LIST D: -*/ -void ft_ld_new(t_ld **alst, void *content); -t_ld *ft_ld_front(t_ld *ld); -void ft_ld_pushfront(t_ld **alst, void *content); -void ft_ld_pushback(t_ld **alst, void *content); -size_t ft_ld_size(t_ld *ld); -void ft_ld_del(t_ld **ld, void (*del)()); -void ft_ld_clear(t_ld **ld, void (*del)()); -void ft_ld_reverse(t_ld **lst); -t_ld *ft_ld_back(t_ld *ld); -t_ld *ft_ld_swap(t_ld *l_cur); -char **ft_ld_to_tab(t_ld *ld); -t_ld *ft_ld_order(t_ld *ld, int (*f)(), void (*del)()); - -/* -** str: -*/ - -char *ft_strjoinf(char *str, char *str2, int mode); -char *ft_strsubf(char *s, unsigned int start, - size_t len, short int mode); -void ft_tabdel(char ***mytab); -int ft_tablen(char **mytab); - -void *ft_memrealloc(void *ptr, size_t old_s, size_t new_s); #endif diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 7fab094a..0f9c0bab 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:27:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:23:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,12 @@ # define MINISHELL_H # define SHELL_NAME "minishell" +# include +# include +# include +# include +# include + # include "libft.h" # include "types.h" # include "lexer.h" @@ -26,36 +32,6 @@ # include "completion.h" # include "hash.h" -# include -# include -# include -# include -# include -# include - -# define SH_INTERACTIVE (1 << 0) -# define SH_OPTS_JOBC (1 << 1) -# define SH_OPTS_LC (1 << 2) -# define SH_MODE_INPUT (1 << 3) -# define SH_MODE_EXEC (1 << 4) - -# define SH_MODE_MASK (SH_MODE_INPUT | SH_MODE_EXEC) -# define SH_HAS_JOBC(b) (b & SH_OPTS_JOBC) -# define SH_IS_INTERACTIVE(b) (b & SH_INTERACTIVE) -# define SH_NO_INTERACTIVE(b) !(b & SH_INTERACTIVE) - -# define SH_MSG_NOJOBC "no job-control" - -struct s_script -{ - char *buffer; - int fd; - int size; - int lc; -}; - -typedef struct s_script t_script; - struct s_data { char **env; @@ -70,8 +46,6 @@ struct s_data t_list *lst_func; }; -extern t_stof g_builtins[]; - void shell_get_opts(int ac, char **av); char *shell_get_avdata(); void shell_init(int ac, char **av); diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 69bf088f..a144c663 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -12,11 +12,8 @@ #ifndef PARSER_H # define PARSER_H -# include "minishell.h" - /* - * Parse POSIX grammar - * +** Parse POSIX grammar */ enum e_parstate @@ -43,8 +40,6 @@ struct s_aggrematch int erase_sym; }; -extern t_aggrematch g_aggrematch[]; - struct s_prodmatch { t_type token; @@ -52,22 +47,21 @@ struct s_prodmatch t_sym new_sym; }; -extern t_prodmatch g_prodmatch[]; - struct s_stackmatch { t_sym top; t_sym under; }; -extern t_stackmatch g_stackmatch[]; - struct s_errormatch { t_type token; char *error; }; +extern t_aggrematch g_aggrematch[]; +extern t_prodmatch g_prodmatch[]; +extern t_stackmatch g_stackmatch[]; extern t_errormatch g_errormatch[]; void parser_init(t_parser *parser); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 792363f9..6c6da6c3 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,44 +6,71 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:08:17 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef TYPES_H # define TYPES_H -typedef struct s_data t_data; +# include + +# define SH_INTERACTIVE (1 << 0) +# define SH_OPTS_JOBC (1 << 1) +# define SH_OPTS_LC (1 << 2) +# define SH_MODE_INPUT (1 << 3) +# define SH_MODE_EXEC (1 << 4) + +# define SH_MODE_MASK (SH_MODE_INPUT | SH_MODE_EXEC) +# define SH_HAS_JOBC(b) (b & SH_OPTS_JOBC) +# define SH_IS_INTERACTIVE(b) (b & SH_INTERACTIVE) +# define SH_NO_INTERACTIVE(b) !(b & SH_INTERACTIVE) + +# define SH_MSG_NOJOBC "no job-control" typedef long long t_type; typedef long long t_flag; + +typedef struct s_data t_data; typedef struct s_line t_line; typedef struct s_comp t_comp; typedef struct s_exec t_exec; typedef struct s_jobc t_jobc; typedef enum e_mode t_mode; +/* +** Execution types +*/ + typedef struct s_lexer t_lexer; typedef enum e_lexstate t_lexstate; typedef struct s_token t_token; typedef struct s_rvwords t_rvwords; typedef struct s_ld t_ld; + +/* +** Execution types +*/ + +typedef int t_condition; +typedef struct s_job t_job; +typedef struct s_process t_process; +typedef int (t_execf)(const char *path, + char *const argv[], + char *const envp[]); + +/* +** Parser types +*/ + typedef struct s_astnode t_astnode; typedef struct s_redir t_redir; typedef struct s_cmd t_cmd; typedef union u_astdata t_astdata; typedef union u_word t_word; - -typedef int t_condition; -typedef struct s_job t_job; -typedef struct s_execmap t_execmap; -typedef struct s_redirmap t_redirmap; -typedef struct s_process t_process; -typedef int (t_execf)(const char *path, char *const argv[], char *const envp[]); - -typedef int t_sym; typedef struct s_parser t_parser; +typedef int t_sym; typedef enum e_parstate t_parstate; typedef struct s_aggrematch t_aggrematch; typedef struct s_prodmatch t_prodmatch; @@ -169,4 +196,33 @@ enum e_sym TERMINUS = 300, }; +/* +** LIST D: +*/ + +void ft_ld_new(t_ld **alst, void *content); +t_ld *ft_ld_front(t_ld *ld); +void ft_ld_pushfront(t_ld **alst, void *content); +void ft_ld_pushback(t_ld **alst, void *content); +size_t ft_ld_size(t_ld *ld); +void ft_ld_del(t_ld **ld, void (*del)()); +void ft_ld_clear(t_ld **ld, void (*del)()); +void ft_ld_reverse(t_ld **lst); +t_ld *ft_ld_back(t_ld *ld); +t_ld *ft_ld_swap(t_ld *l_cur); +char **ft_ld_to_tab(t_ld *ld); +t_ld *ft_ld_order(t_ld *ld, int (*f)(), void (*del)()); + +/* +** str: +*/ + +char *ft_strjoinf(char *str, char *str2, int mode); +char *ft_strsubf(char *s, unsigned int start, + size_t len, short int mode); +void ft_tabdel(char ***mytab); +int ft_tablen(char **mytab); + +void *ft_memrealloc(void *ptr, size_t old_s, size_t new_s); + #endif diff --git a/42sh/libft b/42sh/libft index 4a36b1a5..bc489f86 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 4a36b1a5e650ada2f66034d13312367694a6481a +Subproject commit bc489f8664fdc24317c31b3069811f54b1178643 diff --git a/42sh/src/addls b/42sh/src/addls deleted file mode 100644 index 8b137891..00000000 --- a/42sh/src/addls +++ /dev/null @@ -1 +0,0 @@ - diff --git a/42sh/src/builtin/bt_read_get.c b/42sh/src/builtin/bt_read_get.c index f2e70ab1..575d694e 100644 --- a/42sh/src/builtin/bt_read_get.c +++ b/42sh/src/builtin/bt_read_get.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "builtin_read.h" +#include "minishell.h" int bt_read_getdelim(t_read *data, char *arg) { diff --git a/42sh/src/builtin/bt_read_parse.c b/42sh/src/builtin/bt_read_parse.c index 15aaff94..d79c754c 100644 --- a/42sh/src/builtin/bt_read_parse.c +++ b/42sh/src/builtin/bt_read_parse.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "builtin_read.h" +#include "minishell.h" static t_readopt *bt_read_getopt(char letter) { diff --git a/42sh/src/builtin/bt_read_term.c b/42sh/src/builtin/bt_read_term.c index 131eaaf7..b0a7477b 100644 --- a/42sh/src/builtin/bt_read_term.c +++ b/42sh/src/builtin/bt_read_term.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "builtin.h" +#include "minishell.h" struct termios bt_read_term(int init) { diff --git a/42sh/src/builtin/builtin_cd.c b/42sh/src/builtin/builtin_cd.c index 4884205e..e3ace609 100644 --- a/42sh/src/builtin/builtin_cd.c +++ b/42sh/src/builtin/builtin_cd.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "builtin.h" +#include "minishell.h" #define CDOPT_L (1 << 0) #define CDOPT_P (1 << 1) diff --git a/42sh/src/builtin/builtin_echo.c b/42sh/src/builtin/builtin_echo.c index f84c9123..2fd4f3de 100644 --- a/42sh/src/builtin/builtin_echo.c +++ b/42sh/src/builtin/builtin_echo.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "builtin.h" +#include "minishell.h" int builtin_echo(const char *path, char *const av[], char *const envp[]) { diff --git a/42sh/src/builtin/builtin_read.c b/42sh/src/builtin/builtin_read.c index cba5e4e6..264f2b3b 100644 --- a/42sh/src/builtin/builtin_read.c +++ b/42sh/src/builtin/builtin_read.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "builtin_read.h" +#include "minishell.h" t_readopt g_readtab[] = { diff --git a/42sh/src/completion/c_binary.c b/42sh/src/completion/c_binary.c index bccc73d8..bf359ca4 100644 --- a/42sh/src/completion/c_binary.c +++ b/42sh/src/completion/c_binary.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Retrieve the path from the env and create a char ** from the PATH pattern. diff --git a/42sh/src/completion/c_clear.c b/42sh/src/completion/c_clear.c index 815d12b5..80f6f3fb 100644 --- a/42sh/src/completion/c_clear.c +++ b/42sh/src/completion/c_clear.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Clear the list from the memory diff --git a/42sh/src/completion/c_files.c b/42sh/src/completion/c_files.c index dba7bc4f..5931ca22 100644 --- a/42sh/src/completion/c_files.c +++ b/42sh/src/completion/c_files.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** If the parsing for local file fail. The function is called to check if the diff --git a/42sh/src/completion/c_init.c b/42sh/src/completion/c_init.c index d9701694..5b5c6934 100644 --- a/42sh/src/completion/c_init.c +++ b/42sh/src/completion/c_init.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Trim if there's many commands in a raw separed with a semi colon. diff --git a/42sh/src/completion/c_matching.c b/42sh/src/completion/c_matching.c index 761f6ef3..25936087 100644 --- a/42sh/src/completion/c_matching.c +++ b/42sh/src/completion/c_matching.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Start the parsing for the autocompletion. diff --git a/42sh/src/completion/c_misc.c b/42sh/src/completion/c_misc.c index fbdd425a..eb740791 100644 --- a/42sh/src/completion/c_misc.c +++ b/42sh/src/completion/c_misc.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Support: Return the size of a char**. diff --git a/42sh/src/completion/c_output.c b/42sh/src/completion/c_output.c index 6b9f280d..6704ad3a 100644 --- a/42sh/src/completion/c_output.c +++ b/42sh/src/completion/c_output.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Update of the struct data. diff --git a/42sh/src/completion/c_parser.c b/42sh/src/completion/c_parser.c index f611f4df..3788ff73 100644 --- a/42sh/src/completion/c_parser.c +++ b/42sh/src/completion/c_parser.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Add the matching element to the list diff --git a/42sh/src/completion/c_pathsolver.c b/42sh/src/completion/c_pathsolver.c index 752d874d..6ab88f40 100644 --- a/42sh/src/completion/c_pathsolver.c +++ b/42sh/src/completion/c_pathsolver.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Solve the tilde pattern in the path diff --git a/42sh/src/completion/c_printer.c b/42sh/src/completion/c_printer.c index f43163de..c46fd10d 100644 --- a/42sh/src/completion/c_printer.c +++ b/42sh/src/completion/c_printer.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Print the name with or without an underline and colored upon file type diff --git a/42sh/src/completion/c_rematch.c b/42sh/src/completion/c_rematch.c index 13421f70..6771e656 100644 --- a/42sh/src/completion/c_rematch.c +++ b/42sh/src/completion/c_rematch.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Recreate a c->match value by adding the new key pressed to it. diff --git a/42sh/src/completion/c_sizing.c b/42sh/src/completion/c_sizing.c index 2d7adda9..559b3329 100644 --- a/42sh/src/completion/c_sizing.c +++ b/42sh/src/completion/c_sizing.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Get the max length from the list diff --git a/42sh/src/completion/c_terminal.c b/42sh/src/completion/c_terminal.c index 1b5d28a2..58d01bd7 100644 --- a/42sh/src/completion/c_terminal.c +++ b/42sh/src/completion/c_terminal.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Clear the previous list from the screen and restore the same position. diff --git a/42sh/src/completion/completion.c b/42sh/src/completion/completion.c index 42705b56..ba4717c7 100644 --- a/42sh/src/completion/completion.c +++ b/42sh/src/completion/completion.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "completion.h" +#include "minishell.h" /* ** Function to select the next item in the list if it has already been created diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index 4975673e..e9577366 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:05:43 by ariard ### ########.fr */ +/* Updated: 2017/03/07 18:34:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" void read_redir(void *data) { diff --git a/42sh/src/exec/error_badidentifier.c b/42sh/src/exec/error_badidentifier.c index 9883f60d..9238d892 100644 --- a/42sh/src/exec/error_badidentifier.c +++ b/42sh/src/exec/error_badidentifier.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int error_badidentifier(char *name) { diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index 4480fc2e..a95c357c 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:35:21 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:24:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_ampersand(t_btree **ast) { diff --git a/42sh/src/exec/exec_and_if.c b/42sh/src/exec/exec_and_if.c index 42ee38a7..b37c2fbc 100644 --- a/42sh/src/exec/exec_and_if.c +++ b/42sh/src/exec/exec_and_if.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_and_if(t_btree **ast) { diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/exec_case.c index ed982dac..6df7a837 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/exec_case.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_case(t_btree **ast) { diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index 2d0db420..552f8c83 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_case_branch(t_btree **ast) { diff --git a/42sh/src/exec/exec_command.c b/42sh/src/exec/exec_command.c index 5871991b..db331164 100644 --- a/42sh/src/exec/exec_command.c +++ b/42sh/src/exec/exec_command.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:43:48 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:33:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" /* int exec_cmd(t_btree **ast) { diff --git a/42sh/src/exec/exec_default.c b/42sh/src/exec/exec_default.c index 287cc995..796a10a7 100644 --- a/42sh/src/exec/exec_default.c +++ b/42sh/src/exec/exec_default.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_default(t_btree **ast) { diff --git a/42sh/src/exec/exec_elif.c b/42sh/src/exec/exec_elif.c index 34ad5d9a..c4a5fa4a 100644 --- a/42sh/src/exec/exec_elif.c +++ b/42sh/src/exec/exec_elif.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_elif(t_btree **ast) { diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c index 632f5773..cd147533 100644 --- a/42sh/src/exec/exec_for.c +++ b/42sh/src/exec/exec_for.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_for(t_btree **ast) { diff --git a/42sh/src/exec/exec_func.c b/42sh/src/exec/exec_func.c index a4a34f66..7255d850 100644 --- a/42sh/src/exec/exec_func.c +++ b/42sh/src/exec/exec_func.c @@ -10,6 +10,6 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/exec_if.c index c1a59aef..493f4237 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/exec_if.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_if(t_btree **ast) { diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index 88a36bcc..e237cb99 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/07 15:50:04 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:34:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_leaf(t_btree **ast) { diff --git a/42sh/src/exec/exec_math.c b/42sh/src/exec/exec_math.c index 0bbcc8b2..7f9c994a 100644 --- a/42sh/src/exec/exec_math.c +++ b/42sh/src/exec/exec_math.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" static int get_math(char *stream, char **var, char **value, char **operator) { diff --git a/42sh/src/exec/exec_or_if.c b/42sh/src/exec/exec_or_if.c index 5cc45a5e..50def42a 100644 --- a/42sh/src/exec/exec_or_if.c +++ b/42sh/src/exec/exec_or_if.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_or_if(t_btree **ast) { diff --git a/42sh/src/exec/exec_pipe.c b/42sh/src/exec/exec_pipe.c index 63c280c0..3668da9e 100644 --- a/42sh/src/exec/exec_pipe.c +++ b/42sh/src/exec/exec_pipe.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_pipe(t_btree **ast) { diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index c7848424..4a0d2699 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_semi(t_btree **ast) { diff --git a/42sh/src/exec/exec_until.c b/42sh/src/exec/exec_until.c index eb0ebff2..c8b4943a 100644 --- a/42sh/src/exec/exec_until.c +++ b/42sh/src/exec/exec_until.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_until(t_btree **ast) { diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index b01c2f39..29e49b76 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" static int set_var(char *stream, char **var, char **value) { diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 59699f38..a2cbd194 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,11 +6,11 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/07 16:41:50 by wescande ### ########.fr */ +/* Updated: 2017/03/07 18:35:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int exec_while(t_btree **ast) { diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 07b28a64..de7451eb 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:20:18 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:00:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" t_itof g_execmap[] = { @@ -22,7 +22,7 @@ t_itof g_execmap[] = {TK_PIPE, &exec_pipe}, {TK_WHILE, &exec_leaf}, {TK_IF, &exec_leaf}, - {TK_ELIF, &exec_leaf}, + {TK_ELIF, &exec_elif}, {TK_ELSE, &exec_leaf}, {TK_UNTIL, &exec_leaf}, {TK_FOR, &exec_leaf}, @@ -30,7 +30,7 @@ t_itof g_execmap[] = {TK_PAREN_OPEN, &exec_case_branch}, {TK_ASSIGNEMENT_WORD, &exec_var}, {MATH, &exec_math}, - /* {TK_SUBSHELL, &exec_}, */ + /* {TK_SUBSHELL, &exec_leaf}, */ {CMD, &exec_leaf}, {0, 0}, }; diff --git a/42sh/src/exec/launch_builtin.c b/42sh/src/exec/launch_builtin.c index 392c238d..aed14ec5 100644 --- a/42sh/src/exec/launch_builtin.c +++ b/42sh/src/exec/launch_builtin.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int launch_builtin(t_process *p) { diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index 7f4a1b65..149a9b54 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:49:31 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:02:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int launch_file(t_process *p) { diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index a2d75362..db41b562 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:49:10 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:04:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/mark_process_status.c b/42sh/src/exec/mark_process_status.c index eeca4a86..ecc3c9ea 100644 --- a/42sh/src/exec/mark_process_status.c +++ b/42sh/src/exec/mark_process_status.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int mark_process_status(pid_t pid, int status) { diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index 2bb7f19d..3e9b2460 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" t_redirmap g_redirmap[] = { diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index a3a85852..3b5c065e 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" void process_reset(t_process *p) { diff --git a/42sh/src/exec/process_setgroup.c b/42sh/src/exec/process_setgroup.c index 8654d2f8..60caf7e9 100644 --- a/42sh/src/exec/process_setgroup.c +++ b/42sh/src/exec/process_setgroup.c @@ -10,8 +10,8 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" -#include "exec.h" +#include "minishell.h" +#include "minishell.h" int process_setgroup(t_process *p, pid_t pid) { diff --git a/42sh/src/exec/process_setsig.c b/42sh/src/exec/process_setsig.c index b2a68b09..821137ea 100644 --- a/42sh/src/exec/process_setsig.c +++ b/42sh/src/exec/process_setsig.c @@ -1,4 +1,4 @@ -#include "exec.h" +#include "minishell.h" void process_setsig(void) { diff --git a/42sh/src/exec/redir_free.c b/42sh/src/exec/redir_free.c index 5befbe63..fa19403f 100644 --- a/42sh/src/exec/redir_free.c +++ b/42sh/src/exec/redir_free.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" void redir_free(void *data, size_t content_size) { diff --git a/42sh/src/exec/redirect_dgreat.c b/42sh/src/exec/redirect_dgreat.c index f890172b..66fc6881 100644 --- a/42sh/src/exec/redirect_dgreat.c +++ b/42sh/src/exec/redirect_dgreat.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int redirect_dgreat(t_redir *redir) { diff --git a/42sh/src/exec/redirect_dless.c b/42sh/src/exec/redirect_dless.c index 0244098d..9a1a7873 100644 --- a/42sh/src/exec/redirect_dless.c +++ b/42sh/src/exec/redirect_dless.c @@ -9,7 +9,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int redirect_dless(t_redir *redir) { diff --git a/42sh/src/exec/redirect_great.c b/42sh/src/exec/redirect_great.c index fee82964..13810ae4 100644 --- a/42sh/src/exec/redirect_great.c +++ b/42sh/src/exec/redirect_great.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int redirect_great(t_redir* redir) { diff --git a/42sh/src/exec/redirect_greatand.c b/42sh/src/exec/redirect_greatand.c index 002375e8..d2bf02aa 100644 --- a/42sh/src/exec/redirect_greatand.c +++ b/42sh/src/exec/redirect_greatand.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int redirect_greatand(t_redir *redir) { diff --git a/42sh/src/exec/redirect_less.c b/42sh/src/exec/redirect_less.c index c8df2f62..2a1e6809 100644 --- a/42sh/src/exec/redirect_less.c +++ b/42sh/src/exec/redirect_less.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int redirect_less(t_redir *redir) { diff --git a/42sh/src/exec/redirect_lessand.c b/42sh/src/exec/redirect_lessand.c index bb9987d6..9c184b82 100644 --- a/42sh/src/exec/redirect_lessand.c +++ b/42sh/src/exec/redirect_lessand.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int redirect_lessand(t_redir *redir) { diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index b99307ed..9e9f1764 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int set_process(t_process *p, t_btree *ast) { diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index e47714e6..022e0305 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd) { diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index ced5af20..004bb01a 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" t_itof g_setprocessmap[] = { diff --git a/42sh/src/exec/token_to_argv.c b/42sh/src/exec/token_to_argv.c index ae10fae7..10b2c192 100644 --- a/42sh/src/exec/token_to_argv.c +++ b/42sh/src/exec/token_to_argv.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" char **token_to_argv(t_ld *ld, int do_match) { diff --git a/42sh/src/glob/dir_glob.c b/42sh/src/glob/dir_glob.c index f4be218d..2e9f3281 100644 --- a/42sh/src/glob/dir_glob.c +++ b/42sh/src/glob/dir_glob.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" int is_directory(const char *path) { diff --git a/42sh/src/glob/esc_print.c b/42sh/src/glob/esc_print.c index 44de1fb5..504e95bd 100644 --- a/42sh/src/glob/esc_print.c +++ b/42sh/src/glob/esc_print.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void esc_print(char *str, unsigned char *esc) { diff --git a/42sh/src/glob/expand_bquote.c b/42sh/src/glob/expand_bquote.c index 7c7c0667..d09f7c17 100644 --- a/42sh/src/glob/expand_bquote.c +++ b/42sh/src/glob/expand_bquote.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" static void expand_all_bquote(t_bquote *me, char *content, char *ifs) diff --git a/42sh/src/glob/expand_brace.c b/42sh/src/glob/expand_brace.c index c0055817..1a77bf28 100644 --- a/42sh/src/glob/expand_brace.c +++ b/42sh/src/glob/expand_brace.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" /* ** expand_brace return expansion of a string. diff --git a/42sh/src/glob/expand_esc.c b/42sh/src/glob/expand_esc.c index f66bf422..d5b8104e 100644 --- a/42sh/src/glob/expand_esc.c +++ b/42sh/src/glob/expand_esc.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" unsigned char *calc_expand_esc(const unsigned char *esc, int nb_start, int *nb_middle, int *nb_end) diff --git a/42sh/src/glob/expand_home.c b/42sh/src/glob/expand_home.c index 79c56448..d9c325a7 100644 --- a/42sh/src/glob/expand_home.c +++ b/42sh/src/glob/expand_home.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void do_expand_home(t_bquote *me, char *home) { diff --git a/42sh/src/glob/expand_var.c b/42sh/src/glob/expand_var.c index ed163a76..1de56e57 100644 --- a/42sh/src/glob/expand_var.c +++ b/42sh/src/glob/expand_var.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" /* ** expand_var return value of $var in the string. diff --git a/42sh/src/glob/ft_strsplit_esc.c b/42sh/src/glob/ft_strsplit_esc.c index 6e050cb7..897b4eb3 100644 --- a/42sh/src/glob/ft_strsplit_esc.c +++ b/42sh/src/glob/ft_strsplit_esc.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" static int ft_strlen_c(const char *str, const char *fix, const unsigned char *esc, char c) diff --git a/42sh/src/glob/ft_strsplit_spe.c b/42sh/src/glob/ft_strsplit_spe.c index 3d69627c..cc65dcf2 100644 --- a/42sh/src/glob/ft_strsplit_spe.c +++ b/42sh/src/glob/ft_strsplit_spe.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" static int ft_strlen_c(const char *str, const char *fix, const unsigned char *esc, char c) diff --git a/42sh/src/glob/glob.c b/42sh/src/glob/glob.c index 91b58a4a..b44b5c89 100644 --- a/42sh/src/glob/glob.c +++ b/42sh/src/glob/glob.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" /* ** glob return expansion of a string. diff --git a/42sh/src/glob/is_char_esc.c b/42sh/src/glob/is_char_esc.c index 13061165..0f83bff6 100644 --- a/42sh/src/glob/is_char_esc.c +++ b/42sh/src/glob/is_char_esc.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" int is_char_esc(const unsigned char *esc, const char *ini_str, const char *str_pos) diff --git a/42sh/src/glob/match_pattern.c b/42sh/src/glob/match_pattern.c index d98fd7e2..f3573fe5 100644 --- a/42sh/src/glob/match_pattern.c +++ b/42sh/src/glob/match_pattern.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" static int match_bracket_char(char **cmp, const char *pat, char c, int neg) { diff --git a/42sh/src/job-control/builtin_bg.c b/42sh/src/job-control/builtin_bg.c index f58a1d1e..99eb37fc 100644 --- a/42sh/src/job-control/builtin_bg.c +++ b/42sh/src/job-control/builtin_bg.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int builtin_bg(const char *path, char *const av[], char *const envp[]) { diff --git a/42sh/src/job-control/builtin_fg.c b/42sh/src/job-control/builtin_fg.c index 50d9cb69..9e7720f6 100644 --- a/42sh/src/job-control/builtin_fg.c +++ b/42sh/src/job-control/builtin_fg.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int builtin_fg(const char *path, char *const av[], char *const envp[]) { diff --git a/42sh/src/job-control/builtin_jobs.c b/42sh/src/job-control/builtin_jobs.c index f2a83ee0..70395bf6 100644 --- a/42sh/src/job-control/builtin_jobs.c +++ b/42sh/src/job-control/builtin_jobs.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" static int bt_jobs_parse(char **av, int *i) { diff --git a/42sh/src/job-control/do_job_notification.c b/42sh/src/job-control/do_job_notification.c index 0e2aeef6..48829692 100644 --- a/42sh/src/job-control/do_job_notification.c +++ b/42sh/src/job-control/do_job_notification.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int do_job_notification(void) { diff --git a/42sh/src/job-control/job_addprocess.c b/42sh/src/job-control/job_addprocess.c index 8afe2cee..42c5229e 100644 --- a/42sh/src/job-control/job_addprocess.c +++ b/42sh/src/job-control/job_addprocess.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int job_addprocess(t_process *p) { diff --git a/42sh/src/job-control/job_format.c b/42sh/src/job-control/job_format.c index 5c811a86..dde4e0fb 100644 --- a/42sh/src/job-control/job_format.c +++ b/42sh/src/job-control/job_format.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_format(t_job *j, int opts) { diff --git a/42sh/src/job-control/job_format_head.c b/42sh/src/job-control/job_format_head.c index c7b8854f..f874933e 100644 --- a/42sh/src/job-control/job_format_head.c +++ b/42sh/src/job-control/job_format_head.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_format_head(t_job *j) { diff --git a/42sh/src/job-control/job_free.c b/42sh/src/job-control/job_free.c index db63e7f2..7046cfe7 100644 --- a/42sh/src/job-control/job_free.c +++ b/42sh/src/job-control/job_free.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_free(void *content, size_t content_size) { diff --git a/42sh/src/job-control/job_getprocess.c b/42sh/src/job-control/job_getprocess.c index 3ad82217..17eec5d2 100644 --- a/42sh/src/job-control/job_getprocess.c +++ b/42sh/src/job-control/job_getprocess.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" t_list *job_getprocess(pid_t pid) { diff --git a/42sh/src/job-control/job_getrank.c b/42sh/src/job-control/job_getrank.c index f07263e0..6da80d6b 100644 --- a/42sh/src/job-control/job_getrank.c +++ b/42sh/src/job-control/job_getrank.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_getrank(int (*rank)[2]) { diff --git a/42sh/src/job-control/job_is_completed.c b/42sh/src/job-control/job_is_completed.c index 9742515a..c289614f 100644 --- a/42sh/src/job-control/job_is_completed.c +++ b/42sh/src/job-control/job_is_completed.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int job_is_completed(int id) { diff --git a/42sh/src/job-control/job_is_stopped.c b/42sh/src/job-control/job_is_stopped.c index b7c20a91..60eed462 100644 --- a/42sh/src/job-control/job_is_stopped.c +++ b/42sh/src/job-control/job_is_stopped.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int job_is_stopped(int id) { diff --git a/42sh/src/job-control/job_kill_all.c b/42sh/src/job-control/job_kill_all.c index 1d36a8a6..ded01abd 100644 --- a/42sh/src/job-control/job_kill_all.c +++ b/42sh/src/job-control/job_kill_all.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_kill_all(void) { diff --git a/42sh/src/job-control/job_notify_change.c b/42sh/src/job-control/job_notify_change.c index fd6c7728..3ec46e79 100644 --- a/42sh/src/job-control/job_notify_change.c +++ b/42sh/src/job-control/job_notify_change.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_notify_change(int id) { diff --git a/42sh/src/job-control/job_notify_new.c b/42sh/src/job-control/job_notify_new.c index 1b39f0ea..d19feb96 100644 --- a/42sh/src/job-control/job_notify_new.c +++ b/42sh/src/job-control/job_notify_new.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_notify_new(t_job *job) { diff --git a/42sh/src/job-control/job_remove.c b/42sh/src/job-control/job_remove.c index 2ffe9c8a..794a6c44 100644 --- a/42sh/src/job-control/job_remove.c +++ b/42sh/src/job-control/job_remove.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_remove(int id) { diff --git a/42sh/src/job-control/job_run.c b/42sh/src/job-control/job_run.c index bd9d0f48..412af6df 100644 --- a/42sh/src/job-control/job_run.c +++ b/42sh/src/job-control/job_run.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_run(t_job *job, int foreground) { diff --git a/42sh/src/job-control/job_update_status.c b/42sh/src/job-control/job_update_status.c index 5e314792..cae2b934 100644 --- a/42sh/src/job-control/job_update_status.c +++ b/42sh/src/job-control/job_update_status.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void job_update_status(void) { diff --git a/42sh/src/job-control/job_wait.c b/42sh/src/job-control/job_wait.c index 38f18f8f..966b5f3c 100644 --- a/42sh/src/job-control/job_wait.c +++ b/42sh/src/job-control/job_wait.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int job_wait(int id) { diff --git a/42sh/src/job-control/mark_job_as_running.c b/42sh/src/job-control/mark_job_as_running.c index 3d5f3cfb..ae34335f 100644 --- a/42sh/src/job-control/mark_job_as_running.c +++ b/42sh/src/job-control/mark_job_as_running.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void mark_job_as_running(t_job *j) { diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index c8cad1a0..8954b13d 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" static void process_format_state(t_process *p) { diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index d7348c90..f4e0047c 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" void process_free(void *content, size_t content_size) { diff --git a/42sh/src/job-control/put_job_in_background.c b/42sh/src/job-control/put_job_in_background.c index 895b58a9..8498bea7 100644 --- a/42sh/src/job-control/put_job_in_background.c +++ b/42sh/src/job-control/put_job_in_background.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int put_job_in_background(t_job *j, int cont) { diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index c5b75d0b..67570957 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "job_control.h" +#include "minishell.h" int put_job_in_foreground(t_job *j, int cont) { diff --git a/42sh/src/lexer/get_lexer_stack.c b/42sh/src/lexer/get_lexer_stack.c index a574564c..fc224539 100644 --- a/42sh/src/lexer/get_lexer_stack.c +++ b/42sh/src/lexer/get_lexer_stack.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int get_lexer_stack(t_lexer lexer) { diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 4d14e54d..e1c525ff 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" t_rvwords g_rvwords[] = diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index d0ab9d18..f4756dcd 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" t_lexstate get_state_global(t_lexer *lexer) { diff --git a/42sh/src/lexer/get_state_redir.c b/42sh/src/lexer/get_state_redir.c index 6ea22d94..d4d60d3b 100644 --- a/42sh/src/lexer/get_state_redir.c +++ b/42sh/src/lexer/get_state_redir.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" t_lexstate get_state_redir(t_lexer *lexer) { diff --git a/42sh/src/lexer/insert_newline.c b/42sh/src/lexer/insert_newline.c index 6d39ec5d..7a24a0ca 100644 --- a/42sh/src/lexer/insert_newline.c +++ b/42sh/src/lexer/insert_newline.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int insert_newline(t_list **alst) { diff --git a/42sh/src/lexer/lexer_assignement_word.c b/42sh/src/lexer/lexer_assignement_word.c index a6bae9dd..2f802e33 100644 --- a/42sh/src/lexer/lexer_assignement_word.c +++ b/42sh/src/lexer/lexer_assignement_word.c @@ -6,11 +6,11 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 20:28:13 by ariard #+# #+# */ -/* Updated: 2017/03/02 19:11:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:36:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_assignement_word(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_backslash.c b/42sh/src/lexer/lexer_backslash.c index abd2a95c..3418e2a2 100644 --- a/42sh/src/lexer/lexer_backslash.c +++ b/42sh/src/lexer/lexer_backslash.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_backslash(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_bquote.c b/42sh/src/lexer/lexer_bquote.c index b4360556..2e7cb813 100644 --- a/42sh/src/lexer/lexer_bquote.c +++ b/42sh/src/lexer/lexer_bquote.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_bquote(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_curly_braces.c b/42sh/src/lexer/lexer_curly_braces.c index 1674027a..d6eee381 100644 --- a/42sh/src/lexer/lexer_curly_braces.c +++ b/42sh/src/lexer/lexer_curly_braces.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int lexer_curly_braces(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 0fff3b18..a2802c5c 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_default(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index 648aa8a0..d67b61d5 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_delim(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_dless.c b/42sh/src/lexer/lexer_dless.c index f0e0ee4d..d3859b87 100644 --- a/42sh/src/lexer/lexer_dless.c +++ b/42sh/src/lexer/lexer_dless.c @@ -1,4 +1,4 @@ -#include "lexer.h" +#include "minishell.h" int lexer_dless(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_dquote.c b/42sh/src/lexer/lexer_dquote.c index b158a14d..10455689 100644 --- a/42sh/src/lexer/lexer_dquote.c +++ b/42sh/src/lexer/lexer_dquote.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_dquote(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_end.c b/42sh/src/lexer/lexer_end.c index dcc162c8..4e3be646 100644 --- a/42sh/src/lexer/lexer_end.c +++ b/42sh/src/lexer/lexer_end.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_end(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 7e43e814..6e582bdc 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_great(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c index 4f802455..83d96d8b 100644 --- a/42sh/src/lexer/lexer_greatand.c +++ b/42sh/src/lexer/lexer_greatand.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_greatand(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_init.c b/42sh/src/lexer/lexer_init.c index 799a52db..a7000895 100644 --- a/42sh/src/lexer/lexer_init.c +++ b/42sh/src/lexer/lexer_init.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" void lexer_init(t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 92d6bf45..9d08611c 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_less(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_lessand.c b/42sh/src/lexer/lexer_lessand.c index 1e5cfb20..f7d30d45 100644 --- a/42sh/src/lexer/lexer_lessand.c +++ b/42sh/src/lexer/lexer_lessand.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_lessand(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 8dadd9e3..9ec90b49 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int (*g_lexer[])(t_list **alst, t_lexer *lexer) = { diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index 31b45b4b..b2256091 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_newline(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 910dbd7b..f986fb12 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_number(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_paren.c b/42sh/src/lexer/lexer_paren.c index db8b0545..735e56fe 100644 --- a/42sh/src/lexer/lexer_paren.c +++ b/42sh/src/lexer/lexer_paren.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_paren(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_quote.c b/42sh/src/lexer/lexer_quote.c index 9b1afbd1..67cbc4c7 100644 --- a/42sh/src/lexer/lexer_quote.c +++ b/42sh/src/lexer/lexer_quote.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_quote(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 2c12ea8b..e171b0fd 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int lexer_sep(t_list **alst, t_lexer *lexer) { diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index d10c9e48..48a69ef4 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" static int word_is_assignment(t_token *token) { diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 75de9fb1..45a45b97 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int token_append_char(t_token *token, char c, short int esc, short int esc2) diff --git a/42sh/src/lexer/token_cmp_type.c b/42sh/src/lexer/token_cmp_type.c index 23ad5562..4185bc7b 100644 --- a/42sh/src/lexer/token_cmp_type.c +++ b/42sh/src/lexer/token_cmp_type.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" int token_cmp_type(t_token *token, t_type *ref) { diff --git a/42sh/src/lexer/token_free.c b/42sh/src/lexer/token_free.c index d88b0e1b..0727f7a5 100644 --- a/42sh/src/lexer/token_free.c +++ b/42sh/src/lexer/token_free.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" void token_free(void *data, size_t size) { diff --git a/42sh/src/lexer/token_init.c b/42sh/src/lexer/token_init.c index dcf4a219..4739d61b 100644 --- a/42sh/src/lexer/token_init.c +++ b/42sh/src/lexer/token_init.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" t_token *token_init(void) { diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index 4f71879f..c4529027 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "minishell.h" void token_print(t_list *lst) { diff --git a/42sh/src/main/instruction_free.c b/42sh/src/main/instruction_free.c index 5f27155a..69a80006 100644 --- a/42sh/src/main/instruction_free.c +++ b/42sh/src/main/instruction_free.c @@ -1,4 +1,4 @@ -#include "parser.h" +#include "minishell.h" int instruction_free(t_list **token, t_parser *parser, t_btree **ast) { diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 4b4d5415..7ea2d67f 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int iscase(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 0518acf6..87165860 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" t_distrostree g_distrostree[] = { diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index bc62c84f..902606c5 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int iscondition(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index cc481f37..736e7e22 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int isfunc_name(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index 427b0741..b393ebef 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int isloop(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_math.c b/42sh/src/parser/add_math.c index 78a3f414..a309a957 100644 --- a/42sh/src/parser/add_math.c +++ b/42sh/src/parser/add_math.c @@ -1,4 +1,4 @@ -#include "parser.h" +#include "minishell.h" int ismath(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_number.c b/42sh/src/parser/add_number.c index 7ed5d7de..67873692 100644 --- a/42sh/src/parser/add_number.c +++ b/42sh/src/parser/add_number.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int isionumber(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index ce91da7c..41df28a0 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int isdir_sep(t_btree **ast, t_list **list) { diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 111c7786..2985134c 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int add_sep(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 80dea8e7..9b5f6c58 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int issubshell(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/add_var.c b/42sh/src/parser/add_var.c index 661446b4..e191490f 100644 --- a/42sh/src/parser/add_var.c +++ b/42sh/src/parser/add_var.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int isvar(t_btree **ast, t_list **lst) { diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 54e8da17..9e6ed43f 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -9,7 +9,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" t_aggrematch g_aggrematch[] = { diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index e8b79714..2910394b 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" t_treematch g_treematch[] = { diff --git a/42sh/src/parser/error_syntax.c b/42sh/src/parser/error_syntax.c index d48228c6..e3ebe5e4 100644 --- a/42sh/src/parser/error_syntax.c +++ b/42sh/src/parser/error_syntax.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" t_errormatch g_errormatch[] = { diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b51bd6d4..e476b49d 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -9,7 +9,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" t_stackmatch g_stackmatch[] = { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index dcd34b83..ee706c67 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -9,7 +9,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" static void insert_linebreak(t_list **lst) { diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 1c884a72..6b807a98 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" void parser_init(t_parser *parser) { diff --git a/42sh/src/parser/pop_stack.c b/42sh/src/parser/pop_stack.c index 59e57a09..dca7b2f1 100644 --- a/42sh/src/parser/pop_stack.c +++ b/42sh/src/parser/pop_stack.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int pop_stack(t_list **stack, t_sym erase_sym) { diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 32de3fdc..8cb0f4d8 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" t_prodmatch g_prodmatch[] = { diff --git a/42sh/src/parser/push_stack.c b/42sh/src/parser/push_stack.c index 0ac6061b..1f2ba51e 100644 --- a/42sh/src/parser/push_stack.c +++ b/42sh/src/parser/push_stack.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" //int push_stack(t_sym *stack, t_sym new_sym) int push_stack(t_list **stack, t_sym sym) diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 0e7450af..ddb76ad3 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" char *read_state(t_sym current) { diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 81415d2e..1a11caaf 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "parser.h" +#include "minishell.h" int join_ast(t_btree **ast, t_btree **new_node) { From 6ef7a1289a71dc64127be7e368773125c4053b67 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 7 Mar 2017 18:38:20 +0100 Subject: [PATCH 178/206] compilation error --- 42sh/includes/exec.h | 2 +- 42sh/includes/minishell.h | 4 ++-- 42sh/src/exec/exec_var.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 1d4f65af..e2fa7b5a 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 18:35:39 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:38:05 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 0f9c0bab..2a98dd10 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/07 18:23:42 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 18:38:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,9 +25,9 @@ # include "lexer.h" # include "parser.h" # include "ft_readline.h" +# include "job_control.h" # include "exec.h" # include "builtin.h" -# include "job_control.h" # include "glob.h" # include "completion.h" # include "hash.h" diff --git a/42sh/src/exec/exec_var.c b/42sh/src/exec/exec_var.c index 29e49b76..578422d2 100644 --- a/42sh/src/exec/exec_var.c +++ b/42sh/src/exec/exec_var.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 11:12:05 by ariard #+# #+# */ -/* Updated: 2017/03/07 14:40:30 by ariard ### ########.fr */ +/* Updated: 2017/03/07 18:37:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 02286b88bf9a0fb8e62f3a5db787cc15be60e16f Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Tue, 7 Mar 2017 19:41:25 +0100 Subject: [PATCH 179/206] moar grammmar --- 42sh/includes/exec.h | 2 +- 42sh/includes/types.h | 2 +- 42sh/libft | 2 +- 42sh/objs/builtin/bt_read_get.d | 10 +++ 42sh/objs/builtin/bt_read_parse.d | 10 +++ 42sh/objs/builtin/bt_read_term.d | 10 +++ 42sh/objs/builtin/builtin_cd.d | 9 +++ 42sh/objs/builtin/builtin_echo.d | 10 +++ 42sh/objs/builtin/builtin_env.d | 10 +++ 42sh/objs/builtin/builtin_exit.d | 10 +++ 42sh/objs/builtin/builtin_export.d | 10 +++ 42sh/objs/builtin/builtin_hash.d | 10 +++ 42sh/objs/builtin/builtin_history.d | 10 +++ 42sh/objs/builtin/builtin_read.d | 10 +++ 42sh/objs/builtin/builtin_setenv.d | 10 +++ 42sh/objs/builtin/builtin_unset.d | 10 +++ 42sh/objs/builtin/builtin_unsetenv.d | 10 +++ 42sh/objs/builtin/is_builtin.d | 10 +++ 42sh/objs/completion/c_binary.d | 10 +++ 42sh/objs/completion/c_clear.d | 9 +++ 42sh/objs/completion/c_files.d | 9 +++ 42sh/objs/completion/c_init.d | 9 +++ 42sh/objs/completion/c_matching.d | 10 +++ 42sh/objs/completion/c_misc.d | 9 +++ 42sh/objs/completion/c_output.d | 10 +++ 42sh/objs/completion/c_parser.d | 10 +++ 42sh/objs/completion/c_pathsolver.d | 10 +++ 42sh/objs/completion/c_printer.d | 10 +++ 42sh/objs/completion/c_rematch.d | 10 +++ 42sh/objs/completion/c_sizing.d | 10 +++ 42sh/objs/completion/c_terminal.d | 10 +++ 42sh/objs/completion/completion.d | 10 +++ 42sh/objs/exec/ast_free.d | 10 +++ 42sh/objs/exec/bad_fd.d | 10 +++ 42sh/objs/exec/error_badidentifier.d | 10 +++ 42sh/objs/exec/exec_ampersand.d | 10 +++ 42sh/objs/exec/exec_and_if.d | 10 +++ 42sh/objs/exec/exec_case.d | 10 +++ 42sh/objs/exec/exec_case_branch.d | 10 +++ 42sh/objs/exec/exec_command.d | 10 +++ 42sh/objs/exec/exec_default.d | 10 +++ 42sh/objs/exec/exec_elif.d | 10 +++ 42sh/objs/exec/exec_else.d | 10 +++ 42sh/objs/exec/exec_for.d | 10 +++ 42sh/objs/exec/exec_func.d | 10 +++ 42sh/objs/exec/exec_if.d | 10 +++ 42sh/objs/exec/exec_math.d | 10 +++ 42sh/objs/exec/exec_or_if.d | 10 +++ 42sh/objs/exec/exec_pipe.d | 10 +++ 42sh/objs/exec/exec_semi.d | 10 +++ 42sh/objs/exec/exec_until.d | 10 +++ 42sh/objs/exec/exec_var.d | 10 +++ 42sh/objs/exec/exec_while.d | 10 +++ 42sh/objs/exec/fd_is_valid.d | 10 +++ 42sh/objs/exec/ft_exec.d | 10 +++ 42sh/objs/exec/ft_findexec.d | 10 +++ 42sh/objs/exec/launch_process.d | 10 +++ 42sh/objs/exec/mark_process_status.d | 10 +++ 42sh/objs/exec/process_redirect.d | 10 +++ 42sh/objs/exec/process_reset.d | 10 +++ 42sh/objs/exec/process_setexec.d | 10 +++ 42sh/objs/exec/process_setgroup.d | 10 +++ 42sh/src/builtin/is_builtin.c | 2 +- 42sh/src/exec/exec_while.c | 2 +- 42sh/src/lexer/get_lexer_stack.c | 2 +- 42sh/src/lexer/get_state_global.c | 4 +- 42sh/src/lexer/lexer_sep.c | 5 +- 42sh/src/parser/add_case.c | 2 +- 42sh/src/parser/aggregate_sym.c | 11 ++- 42sh/src/parser/build_tree.c | 3 +- 42sh/src/parser/eval_sym.c | 104 ++++++++++++++++++++------- 42sh/src/parser/produce_sym.c | 8 ++- 72 files changed, 695 insertions(+), 39 deletions(-) create mode 100644 42sh/objs/builtin/bt_read_get.d create mode 100644 42sh/objs/builtin/bt_read_parse.d create mode 100644 42sh/objs/builtin/bt_read_term.d create mode 100644 42sh/objs/builtin/builtin_cd.d create mode 100644 42sh/objs/builtin/builtin_echo.d create mode 100644 42sh/objs/builtin/builtin_env.d create mode 100644 42sh/objs/builtin/builtin_exit.d create mode 100644 42sh/objs/builtin/builtin_export.d create mode 100644 42sh/objs/builtin/builtin_hash.d create mode 100644 42sh/objs/builtin/builtin_history.d create mode 100644 42sh/objs/builtin/builtin_read.d create mode 100644 42sh/objs/builtin/builtin_setenv.d create mode 100644 42sh/objs/builtin/builtin_unset.d create mode 100644 42sh/objs/builtin/builtin_unsetenv.d create mode 100644 42sh/objs/builtin/is_builtin.d create mode 100644 42sh/objs/completion/c_binary.d create mode 100644 42sh/objs/completion/c_clear.d create mode 100644 42sh/objs/completion/c_files.d create mode 100644 42sh/objs/completion/c_init.d create mode 100644 42sh/objs/completion/c_matching.d create mode 100644 42sh/objs/completion/c_misc.d create mode 100644 42sh/objs/completion/c_output.d create mode 100644 42sh/objs/completion/c_parser.d create mode 100644 42sh/objs/completion/c_pathsolver.d create mode 100644 42sh/objs/completion/c_printer.d create mode 100644 42sh/objs/completion/c_rematch.d create mode 100644 42sh/objs/completion/c_sizing.d create mode 100644 42sh/objs/completion/c_terminal.d create mode 100644 42sh/objs/completion/completion.d create mode 100644 42sh/objs/exec/ast_free.d create mode 100644 42sh/objs/exec/bad_fd.d create mode 100644 42sh/objs/exec/error_badidentifier.d create mode 100644 42sh/objs/exec/exec_ampersand.d create mode 100644 42sh/objs/exec/exec_and_if.d create mode 100644 42sh/objs/exec/exec_case.d create mode 100644 42sh/objs/exec/exec_case_branch.d create mode 100644 42sh/objs/exec/exec_command.d create mode 100644 42sh/objs/exec/exec_default.d create mode 100644 42sh/objs/exec/exec_elif.d create mode 100644 42sh/objs/exec/exec_else.d create mode 100644 42sh/objs/exec/exec_for.d create mode 100644 42sh/objs/exec/exec_func.d create mode 100644 42sh/objs/exec/exec_if.d create mode 100644 42sh/objs/exec/exec_math.d create mode 100644 42sh/objs/exec/exec_or_if.d create mode 100644 42sh/objs/exec/exec_pipe.d create mode 100644 42sh/objs/exec/exec_semi.d create mode 100644 42sh/objs/exec/exec_until.d create mode 100644 42sh/objs/exec/exec_var.d create mode 100644 42sh/objs/exec/exec_while.d create mode 100644 42sh/objs/exec/fd_is_valid.d create mode 100644 42sh/objs/exec/ft_exec.d create mode 100644 42sh/objs/exec/ft_findexec.d create mode 100644 42sh/objs/exec/launch_process.d create mode 100644 42sh/objs/exec/mark_process_status.d create mode 100644 42sh/objs/exec/process_redirect.d create mode 100644 42sh/objs/exec/process_reset.d create mode 100644 42sh/objs/exec/process_setexec.d create mode 100644 42sh/objs/exec/process_setgroup.d diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 1ae71afa..9daf4e1e 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:07:59 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:36:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 792363f9..13287494 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:08:17 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:37:18 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/libft b/42sh/libft index 6a2672a1..6a6a23b2 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 6a2672a19268c6481525d9aaee5bd35722bbd75a +Subproject commit 6a6a23b2839a5ec7322bdc6adbb2d3dad3d1023c diff --git a/42sh/objs/builtin/bt_read_get.d b/42sh/objs/builtin/bt_read_get.d new file mode 100644 index 00000000..3d96b8dc --- /dev/null +++ b/42sh/objs/builtin/bt_read_get.d @@ -0,0 +1,10 @@ +objs/builtin/bt_read_get.o: src/builtin/bt_read_get.c \ + includes/builtin_read.h includes/types.h includes/builtin.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h \ + includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_parse.d b/42sh/objs/builtin/bt_read_parse.d new file mode 100644 index 00000000..89009e04 --- /dev/null +++ b/42sh/objs/builtin/bt_read_parse.d @@ -0,0 +1,10 @@ +objs/builtin/bt_read_parse.o: src/builtin/bt_read_parse.c \ + includes/builtin_read.h includes/types.h includes/builtin.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h \ + includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_term.d b/42sh/objs/builtin/bt_read_term.d new file mode 100644 index 00000000..928d1921 --- /dev/null +++ b/42sh/objs/builtin/bt_read_term.d @@ -0,0 +1,10 @@ +objs/builtin/bt_read_term.o: src/builtin/bt_read_term.c \ + includes/builtin.h includes/types.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_cd.d b/42sh/objs/builtin/builtin_cd.d new file mode 100644 index 00000000..4d1c59c9 --- /dev/null +++ b/42sh/objs/builtin/builtin_cd.d @@ -0,0 +1,9 @@ +objs/builtin/builtin_cd.o: src/builtin/builtin_cd.c includes/builtin.h \ + includes/types.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/builtin_read.h includes/minishell.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_echo.d b/42sh/objs/builtin/builtin_echo.d new file mode 100644 index 00000000..48a2ec11 --- /dev/null +++ b/42sh/objs/builtin/builtin_echo.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_echo.o: src/builtin/builtin_echo.c \ + includes/builtin.h includes/types.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/exec.h \ + includes/job_control.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_env.d b/42sh/objs/builtin/builtin_env.d new file mode 100644 index 00000000..99743bb9 --- /dev/null +++ b/42sh/objs/builtin/builtin_env.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_env.o: src/builtin/builtin_env.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_exit.d b/42sh/objs/builtin/builtin_exit.d new file mode 100644 index 00000000..6f13cb81 --- /dev/null +++ b/42sh/objs/builtin/builtin_exit.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_exit.o: src/builtin/builtin_exit.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_export.d b/42sh/objs/builtin/builtin_export.d new file mode 100644 index 00000000..5df846e8 --- /dev/null +++ b/42sh/objs/builtin/builtin_export.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_export.o: src/builtin/builtin_export.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_hash.d b/42sh/objs/builtin/builtin_hash.d new file mode 100644 index 00000000..f4eb8938 --- /dev/null +++ b/42sh/objs/builtin/builtin_hash.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_hash.o: src/builtin/builtin_hash.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_history.d b/42sh/objs/builtin/builtin_history.d new file mode 100644 index 00000000..a60a1c6e --- /dev/null +++ b/42sh/objs/builtin/builtin_history.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_history.o: src/builtin/builtin_history.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_read.d b/42sh/objs/builtin/builtin_read.d new file mode 100644 index 00000000..d5785763 --- /dev/null +++ b/42sh/objs/builtin/builtin_read.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_read.o: src/builtin/builtin_read.c \ + includes/builtin_read.h includes/types.h includes/builtin.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/glob.h \ + includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_setenv.d b/42sh/objs/builtin/builtin_setenv.d new file mode 100644 index 00000000..502946a9 --- /dev/null +++ b/42sh/objs/builtin/builtin_setenv.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_setenv.o: src/builtin/builtin_setenv.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_unset.d b/42sh/objs/builtin/builtin_unset.d new file mode 100644 index 00000000..d0d88852 --- /dev/null +++ b/42sh/objs/builtin/builtin_unset.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_unset.o: src/builtin/builtin_unset.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/builtin_unsetenv.d b/42sh/objs/builtin/builtin_unsetenv.d new file mode 100644 index 00000000..25dd7671 --- /dev/null +++ b/42sh/objs/builtin/builtin_unsetenv.d @@ -0,0 +1,10 @@ +objs/builtin/builtin_unsetenv.o: src/builtin/builtin_unsetenv.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d new file mode 100644 index 00000000..40071c79 --- /dev/null +++ b/42sh/objs/builtin/is_builtin.d @@ -0,0 +1,10 @@ +objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_binary.d b/42sh/objs/completion/c_binary.d new file mode 100644 index 00000000..017f6e2a --- /dev/null +++ b/42sh/objs/completion/c_binary.d @@ -0,0 +1,10 @@ +objs/completion/c_binary.o: src/completion/c_binary.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_clear.d b/42sh/objs/completion/c_clear.d new file mode 100644 index 00000000..51457990 --- /dev/null +++ b/42sh/objs/completion/c_clear.d @@ -0,0 +1,9 @@ +objs/completion/c_clear.o: src/completion/c_clear.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_files.d b/42sh/objs/completion/c_files.d new file mode 100644 index 00000000..d611d285 --- /dev/null +++ b/42sh/objs/completion/c_files.d @@ -0,0 +1,9 @@ +objs/completion/c_files.o: src/completion/c_files.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_init.d b/42sh/objs/completion/c_init.d new file mode 100644 index 00000000..42812396 --- /dev/null +++ b/42sh/objs/completion/c_init.d @@ -0,0 +1,9 @@ +objs/completion/c_init.o: src/completion/c_init.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_matching.d b/42sh/objs/completion/c_matching.d new file mode 100644 index 00000000..265147a1 --- /dev/null +++ b/42sh/objs/completion/c_matching.d @@ -0,0 +1,10 @@ +objs/completion/c_matching.o: src/completion/c_matching.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_misc.d b/42sh/objs/completion/c_misc.d new file mode 100644 index 00000000..3dde2e26 --- /dev/null +++ b/42sh/objs/completion/c_misc.d @@ -0,0 +1,9 @@ +objs/completion/c_misc.o: src/completion/c_misc.c includes/completion.h \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_output.d b/42sh/objs/completion/c_output.d new file mode 100644 index 00000000..c58c0475 --- /dev/null +++ b/42sh/objs/completion/c_output.d @@ -0,0 +1,10 @@ +objs/completion/c_output.o: src/completion/c_output.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_parser.d b/42sh/objs/completion/c_parser.d new file mode 100644 index 00000000..20e78c29 --- /dev/null +++ b/42sh/objs/completion/c_parser.d @@ -0,0 +1,10 @@ +objs/completion/c_parser.o: src/completion/c_parser.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_pathsolver.d b/42sh/objs/completion/c_pathsolver.d new file mode 100644 index 00000000..a43db912 --- /dev/null +++ b/42sh/objs/completion/c_pathsolver.d @@ -0,0 +1,10 @@ +objs/completion/c_pathsolver.o: src/completion/c_pathsolver.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_printer.d b/42sh/objs/completion/c_printer.d new file mode 100644 index 00000000..f5c0111d --- /dev/null +++ b/42sh/objs/completion/c_printer.d @@ -0,0 +1,10 @@ +objs/completion/c_printer.o: src/completion/c_printer.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_rematch.d b/42sh/objs/completion/c_rematch.d new file mode 100644 index 00000000..4402b27d --- /dev/null +++ b/42sh/objs/completion/c_rematch.d @@ -0,0 +1,10 @@ +objs/completion/c_rematch.o: src/completion/c_rematch.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_sizing.d b/42sh/objs/completion/c_sizing.d new file mode 100644 index 00000000..6d931b50 --- /dev/null +++ b/42sh/objs/completion/c_sizing.d @@ -0,0 +1,10 @@ +objs/completion/c_sizing.o: src/completion/c_sizing.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/c_terminal.d b/42sh/objs/completion/c_terminal.d new file mode 100644 index 00000000..e2fc7d30 --- /dev/null +++ b/42sh/objs/completion/c_terminal.d @@ -0,0 +1,10 @@ +objs/completion/c_terminal.o: src/completion/c_terminal.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/completion/completion.d b/42sh/objs/completion/completion.d new file mode 100644 index 00000000..2e7aca1d --- /dev/null +++ b/42sh/objs/completion/completion.d @@ -0,0 +1,10 @@ +objs/completion/completion.o: src/completion/completion.c \ + includes/completion.h includes/minishell.h libft/includes/libft.h \ + libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ + libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ + libft/includes/mytime.h libft/includes/get_next_line.h \ + libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ + includes/lexer.h includes/parser.h includes/ft_readline.h \ + includes/ft_input.h includes/exec.h includes/job_control.h \ + includes/builtin.h includes/builtin_read.h includes/glob.h \ + includes/hash.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d new file mode 100644 index 00000000..a938bba4 --- /dev/null +++ b/42sh/objs/exec/ast_free.d @@ -0,0 +1,10 @@ +objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/bad_fd.d b/42sh/objs/exec/bad_fd.d new file mode 100644 index 00000000..10582e42 --- /dev/null +++ b/42sh/objs/exec/bad_fd.d @@ -0,0 +1,10 @@ +objs/exec/bad_fd.o: src/exec/bad_fd.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/error_badidentifier.d b/42sh/objs/exec/error_badidentifier.d new file mode 100644 index 00000000..b0be5a62 --- /dev/null +++ b/42sh/objs/exec/error_badidentifier.d @@ -0,0 +1,10 @@ +objs/exec/error_badidentifier.o: src/exec/error_badidentifier.c \ + includes/exec.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d new file mode 100644 index 00000000..a099a3a2 --- /dev/null +++ b/42sh/objs/exec/exec_ampersand.d @@ -0,0 +1,10 @@ +objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d new file mode 100644 index 00000000..e94f2cac --- /dev/null +++ b/42sh/objs/exec/exec_and_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_case.d b/42sh/objs/exec/exec_case.d new file mode 100644 index 00000000..56365354 --- /dev/null +++ b/42sh/objs/exec/exec_case.d @@ -0,0 +1,10 @@ +objs/exec/exec_case.o: src/exec/exec_case.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_case_branch.d b/42sh/objs/exec/exec_case_branch.d new file mode 100644 index 00000000..7394d37e --- /dev/null +++ b/42sh/objs/exec/exec_case_branch.d @@ -0,0 +1,10 @@ +objs/exec/exec_case_branch.o: src/exec/exec_case_branch.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d new file mode 100644 index 00000000..d0f0225c --- /dev/null +++ b/42sh/objs/exec/exec_command.d @@ -0,0 +1,10 @@ +objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d new file mode 100644 index 00000000..e2f12d17 --- /dev/null +++ b/42sh/objs/exec/exec_default.d @@ -0,0 +1,10 @@ +objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d new file mode 100644 index 00000000..31a808b1 --- /dev/null +++ b/42sh/objs/exec/exec_elif.d @@ -0,0 +1,10 @@ +objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d new file mode 100644 index 00000000..7fbf18af --- /dev/null +++ b/42sh/objs/exec/exec_else.d @@ -0,0 +1,10 @@ +objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_for.d b/42sh/objs/exec/exec_for.d new file mode 100644 index 00000000..7e939896 --- /dev/null +++ b/42sh/objs/exec/exec_for.d @@ -0,0 +1,10 @@ +objs/exec/exec_for.o: src/exec/exec_for.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_func.d b/42sh/objs/exec/exec_func.d new file mode 100644 index 00000000..d1cd8304 --- /dev/null +++ b/42sh/objs/exec/exec_func.d @@ -0,0 +1,10 @@ +objs/exec/exec_func.o: src/exec/exec_func.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d new file mode 100644 index 00000000..bfc49041 --- /dev/null +++ b/42sh/objs/exec/exec_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_math.d b/42sh/objs/exec/exec_math.d new file mode 100644 index 00000000..6c705323 --- /dev/null +++ b/42sh/objs/exec/exec_math.d @@ -0,0 +1,10 @@ +objs/exec/exec_math.o: src/exec/exec_math.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d new file mode 100644 index 00000000..e47e7589 --- /dev/null +++ b/42sh/objs/exec/exec_or_if.d @@ -0,0 +1,10 @@ +objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d new file mode 100644 index 00000000..f0e75e4a --- /dev/null +++ b/42sh/objs/exec/exec_pipe.d @@ -0,0 +1,10 @@ +objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d new file mode 100644 index 00000000..a4e14789 --- /dev/null +++ b/42sh/objs/exec/exec_semi.d @@ -0,0 +1,10 @@ +objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d new file mode 100644 index 00000000..892f8a85 --- /dev/null +++ b/42sh/objs/exec/exec_until.d @@ -0,0 +1,10 @@ +objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_var.d b/42sh/objs/exec/exec_var.d new file mode 100644 index 00000000..9ebffccd --- /dev/null +++ b/42sh/objs/exec/exec_var.d @@ -0,0 +1,10 @@ +objs/exec/exec_var.o: src/exec/exec_var.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/exec_while.d b/42sh/objs/exec/exec_while.d new file mode 100644 index 00000000..e2156a69 --- /dev/null +++ b/42sh/objs/exec/exec_while.d @@ -0,0 +1,10 @@ +objs/exec/exec_while.o: src/exec/exec_while.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/fd_is_valid.d b/42sh/objs/exec/fd_is_valid.d new file mode 100644 index 00000000..82af7a1d --- /dev/null +++ b/42sh/objs/exec/fd_is_valid.d @@ -0,0 +1,10 @@ +objs/exec/fd_is_valid.o: src/exec/fd_is_valid.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/ft_exec.d b/42sh/objs/exec/ft_exec.d new file mode 100644 index 00000000..4d324b14 --- /dev/null +++ b/42sh/objs/exec/ft_exec.d @@ -0,0 +1,10 @@ +objs/exec/ft_exec.o: src/exec/ft_exec.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/ft_findexec.d b/42sh/objs/exec/ft_findexec.d new file mode 100644 index 00000000..bdef00c4 --- /dev/null +++ b/42sh/objs/exec/ft_findexec.d @@ -0,0 +1,10 @@ +objs/exec/ft_findexec.o: src/exec/ft_findexec.c includes/minishell.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/launch_process.d b/42sh/objs/exec/launch_process.d new file mode 100644 index 00000000..f85c0e5d --- /dev/null +++ b/42sh/objs/exec/launch_process.d @@ -0,0 +1,10 @@ +objs/exec/launch_process.o: src/exec/launch_process.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/mark_process_status.d b/42sh/objs/exec/mark_process_status.d new file mode 100644 index 00000000..fd039a44 --- /dev/null +++ b/42sh/objs/exec/mark_process_status.d @@ -0,0 +1,10 @@ +objs/exec/mark_process_status.o: src/exec/mark_process_status.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_redirect.d b/42sh/objs/exec/process_redirect.d new file mode 100644 index 00000000..51148225 --- /dev/null +++ b/42sh/objs/exec/process_redirect.d @@ -0,0 +1,10 @@ +objs/exec/process_redirect.o: src/exec/process_redirect.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_reset.d b/42sh/objs/exec/process_reset.d new file mode 100644 index 00000000..66d081e7 --- /dev/null +++ b/42sh/objs/exec/process_reset.d @@ -0,0 +1,10 @@ +objs/exec/process_reset.o: src/exec/process_reset.c includes/exec.h \ + libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ + libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ + libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/job_control.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_setexec.d b/42sh/objs/exec/process_setexec.d new file mode 100644 index 00000000..a0440320 --- /dev/null +++ b/42sh/objs/exec/process_setexec.d @@ -0,0 +1,10 @@ +objs/exec/process_setexec.o: src/exec/process_setexec.c \ + includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/lexer.h \ + includes/parser.h includes/ft_readline.h includes/ft_input.h \ + includes/exec.h includes/job_control.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/objs/exec/process_setgroup.d b/42sh/objs/exec/process_setgroup.d new file mode 100644 index 00000000..a1b5f93e --- /dev/null +++ b/42sh/objs/exec/process_setgroup.d @@ -0,0 +1,10 @@ +objs/exec/process_setgroup.o: src/exec/process_setgroup.c \ + includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ + libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ + libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ + libft/includes/get_next_line.h libft/includes/color.h \ + libft/includes/ft_sys.h includes/types.h includes/exec.h \ + includes/minishell.h includes/lexer.h includes/parser.h \ + includes/ft_readline.h includes/ft_input.h includes/builtin.h \ + includes/builtin_read.h includes/glob.h includes/completion.h \ + includes/hash.h diff --git a/42sh/src/builtin/is_builtin.c b/42sh/src/builtin/is_builtin.c index 7836b7aa..7854d6b8 100644 --- a/42sh/src/builtin/is_builtin.c +++ b/42sh/src/builtin/is_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:09:57 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:08:45 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 16:05:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index e634687a..c10149e4 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/06 12:27:23 by wescande ### ########.fr */ +/* Updated: 2017/03/07 16:34:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_lexer_stack.c b/42sh/src/lexer/get_lexer_stack.c index a574564c..55fdbe9c 100644 --- a/42sh/src/lexer/get_lexer_stack.c +++ b/42sh/src/lexer/get_lexer_stack.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 17:39:45 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:27:04 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 19:33:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_state_global.c b/42sh/src/lexer/get_state_global.c index d0ab9d18..79793c70 100644 --- a/42sh/src/lexer/get_state_global.c +++ b/42sh/src/lexer/get_state_global.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:29:24 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 19:33:58 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ t_lexstate get_state_global(t_lexer *lexer) c = lexer->str[lexer->pos]; if (ft_is_delim(c)) return (DELIM); - else if (c == '&' || c == ';' || c == '|') + else if (c == '&' || c == ';' || c == '|' || c == '!') return (SEP); else if (c == '\\') return (BACKSLASH); diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 2c12ea8b..b5eb571c 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/02/24 19:14:57 by ariard ### ########.fr */ +/* Updated: 2017/03/07 19:40:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,8 +37,11 @@ int lexer_sep(t_list **alst, t_lexer *lexer) token->type = cn == '&' ? TK_AND_IF : TK_AMP; else if (c == '|') token->type = cn == '|' ? TK_OR_IF : TK_PIPE; + else if (c == '!') + token->type = TK_BANG; token->type = (c == ';') ? TK_SEMI : token->type; token->type = (c == ';') && (cn == ';') ? TK_DSEMI : token->type; +// c est ici que ca bug, ca marche plus les bitwise sur des enums lexer->pos += 1 + (token->type & (TK_AND_IF | TK_OR_IF | TK_DSEMI) ? 1 : 0); return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 4b4d5415..582a966d 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/07 11:52:45 by ariard ### ########.fr */ +/* Updated: 2017/03/07 19:32:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 54e8da17..1bb11af8 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -45,6 +45,9 @@ t_aggrematch g_aggrematch[] = {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, CMD_SUPERIOR, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, SUBSHELL, TK_PAREN_OPEN}, + {TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE}, + {TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE}, + {TK_RBRACE, PIPE_SEMI_SEQUENCE, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE}, @@ -73,13 +76,14 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {LINEBREAK, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, - {LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK}, {NEWLINE_LIST, MATH_SUP, CMD_SUPERIOR, MATH_SUP}, {NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME}, {NEWLINE_LIST, SEQUENTIAL_SEP, SEQUENTIAL_SEP, SEQUENTIAL_SEP}, {NEWLINE_LIST, TK_DO, TK_DO, TK_DO}, {NEWLINE_LIST, TK_PAREN_CLOSE, TK_PAREN_CLOSE, TK_PAREN_CLOSE}, {NEWLINE_LIST, TK_PAREN_OPEN, TK_PAREN_OPEN, TK_PAREN_OPEN}, + {NEWLINE_LIST, TK_RBRACE, TK_RBRACE, TK_RBRACE}, + {NEWLINE_LIST, TK_LBRACE, TK_LBRACE, TK_LBRACE}, {NEWLINE_LIST, TK_IN, TK_IN, TK_IN}, {NEWLINE_LIST, TK_THEN, TK_THEN, TK_THEN}, {NEWLINE_LIST, TK_IF, TK_IF, TK_IF}, @@ -208,6 +212,7 @@ t_aggrematch g_aggrematch[] = {AND_OR_MINOR, TK_LBRACE, AND_OR_MAJOR, 0}, {AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0}, {AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0}, + {AND_OR_MINOR, TK_BANG, AND_OR_MAJOR, 0}, {COMMAND, SEQUENCE, PIPE_SEMI_SEQUENCE, 0}, // {COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE}, // watch @@ -225,6 +230,7 @@ t_aggrematch g_aggrematch[] = {COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0}, + {COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_LBRACE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, @@ -237,6 +243,7 @@ t_aggrematch g_aggrematch[] = {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, {END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0}, + {END_COMMAND, TK_BANG, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_PAREN_OPEN, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_LBRACE, PIPE_SEQUENCE, 0}, {END_COMMAND, COMPLETE_COMMANDS, PIPE_SEQUENCE, 0}, @@ -281,6 +288,7 @@ t_aggrematch g_aggrematch[] = {PIPELINE, COMPOUND_LIST, AND_OR, 0}, {PIPELINE, CASE_LIST_NS, AND_OR, 0}, {PIPELINE, LINEBREAK, AND_OR, 0}, + {PIPELINE, TK_BANG, AND_OR, 0}, {PIPELINE, TK_PAREN_OPEN, AND_OR, 0}, {PIPELINE, TK_LBRACE, AND_OR, 0}, {PIPELINE, COMPLETE_COMMANDS, AND_OR, 0}, @@ -305,6 +313,7 @@ t_aggrematch g_aggrematch[] = {AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0}, + {AND_OR, TK_BANG, LIST, 0}, {AND_OR, TK_LBRACE, LIST, 0}, {AND_OR, COMPLETE_COMMANDS, LIST, 0}, {LIST, NEWLINE_LIST, COMPLETE_COMMAND, 0}, diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index e8b79714..0cfc358a 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/06 15:55:07 by ariard ### ########.fr */ +/* Updated: 2017/03/07 19:32:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ t_treematch g_treematch[] = { {TK_WORD, &add_cmd}, {TK_PIPE, &add_sep}, + {TK_BANG, &add_sep}, {TK_SEMI, &add_sep}, {TK_GREAT, &add_cmd}, {TK_LESS, &add_cmd}, diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b51bd6d4..a4322aaf 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -18,6 +18,7 @@ t_stackmatch g_stackmatch[] = {TK_WORD, TK_CASE}, {TK_WORD, WORDLIST}, {TK_WORD, LINEBREAK}, + {TK_WORD, TK_BANG}, {TK_WORD, TK_PAREN_OPEN}, {TK_WORD, TK_LBRACE}, {TK_WORD, COMPLETE_COMMANDS}, @@ -31,6 +32,7 @@ t_stackmatch g_stackmatch[] = {TK_IO_NUMBER, CMD_NAME}, {TK_IO_NUMBER, CMD_WORD}, {TK_IO_NUMBER, LINEBREAK}, + {TK_IO_NUMBER, TK_BANG}, {TK_IO_NUMBER, TK_PAREN_OPEN}, {TK_IO_NUMBER, TK_LBRACE}, {TK_IO_NUMBER, COMPLETE_COMMANDS}, @@ -48,6 +50,7 @@ t_stackmatch g_stackmatch[] = {TK_OR_IF, CMD_SUPERIOR}, {TK_OR_IF, AND_OR}, {TK_DSEMI, LINEBREAK}, + {TK_DSEMI, TK_BANG}, {TK_DSEMI, COMPLETE_COMMANDS}, {TK_DSEMI, COMPOUND_LIST}, {TK_DSEMI, CASE_LIST_NS}, @@ -62,6 +65,7 @@ t_stackmatch g_stackmatch[] = {TK_LESS, CMD_WORD}, {TK_LESS, CMD_NAME}, {TK_LESS, LINEBREAK}, + {TK_LESS, TK_BANG}, {TK_LESS, TK_PAREN_OPEN}, {TK_LESS, TK_LBRACE}, {TK_LESS, COMPLETE_COMMANDS}, @@ -80,6 +84,7 @@ t_stackmatch g_stackmatch[] = {TK_GREAT, CMD_WORD}, {TK_GREAT, CMD_NAME}, {TK_GREAT, LINEBREAK}, + {TK_GREAT, TK_BANG}, {TK_GREAT, TK_PAREN_OPEN}, {TK_GREAT, TK_LBRACE}, {TK_GREAT, COMPLETE_COMMANDS}, @@ -100,6 +105,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESS, CMD_WORD}, {TK_DLESS, CMD_NAME}, {TK_DLESS, LINEBREAK}, + {TK_DLESS, TK_BANG}, {TK_DLESS, TK_PAREN_OPEN}, {TK_DLESS, TK_LBRACE}, {TK_DLESS, COMPLETE_COMMANDS}, @@ -119,6 +125,7 @@ t_stackmatch g_stackmatch[] = {TK_DLESSDASH, CMD_WORD}, {TK_DLESSDASH, CMD_NAME}, {TK_DLESSDASH, LINEBREAK}, + {TK_DLESSDASH, TK_BANG}, {TK_DLESSDASH, TK_PAREN_OPEN}, {TK_DLESSDASH, TK_LBRACE}, {TK_DLESSDASH, COMPLETE_COMMANDS}, @@ -139,6 +146,7 @@ t_stackmatch g_stackmatch[] = {TK_DGREAT, CMD_WORD}, {TK_DGREAT, CMD_NAME}, {TK_DGREAT, LINEBREAK}, + {TK_DGREAT, TK_BANG}, {TK_DGREAT, TK_PAREN_OPEN}, {TK_DGREAT, TK_LBRACE}, {TK_DGREAT, COMPLETE_COMMANDS}, @@ -159,6 +167,7 @@ t_stackmatch g_stackmatch[] = {TK_LESSAND, CMD_WORD}, {TK_LESSAND, CMD_NAME}, {TK_LESSAND, LINEBREAK}, + {TK_LESSAND, TK_BANG}, {TK_LESSAND, TK_PAREN_OPEN}, {TK_LESSAND, TK_LBRACE}, {TK_LESSAND, COMPLETE_COMMANDS}, @@ -179,6 +188,7 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, CMD_WORD}, {TK_GREATAND, CMD_NAME}, {TK_GREATAND, LINEBREAK}, + {TK_GREATAND, TK_BANG}, {TK_GREATAND, TK_PAREN_OPEN}, {TK_GREATAND, TK_LBRACE}, {TK_GREATAND, COMPLETE_COMMANDS}, @@ -188,15 +198,15 @@ t_stackmatch g_stackmatch[] = {TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, PIPE_SEMI_SEQUENCE}, {TK_GREATAND, SEQUENCE}, -// watch ! +// watch ! {TK_GREATAND, CMD_SUPERIOR}, {TK_GREATAND, AND_OR_MAJOR}, {TK_IF, LINEBREAK}, + {TK_IF, TK_BANG}, {TK_IF, TK_PAREN_OPEN}, {TK_IF, TK_LBRACE}, - {TK_IF, TK_PAREN_CLOSE}, {TK_IF, COMPLETE_COMMANDS}, {TK_IF, TK_BANG}, {TK_IF, SEPARATOR_OP}, @@ -236,6 +246,7 @@ t_stackmatch g_stackmatch[] = {TK_DONE, COMPOUND_LIST}, {TK_DONE, END_COMMAND}, {TK_CASE, LINEBREAK}, + {TK_CASE, TK_BANG}, {TK_CASE, TK_PAREN_OPEN}, {TK_CASE, TK_LBRACE}, {TK_CASE, COMPLETE_COMMANDS}, @@ -259,8 +270,10 @@ t_stackmatch g_stackmatch[] = {TK_IN, NAME}, {TK_ESAC, CASE_LIST_NS}, {TK_ESAC, LINEBREAK}, + {TK_ESAC, TK_BANG}, {TK_ESAC, TK_IN}, {TK_WHILE, LINEBREAK}, + {TK_WHILE, TK_BANG}, {TK_WHILE, TK_PAREN_OPEN}, {TK_WHILE, TK_LBRACE}, {TK_WHILE, COMPLETE_COMMANDS}, @@ -281,6 +294,7 @@ t_stackmatch g_stackmatch[] = {TK_WHILE, TK_THEN}, {TK_WHILE, COMPLETE_CONDITION}, {TK_UNTIL, LINEBREAK}, + {TK_UNTIL, TK_BANG}, {TK_UNTIL, TK_PAREN_OPEN}, {TK_UNTIL, TK_LBRACE}, {TK_UNTIL, COMPLETE_COMMANDS}, @@ -301,6 +315,7 @@ t_stackmatch g_stackmatch[] = {TK_UNTIL, TK_PAREN_CLOSE}, {TK_UNTIL, COMPLETE_CONDITION}, {TK_FOR, LINEBREAK}, + {TK_FOR, TK_BANG}, {TK_FOR, TK_PAREN_OPEN}, {TK_FOR, TK_LBRACE}, {TK_FOR, COMPLETE_COMMANDS}, @@ -323,6 +338,7 @@ t_stackmatch g_stackmatch[] = {TK_FOR, COMPLETE_CONDITION}, {TK_LBRACE, COMPLETE_COMMANDS}, {TK_LBRACE, LINEBREAK}, + {TK_LBRACE, TK_BANG}, {TK_LBRACE, TK_LBRACE}, {TK_LBRACE, TK_BANG}, {TK_LBRACE, SEPARATOR_OP}, @@ -368,7 +384,6 @@ t_stackmatch g_stackmatch[] = {TK_BANG, TK_LBRACE}, {TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, SEPARATOR_OP}, - {TK_BANG, SEPARATOR_OP}, {TK_BANG, NEWLINE_LIST}, {TK_IN, LINEBREAK}, {TK_SEMI, NAME}, @@ -388,8 +403,8 @@ t_stackmatch g_stackmatch[] = {PATTERN_CASE, CASE_LIST_NS}, {TK_PAREN_OPEN, COMPLETE_COMMANDS}, {TK_PAREN_OPEN, LINEBREAK}, - {TK_PAREN_OPEN, TK_PAREN_OPEN}, {TK_PAREN_OPEN, TK_BANG}, + {TK_PAREN_OPEN, TK_PAREN_OPEN}, {TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, NEWLINE_LIST}, {TK_PAREN_OPEN, SEQUENCE}, @@ -425,6 +440,7 @@ t_stackmatch g_stackmatch[] = {END_COMMAND, TK_ELIF}, {END_COMMAND, TK_ELSE}, {END_COMMAND, LINEBREAK}, + {END_COMMAND, TK_BANG}, {END_COMMAND, TK_PAREN_OPEN}, {END_COMMAND, TK_LBRACE}, {END_COMMAND, COMPLETE_COMMANDS}, @@ -455,6 +471,7 @@ t_stackmatch g_stackmatch[] = {LINEBREAK, TK_OR_IF}, {LINEBREAK, TK_PIPE}, {LINEBREAK, LINEBREAK}, + {LINEBREAK, TK_BANG}, {LINEBREAK, COMPLETE_COMMANDS}, {LINEBREAK, CMD_SUPERIOR}, {LINEBREAK, PIPE_SEMI_SEQUENCE}, @@ -484,10 +501,32 @@ t_stackmatch g_stackmatch[] = {TK_PAREN_CLOSE, PATTERN}, {TK_PAREN_CLOSE, COMPOUND_LIST}, {TK_PAREN_CLOSE, FUNC_NAME}, + {TK_RBRACE, MATH}, + {TK_RBRACE, MATH_PLUS}, + {TK_RBRACE, TK_SEMI}, + {TK_RBRACE, END_COMMAND}, + {TK_RBRACE, SEPARATOR_OP}, + {TK_RBRACE, WORD}, + {TK_RBRACE, IN}, + {TK_RBRACE, TK_AND_IF}, + {TK_RBRACE, TK_OR_IF}, + {TK_RBRACE, TK_PIPE}, + {TK_RBRACE, TK_RBRACE}, + {TK_RBRACE, COMPLETE_COMMANDS}, + {TK_RBRACE, CMD_SUPERIOR}, + {TK_RBRACE, PIPE_SEMI_SEQUENCE}, + {TK_RBRACE, CASE_LIST_NS}, + {TK_RBRACE, PROGRAM}, + {TK_RBRACE, TK_LBRACE}, + {TK_RBRACE, PATTERN_CASE}, + {TK_RBRACE, PATTERN}, + {TK_RBRACE, COMPOUND_LIST}, + {TK_RBRACE, FUNC_NAME}, {NEWLINE_LIST, MATH_SUP}, {NEWLINE_LIST, TK_DO}, {NEWLINE_LIST, CASE_LIST_NS}, {NEWLINE_LIST, TK_PAREN_CLOSE}, + {NEWLINE_LIST, TK_RBRACE}, {NEWLINE_LIST, SEQUENTIAL_SEP}, {NEWLINE_LIST, FOR_WORDLIST}, {NEWLINE_LIST, TK_IN}, @@ -509,6 +548,7 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, COMPLETE_CONDITION}, {NEWLINE_LIST, CONDITION}, {NEWLINE_LIST, LINEBREAK}, + {NEWLINE_LIST, TK_BANG}, {NEWLINE_LIST, TK_PAREN_OPEN}, {NEWLINE_LIST, TK_LBRACE}, {HERE_END, TK_DLESS}, @@ -522,11 +562,10 @@ t_stackmatch g_stackmatch[] = {IO_HERE, CMD_WORD}, {IO_HERE, CMD_NAME}, {IO_HERE, LINEBREAK}, + {IO_HERE, TK_BANG}, {IO_HERE, TK_PAREN_OPEN}, {IO_HERE, TK_LBRACE}, {IO_HERE, COMPLETE_COMMANDS}, - {IO_HERE, TK_BANG}, - {IO_HERE, TK_BANG}, {IO_HERE, SEPARATOR_OP}, {IO_HERE, NEWLINE_LIST}, {IO_HERE, PIPE_SEMI_SEQUENCE}, @@ -547,9 +586,8 @@ t_stackmatch g_stackmatch[] = {IO_FILE, CMD_WORD}, {IO_FILE, CMD_NAME}, {IO_FILE, LINEBREAK}, + {IO_FILE, TK_BANG}, {IO_FILE, COMPLETE_COMMANDS}, - {IO_FILE, TK_BANG}, - {IO_FILE, TK_BANG}, {IO_FILE, SEPARATOR_OP}, {IO_FILE, NEWLINE_LIST}, {IO_FILE, PIPE_SEMI_SEQUENCE}, @@ -562,11 +600,10 @@ t_stackmatch g_stackmatch[] = {IO_REDIRECT, CMD_WORD}, {IO_REDIRECT, CMD_NAME}, {IO_REDIRECT, LINEBREAK}, + {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, TK_PAREN_OPEN}, {IO_REDIRECT, TK_LBRACE}, {IO_REDIRECT, COMPLETE_COMMANDS}, - {IO_REDIRECT, TK_BANG}, - {IO_REDIRECT, TK_BANG}, {IO_REDIRECT, SEPARATOR_OP}, {IO_REDIRECT, NEWLINE_LIST}, {IO_REDIRECT, PIPE_SEMI_SEQUENCE}, @@ -582,7 +619,6 @@ t_stackmatch g_stackmatch[] = {CMD_PREFIX, TK_LBRACE}, {CMD_PREFIX, COMPLETE_COMMANDS}, {CMD_PREFIX, TK_BANG}, - {CMD_PREFIX, TK_BANG}, {CMD_PREFIX, SEPARATOR_OP}, {CMD_PREFIX, NEWLINE_LIST}, {CMD_PREFIX, SEQUENCE}, @@ -593,7 +629,6 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_PAREN_OPEN}, {CMD_NAME, TK_LBRACE}, {CMD_NAME, TK_BANG}, - {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, {CMD_NAME, SEQUENCE}, @@ -627,7 +662,6 @@ t_stackmatch g_stackmatch[] = {CMD_SUPERIOR, TK_LBRACE}, {CMD_SUPERIOR, COMPLETE_COMMANDS}, {CMD_SUPERIOR, TK_BANG}, - {CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, SEPARATOR_OP}, {CMD_SUPERIOR, NEWLINE_LIST}, {CMD_SUPERIOR, TK_PIPE}, @@ -664,7 +698,6 @@ t_stackmatch g_stackmatch[] = {SIMPLE_COMMAND, TK_LBRACE}, {SIMPLE_COMMAND, COMPLETE_COMMANDS}, {SIMPLE_COMMAND, TK_BANG}, - {SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, NEWLINE_LIST}, {SIMPLE_COMMAND, SEQUENCE}, @@ -694,7 +727,6 @@ t_stackmatch g_stackmatch[] = {BRACE_GROUP, TK_LBRACE}, {BRACE_GROUP, COMPLETE_COMMANDS}, {BRACE_GROUP, TK_BANG}, - {BRACE_GROUP, TK_BANG}, {BRACE_GROUP, SEPARATOR_OP}, {BRACE_GROUP, NEWLINE_LIST}, {BRACE_GROUP, SEQUENCE}, @@ -704,7 +736,6 @@ t_stackmatch g_stackmatch[] = {FNAME, TK_LBRACE}, {FNAME, COMPLETE_COMMANDS}, {FNAME, TK_BANG}, - {FNAME, TK_BANG}, {FNAME, SEPARATOR_OP}, {FNAME, NEWLINE_LIST}, {FNAME, SEQUENCE}, @@ -715,7 +746,6 @@ t_stackmatch g_stackmatch[] = {FUNCTION_DEFINITION, TK_LBRACE}, {FUNCTION_DEFINITION, COMPLETE_COMMANDS}, {FUNCTION_DEFINITION, TK_BANG}, - {FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, SEPARATOR_OP}, {FUNCTION_DEFINITION, NEWLINE_LIST}, {FUNCTION_DEFINITION, SEQUENCE}, @@ -728,7 +758,6 @@ t_stackmatch g_stackmatch[] = {UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, SEQUENCE}, -// watch ! {UNTIL_CLAUSE, TK_DO}, {UNTIL_CLAUSE, TK_PAREN_CLOSE}, {UNTIL_CLAUSE, TK_WHILE}, @@ -763,6 +792,7 @@ t_stackmatch g_stackmatch[] = // {ELSE_PART, COMPOUND_LIST}, // {ELSE_PART, COMPLETE_CONDITION}, {IF_CLAUSE, LINEBREAK}, + {IF_CLAUSE, TK_BANG}, {IF_CLAUSE, TK_PAREN_OPEN}, {IF_CLAUSE, TK_LBRACE}, {IF_CLAUSE, COMPLETE_COMMANDS}, @@ -785,6 +815,7 @@ t_stackmatch g_stackmatch[] = {IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, AND_OR_MAJOR}, {BRACE_CLAUSE, LINEBREAK}, + {BRACE_CLAUSE, TK_BANG}, {BRACE_CLAUSE, TK_PAREN_OPEN}, {BRACE_CLAUSE, TK_LBRACE}, {BRACE_CLAUSE, COMPLETE_COMMANDS}, @@ -812,6 +843,7 @@ t_stackmatch g_stackmatch[] = {CASE_LIST_NS, LINEBREAK}, {CASE_LIST_NS, TK_IN}, {CASE_CLAUSE, LINEBREAK}, + {CASE_CLAUSE, TK_BANG}, {CASE_CLAUSE, TK_PAREN_OPEN}, {CASE_CLAUSE, TK_LBRACE}, {CASE_CLAUSE, COMPLETE_COMMANDS}, @@ -839,11 +871,10 @@ t_stackmatch g_stackmatch[] = {NAME, TK_FOR}, {FOR_WORDLIST, NAME}, {FOR_CLAUSE, LINEBREAK}, + {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, TK_PAREN_OPEN}, {FOR_CLAUSE, TK_LBRACE}, {FOR_CLAUSE, COMPLETE_COMMANDS}, - {FOR_CLAUSE, TK_BANG}, - {FOR_CLAUSE, TK_BANG}, {FOR_CLAUSE, SEPARATOR_OP}, {FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, SEQUENCE}, @@ -860,8 +891,6 @@ t_stackmatch g_stackmatch[] = {FOR_CLAUSE, CASE_LIST_NS}, {FOR_CLAUSE, COMPLETE_CONDITION}, {FOR_CLAUSE, AND_OR_MAJOR}, - {TERM, LINEBREAK}, - {TERM, COMPLETE_COMMANDS}, {COMPOUND_LIST, TK_DO}, {COMPOUND_LIST, TK_PAREN_CLOSE}, {COMPOUND_LIST, TK_LBRACE}, @@ -902,7 +931,6 @@ t_stackmatch g_stackmatch[] = {COMPOUND_COMMAND, TK_LBRACE}, {COMPOUND_COMMAND, COMPLETE_COMMANDS}, {COMPOUND_COMMAND, TK_BANG}, - {COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, SEPARATOR_OP}, {COMPOUND_COMMAND, NEWLINE_LIST}, {COMPOUND_COMMAND, SEQUENCE}, @@ -923,6 +951,7 @@ t_stackmatch g_stackmatch[] = {COMMAND, TK_WHILE}, {COMMAND, TK_UNTIL}, {COMMAND, LINEBREAK}, + {COMMAND, TK_BANG}, {COMMAND, TK_PAREN_OPEN}, {COMMAND, TK_LBRACE}, {COMMAND, COMPLETE_COMMANDS}, @@ -943,6 +972,7 @@ t_stackmatch g_stackmatch[] = {AND_OR_MINOR, SEQUENCE}, // watch ! {AND_OR_MINOR, LINEBREAK}, + {AND_OR_MINOR, TK_BANG}, {AND_OR_MINOR, TK_PAREN_OPEN}, {AND_OR_MINOR, TK_LBRACE}, {AND_OR_MINOR, COMPLETE_COMMANDS}, @@ -959,6 +989,7 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, CASE_LIST_NS}, {PIPE_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEQUENCE, LINEBREAK}, + {PIPE_SEQUENCE, TK_BANG}, {PIPE_SEQUENCE, TK_PAREN_OPEN}, {PIPE_SEQUENCE, TK_LBRACE}, {PIPE_SEQUENCE, COMPLETE_COMMANDS}, @@ -967,6 +998,26 @@ t_stackmatch g_stackmatch[] = {PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, NEWLINE_LIST}, {PIPE_SEQUENCE, AND_OR_MAJOR}, + {TK_BANG, TK_WHILE}, + {TK_BANG, TK_UNTIL}, + {TK_BANG, TK_DO}, + {TK_BANG, TK_PAREN_CLOSE}, + {TK_BANG, TK_IF}, + {TK_BANG, TK_ELIF}, + {TK_BANG, TK_THEN}, + {TK_BANG, TK_ELSE}, + {TK_BANG, COMPOUND_LIST}, + {TK_BANG, CASE_LIST_NS}, + {TK_BANG, COMPLETE_CONDITION}, + {TK_BANG, LINEBREAK}, + {TK_BANG, TK_PAREN_OPEN}, + {TK_BANG, TK_LBRACE}, + {TK_BANG, COMPLETE_COMMANDS}, + {TK_BANG, TK_BANG}, + {TK_BANG, TK_BANG}, + {TK_BANG, SEPARATOR_OP}, + {TK_BANG, NEWLINE_LIST}, + {TK_BANG, AND_OR_MAJOR}, {PIPE_SEMI_SEQUENCE, TK_WHILE}, {PIPE_SEMI_SEQUENCE, TK_UNTIL}, {PIPE_SEMI_SEQUENCE, TK_DO}, @@ -979,11 +1030,10 @@ t_stackmatch g_stackmatch[] = {PIPE_SEMI_SEQUENCE, CASE_LIST_NS}, {PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION}, {PIPE_SEMI_SEQUENCE, LINEBREAK}, + {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, TK_PAREN_OPEN}, {PIPE_SEMI_SEQUENCE, TK_LBRACE}, {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, - {PIPE_SEMI_SEQUENCE, TK_BANG}, - {PIPE_SEMI_SEQUENCE, TK_BANG}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, AND_OR_MAJOR}, @@ -1004,7 +1054,6 @@ t_stackmatch g_stackmatch[] = {SEQUENCE, TK_LBRACE}, {SEQUENCE, COMPLETE_COMMANDS}, {SEQUENCE, TK_BANG}, - {SEQUENCE, TK_BANG}, {SEQUENCE, SEPARATOR_OP}, {SEQUENCE, NEWLINE_LIST}, {SEQUENCE, AND_OR_MAJOR}, @@ -1021,6 +1070,7 @@ t_stackmatch g_stackmatch[] = {PIPELINE, CASE_LIST_NS}, {PIPELINE, COMPLETE_CONDITION}, {PIPELINE, LINEBREAK}, + {PIPELINE, TK_BANG}, {PIPELINE, TK_PAREN_OPEN}, {PIPELINE, TK_LBRACE}, {PIPELINE, COMPLETE_COMMANDS}, @@ -1029,6 +1079,7 @@ t_stackmatch g_stackmatch[] = {PIPELINE, NEWLINE_LIST}, {PIPELINE, AND_OR_MAJOR}, {AND_OR_MAJOR, LINEBREAK}, + {AND_OR_MAJOR, TK_BANG}, {AND_OR_MAJOR, TK_PAREN_OPEN}, {AND_OR_MAJOR, TK_LBRACE}, {AND_OR_MAJOR, COMPLETE_COMMANDS}, @@ -1046,6 +1097,7 @@ t_stackmatch g_stackmatch[] = {AND_OR, CASE_LIST_NS}, {AND_OR, COMPLETE_CONDITION}, {AND_OR, LINEBREAK}, + {AND_OR, TK_BANG}, {AND_OR, TK_PAREN_OPEN}, {AND_OR, TK_LBRACE}, {AND_OR, COMPLETE_COMMANDS}, diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 32de3fdc..37ad0815 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/07 15:53:23 by ariard ### ########.fr */ +/* Updated: 2017/03/07 18:47:55 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, CMD_SUPERIOR, CMD_SUFFIX}, {TK_WORD, PIPE_SEMI_SEQUENCE, CMD_SUFFIX}, {TK_WORD, LINEBREAK, CMD_NAME}, + {TK_WORD, TK_BANG, CMD_NAME}, {TK_WORD, TK_PIPE, CMD_NAME}, {TK_WORD, AND_OR, CMD_NAME}, {TK_WORD, AND_OR_MAJOR, CMD_NAME}, @@ -35,6 +36,7 @@ t_prodmatch g_prodmatch[] = {TK_WORD, TK_UNTIL, CMD_NAME}, {TK_WORD, TK_DO, CMD_NAME}, {TK_WORD, TK_PAREN_CLOSE, CMD_NAME}, + {TK_WORD, TK_RBRACE, CMD_NAME}, {TK_WORD, TK_IF, CMD_NAME}, {TK_WORD, TK_THEN, CMD_NAME}, {TK_WORD, TK_ELIF, CMD_NAME}, @@ -51,12 +53,14 @@ t_prodmatch g_prodmatch[] = {TK_WORD, CASE_LIST, PATTERN}, {TK_WORD, PATTERN_CASE, PATTERN}, {TK_WORD, COMPLETE_COMMANDS, CMD_NAME}, + {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_PAREN_OPEN, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_LBRACE, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, + {TK_NAME, TK_BAMG, FNAME}, {TK_NAME, LINEBREAK, FNAME}, {TK_NAME, TK_PAREN_OPEN, FNAME}, {TK_NAME, TK_LBRACE, FNAME}, @@ -68,6 +72,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, CASE_LIST_NS, NEWLINE_LIST}, {TK_NEWLINE, TK_DO, NEWLINE_LIST}, {TK_NEWLINE, TK_PAREN_CLOSE, NEWLINE_LIST}, + {TK_NEWLINE, TK_RBRACE, CMD_NAME}, {TK_NEWLINE, TK_IN, NEWLINE_LIST}, {TK_NEWLINE, TK_WHILE, NEWLINE_LIST}, {TK_NEWLINE, TK_UNTIL, NEWLINE_LIST}, @@ -79,6 +84,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, CMD_NAME, NEWLINE_LIST}, {TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST}, {TK_NEWLINE, LINEBREAK, NEWLINE_LIST}, + {TK_NEWLINE, TK_BANG, NEWLINE_LIST}, {TK_NEWLINE, TK_PAREN_OPEN, NEWLINE_LIST}, {TK_NEWLINE, TK_LBRACE, NEWLINE_LIST}, {TK_NEWLINE, CMD_SUPERIOR, LINEBREAK}, From dc994484af79ab5b06f0e7c753ef9161bc0e8349 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Tue, 7 Mar 2017 19:42:00 +0100 Subject: [PATCH 180/206] grammmar tk_bang + brace_group --- 42sh/objs/builtin/bt_read_get.d | 10 ---------- 42sh/objs/builtin/bt_read_parse.d | 10 ---------- 42sh/objs/builtin/bt_read_term.d | 10 ---------- 42sh/objs/builtin/builtin_cd.d | 9 --------- 42sh/objs/builtin/builtin_echo.d | 10 ---------- 42sh/objs/builtin/builtin_env.d | 10 ---------- 42sh/objs/builtin/builtin_exit.d | 10 ---------- 42sh/objs/builtin/builtin_export.d | 10 ---------- 42sh/objs/builtin/builtin_hash.d | 10 ---------- 42sh/objs/builtin/builtin_history.d | 10 ---------- 42sh/objs/builtin/builtin_read.d | 10 ---------- 42sh/objs/builtin/builtin_setenv.d | 10 ---------- 42sh/objs/builtin/builtin_unset.d | 10 ---------- 42sh/objs/builtin/builtin_unsetenv.d | 10 ---------- 42sh/objs/builtin/is_builtin.d | 10 ---------- 42sh/objs/completion/c_binary.d | 10 ---------- 42sh/objs/completion/c_clear.d | 9 --------- 42sh/objs/completion/c_files.d | 9 --------- 42sh/objs/completion/c_init.d | 9 --------- 42sh/objs/completion/c_matching.d | 10 ---------- 42sh/objs/completion/c_misc.d | 9 --------- 42sh/objs/completion/c_output.d | 10 ---------- 42sh/objs/completion/c_parser.d | 10 ---------- 42sh/objs/completion/c_pathsolver.d | 10 ---------- 42sh/objs/completion/c_printer.d | 10 ---------- 42sh/objs/completion/c_rematch.d | 10 ---------- 42sh/objs/completion/c_sizing.d | 10 ---------- 42sh/objs/completion/c_terminal.d | 10 ---------- 42sh/objs/completion/completion.d | 10 ---------- 42sh/objs/exec/ast_free.d | 10 ---------- 42sh/objs/exec/bad_fd.d | 10 ---------- 42sh/objs/exec/error_badidentifier.d | 10 ---------- 42sh/objs/exec/exec_ampersand.d | 10 ---------- 42sh/objs/exec/exec_and_if.d | 10 ---------- 42sh/objs/exec/exec_case.d | 10 ---------- 42sh/objs/exec/exec_case_branch.d | 10 ---------- 42sh/objs/exec/exec_command.d | 10 ---------- 42sh/objs/exec/exec_default.d | 10 ---------- 42sh/objs/exec/exec_elif.d | 10 ---------- 42sh/objs/exec/exec_else.d | 10 ---------- 42sh/objs/exec/exec_for.d | 10 ---------- 42sh/objs/exec/exec_func.d | 10 ---------- 42sh/objs/exec/exec_if.d | 10 ---------- 42sh/objs/exec/exec_math.d | 10 ---------- 42sh/objs/exec/exec_or_if.d | 10 ---------- 42sh/objs/exec/exec_pipe.d | 10 ---------- 42sh/objs/exec/exec_semi.d | 10 ---------- 42sh/objs/exec/exec_until.d | 10 ---------- 42sh/objs/exec/exec_var.d | 10 ---------- 42sh/objs/exec/exec_while.d | 10 ---------- 42sh/objs/exec/fd_is_valid.d | 10 ---------- 42sh/objs/exec/ft_exec.d | 10 ---------- 42sh/objs/exec/ft_findexec.d | 10 ---------- 42sh/objs/exec/launch_process.d | 10 ---------- 42sh/objs/exec/mark_process_status.d | 10 ---------- 42sh/objs/exec/process_redirect.d | 10 ---------- 42sh/objs/exec/process_reset.d | 10 ---------- 42sh/objs/exec/process_setexec.d | 10 ---------- 42sh/objs/exec/process_setgroup.d | 10 ---------- 59 files changed, 585 deletions(-) delete mode 100644 42sh/objs/builtin/bt_read_get.d delete mode 100644 42sh/objs/builtin/bt_read_parse.d delete mode 100644 42sh/objs/builtin/bt_read_term.d delete mode 100644 42sh/objs/builtin/builtin_cd.d delete mode 100644 42sh/objs/builtin/builtin_echo.d delete mode 100644 42sh/objs/builtin/builtin_env.d delete mode 100644 42sh/objs/builtin/builtin_exit.d delete mode 100644 42sh/objs/builtin/builtin_export.d delete mode 100644 42sh/objs/builtin/builtin_hash.d delete mode 100644 42sh/objs/builtin/builtin_history.d delete mode 100644 42sh/objs/builtin/builtin_read.d delete mode 100644 42sh/objs/builtin/builtin_setenv.d delete mode 100644 42sh/objs/builtin/builtin_unset.d delete mode 100644 42sh/objs/builtin/builtin_unsetenv.d delete mode 100644 42sh/objs/builtin/is_builtin.d delete mode 100644 42sh/objs/completion/c_binary.d delete mode 100644 42sh/objs/completion/c_clear.d delete mode 100644 42sh/objs/completion/c_files.d delete mode 100644 42sh/objs/completion/c_init.d delete mode 100644 42sh/objs/completion/c_matching.d delete mode 100644 42sh/objs/completion/c_misc.d delete mode 100644 42sh/objs/completion/c_output.d delete mode 100644 42sh/objs/completion/c_parser.d delete mode 100644 42sh/objs/completion/c_pathsolver.d delete mode 100644 42sh/objs/completion/c_printer.d delete mode 100644 42sh/objs/completion/c_rematch.d delete mode 100644 42sh/objs/completion/c_sizing.d delete mode 100644 42sh/objs/completion/c_terminal.d delete mode 100644 42sh/objs/completion/completion.d delete mode 100644 42sh/objs/exec/ast_free.d delete mode 100644 42sh/objs/exec/bad_fd.d delete mode 100644 42sh/objs/exec/error_badidentifier.d delete mode 100644 42sh/objs/exec/exec_ampersand.d delete mode 100644 42sh/objs/exec/exec_and_if.d delete mode 100644 42sh/objs/exec/exec_case.d delete mode 100644 42sh/objs/exec/exec_case_branch.d delete mode 100644 42sh/objs/exec/exec_command.d delete mode 100644 42sh/objs/exec/exec_default.d delete mode 100644 42sh/objs/exec/exec_elif.d delete mode 100644 42sh/objs/exec/exec_else.d delete mode 100644 42sh/objs/exec/exec_for.d delete mode 100644 42sh/objs/exec/exec_func.d delete mode 100644 42sh/objs/exec/exec_if.d delete mode 100644 42sh/objs/exec/exec_math.d delete mode 100644 42sh/objs/exec/exec_or_if.d delete mode 100644 42sh/objs/exec/exec_pipe.d delete mode 100644 42sh/objs/exec/exec_semi.d delete mode 100644 42sh/objs/exec/exec_until.d delete mode 100644 42sh/objs/exec/exec_var.d delete mode 100644 42sh/objs/exec/exec_while.d delete mode 100644 42sh/objs/exec/fd_is_valid.d delete mode 100644 42sh/objs/exec/ft_exec.d delete mode 100644 42sh/objs/exec/ft_findexec.d delete mode 100644 42sh/objs/exec/launch_process.d delete mode 100644 42sh/objs/exec/mark_process_status.d delete mode 100644 42sh/objs/exec/process_redirect.d delete mode 100644 42sh/objs/exec/process_reset.d delete mode 100644 42sh/objs/exec/process_setexec.d delete mode 100644 42sh/objs/exec/process_setgroup.d diff --git a/42sh/objs/builtin/bt_read_get.d b/42sh/objs/builtin/bt_read_get.d deleted file mode 100644 index 3d96b8dc..00000000 --- a/42sh/objs/builtin/bt_read_get.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/bt_read_get.o: src/builtin/bt_read_get.c \ - includes/builtin_read.h includes/types.h includes/builtin.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h \ - includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_parse.d b/42sh/objs/builtin/bt_read_parse.d deleted file mode 100644 index 89009e04..00000000 --- a/42sh/objs/builtin/bt_read_parse.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/bt_read_parse.o: src/builtin/bt_read_parse.c \ - includes/builtin_read.h includes/types.h includes/builtin.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h \ - includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/bt_read_term.d b/42sh/objs/builtin/bt_read_term.d deleted file mode 100644 index 928d1921..00000000 --- a/42sh/objs/builtin/bt_read_term.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/bt_read_term.o: src/builtin/bt_read_term.c \ - includes/builtin.h includes/types.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_cd.d b/42sh/objs/builtin/builtin_cd.d deleted file mode 100644 index 4d1c59c9..00000000 --- a/42sh/objs/builtin/builtin_cd.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/builtin/builtin_cd.o: src/builtin/builtin_cd.c includes/builtin.h \ - includes/types.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/builtin_read.h includes/minishell.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/glob.h includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_echo.d b/42sh/objs/builtin/builtin_echo.d deleted file mode 100644 index 48a2ec11..00000000 --- a/42sh/objs/builtin/builtin_echo.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_echo.o: src/builtin/builtin_echo.c \ - includes/builtin.h includes/types.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/builtin_read.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/exec.h \ - includes/job_control.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_env.d b/42sh/objs/builtin/builtin_env.d deleted file mode 100644 index 99743bb9..00000000 --- a/42sh/objs/builtin/builtin_env.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_env.o: src/builtin/builtin_env.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_exit.d b/42sh/objs/builtin/builtin_exit.d deleted file mode 100644 index 6f13cb81..00000000 --- a/42sh/objs/builtin/builtin_exit.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_exit.o: src/builtin/builtin_exit.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_export.d b/42sh/objs/builtin/builtin_export.d deleted file mode 100644 index 5df846e8..00000000 --- a/42sh/objs/builtin/builtin_export.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_export.o: src/builtin/builtin_export.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_hash.d b/42sh/objs/builtin/builtin_hash.d deleted file mode 100644 index f4eb8938..00000000 --- a/42sh/objs/builtin/builtin_hash.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_hash.o: src/builtin/builtin_hash.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_history.d b/42sh/objs/builtin/builtin_history.d deleted file mode 100644 index a60a1c6e..00000000 --- a/42sh/objs/builtin/builtin_history.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_history.o: src/builtin/builtin_history.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_read.d b/42sh/objs/builtin/builtin_read.d deleted file mode 100644 index d5785763..00000000 --- a/42sh/objs/builtin/builtin_read.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_read.o: src/builtin/builtin_read.c \ - includes/builtin_read.h includes/types.h includes/builtin.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/minishell.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/glob.h \ - includes/completion.h includes/hash.h diff --git a/42sh/objs/builtin/builtin_setenv.d b/42sh/objs/builtin/builtin_setenv.d deleted file mode 100644 index 502946a9..00000000 --- a/42sh/objs/builtin/builtin_setenv.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_setenv.o: src/builtin/builtin_setenv.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_unset.d b/42sh/objs/builtin/builtin_unset.d deleted file mode 100644 index d0d88852..00000000 --- a/42sh/objs/builtin/builtin_unset.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_unset.o: src/builtin/builtin_unset.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/builtin_unsetenv.d b/42sh/objs/builtin/builtin_unsetenv.d deleted file mode 100644 index 25dd7671..00000000 --- a/42sh/objs/builtin/builtin_unsetenv.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/builtin_unsetenv.o: src/builtin/builtin_unsetenv.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/builtin/is_builtin.d b/42sh/objs/builtin/is_builtin.d deleted file mode 100644 index 40071c79..00000000 --- a/42sh/objs/builtin/is_builtin.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/builtin/is_builtin.o: src/builtin/is_builtin.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_binary.d b/42sh/objs/completion/c_binary.d deleted file mode 100644 index 017f6e2a..00000000 --- a/42sh/objs/completion/c_binary.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_binary.o: src/completion/c_binary.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_clear.d b/42sh/objs/completion/c_clear.d deleted file mode 100644 index 51457990..00000000 --- a/42sh/objs/completion/c_clear.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_clear.o: src/completion/c_clear.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_files.d b/42sh/objs/completion/c_files.d deleted file mode 100644 index d611d285..00000000 --- a/42sh/objs/completion/c_files.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_files.o: src/completion/c_files.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_init.d b/42sh/objs/completion/c_init.d deleted file mode 100644 index 42812396..00000000 --- a/42sh/objs/completion/c_init.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_init.o: src/completion/c_init.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_matching.d b/42sh/objs/completion/c_matching.d deleted file mode 100644 index 265147a1..00000000 --- a/42sh/objs/completion/c_matching.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_matching.o: src/completion/c_matching.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_misc.d b/42sh/objs/completion/c_misc.d deleted file mode 100644 index 3dde2e26..00000000 --- a/42sh/objs/completion/c_misc.d +++ /dev/null @@ -1,9 +0,0 @@ -objs/completion/c_misc.o: src/completion/c_misc.c includes/completion.h \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/hash.h diff --git a/42sh/objs/completion/c_output.d b/42sh/objs/completion/c_output.d deleted file mode 100644 index c58c0475..00000000 --- a/42sh/objs/completion/c_output.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_output.o: src/completion/c_output.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_parser.d b/42sh/objs/completion/c_parser.d deleted file mode 100644 index 20e78c29..00000000 --- a/42sh/objs/completion/c_parser.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_parser.o: src/completion/c_parser.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_pathsolver.d b/42sh/objs/completion/c_pathsolver.d deleted file mode 100644 index a43db912..00000000 --- a/42sh/objs/completion/c_pathsolver.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_pathsolver.o: src/completion/c_pathsolver.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_printer.d b/42sh/objs/completion/c_printer.d deleted file mode 100644 index f5c0111d..00000000 --- a/42sh/objs/completion/c_printer.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_printer.o: src/completion/c_printer.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_rematch.d b/42sh/objs/completion/c_rematch.d deleted file mode 100644 index 4402b27d..00000000 --- a/42sh/objs/completion/c_rematch.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_rematch.o: src/completion/c_rematch.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_sizing.d b/42sh/objs/completion/c_sizing.d deleted file mode 100644 index 6d931b50..00000000 --- a/42sh/objs/completion/c_sizing.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_sizing.o: src/completion/c_sizing.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/c_terminal.d b/42sh/objs/completion/c_terminal.d deleted file mode 100644 index e2fc7d30..00000000 --- a/42sh/objs/completion/c_terminal.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/c_terminal.o: src/completion/c_terminal.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/completion/completion.d b/42sh/objs/completion/completion.d deleted file mode 100644 index 2e7aca1d..00000000 --- a/42sh/objs/completion/completion.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/completion/completion.o: src/completion/completion.c \ - includes/completion.h includes/minishell.h libft/includes/libft.h \ - libft/includes/lst.h libft/includes/dlst.h libft/includes/str.h \ - libft/includes/sstr.h libft/includes/math.h libft/includes/btree.h \ - libft/includes/mytime.h libft/includes/get_next_line.h \ - libft/includes/color.h libft/includes/ft_sys.h includes/types.h \ - includes/lexer.h includes/parser.h includes/ft_readline.h \ - includes/ft_input.h includes/exec.h includes/job_control.h \ - includes/builtin.h includes/builtin_read.h includes/glob.h \ - includes/hash.h diff --git a/42sh/objs/exec/ast_free.d b/42sh/objs/exec/ast_free.d deleted file mode 100644 index a938bba4..00000000 --- a/42sh/objs/exec/ast_free.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/ast_free.o: src/exec/ast_free.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/bad_fd.d b/42sh/objs/exec/bad_fd.d deleted file mode 100644 index 10582e42..00000000 --- a/42sh/objs/exec/bad_fd.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/bad_fd.o: src/exec/bad_fd.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/error_badidentifier.d b/42sh/objs/exec/error_badidentifier.d deleted file mode 100644 index b0be5a62..00000000 --- a/42sh/objs/exec/error_badidentifier.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/error_badidentifier.o: src/exec/error_badidentifier.c \ - includes/exec.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_ampersand.d b/42sh/objs/exec/exec_ampersand.d deleted file mode 100644 index a099a3a2..00000000 --- a/42sh/objs/exec/exec_ampersand.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_ampersand.o: src/exec/exec_ampersand.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_and_if.d b/42sh/objs/exec/exec_and_if.d deleted file mode 100644 index e94f2cac..00000000 --- a/42sh/objs/exec/exec_and_if.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_and_if.o: src/exec/exec_and_if.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_case.d b/42sh/objs/exec/exec_case.d deleted file mode 100644 index 56365354..00000000 --- a/42sh/objs/exec/exec_case.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_case.o: src/exec/exec_case.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_case_branch.d b/42sh/objs/exec/exec_case_branch.d deleted file mode 100644 index 7394d37e..00000000 --- a/42sh/objs/exec/exec_case_branch.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_case_branch.o: src/exec/exec_case_branch.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_command.d b/42sh/objs/exec/exec_command.d deleted file mode 100644 index d0f0225c..00000000 --- a/42sh/objs/exec/exec_command.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_command.o: src/exec/exec_command.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_default.d b/42sh/objs/exec/exec_default.d deleted file mode 100644 index e2f12d17..00000000 --- a/42sh/objs/exec/exec_default.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_default.o: src/exec/exec_default.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_elif.d b/42sh/objs/exec/exec_elif.d deleted file mode 100644 index 31a808b1..00000000 --- a/42sh/objs/exec/exec_elif.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_elif.o: src/exec/exec_elif.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_else.d b/42sh/objs/exec/exec_else.d deleted file mode 100644 index 7fbf18af..00000000 --- a/42sh/objs/exec/exec_else.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_else.o: src/exec/exec_else.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_for.d b/42sh/objs/exec/exec_for.d deleted file mode 100644 index 7e939896..00000000 --- a/42sh/objs/exec/exec_for.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_for.o: src/exec/exec_for.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_func.d b/42sh/objs/exec/exec_func.d deleted file mode 100644 index d1cd8304..00000000 --- a/42sh/objs/exec/exec_func.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_func.o: src/exec/exec_func.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_if.d b/42sh/objs/exec/exec_if.d deleted file mode 100644 index bfc49041..00000000 --- a/42sh/objs/exec/exec_if.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_if.o: src/exec/exec_if.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_math.d b/42sh/objs/exec/exec_math.d deleted file mode 100644 index 6c705323..00000000 --- a/42sh/objs/exec/exec_math.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_math.o: src/exec/exec_math.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_or_if.d b/42sh/objs/exec/exec_or_if.d deleted file mode 100644 index e47e7589..00000000 --- a/42sh/objs/exec/exec_or_if.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_or_if.o: src/exec/exec_or_if.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_pipe.d b/42sh/objs/exec/exec_pipe.d deleted file mode 100644 index f0e75e4a..00000000 --- a/42sh/objs/exec/exec_pipe.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_pipe.o: src/exec/exec_pipe.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_semi.d b/42sh/objs/exec/exec_semi.d deleted file mode 100644 index a4e14789..00000000 --- a/42sh/objs/exec/exec_semi.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_semi.o: src/exec/exec_semi.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_until.d b/42sh/objs/exec/exec_until.d deleted file mode 100644 index 892f8a85..00000000 --- a/42sh/objs/exec/exec_until.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_until.o: src/exec/exec_until.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_var.d b/42sh/objs/exec/exec_var.d deleted file mode 100644 index 9ebffccd..00000000 --- a/42sh/objs/exec/exec_var.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_var.o: src/exec/exec_var.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/exec_while.d b/42sh/objs/exec/exec_while.d deleted file mode 100644 index e2156a69..00000000 --- a/42sh/objs/exec/exec_while.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/exec_while.o: src/exec/exec_while.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/fd_is_valid.d b/42sh/objs/exec/fd_is_valid.d deleted file mode 100644 index 82af7a1d..00000000 --- a/42sh/objs/exec/fd_is_valid.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/fd_is_valid.o: src/exec/fd_is_valid.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/ft_exec.d b/42sh/objs/exec/ft_exec.d deleted file mode 100644 index 4d324b14..00000000 --- a/42sh/objs/exec/ft_exec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/ft_exec.o: src/exec/ft_exec.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/ft_findexec.d b/42sh/objs/exec/ft_findexec.d deleted file mode 100644 index bdef00c4..00000000 --- a/42sh/objs/exec/ft_findexec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/ft_findexec.o: src/exec/ft_findexec.c includes/minishell.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/launch_process.d b/42sh/objs/exec/launch_process.d deleted file mode 100644 index f85c0e5d..00000000 --- a/42sh/objs/exec/launch_process.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/launch_process.o: src/exec/launch_process.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/mark_process_status.d b/42sh/objs/exec/mark_process_status.d deleted file mode 100644 index fd039a44..00000000 --- a/42sh/objs/exec/mark_process_status.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/mark_process_status.o: src/exec/mark_process_status.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_redirect.d b/42sh/objs/exec/process_redirect.d deleted file mode 100644 index 51148225..00000000 --- a/42sh/objs/exec/process_redirect.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_redirect.o: src/exec/process_redirect.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_reset.d b/42sh/objs/exec/process_reset.d deleted file mode 100644 index 66d081e7..00000000 --- a/42sh/objs/exec/process_reset.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_reset.o: src/exec/process_reset.c includes/exec.h \ - libft/includes/libft.h libft/includes/lst.h libft/includes/dlst.h \ - libft/includes/str.h libft/includes/sstr.h libft/includes/math.h \ - libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/job_control.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_setexec.d b/42sh/objs/exec/process_setexec.d deleted file mode 100644 index a0440320..00000000 --- a/42sh/objs/exec/process_setexec.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_setexec.o: src/exec/process_setexec.c \ - includes/minishell.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/lexer.h \ - includes/parser.h includes/ft_readline.h includes/ft_input.h \ - includes/exec.h includes/job_control.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h diff --git a/42sh/objs/exec/process_setgroup.d b/42sh/objs/exec/process_setgroup.d deleted file mode 100644 index a1b5f93e..00000000 --- a/42sh/objs/exec/process_setgroup.d +++ /dev/null @@ -1,10 +0,0 @@ -objs/exec/process_setgroup.o: src/exec/process_setgroup.c \ - includes/job_control.h libft/includes/libft.h libft/includes/lst.h \ - libft/includes/dlst.h libft/includes/str.h libft/includes/sstr.h \ - libft/includes/math.h libft/includes/btree.h libft/includes/mytime.h \ - libft/includes/get_next_line.h libft/includes/color.h \ - libft/includes/ft_sys.h includes/types.h includes/exec.h \ - includes/minishell.h includes/lexer.h includes/parser.h \ - includes/ft_readline.h includes/ft_input.h includes/builtin.h \ - includes/builtin_read.h includes/glob.h includes/completion.h \ - includes/hash.h From ad5bea849eaccfb27f7e521020f575824a1e97d5 Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 20:53:11 +0100 Subject: [PATCH 181/206] working on job_control, need to catch Jack work's --- 42sh/Makefile | 24 ++++- 42sh/includes/exec.h | 10 +- 42sh/includes/glob.h | 5 +- 42sh/src/exec/ast_copy.c | 25 +++++ 42sh/src/exec/exec_case_branch.c | 8 +- 42sh/src/exec/exec_for.c | 43 --------- 42sh/src/exec/ft_exec.c | 6 +- 42sh/src/exec/launch_case.c | 68 ++++++++++++++ 42sh/src/exec/launch_file.c | 3 +- 42sh/src/exec/launch_for.c | 92 +++++++++++++++++++ 42sh/src/exec/launch_if.c | 65 +++++++++++++ 42sh/src/exec/launch_process.c | 10 +- .../src/exec/{exec_while.c => launch_while.c} | 33 ++++--- .../exec/{exec_case.c => set_process_case.c} | 23 ++--- .../src/exec/{exec_if.c => set_process_for.c} | 23 ++--- 42sh/src/exec/set_process_if.c | 20 ++++ 42sh/src/exec/set_process_while.c | 20 ++++ 42sh/src/glob/expand_brace.c | 32 +------ 42sh/src/glob/gen_tab_esc.c | 45 +++++++++ 42sh/src/glob/lib_perso/ft_ld_copy.c | 29 ++++++ 42sh/src/glob/tab_esc_copy.c | 21 +++++ 42sh/src/glob/word_is_assignment.c | 35 +++++++ 42sh/src/lexer/lexer_word.c | 16 ++-- 42sh/src/parser/add_cmd.c | 20 ++-- 24 files changed, 515 insertions(+), 161 deletions(-) create mode 100644 42sh/src/exec/ast_copy.c delete mode 100644 42sh/src/exec/exec_for.c create mode 100644 42sh/src/exec/launch_case.c create mode 100644 42sh/src/exec/launch_for.c create mode 100644 42sh/src/exec/launch_if.c rename 42sh/src/exec/{exec_while.c => launch_while.c} (65%) rename 42sh/src/exec/{exec_case.c => set_process_case.c} (56%) rename 42sh/src/exec/{exec_if.c => set_process_for.c} (56%) create mode 100644 42sh/src/exec/set_process_if.c create mode 100644 42sh/src/exec/set_process_while.c create mode 100644 42sh/src/glob/gen_tab_esc.c create mode 100644 42sh/src/glob/lib_perso/ft_ld_copy.c create mode 100644 42sh/src/glob/tab_esc_copy.c create mode 100644 42sh/src/glob/word_is_assignment.c diff --git a/42sh/Makefile b/42sh/Makefile index cfce41bd..7400f7e3 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -63,26 +63,29 @@ exec/bad_fd.c\ exec/error_badidentifier.c\ exec/exec_ampersand.c\ exec/exec_and_if.c\ -exec/exec_case.c\ exec/exec_case_branch.c\ exec/exec_command.c\ exec/exec_default.c\ exec/exec_elif.c\ exec/exec_else.c\ -exec/exec_for.c\ exec/exec_func.c\ -exec/exec_if.c\ +exec/exec_leaf.c\ +exec/exec_math.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ exec/exec_semi.c\ exec/exec_until.c\ exec/exec_var.c\ -exec/exec_while.c\ -exec/exec_math.c\ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ +exec/launch_builtin.c\ +exec/launch_case.c\ +exec/launch_file.c\ +exec/launch_for.c\ +exec/launch_if.c\ exec/launch_process.c\ +exec/launch_while.c\ exec/mark_process_status.c\ exec/process_redirect.c\ exec/process_reset.c\ @@ -98,6 +101,13 @@ exec/redirect_less.c\ exec/redirect_lessand.c\ exec/set_exitstatus.c\ exec/set_process.c\ +exec/set_process_case.c\ +exec/set_process_cmd.c\ +exec/set_process_for.c\ +exec/set_process_if.c\ +exec/set_process_map.c\ +exec/set_process_while.c\ +exec/token_to_argv.c\ glob/command_getoutput.c\ glob/dir_glob.c\ glob/esc_print.c\ @@ -108,10 +118,12 @@ glob/expand_home.c\ glob/expand_var.c\ glob/ft_strsplit_esc.c\ glob/ft_strsplit_spe.c\ +glob/gen_tab_esc.c\ glob/glob.c\ glob/is_char_esc.c\ glob/lib_perso/ft_ld_back.c\ glob/lib_perso/ft_ld_clear.c\ +glob/lib_perso/ft_ld_copy.c\ glob/lib_perso/ft_ld_del.c\ glob/lib_perso/ft_ld_front.c\ glob/lib_perso/ft_ld_new.c\ @@ -128,6 +140,8 @@ glob/lib_perso/ft_strsubf.c\ glob/lib_perso/ft_tabdel.c\ glob/lib_perso/ft_tablen.c\ glob/match_pattern.c\ +glob/tab_esc_copy.c\ +glob/word_is_assignment.c\ hash_table/ft_add_hash.c\ hash_table/hash.c\ hash_table/hash_free.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 3a84ac84..6101dd9c 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:55:12 by wescande ### ########.fr */ +/* Updated: 2017/03/07 20:50:23 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,7 +63,6 @@ struct s_data_cond struct s_data_list { - char *word; t_ld *list_word; t_btree *content; }; @@ -76,7 +75,7 @@ union u_process_data struct s_data_cond d_else; struct s_data_cond d_elif; struct s_data_list d_for; -// struct s_data_cond case; + struct s_data_list d_case; }; enum e_process_type @@ -140,8 +139,8 @@ int exec_leaf(t_btree **ast); //int exec_while(t_btree **ast); //int exec_if(t_btree **ast); -//int exec_elif(t_btree **ast); -//int exec_else(t_btree **ast); +int exec_elif(t_btree **ast); +int exec_else(t_btree **ast); //int exec_until(t_btree **ast); //int exec_default(t_btree **ast); int exec_var(t_btree **ast); @@ -174,6 +173,7 @@ char *ft_findexec(char *path, char *file); void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); +t_btree *ast_copy(t_btree *tree); void redir_free(void *data, size_t content_size); char **token_to_argv(t_ld *ld, int do_match); diff --git a/42sh/includes/glob.h b/42sh/includes/glob.h index 26d18d42..d91bcaef 100644 --- a/42sh/includes/glob.h +++ b/42sh/includes/glob.h @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:31:18 by wescande #+# #+# */ -/* Updated: 2017/03/03 20:39:05 by wescande ### ########.fr */ +/* Updated: 2017/03/07 20:40:28 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,6 +64,8 @@ typedef struct s_bquote char **glob(char *str, unsigned char *esc, unsigned char *dbl_esc, int do_match); void esc_print(char *str, unsigned char *esc); +int word_is_assignment(char **content); +void *tab_esc_copy(void *content); /* ** return TRUE if path file is a directory. @@ -120,6 +122,7 @@ t_ld *ft_ld_back(t_ld *ld); t_ld *ft_ld_swap(t_ld *l_cur); char **ft_ld_to_tab(t_ld *ld); t_ld *ft_ld_order(t_ld *ld, int (*f)(), void (*del)()); +t_ld *ft_ld_copy(t_ld *src, void *(*f)(void *elem)); /* ** str: diff --git a/42sh/src/exec/ast_copy.c b/42sh/src/exec/ast_copy.c new file mode 100644 index 00000000..2776bb49 --- /dev/null +++ b/42sh/src/exec/ast_copy.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ast_copy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 20:44:42 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:50:43 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +t_btree *ast_copy(t_btree *tree) +{ + t_btree *node; + + if (!tree) + return (NULL); + node = btree_create_node(tree->item, tree->content_size); + node->left = ast_copy(tree->left); + node->right = ast_copy(tree->right); + return (node); +} diff --git a/42sh/src/exec/exec_case_branch.c b/42sh/src/exec/exec_case_branch.c index 2d0db420..921b136b 100644 --- a/42sh/src/exec/exec_case_branch.c +++ b/42sh/src/exec/exec_case_branch.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* exec_if.c :+: :+: :+: */ +/* exec_case_branch.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ +/* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:36:55 by ariard ### ########.fr */ +/* Created: 2017/03/07 20:33:45 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:34:48 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_for.c b/42sh/src/exec/exec_for.c deleted file mode 100644 index 632f5773..00000000 --- a/42sh/src/exec/exec_for.c +++ /dev/null @@ -1,43 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_until.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:37:02 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "exec.h" - -int exec_for(t_btree **ast) -{ - t_astnode *node; - t_ld *temp; - char **av; - char *var; - int i; - - node = (*ast)->item; - temp = node->data.cmd.wordlist; - var = ((char **)(temp->content))[0]; - if (ft_isdigit(var[0])) - return (error_badidentifier(var)); - temp = temp->next; - while (temp) - { - i = 0; - av = token_to_argv(temp, 1); - while (av[i]) - { - builtin_setenv("setenv", (char*[]){var, av[i], 0}, - data_singleton()->local_var); - ft_exec(&(*ast)->right); - i++; - } - temp = temp->next; - } - return (0); -} diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 07b28a64..7c70ce5f 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:20:18 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:22:42 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,8 +22,8 @@ t_itof g_execmap[] = {TK_PIPE, &exec_pipe}, {TK_WHILE, &exec_leaf}, {TK_IF, &exec_leaf}, - {TK_ELIF, &exec_leaf}, - {TK_ELSE, &exec_leaf}, + {TK_ELIF, &exec_elif}, + {TK_ELSE, &exec_else}, {TK_UNTIL, &exec_leaf}, {TK_FOR, &exec_leaf}, {TK_CASE, &exec_leaf}, diff --git a/42sh/src/exec/launch_case.c b/42sh/src/exec/launch_case.c new file mode 100644 index 00000000..ed10dcd2 --- /dev/null +++ b/42sh/src/exec/launch_case.c @@ -0,0 +1,68 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_case.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 19:02:23 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:38:19 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" +/* +int exec_case(t_btree **ast) +{ + t_astnode *node; + char **av; + t_exec *exec; + + (void)ast; + exec = &data_singleton()->exec; + exec->attrs &= ~EXEC_CASE_BRANCH; + + node = (*ast)->item; + av = token_to_argv(node->data.cmd.wordlist, 1); + exec->case_pattern = av; + return (0); +} +*/ + +static int do_case(t_process *p) +{ + t_exec *exec; + + exec = &data_singleton()->exec; + exec->attrs &= ~EXEC_CASE_BRANCH; + exec->case_pattern = token_to_argv(p->data.d_case.list_word, 1); +/* ft_exec(&p->data.d_if.condition); + if (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0"))) + { + exec->attrs |= EXEC_IF_BRANCH; + ft_exec(&p->data.d_if.content); + } + return (ft_atoi(ft_getenv(data_singleton()->env, "?")));*/ + return (0); +} + +int launch_case(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + { + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_case(p)); + } + else if (pid > 0) + return (pid); + } + else + do_case(p); + return (0); +} diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index 7f4a1b65..aaa04a6d 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:49:31 by wescande ### ########.fr */ +/* Updated: 2017/03/07 17:08:16 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,7 @@ int launch_file(t_process *p) exit (1); (*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env); ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); + exit(42); } else if (pid > 0) return (pid); diff --git a/42sh/src/exec/launch_for.c b/42sh/src/exec/launch_for.c new file mode 100644 index 00000000..059448c9 --- /dev/null +++ b/42sh/src/exec/launch_for.c @@ -0,0 +1,92 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_for.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 17:34:43 by wescande #+# #+# */ +/* Updated: 2017/03/07 19:00:56 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +static int do_for(t_process *p) +{ + t_ld *temp; + int i; + char **av; + char *var; + + temp = p->data.d_for.list_word; + var = ((char **)temp->content)[0]; + if (!word_is_assignment(temp->content)) + return (error_badidentifier(var)); + temp = temp->next; + while (temp) + { + i = -1; + av = token_to_argv(temp, 1); + while (av[++i]) + { + builtin_setenv("setenv", (char*[]){var, av[i], 0}, + data_singleton()->local_var); + ft_exec(&p->data.d_for.content); + i++; + } + temp = temp->next; + } + return (ft_atoi(ft_getenv(data_singleton()->env, "?"))); +} + +int launch_for(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + { + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_for(p)); + } + else if (pid > 0) + return (pid); + } + else + do_for(p); + return (0); +} +/* + int exec_for(t_btree **ast) + { + t_astnode *node; + t_ld *temp; + char **av; + char *var; + int i; + + node = (*ast)->item; + temp = node->data.cmd.wordlist; + var = ((char **)(temp->content))[0]; + if (ft_isdigit(var[0])) + return (error_badidentifier(var)); + temp = temp->next; + while (temp) + { + i = 0; + av = token_to_argv(temp, 1); + while (av[i]) + { + builtin_setenv("setenv", (char*[]){var, av[i], 0}, + data_singleton()->local_var); + ft_exec(&(*ast)->right); + i++; + } + temp = temp->next; + } + return (0); + }*/ diff --git a/42sh/src/exec/launch_if.c b/42sh/src/exec/launch_if.c new file mode 100644 index 00000000..e8eca419 --- /dev/null +++ b/42sh/src/exec/launch_if.c @@ -0,0 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 17:26:53 by wescande #+# #+# */ +/* Updated: 2017/03/07 18:36:02 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +static int do_if(t_process *p) +{ + t_exec *exec; + + exec = &data_singleton()->exec; + exec->attrs &= ~EXEC_IF_BRANCH; + ft_exec(&p->data.d_if.condition); + if (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0"))) + { + exec->attrs |= EXEC_IF_BRANCH; + ft_exec(&p->data.d_if.content); + } + return (ft_atoi(ft_getenv(data_singleton()->env, "?"))); +} + +int launch_if(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + { + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_if(p)); + } + else if (pid > 0) + return (pid); + } + else + do_if(p); + return (0); +} +/* +int exec_if(t_btree **ast) +{ + t_exec *exec; + + exec = &data_singleton()->exec; + + exec->attrs &= ~EXEC_IF_BRANCH; + ft_exec(&(*ast)->left); + if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) + { + exec->attrs |= EXEC_IF_BRANCH; + ft_exec(&(*ast)->right); + } + return (0); +}*/ diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index a2d75362..cd6710f8 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:49:10 by wescande ### ########.fr */ +/* Updated: 2017/03/07 19:02:40 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,10 +18,10 @@ t_itof g_launchmap[] = {PROCESS_BUILTIN, launch_builtin}, {PROCESS_FILE, launch_file}, {PROCESS_SUBSHELL, NULL}, - {PROCESS_WHILE, NULL}, - {PROCESS_IF, NULL}, - {PROCESS_FOR, NULL}, - {PROCESS_CASE, NULL}, + {PROCESS_WHILE, launch_while}, + {PROCESS_IF, launch_if}, + {PROCESS_FOR, launch_for}, + {PROCESS_CASE, launch_case}, {0, NULL} }; diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/launch_while.c similarity index 65% rename from 42sh/src/exec/exec_while.c rename to 42sh/src/exec/launch_while.c index 59699f38..947ea4c6 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/launch_while.c @@ -1,17 +1,17 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* exec_while.c :+: :+: :+: */ +/* launch_while.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ +/* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/03/07 16:41:50 by wescande ### ########.fr */ +/* Created: 2017/03/07 17:20:53 by wescande #+# #+# */ +/* Updated: 2017/03/07 17:30:16 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" - +/* int exec_while(t_btree **ast) { int ret; @@ -28,10 +28,19 @@ int exec_while(t_btree **ast) exit(ret); return (0); } - +*/ static int do_while(t_process *p) { int ret; + + ft_exec(&p->data.d_while.condition); + ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); + while (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0"))) + { + ft_exec(&p->data.d_while.content); + ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); + ft_exec(&p->data.d_while.condition); + } return (ret); } @@ -43,15 +52,15 @@ int launch_while(t_process *p) { pid = fork(); if (pid == 0) - exit(do_while(p)); - else if (pid > 0) { - p->pid = pid; - process_setgroup(p, pid); - return (0); + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_while(p)); } + else if (pid > 0) + return (pid); } else do_while(p); - return (1); + return (0); } diff --git a/42sh/src/exec/exec_case.c b/42sh/src/exec/set_process_case.c similarity index 56% rename from 42sh/src/exec/exec_case.c rename to 42sh/src/exec/set_process_case.c index ed982dac..b69cce86 100644 --- a/42sh/src/exec/exec_case.c +++ b/42sh/src/exec/set_process_case.c @@ -1,29 +1,20 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* exec_if.c :+: :+: :+: */ +/* set_process_case.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ +/* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:37:20 by ariard ### ########.fr */ +/* Created: 2017/03/07 20:36:04 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:51:41 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -int exec_case(t_btree **ast) +int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd) { - t_astnode *node; - char **av; - t_exec *exec; - - (void)ast; - exec = &data_singleton()->exec; - exec->attrs &= ~EXEC_CASE_BRANCH; - - node = (*ast)->item; - av = token_to_argv(node->data.cmd.wordlist, 1); - exec->case_pattern = av; + p->data.d_case.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); + p->data.d_case.content = ast_copy(ast->right); return (0); } diff --git a/42sh/src/exec/exec_if.c b/42sh/src/exec/set_process_for.c similarity index 56% rename from 42sh/src/exec/exec_if.c rename to 42sh/src/exec/set_process_for.c index c1a59aef..c3bfb0e8 100644 --- a/42sh/src/exec/exec_if.c +++ b/42sh/src/exec/set_process_for.c @@ -1,29 +1,20 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* exec_if.c :+: :+: :+: */ +/* set_process_for.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ +/* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 18:07:31 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:12:28 by jhalford ### ########.fr */ +/* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:51:57 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "exec.h" -int exec_if(t_btree **ast) +int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd) { - t_exec *exec; - - exec = &data_singleton()->exec; - - exec->attrs &= ~EXEC_IF_BRANCH; - ft_exec(&(*ast)->left); - if (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0") == 0) - { - exec->attrs |= EXEC_IF_BRANCH; - ft_exec(&(*ast)->right); - } + p->data.d_for.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); + p->data.d_for.content = ast_copy(ast->right); return (0); } diff --git a/42sh/src/exec/set_process_if.c b/42sh/src/exec/set_process_if.c new file mode 100644 index 00000000..f07f8202 --- /dev/null +++ b/42sh/src/exec/set_process_if.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 19:19:50 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:35:16 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd) +{ + p->data.d_if.condition = btree_map(ast->left, ast_copy); + p->data.d_if.content = btree_map(ast->right, ast_copy); + return (0); +} diff --git a/42sh/src/exec/set_process_while.c b/42sh/src/exec/set_process_while.c new file mode 100644 index 00000000..bc7b4b1a --- /dev/null +++ b/42sh/src/exec/set_process_while.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_while.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 19:38:10 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:51:24 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" + +int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd) +{ + p->data.d_while.condition = ast_copy(ast->left); + p->data.d_while.content = ast_copy(ast->right); + return (0); +} diff --git a/42sh/src/glob/expand_brace.c b/42sh/src/glob/expand_brace.c index c0055817..c715ae48 100644 --- a/42sh/src/glob/expand_brace.c +++ b/42sh/src/glob/expand_brace.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 19:00:29 by wescande #+# #+# */ -/* Updated: 2017/02/24 22:05:14 by ariard ### ########.fr */ +/* Updated: 2017/03/07 20:03:35 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,36 +20,6 @@ ** -t_glob *gl -> struct of expanding */ -char **gen_tab(const char *pat, - const unsigned char *esc, - const unsigned char *esc2, - int dup) -{ - char **my_tab; - - if (!(my_tab = (char **)malloc(sizeof(char *) * (esc2 ? 4 : 3)))) - return (NULL); - if (dup) - { - my_tab[0] = ft_strdup(pat); - my_tab[1] = ft_strdup((const char *)esc); - if (esc2) - my_tab[2] = ft_strdup((const char *)esc2); - } - else - { - my_tab[0] = (char *)pat; - my_tab[1] = (char *)esc; - if (esc2) - my_tab[2] = (char *)esc2; - } - if (esc2) - my_tab[3] = NULL; - else - my_tab[2] = NULL; - return (my_tab); -} - static void iter_on_each(t_expand *me) { int i; diff --git a/42sh/src/glob/gen_tab_esc.c b/42sh/src/glob/gen_tab_esc.c new file mode 100644 index 00000000..c9f5f8e4 --- /dev/null +++ b/42sh/src/glob/gen_tab_esc.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* gen_tab_esc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 20:04:40 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:07:31 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "glob.h" + +char **gen_tab(const char *pat, + const unsigned char *esc, + const unsigned char *esc2, + int dup) +{ + char **my_tab; + int len; + + if (!(my_tab = (char **)malloc(sizeof(char *) * (esc2 ? 4 : 3)))) + return (NULL); + if (dup) + { + len = ft_strlen(pat); + my_tab[0] = ft_strdup(pat); + my_tab[1] = (char *)dup_char_esc(esc, len >> 3); + if (esc2) + my_tab[2] = (char *)dup_char_esc(esc2, len >> 3); + } + else + { + my_tab[0] = (char *)pat; + my_tab[1] = (char *)esc; + if (esc2) + my_tab[2] = (char *)esc2; + } + if (esc2) + my_tab[3] = NULL; + else + my_tab[2] = NULL; + return (my_tab); +} diff --git a/42sh/src/glob/lib_perso/ft_ld_copy.c b/42sh/src/glob/lib_perso/ft_ld_copy.c new file mode 100644 index 00000000..7cc67659 --- /dev/null +++ b/42sh/src/glob/lib_perso/ft_ld_copy.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ld_copy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 19:42:23 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:29:28 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "glob.h" + +t_ld *ft_ld_copy(t_ld *src, void *(*f)(void *elem)) +{ + t_ld *dst; + void *content; + + dst = NULL; + while (src) + { + content = (*f)(src->content); + ft_ld_pushfront(dst, content); + src = src->next; + } + ft_ld_reverse(dst); + return (dst); +} diff --git a/42sh/src/glob/tab_esc_copy.c b/42sh/src/glob/tab_esc_copy.c new file mode 100644 index 00000000..0661d863 --- /dev/null +++ b/42sh/src/glob/tab_esc_copy.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_for.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ +/* Updated: 2017/03/07 20:40:30 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "glob.h" + +void *tab_esc_copy(void *content) +{ + char **ch_cont; + + ch_cont = (char **)content; + return (gen_tab(ch_cont[0], (unsigned char *)ch_cont[1], (unsigned char *)ch_cont[2], 1)); +} diff --git a/42sh/src/glob/word_is_assignment.c b/42sh/src/glob/word_is_assignment.c new file mode 100644 index 00000000..de819dd1 --- /dev/null +++ b/42sh/src/glob/word_is_assignment.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* word_is_assignment.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 18:59:11 by wescande #+# #+# */ +/* Updated: 2017/03/07 18:59:38 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "glob.h" + +int word_is_assignment(char **content) +{ + const int len = ft_strlen(content[0]); + int pos; + char c; + const unsigned char *esc = (const unsigned char *)content[1]; + + pos = -1; + if (ft_isdigit(content[0][0])) + return (0); + while (++pos < len) + { + if (is_char_esc(esc, content[0], content[0] + pos)) + return (0); + c = content[0][pos]; + if (!ft_isalnum(c) && c != '_') + return (0); + } + return (1); +} + diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index d10c9e48..2fcf8faa 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,28 +6,31 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:07:26 by ariard ### ########.fr */ +/* Updated: 2017/03/07 19:00:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" - +/* static int word_is_assignment(t_token *token) { const int len = ft_strlen(token->data); - int pos = -1; + int pos; char c; + pos = -1; + if (ft_isdigit(token->data[pos])) + return (0); while (++pos < len) { if (is_char_esc(token->esc, token->data, token->data + pos)) return (0); c = token->data[pos]; - if (!ft_isalnum(c) && c != '_' && c != '-') + if (!ft_isalnum(c) && c != '_') return (0); } return (1); -} +}*/ int lexer_word(t_list **alst, t_lexer *lexer) { @@ -42,7 +45,8 @@ int lexer_word(t_list **alst, t_lexer *lexer) lexer->state = state; return (lexer_lex(alst, lexer)); } - if (lexer->str[lexer->pos] == '=' && word_is_assignment(token)) + if (lexer->str[lexer->pos] == '=' + && word_is_assignment((char *[]){token->data, (char *)token->esc})) { lexer->state = ASSIGNEMENT_WORD; return (lexer_lex(alst, lexer)); diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 0518acf6..f88cbaa8 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:36:34 by ariard ### ########.fr */ +/* Updated: 2017/03/07 20:10:10 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -68,19 +68,15 @@ int add_cmd(t_btree **ast, t_list **lst) { t_token *token; t_astnode *node; - char **my_tab; int i; - i = 0; - while (i < 14) - { + i = -1; + while (++i < 14) if (g_distrostree[i].test(ast, lst) == 1) { DG("add : %d", i); return (g_distrostree[i].add(ast, lst)); } - i++; - } if (!*ast) gen_node(ast); else if (no_del_token(ast, lst)) @@ -92,16 +88,14 @@ int add_cmd(t_btree **ast, t_list **lst) else node->type = CMD; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) - { - DG("add cmd default"); - if ((my_tab = (char **)malloc(sizeof(char *) * 4))) +/* if ((my_tab = (char **)malloc(sizeof(char *) * 4))) { my_tab[0] = ft_strdup(token->data); my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); my_tab[3] = NULL; - } - ft_ld_pushback(&node->data.cmd.token, my_tab); - } + }*/ + ft_ld_pushback(&node->data.cmd.token, + gen_tab(token->data, token->esc, token->esc2, 1)); return (0); } From bac6e9d6d85c49e0596f77f5e714a3622160374b Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 21:25:40 +0100 Subject: [PATCH 182/206] permet de compiler --- 42sh/Makefile | 1 + 42sh/includes/exec.h | 19 ++++++++++++++----- 42sh/includes/minishell.h | 4 ++-- 42sh/src/exec/ast_copy.c | 4 ++-- 42sh/src/exec/launch_case.c | 4 ++-- 42sh/src/exec/launch_for.c | 4 ++-- 42sh/src/exec/launch_if.c | 4 ++-- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/exec/process_redirect.c | 8 ++++---- 42sh/src/exec/set_process.c | 6 +++--- 42sh/src/exec/set_process_case.c | 5 +++-- 42sh/src/exec/set_process_cmd.c | 3 ++- 42sh/src/exec/set_process_for.c | 5 +++-- 42sh/src/exec/set_process_if.c | 7 ++++--- 42sh/src/exec/set_process_while.c | 3 ++- 42sh/src/glob/gen_tab_esc.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_clear.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_copy.c | 8 ++++---- 42sh/src/glob/lib_perso/ft_ld_del.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_new.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_order.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_pushback.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_pushfront.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_reverse.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_size.c | 4 ++-- 42sh/src/glob/lib_perso/ft_ld_to_tab.c | 4 ++-- 42sh/src/glob/lib_perso/ft_memrealloc.c | 4 ++-- 42sh/src/glob/lib_perso/ft_strjoinf.c | 4 ++-- 42sh/src/glob/lib_perso/ft_strsubf.c | 4 ++-- 42sh/src/glob/lib_perso/ft_tabdel.c | 4 ++-- 42sh/src/glob/lib_perso/ft_tablen.c | 4 ++-- 42sh/src/glob/word_is_assignment.c | 4 ++-- 42sh/src/job-control/process_format.c | 10 +++++----- 42sh/src/parser/produce_sym.c | 4 ++-- 34 files changed, 90 insertions(+), 75 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index 7400f7e3..c7bc80e0 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -58,6 +58,7 @@ completion/c_rematch.c\ completion/c_sizing.c\ completion/c_terminal.c\ completion/completion.c\ +exec/ast_copy.c\ exec/ast_free.c\ exec/bad_fd.c\ exec/error_badidentifier.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 40df13ae..9d3936ea 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:55:11 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:08:54 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ # define EXEC_H # include +# include "minishell.h" # define PIPE_READ 0 # define PIPE_WRITE 1 @@ -146,8 +147,6 @@ int exec_var(t_btree **ast); int exec_case_branch(t_btree **ast); int exec_math(t_btree **ast); -int launch_process(t_process *p); -int set_process(t_process *p, t_btree *ast); int process_setexec(t_process *p); int process_setgroup(t_process *p, pid_t pid); void process_setsig(void); @@ -175,15 +174,25 @@ void redir_free(void *data, size_t content_size); char **token_to_argv(t_ld *ld, int do_match); -# include int add_new_job(t_job *job); int error_badidentifier(char *name); +/* +** Mapping pour launch les process +*/ +int launch_process(t_process *p); +int launch_if(t_process *p); +int launch_while(t_process *p); +int launch_for(t_process *p); +int launch_case(t_process *p); +int launch_file(t_process *p); +int launch_builtin(t_process *p); + /* ** Mapping pour set les process */ +int set_process(t_process *p, t_btree *ast); int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd); - int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd); #endif diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 2a98dd10..deac19e8 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/07 18:38:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 21:13:31 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ # include # include -# include "libft.h" +# include "../libft/includes/libft.h" # include "types.h" # include "lexer.h" # include "parser.h" diff --git a/42sh/src/exec/ast_copy.c b/42sh/src/exec/ast_copy.c index 2776bb49..76fa0417 100644 --- a/42sh/src/exec/ast_copy.c +++ b/42sh/src/exec/ast_copy.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 20:44:42 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:50:43 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:25:15 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" t_btree *ast_copy(t_btree *tree) { diff --git a/42sh/src/exec/launch_case.c b/42sh/src/exec/launch_case.c index ed10dcd2..a7c096ff 100644 --- a/42sh/src/exec/launch_case.c +++ b/42sh/src/exec/launch_case.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:02:23 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:38:19 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:02:46 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" /* int exec_case(t_btree **ast) { diff --git a/42sh/src/exec/launch_for.c b/42sh/src/exec/launch_for.c index 059448c9..6de71af2 100644 --- a/42sh/src/exec/launch_for.c +++ b/42sh/src/exec/launch_for.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 17:34:43 by wescande #+# #+# */ -/* Updated: 2017/03/07 19:00:56 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:02:18 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" static int do_for(t_process *p) { diff --git a/42sh/src/exec/launch_if.c b/42sh/src/exec/launch_if.c index e8eca419..ca80fffb 100644 --- a/42sh/src/exec/launch_if.c +++ b/42sh/src/exec/launch_if.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 17:26:53 by wescande #+# #+# */ -/* Updated: 2017/03/07 18:36:02 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:03:04 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" static int do_if(t_process *p) { diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 11d1b619..a677f76d 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:58:52 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:07:33 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index 3e9b2460..c62cc0c8 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,13 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/03/06 15:12:23 by ariard ### ########.fr */ +/* Updated: 2017/03/07 21:04:38 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -t_redirmap g_redirmap[] = +t_itof g_redirmap[] = { {TK_LESS, redirect_less}, {TK_GREAT, redirect_great}, @@ -38,10 +38,10 @@ int process_redirect(t_process *p) if (redir->n > 9) return (bad_fd(redir->n)); i = 0; - while (g_redirmap[i].type) + while (g_redirmap[i].id) { DG("process redirect"); - if (g_redirmap[i].type == redir->type) + if (g_redirmap[i].id == redir->type) { if ((g_redirmap[i].f)(redir)) return (1); diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 9e9f1764..336bd5bb 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 15:34:31 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:12:02 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,7 +41,7 @@ int set_process(t_process *p, t_btree *ast) p->redirs = ft_lstmap(cmd->redir, ft_id); if (set_process_map(p, ast, cmd)) return (1); - if (exec->control_count) - p->attrs |= PROCESS_CONTROL; +// if (exec->control_count) +// p->attrs |= PROCESS_CONTROL; return (0); } diff --git a/42sh/src/exec/set_process_case.c b/42sh/src/exec/set_process_case.c index b69cce86..d8dcaba8 100644 --- a/42sh/src/exec/set_process_case.c +++ b/42sh/src/exec/set_process_case.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 20:36:04 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:51:41 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:14:19 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd) { + (void)cmd; p->data.d_case.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); p->data.d_case.content = ast_copy(ast->right); return (0); diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index 022e0305..e66d1645 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 15:50:51 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:12:31 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd) { + (void)ast; if (!(p->data.cmd.av = token_to_argv(cmd->token, 1))) return (1); process_setexec(p); diff --git a/42sh/src/exec/set_process_for.c b/42sh/src/exec/set_process_for.c index c3bfb0e8..34134a33 100644 --- a/42sh/src/exec/set_process_for.c +++ b/42sh/src/exec/set_process_for.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:51:57 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:14:33 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "exec.h" +#include "minishell.h" int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd) { + (void)cmd; p->data.d_for.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); p->data.d_for.content = ast_copy(ast->right); return (0); diff --git a/42sh/src/exec/set_process_if.c b/42sh/src/exec/set_process_if.c index bdf46274..3f8d721a 100644 --- a/42sh/src/exec/set_process_if.c +++ b/42sh/src/exec/set_process_if.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:19:50 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:35:16 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:10:47 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,8 @@ int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd) { - p->data.d_if.condition = btree_map(ast->left, ast_copy); - p->data.d_if.content = btree_map(ast->right, ast_copy); + (void)cmd; + p->data.d_if.condition = ast_copy(ast->left); + p->data.d_if.content = ast_copy(ast->right); return (0); } diff --git a/42sh/src/exec/set_process_while.c b/42sh/src/exec/set_process_while.c index 4743d859..f0908887 100644 --- a/42sh/src/exec/set_process_while.c +++ b/42sh/src/exec/set_process_while.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:10 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:51:24 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:11:38 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd) { + (void)cmd; p->data.d_while.condition = ast_copy(ast->left); p->data.d_while.content = ast_copy(ast->right); return (0); diff --git a/42sh/src/glob/gen_tab_esc.c b/42sh/src/glob/gen_tab_esc.c index c9f5f8e4..39c8e342 100644 --- a/42sh/src/glob/gen_tab_esc.c +++ b/42sh/src/glob/gen_tab_esc.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 20:04:40 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:07:31 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:14:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" char **gen_tab(const char *pat, const unsigned char *esc, diff --git a/42sh/src/glob/lib_perso/ft_ld_clear.c b/42sh/src/glob/lib_perso/ft_ld_clear.c index 962d3c11..c36d9695 100644 --- a/42sh/src/glob/lib_perso/ft_ld_clear.c +++ b/42sh/src/glob/lib_perso/ft_ld_clear.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 19:56:49 by wescande #+# #+# */ -/* Updated: 2017/01/05 14:17:11 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:18:59 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_ld_clear(t_ld **ld, void (*del)()) { diff --git a/42sh/src/glob/lib_perso/ft_ld_copy.c b/42sh/src/glob/lib_perso/ft_ld_copy.c index 7cc67659..941e4c5f 100644 --- a/42sh/src/glob/lib_perso/ft_ld_copy.c +++ b/42sh/src/glob/lib_perso/ft_ld_copy.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:42:23 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:29:28 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:21:30 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" t_ld *ft_ld_copy(t_ld *src, void *(*f)(void *elem)) { @@ -21,9 +21,9 @@ t_ld *ft_ld_copy(t_ld *src, void *(*f)(void *elem)) while (src) { content = (*f)(src->content); - ft_ld_pushfront(dst, content); + ft_ld_pushfront(&dst, content); src = src->next; } - ft_ld_reverse(dst); + ft_ld_reverse(&dst); return (dst); } diff --git a/42sh/src/glob/lib_perso/ft_ld_del.c b/42sh/src/glob/lib_perso/ft_ld_del.c index 69852e67..50667e81 100644 --- a/42sh/src/glob/lib_perso/ft_ld_del.c +++ b/42sh/src/glob/lib_perso/ft_ld_del.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 15:54:53 by wescande #+# #+# */ -/* Updated: 2017/01/05 14:17:18 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:17:50 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_ld_del(t_ld **ld, void (*del)()) { diff --git a/42sh/src/glob/lib_perso/ft_ld_new.c b/42sh/src/glob/lib_perso/ft_ld_new.c index b292702b..76000294 100644 --- a/42sh/src/glob/lib_perso/ft_ld_new.c +++ b/42sh/src/glob/lib_perso/ft_ld_new.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 18:17:34 by wescande #+# #+# */ -/* Updated: 2017/02/03 14:38:19 by ariard ### ########.fr */ +/* Updated: 2017/03/07 21:17:20 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_ld_new(t_ld **alst, void *content) { diff --git a/42sh/src/glob/lib_perso/ft_ld_order.c b/42sh/src/glob/lib_perso/ft_ld_order.c index 6f6b2a9c..2adbeba7 100644 --- a/42sh/src/glob/lib_perso/ft_ld_order.c +++ b/42sh/src/glob/lib_perso/ft_ld_order.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/24 19:20:45 by wescande #+# #+# */ -/* Updated: 2017/01/24 19:40:54 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:19:13 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" t_ld *ft_ld_order(t_ld *ld, int (*f)(), void (*del)()) { diff --git a/42sh/src/glob/lib_perso/ft_ld_pushback.c b/42sh/src/glob/lib_perso/ft_ld_pushback.c index 5ec29624..e1dd629c 100644 --- a/42sh/src/glob/lib_perso/ft_ld_pushback.c +++ b/42sh/src/glob/lib_perso/ft_ld_pushback.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/16 15:59:38 by wescande #+# #+# */ -/* Updated: 2017/02/17 23:33:37 by ariard ### ########.fr */ +/* Updated: 2017/03/07 21:17:28 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_ld_pushback(t_ld **alst, void *content) { diff --git a/42sh/src/glob/lib_perso/ft_ld_pushfront.c b/42sh/src/glob/lib_perso/ft_ld_pushfront.c index 5f830ee1..067db748 100644 --- a/42sh/src/glob/lib_perso/ft_ld_pushfront.c +++ b/42sh/src/glob/lib_perso/ft_ld_pushfront.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 18:32:40 by wescande #+# #+# */ -/* Updated: 2017/01/05 14:17:46 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:15:42 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_ld_pushfront(t_ld **alst, void *content) { diff --git a/42sh/src/glob/lib_perso/ft_ld_reverse.c b/42sh/src/glob/lib_perso/ft_ld_reverse.c index 62ffe670..7dc87189 100644 --- a/42sh/src/glob/lib_perso/ft_ld_reverse.c +++ b/42sh/src/glob/lib_perso/ft_ld_reverse.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 14:16:04 by wescande #+# #+# */ -/* Updated: 2017/01/05 14:17:53 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:20:35 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_ld_reverse(t_ld **lst) { diff --git a/42sh/src/glob/lib_perso/ft_ld_size.c b/42sh/src/glob/lib_perso/ft_ld_size.c index 1a2d8852..ae12022d 100644 --- a/42sh/src/glob/lib_perso/ft_ld_size.c +++ b/42sh/src/glob/lib_perso/ft_ld_size.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 18:33:48 by wescande #+# #+# */ -/* Updated: 2017/02/03 14:38:07 by ariard ### ########.fr */ +/* Updated: 2017/03/07 21:19:26 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" size_t ft_ld_size(t_ld *ld) { diff --git a/42sh/src/glob/lib_perso/ft_ld_to_tab.c b/42sh/src/glob/lib_perso/ft_ld_to_tab.c index e6db262d..286e3b3f 100644 --- a/42sh/src/glob/lib_perso/ft_ld_to_tab.c +++ b/42sh/src/glob/lib_perso/ft_ld_to_tab.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/05 16:17:00 by wescande #+# #+# */ -/* Updated: 2017/01/05 16:22:12 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:20:05 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" char **ft_ld_to_tab(t_ld *ld) { diff --git a/42sh/src/glob/lib_perso/ft_memrealloc.c b/42sh/src/glob/lib_perso/ft_memrealloc.c index 2ea59d78..50cbeb11 100644 --- a/42sh/src/glob/lib_perso/ft_memrealloc.c +++ b/42sh/src/glob/lib_perso/ft_memrealloc.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/05 13:44:36 by wescande #+# #+# */ -/* Updated: 2017/02/09 17:01:01 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:19:39 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void *ft_memrealloc(void *ptr, size_t old_s, size_t new_s) { diff --git a/42sh/src/glob/lib_perso/ft_strjoinf.c b/42sh/src/glob/lib_perso/ft_strjoinf.c index 3bc72d56..d860b34c 100644 --- a/42sh/src/glob/lib_perso/ft_strjoinf.c +++ b/42sh/src/glob/lib_perso/ft_strjoinf.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/05 13:33:24 by wescande #+# #+# */ -/* Updated: 2017/01/24 16:53:13 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:19:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" char *ft_strjoinf(char *s1, char *s2, int state) { diff --git a/42sh/src/glob/lib_perso/ft_strsubf.c b/42sh/src/glob/lib_perso/ft_strsubf.c index 2e6d5b51..72bcb016 100644 --- a/42sh/src/glob/lib_perso/ft_strsubf.c +++ b/42sh/src/glob/lib_perso/ft_strsubf.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/15 17:20:08 by wescande #+# #+# */ -/* Updated: 2017/02/07 13:01:55 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:20:19 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" char *ft_strsubf(char *s, unsigned int start, size_t len, short int mode) { diff --git a/42sh/src/glob/lib_perso/ft_tabdel.c b/42sh/src/glob/lib_perso/ft_tabdel.c index d4f9cff0..680c7b83 100644 --- a/42sh/src/glob/lib_perso/ft_tabdel.c +++ b/42sh/src/glob/lib_perso/ft_tabdel.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:29:54 by wescande #+# #+# */ -/* Updated: 2017/02/02 14:22:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 21:18:08 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" void ft_tabdel(char ***mytab) { diff --git a/42sh/src/glob/lib_perso/ft_tablen.c b/42sh/src/glob/lib_perso/ft_tablen.c index 3efbee0b..149cd7ca 100644 --- a/42sh/src/glob/lib_perso/ft_tablen.c +++ b/42sh/src/glob/lib_perso/ft_tablen.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/28 16:54:07 by wescande #+# #+# */ -/* Updated: 2016/12/28 16:55:46 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:18:23 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "minishell.h" int ft_tablen(char **mytab) { diff --git a/42sh/src/glob/word_is_assignment.c b/42sh/src/glob/word_is_assignment.c index de819dd1..d0908d23 100644 --- a/42sh/src/glob/word_is_assignment.c +++ b/42sh/src/glob/word_is_assignment.c @@ -6,11 +6,11 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 18:59:11 by wescande #+# #+# */ -/* Updated: 2017/03/07 18:59:38 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:20:53 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ -#include "glob.h" +#include "minishell.h" int word_is_assignment(char **content) { diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index 8954b13d..96052289 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:46:12 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:24:17 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,7 +42,7 @@ static void process_format_com_long(t_list **plist) t_process *p; p = (*plist)->content; - if (p->attrs & PROCESS_CONTROL) +/* if (p->attrs & PROCESS_CONTROL) ft_putstr("script"); else if (p->attrs & PROCESS_SUBSHELL) { @@ -50,7 +50,7 @@ static void process_format_com_long(t_list **plist) // ft_putstr(p->data.cmd.av[2]); ft_putstr(" )"); } - else + else*/ ft_sstrprint(p->data.cmd.av, ' '); if ((*plist)->next) ft_putstr(" |"); @@ -72,7 +72,7 @@ static void process_format_com_short(t_list **plist, t_flag state) p->attrs &= ~PROCESS_STATE_MASK; p->attrs &= ~PROCESS_RUNNING; } - if (p->attrs & PROCESS_CONTROL) +/* if (p->attrs & PROCESS_CONTROL) ft_putstr("script"); else if (p->attrs & PROCESS_SUBSHELL) { @@ -80,7 +80,7 @@ static void process_format_com_short(t_list **plist, t_flag state) ft_putstr(p->data.cmd.av[2]); ft_putstr(" )"); } - else + else*/ ft_sstrprint(p->data.cmd.av, ' '); if ((*plist)->next) ft_putstr(" | "); diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 8cf01e20..6881847c 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/07 18:47:55 by ariard ### ########.fr */ +/* Updated: 2017/03/07 21:24:40 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -60,7 +60,7 @@ t_prodmatch g_prodmatch[] = {TK_ASSIGNEMENT_WORD, TK_BANG, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, SEPARATOR_OP, CMD_PREFIX}, {TK_ASSIGNEMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, - {TK_NAME, TK_BAMG, FNAME}, + {TK_NAME, TK_BANG, FNAME}, {TK_NAME, LINEBREAK, FNAME}, {TK_NAME, TK_PAREN_OPEN, FNAME}, {TK_NAME, TK_LBRACE, FNAME}, From 26222441cc88462f82257ef6334115cdf446276e Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 7 Mar 2017 22:45:48 +0100 Subject: [PATCH 183/206] ajout execution des while, if, for, case, until --- 42sh/Makefile | 2 ++ 42sh/includes/exec.h | 10 ++++++- 42sh/src/exec/exec_leaf.c | 4 ++- 42sh/src/exec/launch_file.c | 3 +- 42sh/src/exec/launch_process.c | 18 ++++++++++-- 42sh/src/exec/launch_until.c | 49 +++++++++++++++++++++++++++++++ 42sh/src/exec/process_setexec.c | 2 +- 42sh/src/exec/set_process_case.c | 3 +- 42sh/src/exec/set_process_cmd.c | 2 +- 42sh/src/exec/set_process_for.c | 3 +- 42sh/src/exec/set_process_if.c | 3 +- 42sh/src/exec/set_process_map.c | 27 +++++++++-------- 42sh/src/exec/set_process_until.c | 22 ++++++++++++++ 42sh/src/exec/set_process_while.c | 3 +- 14 files changed, 128 insertions(+), 23 deletions(-) create mode 100644 42sh/src/exec/launch_until.c create mode 100644 42sh/src/exec/set_process_until.c diff --git a/42sh/Makefile b/42sh/Makefile index c7bc80e0..306a1bdc 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -86,6 +86,7 @@ exec/launch_file.c\ exec/launch_for.c\ exec/launch_if.c\ exec/launch_process.c\ +exec/launch_until.c\ exec/launch_while.c\ exec/mark_process_status.c\ exec/process_redirect.c\ @@ -107,6 +108,7 @@ exec/set_process_cmd.c\ exec/set_process_for.c\ exec/set_process_if.c\ exec/set_process_map.c\ +exec/set_process_until.c\ exec/set_process_while.c\ exec/token_to_argv.c\ glob/command_getoutput.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 9d3936ea..5cbc107c 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:08:54 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:23:06 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -83,9 +83,11 @@ enum e_process_type PROCESS_FILE, PROCESS_SUBSHELL, PROCESS_WHILE, + PROCESS_UNTIL, PROCESS_IF, PROCESS_FOR, PROCESS_CASE, + PROCESS_MAX }; typedef enum e_process_type t_process_type; @@ -184,6 +186,7 @@ int error_badidentifier(char *name); int launch_process(t_process *p); int launch_if(t_process *p); int launch_while(t_process *p); +int launch_until(t_process *p); int launch_for(t_process *p); int launch_case(t_process *p); int launch_file(t_process *p); @@ -195,4 +198,9 @@ int launch_builtin(t_process *p); int set_process(t_process *p, t_btree *ast); int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_until(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd); #endif diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index e237cb99..9a0ae4fd 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/07 17:34:51 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 21:30:29 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,9 +17,11 @@ int exec_leaf(t_btree **ast) t_process p; t_job *job; + DG("in exec leaf"); job = &data_singleton()->exec.job; if (set_process(&p, *ast)) return (1); + DG("set_process done"); if (!(launch_process(&p))) { job_addprocess(&p); diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index 80c990b3..afe5cb81 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:58:31 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:33:56 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int launch_file(t_process *p) { int pid; + DG("in file"); pid = fork(); if (pid == 0) { diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index a677f76d..708a64d3 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:07:33 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:21:07 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,7 @@ t_itof g_launchmap[] = {PROCESS_FILE, launch_file}, {PROCESS_SUBSHELL, NULL}, {PROCESS_WHILE, launch_while}, + {PROCESS_UNTIL, launch_until}, {PROCESS_IF, launch_if}, {PROCESS_FOR, launch_for}, {PROCESS_CASE, launch_case}, @@ -27,9 +28,21 @@ t_itof g_launchmap[] = int launch_process(t_process *p) { - int i; +// int i; int pid; + if (p->type >= PROCESS_MAX) + return (-1); + if (!g_launchmap[p->type].f) + return (-1); + p->attrs &= ~PROCESS_STATE_MASK; + p->attrs |= PROCESS_RUNNING; + if (!(pid = (*g_launchmap[p->type].f)(p))) + return (-1); + p->pid = pid; + process_setgroup(p, pid); + return (0); + /* i = 0; while (g_launchmap[i].id) { @@ -49,4 +62,5 @@ int launch_process(t_process *p) i++; } return (-1); + */ } diff --git a/42sh/src/exec/launch_until.c b/42sh/src/exec/launch_until.c new file mode 100644 index 00000000..66a23a36 --- /dev/null +++ b/42sh/src/exec/launch_until.c @@ -0,0 +1,49 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_until.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 22:04:42 by wescande #+# #+# */ +/* Updated: 2017/03/07 22:06:50 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static int do_until(t_process *p) +{ + int ret; + + ft_exec(&p->data.d_while.condition); + ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); + while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")) + { + ft_exec(&p->data.d_while.content); + ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); + ft_exec(&p->data.d_while.condition); + } + return (ret); +} + +int launch_until(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + { + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_until(p)); + } + else if (pid > 0) + return (pid); + } + else + do_until(p); + return (0); +} diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 2f4ba13a..4242fb47 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:54:13 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:44:37 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process_case.c b/42sh/src/exec/set_process_case.c index d8dcaba8..b03cb62e 100644 --- a/42sh/src/exec/set_process_case.c +++ b/42sh/src/exec/set_process_case.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 20:36:04 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:14:19 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:01:20 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,5 +17,6 @@ int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd) (void)cmd; p->data.d_case.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); p->data.d_case.content = ast_copy(ast->right); + p->type = PROCESS_CASE; return (0); } diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index e66d1645..4a7c6a1b 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:12:31 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:44:40 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process_for.c b/42sh/src/exec/set_process_for.c index 34134a33..b6aa5f30 100644 --- a/42sh/src/exec/set_process_for.c +++ b/42sh/src/exec/set_process_for.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:14:33 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:00:34 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,5 +17,6 @@ int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd) (void)cmd; p->data.d_for.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); p->data.d_for.content = ast_copy(ast->right); + p->type = PROCESS_FOR; return (0); } diff --git a/42sh/src/exec/set_process_if.c b/42sh/src/exec/set_process_if.c index 3f8d721a..6807bfd6 100644 --- a/42sh/src/exec/set_process_if.c +++ b/42sh/src/exec/set_process_if.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:19:50 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:10:47 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:59:44 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,5 +17,6 @@ int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd) (void)cmd; p->data.d_if.condition = ast_copy(ast->left); p->data.d_if.content = ast_copy(ast->right); + p->type = PROCESS_IF; return (0); } diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index 004bb01a..7aaa6fef 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ -/* Updated: 2017/03/07 15:50:56 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:24:21 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,13 +20,13 @@ t_itof g_setprocessmap[] = {TK_AND_IF, NULL}, {TK_OR_IF,NULL}, {TK_PIPE, NULL}, - {TK_WHILE, NULL}, - {TK_IF, NULL}, + {TK_WHILE, &set_process_while}, + {TK_IF, &set_process_if}, {TK_ELIF, NULL}, {TK_ELSE, NULL}, - {TK_UNTIL, NULL}, - {TK_FOR, NULL}, - {TK_CASE, NULL}, + {TK_UNTIL, &set_process_until}, + {TK_FOR, &set_process_for}, + {TK_CASE, &set_process_case}, {TK_PAREN_OPEN, NULL}, {TK_ASSIGNEMENT_WORD, NULL}, {MATH, NULL}, @@ -38,15 +38,18 @@ t_itof g_setprocessmap[] = int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) { int i; + t_astnode *item; - i = 0; + i = -1; if (!ast) return (0); - while (g_setprocessmap[i].id) - { - if (p->type == g_setprocessmap[i].id) + item = ast->item; + while (g_setprocessmap[++i].id) + if (item->type == g_setprocessmap[i].id) + { + if (!g_setprocessmap[i].f) + return (0); return ((*g_setprocessmap[i].f)(p, ast, cmd)); - i++; - } + } return (0); } diff --git a/42sh/src/exec/set_process_until.c b/42sh/src/exec/set_process_until.c new file mode 100644 index 00000000..1238d828 --- /dev/null +++ b/42sh/src/exec/set_process_until.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_until.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 22:22:24 by wescande #+# #+# */ +/* Updated: 2017/03/07 22:22:36 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int set_process_until(t_process *p, t_btree *ast, t_cmd *cmd) +{ + (void)cmd; + p->data.d_while.condition = ast_copy(ast->left); + p->data.d_while.content = ast_copy(ast->right); + p->type = PROCESS_UNTIL; + return (0); +} diff --git a/42sh/src/exec/set_process_while.c b/42sh/src/exec/set_process_while.c index f0908887..7fd90ea1 100644 --- a/42sh/src/exec/set_process_while.c +++ b/42sh/src/exec/set_process_while.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:10 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:11:38 by wescande ### ########.fr */ +/* Updated: 2017/03/07 21:57:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,5 +17,6 @@ int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd) (void)cmd; p->data.d_while.condition = ast_copy(ast->left); p->data.d_while.content = ast_copy(ast->right); + p->type = PROCESS_WHILE; return (0); } From 3a186407b189509f25670d22b41d63195df51e1a Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 01:45:29 +0100 Subject: [PATCH 184/206] working but no subshell --- 42sh/Makefile | 2 + 42sh/includes/exec.h | 33 +++++++++++----- 42sh/includes/types.h | 3 +- 42sh/src/exec/ft_exec.c | 5 ++- 42sh/src/exec/launch_process.c | 4 +- 42sh/src/exec/launch_subshell.c | 40 ++++++++++++++++++++ 42sh/src/exec/set_process_map.c | 4 +- 42sh/src/exec/set_process_subshell.c | 21 ++++++++++ 42sh/src/glob/command_getoutput.c | 4 +- 42sh/src/job-control/job_remove.c | 3 +- 42sh/src/job-control/process_free.c | 25 ++++++++++-- 42sh/src/job-control/process_free_cmd.c | 19 ++++++++++ 42sh/src/job-control/put_job_in_foreground.c | 8 +++- 42sh/src/parser/read_stack.c | 6 +-- 14 files changed, 149 insertions(+), 28 deletions(-) create mode 100644 42sh/src/exec/launch_subshell.c create mode 100644 42sh/src/exec/set_process_subshell.c create mode 100644 42sh/src/job-control/process_free_cmd.c diff --git a/42sh/Makefile b/42sh/Makefile index 306a1bdc..fd6c392f 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -86,6 +86,7 @@ exec/launch_file.c\ exec/launch_for.c\ exec/launch_if.c\ exec/launch_process.c\ +exec/launch_subshell.c\ exec/launch_until.c\ exec/launch_while.c\ exec/mark_process_status.c\ @@ -108,6 +109,7 @@ exec/set_process_cmd.c\ exec/set_process_for.c\ exec/set_process_if.c\ exec/set_process_map.c\ +exec/set_process_subshell.c\ exec/set_process_until.c\ exec/set_process_while.c\ exec/token_to_argv.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 5cbc107c..b49ca82e 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 22:23:06 by wescande ### ########.fr */ +/* Updated: 2017/03/08 01:04:12 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,15 +65,21 @@ struct s_data_list t_btree *content; }; +struct s_data_subshell +{ + t_btree *content; +}; + union u_process_data { - struct s_data_cmd cmd; - struct s_data_cond d_while; - struct s_data_cond d_if; - struct s_data_cond d_else; - struct s_data_cond d_elif; - struct s_data_list d_for; - struct s_data_list d_case; + struct s_data_cmd cmd; + struct s_data_subshell subshell; + struct s_data_cond d_while; + struct s_data_cond d_if; + struct s_data_cond d_else; + struct s_data_cond d_elif; + struct s_data_list d_for; + struct s_data_list d_case; }; enum e_process_type @@ -94,6 +100,7 @@ typedef enum e_process_type t_process_type; typedef union u_process_data t_process_data; typedef struct s_data_cond t_data_while; typedef struct s_data_cond t_data_if; +typedef struct s_data_cond t_data_if; struct s_process { @@ -152,7 +159,6 @@ int exec_math(t_btree **ast); int process_setexec(t_process *p); int process_setgroup(t_process *p, pid_t pid); void process_setsig(void); -void process_free(void *content, size_t content_size); void process_reset(t_process *p); void process_resetfds(void); @@ -180,6 +186,12 @@ int add_new_job(t_job *job); int error_badidentifier(char *name); +/* +** Mapping pour free les process +*/ +void process_free(void *content, size_t content_size); +void process_free_cmd(t_process *p); + /* ** Mapping pour launch les process */ @@ -191,6 +203,7 @@ int launch_for(t_process *p); int launch_case(t_process *p); int launch_file(t_process *p); int launch_builtin(t_process *p); +int launch_subshell(t_process *p); /* ** Mapping pour set les process @@ -203,4 +216,6 @@ int set_process_until(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_subshell(t_process *p, t_btree *ast, t_cmd *cmd); + #endif diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 8bd09d87..95e2be0c 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:57:19 by wescande ### ########.fr */ +/* Updated: 2017/03/08 00:22:56 by wescande ### ########.fr */ /* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -118,7 +118,6 @@ enum e_sym TK_IO_NUMBER, TK_DLESSDASH, TK_LESSGREAT, - TK_SUBSHELL, TK_CASE, TK_IN, TK_ESAC, diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 072ac974..6fad2472 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:54:28 by wescande ### ########.fr */ +/* Updated: 2017/03/08 00:21:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ t_itof g_execmap[] = {TK_PAREN_OPEN, &exec_case_branch}, {TK_ASSIGNEMENT_WORD, &exec_var}, {MATH, &exec_math}, - /* {TK_SUBSHELL, &exec_leaf}, */ + {SUBSHELL, &exec_leaf}, {CMD, &exec_leaf}, {0, 0}, }; @@ -44,6 +44,7 @@ int ft_exec(t_btree **ast) if (!*ast) return (0); item = (*ast)->item; + DG("COMPARE : %d vs %d (SUBSHEELLL)", item->type, SUBSHELL); while (g_execmap[i].id) { if (item->type == g_execmap[i].id) diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 708a64d3..72f080fd 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 22:21:07 by wescande ### ########.fr */ +/* Updated: 2017/03/08 00:11:15 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ t_itof g_launchmap[] = {PROCESS_FUNCTION, NULL}, {PROCESS_BUILTIN, launch_builtin}, {PROCESS_FILE, launch_file}, - {PROCESS_SUBSHELL, NULL}, + {PROCESS_SUBSHELL, launch_subshell}, {PROCESS_WHILE, launch_while}, {PROCESS_UNTIL, launch_until}, {PROCESS_IF, launch_if}, diff --git a/42sh/src/exec/launch_subshell.c b/42sh/src/exec/launch_subshell.c new file mode 100644 index 00000000..aa2f481d --- /dev/null +++ b/42sh/src/exec/launch_subshell.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_subshell.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 00:11:44 by wescande #+# #+# */ +/* Updated: 2017/03/08 00:32:13 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static int do_subshell(t_process *p) +{ + ft_exec(&p->data.subshell.content); + return (ft_atoi(ft_getenv(data_singleton()->env, "?"))); +} + +int launch_subshell(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + { + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_subshell(p)); + } + else if (pid > 0) + return (pid); + } + else + do_subshell(p); + return (0); +} diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index 7aaa6fef..9db3679d 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ -/* Updated: 2017/03/07 22:24:21 by wescande ### ########.fr */ +/* Updated: 2017/03/08 00:23:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ t_itof g_setprocessmap[] = {TK_PAREN_OPEN, NULL}, {TK_ASSIGNEMENT_WORD, NULL}, {MATH, NULL}, - /* {TK_SUBSHELL, &exec_}, */ + {SUBSHELL, &set_process_subshell}, {CMD, &set_process_cmd}, {0, NULL} }; diff --git a/42sh/src/exec/set_process_subshell.c b/42sh/src/exec/set_process_subshell.c new file mode 100644 index 00000000..c1721d8f --- /dev/null +++ b/42sh/src/exec/set_process_subshell.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_process_sub.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 00:02:01 by wescande #+# #+# */ +/* Updated: 2017/03/08 00:14:44 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int set_process_subshell(t_process *p, t_btree *ast, t_cmd *cmd) +{ + (void)cmd; + p->data.subshell.content = ast_copy(ast->right); + p->type = PROCESS_SUBSHELL; + return (0); +} diff --git a/42sh/src/glob/command_getoutput.c b/42sh/src/glob/command_getoutput.c index 4949cd86..1ed5f3c8 100644 --- a/42sh/src/glob/command_getoutput.c +++ b/42sh/src/glob/command_getoutput.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/12 14:01:59 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:07:24 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 00:24:07 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ char *command_getoutput(char *command) /* output = NULL; */ /* exec = &data_singleton()->exec; */ - /* item.type = TK_SUBSHELL; */ + /* item.type = SUBSHELL; */ /* item.data.sstr = malloc(4 * sizeof(char *)); */ /* item.data.sstr[0] = ft_strdup(data_singleton()->argv[0]); */ /* item.data.sstr[1] = ft_strdup("-c"); */ diff --git a/42sh/src/job-control/job_remove.c b/42sh/src/job-control/job_remove.c index 794a6c44..03b8e9e9 100644 --- a/42sh/src/job-control/job_remove.c +++ b/42sh/src/job-control/job_remove.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:53:32 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 00:36:12 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ void job_remove(int id) j = ft_lst_find(jobc->first_job, &id, job_cmp_id)->content; if (job_is_completed(id)) { + DG(); p = ft_lstlast(j->first_process)->content; set_exitstatus(p->status, 0); if (id < data_singleton()->jobc.current_id) diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index f4e0047c..7f5706ac 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,20 +6,37 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:46:41 by wescande ### ########.fr */ +/* Updated: 2017/03/08 01:38:58 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" +t_itof g_freemap[] = +{ + {PROCESS_FUNCTION, NULL}, + {PROCESS_BUILTIN, NULL}, + {PROCESS_FILE, process_free_cmd}, + {PROCESS_SUBSHELL, NULL}, + {PROCESS_WHILE, NULL}, + {PROCESS_UNTIL, NULL}, + {PROCESS_IF, NULL}, + {PROCESS_FOR, NULL}, + {PROCESS_CASE, NULL}, + {0, NULL} +}; + void process_free(void *content, size_t content_size) { t_process *p; - (void)content_size; p = content; - ft_strdel(&p->data.cmd.path); - ft_sstrfree(p->data.cmd.av); + (void)content_size; + if (p->type >= PROCESS_MAX) + return ; + if (!g_launchmap[p->type].f) + return ; + (g_freemap[p->type].f)(p); ft_lstdel(&p->redirs, ft_lst_cfree); free(p); } diff --git a/42sh/src/job-control/process_free_cmd.c b/42sh/src/job-control/process_free_cmd.c new file mode 100644 index 00000000..1989df65 --- /dev/null +++ b/42sh/src/job-control/process_free_cmd.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_free_cmd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 00:58:02 by wescande #+# #+# */ +/* Updated: 2017/03/08 00:59:38 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void process_free_cmd(t_process *p) +{ + ft_strdel(&p->data.cmd.path); + ft_sstrfree(p->data.cmd.av); +} diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 67570957..3ff70ce0 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:46:03 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 00:35:38 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,8 +26,11 @@ int put_job_in_foreground(t_job *j, int cont) if (kill(-j->pgid, SIGCONT) < 0) DG("kill(SIGCONT) failed"); } + DG(); job_wait(j->id); + DG(); job_remove(j->id); + DG(); tcsetpgrp(STDIN, jobc->shell_pgid); @@ -36,8 +39,11 @@ int put_job_in_foreground(t_job *j, int cont) } else { + DG(); job_wait(j->id); + DG(); job_remove(j->id); + DG(); } return (0); } diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index ddb76ad3..4f28e16c 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/03 20:03:24 by ariard ### ########.fr */ +/* Updated: 2017/03/08 00:23:48 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -146,8 +146,8 @@ char *read_state(t_sym current) return ("TK_LESSAND"); if (current == TK_GREATAND) return ("TK_GREATAND"); - if (current == TK_SUBSHELL) - return ("TK_SUBSEHLL"); + if (current == SUBSHELL) + return ("SUBSEHLL"); if (current == CMD_SUPERIOR) return ("CMD_SUPERIOR"); if (current == TK_IO_NUMBER) From 37970c7274897be1ebd6054bf3748500aeb97618 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 8 Mar 2017 01:47:40 +0100 Subject: [PATCH 185/206] ft_lstdup --- 42sh/Makefile | 3 +- 42sh/includes/exec.h | 6 ++-- 42sh/laurier.sh | 6 ++++ 42sh/src/exec/ast_free.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/node_copy.c | 36 ++++++++++++++++++++++ 42sh/src/exec/{ast_copy.c => redir_copy.c} | 27 ++++++++-------- 42sh/src/exec/set_process_case.c | 4 +-- 42sh/src/exec/set_process_for.c | 4 +-- 42sh/src/exec/set_process_if.c | 6 ++-- 42sh/src/exec/set_process_while.c | 6 ++-- 42sh/src/glob/lib_perso/ft_ld_copy.c | 2 +- 42sh/src/lexer/lexer_sep.c | 7 ++--- 42sh/src/main/ft_putast.c | 2 +- 42sh/src/main/instruction_free.c | 2 +- 42sh/src/main/main.c | 2 +- 42sh/src/parser/add_case.c | 2 +- 42sh/src/parser/add_condition.c | 2 +- 42sh/src/parser/add_loop.c | 2 +- 42sh/src/parser/add_redir.c | 2 +- 42sh/src/parser/add_sep.c | 2 +- 42sh/src/parser/add_subshell.c | 2 +- 42sh/src/parser/add_var.c | 2 +- 42sh/src/parser/tree_wrapper.c | 2 +- 24 files changed, 89 insertions(+), 44 deletions(-) create mode 100644 42sh/laurier.sh create mode 100644 42sh/src/exec/node_copy.c rename 42sh/src/exec/{ast_copy.c => redir_copy.c} (58%) diff --git a/42sh/Makefile b/42sh/Makefile index c7bc80e0..58949194 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -58,7 +58,6 @@ completion/c_rematch.c\ completion/c_sizing.c\ completion/c_terminal.c\ completion/completion.c\ -exec/ast_copy.c\ exec/ast_free.c\ exec/bad_fd.c\ exec/error_badidentifier.c\ @@ -94,6 +93,8 @@ exec/process_setexec.c\ exec/process_setgroup.c\ exec/process_setsig.c\ exec/redir_free.c\ +exec/redir_copy.c\ +exec/node_copy.c\ exec/redirect_dgreat.c\ exec/redirect_dless.c\ exec/redirect_great.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 9d3936ea..fc0a5419 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:08:54 by wescande ### ########.fr */ +/* Updated: 2017/03/08 01:00:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -169,7 +169,9 @@ char *ft_findexec(char *path, char *file); void set_exitstatus(int status, int override); void ast_free(void *data, size_t content_size); -t_btree *ast_copy(t_btree *tree); +void *node_copy(void *data); +void *redir_copy(void *data); + void redir_free(void *data, size_t content_size); char **token_to_argv(t_ld *ld, int do_match); diff --git a/42sh/laurier.sh b/42sh/laurier.sh new file mode 100644 index 00000000..9e88cdd1 --- /dev/null +++ b/42sh/laurier.sh @@ -0,0 +1,6 @@ +read -p "Quel est ton login ?" login +while [ 1 ] +do + echo "Tu es le meilleur codeur de l'ecole $login" + sleep 1 +done diff --git a/42sh/src/exec/ast_free.c b/42sh/src/exec/ast_free.c index e9577366..4d7d2c93 100644 --- a/42sh/src/exec/ast_free.c +++ b/42sh/src/exec/ast_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ -/* Updated: 2017/03/07 18:34:27 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 00:59:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 072ac974..127b8cd5 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:54:28 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:49:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/node_copy.c b/42sh/src/exec/node_copy.c new file mode 100644 index 00000000..23c4fd13 --- /dev/null +++ b/42sh/src/exec/node_copy.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ast_copy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/07 20:44:42 by wescande #+# #+# */ +/* Updated: 2017/03/08 01:00:05 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void *node_copy(void *data) +{ + t_astnode *new; + t_astnode *old; + + if (!data) + return (NULL); + old = data; + ft_bzero((void *)&new, sizeof(t_astdata)); + new->nest = old->nest; + new->full = old->full; + new->type = old->type; + new->pattern = old->pattern; + if (old->type == CMD || old->type == TK_ASSIGNEMENT_WORD) + { + new->data.cmd.redir = ft_lstdup(&old->data.cmd.redir, &redir_copy); + new->data.cmd.token = ft_ld_copy(old->data.cmd.token, &tab_esc_copy); + } + if (old->type == TK_FOR || old->type == TK_PAREN_OPEN || old->type == TK_CASE) + new->data.cmd.wordlist = ft_ld_copy(old->data.cmd.token, &tab_esc_copy); + return (new); +} diff --git a/42sh/src/exec/ast_copy.c b/42sh/src/exec/redir_copy.c similarity index 58% rename from 42sh/src/exec/ast_copy.c rename to 42sh/src/exec/redir_copy.c index 76fa0417..65e843e2 100644 --- a/42sh/src/exec/ast_copy.c +++ b/42sh/src/exec/redir_copy.c @@ -1,25 +1,28 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ast_copy.c :+: :+: :+: */ +/* redir_copy.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: wescande +#+ +:+ +#+ */ +/* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/03/07 20:44:42 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:25:15 by wescande ### ########.fr */ +/* Created: 2017/03/08 00:02:58 by ariard #+# #+# */ +/* Updated: 2017/03/08 00:41:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -t_btree *ast_copy(t_btree *tree) +void *redir_copy(void *data) { - t_btree *node; + t_redir *old; + t_redir *new; - if (!tree) + if (!data) return (NULL); - node = btree_create_node(tree->item, tree->content_size); - node->left = ast_copy(tree->left); - node->right = ast_copy(tree->right); - return (node); -} + old = data; + ft_bzero((void *)&new, sizeof(t_astdata)); + new->type = old->type; + new->n = old->n; + new->word = ft_strdup(old->word); + return (0); +} diff --git a/42sh/src/exec/set_process_case.c b/42sh/src/exec/set_process_case.c index d8dcaba8..8e5b4e42 100644 --- a/42sh/src/exec/set_process_case.c +++ b/42sh/src/exec/set_process_case.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 20:36:04 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:14:19 by wescande ### ########.fr */ +/* Updated: 2017/03/08 01:01:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,6 @@ int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd) { (void)cmd; p->data.d_case.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); - p->data.d_case.content = ast_copy(ast->right); + p->data.d_case.content = btree_map(ast->right, &node_copy); return (0); } diff --git a/42sh/src/exec/set_process_for.c b/42sh/src/exec/set_process_for.c index 34134a33..cc8767a7 100644 --- a/42sh/src/exec/set_process_for.c +++ b/42sh/src/exec/set_process_for.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:14:33 by wescande ### ########.fr */ +/* Updated: 2017/03/08 01:02:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,6 @@ int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd) { (void)cmd; p->data.d_for.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); - p->data.d_for.content = ast_copy(ast->right); + p->data.d_for.content = btree_map(ast->right, &node_copy); return (0); } diff --git a/42sh/src/exec/set_process_if.c b/42sh/src/exec/set_process_if.c index 3f8d721a..792611b5 100644 --- a/42sh/src/exec/set_process_if.c +++ b/42sh/src/exec/set_process_if.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:19:50 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:10:47 by wescande ### ########.fr */ +/* Updated: 2017/03/08 00:59:08 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd) { (void)cmd; - p->data.d_if.condition = ast_copy(ast->left); - p->data.d_if.content = ast_copy(ast->right); + p->data.d_if.condition = btree_map(ast->left, &node_copy); + p->data.d_if.content = btree_map(ast->right, &node_copy); return (0); } diff --git a/42sh/src/exec/set_process_while.c b/42sh/src/exec/set_process_while.c index f0908887..6854d85d 100644 --- a/42sh/src/exec/set_process_while.c +++ b/42sh/src/exec/set_process_while.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:10 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:11:38 by wescande ### ########.fr */ +/* Updated: 2017/03/08 01:03:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd) { (void)cmd; - p->data.d_while.condition = ast_copy(ast->left); - p->data.d_while.content = ast_copy(ast->right); + p->data.d_while.condition = btree_map(ast->left, &node_copy); + p->data.d_while.content = btree_map(ast->right, &node_copy); return (0); } diff --git a/42sh/src/glob/lib_perso/ft_ld_copy.c b/42sh/src/glob/lib_perso/ft_ld_copy.c index 941e4c5f..86d43dcc 100644 --- a/42sh/src/glob/lib_perso/ft_ld_copy.c +++ b/42sh/src/glob/lib_perso/ft_ld_copy.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:42:23 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:21:30 by wescande ### ########.fr */ +/* Updated: 2017/03/08 00:58:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index c159a930..6420498f 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/03/07 19:40:52 by ariard ### ########.fr */ +/* Updated: 2017/03/07 20:26:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ -#include "minishell.h" +#include "lexer.h" int lexer_sep(t_list **alst, t_lexer *lexer) { @@ -37,11 +37,8 @@ int lexer_sep(t_list **alst, t_lexer *lexer) token->type = cn == '&' ? TK_AND_IF : TK_AMP; else if (c == '|') token->type = cn == '|' ? TK_OR_IF : TK_PIPE; - else if (c == '!') - token->type = TK_BANG; token->type = (c == ';') ? TK_SEMI : token->type; token->type = (c == ';') && (cn == ';') ? TK_DSEMI : token->type; -// c est ici que ca bug, ca marche plus les bitwise sur des enums lexer->pos += 1 + (token->type & (TK_AND_IF | TK_OR_IF | TK_DSEMI) ? 1 : 0); return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 405104b6..b223e7e3 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/03/05 14:57:19 by ariard ### ########.fr */ +/* Updated: 2017/03/07 23:35:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/instruction_free.c b/42sh/src/main/instruction_free.c index 69a80006..a1b27fa2 100644 --- a/42sh/src/main/instruction_free.c +++ b/42sh/src/main/instruction_free.c @@ -7,4 +7,4 @@ int instruction_free(t_list **token, t_parser *parser, t_btree **ast) ft_lstdel(&parser->stack, NULL); btree_del(ast, &ast_free); return (0); -} +} diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index ad862a61..0527cf28 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:41:02 by jhalford ### ########.fr */ +/* Updated: 2017/03/07 21:53:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_case.c b/42sh/src/parser/add_case.c index 04a3cdea..bd228540 100644 --- a/42sh/src/parser/add_case.c +++ b/42sh/src/parser/add_case.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/04 20:42:13 by ariard #+# #+# */ -/* Updated: 2017/03/07 19:32:45 by ariard ### ########.fr */ +/* Updated: 2017/03/07 22:46:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_condition.c b/42sh/src/parser/add_condition.c index 902606c5..c563cbb1 100644 --- a/42sh/src/parser/add_condition.c +++ b/42sh/src/parser/add_condition.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:32:49 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:46:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_loop.c b/42sh/src/parser/add_loop.c index b393ebef..f7a6999e 100644 --- a/42sh/src/parser/add_loop.c +++ b/42sh/src/parser/add_loop.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 22:17:14 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:06:03 by ariard ### ########.fr */ +/* Updated: 2017/03/07 22:46:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 41df28a0..3040c067 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/06 15:54:24 by ariard ### ########.fr */ +/* Updated: 2017/03/07 22:46:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_sep.c b/42sh/src/parser/add_sep.c index 2985134c..0a3a2a22 100644 --- a/42sh/src/parser/add_sep.c +++ b/42sh/src/parser/add_sep.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 19:12:07 by ariard #+# #+# */ -/* Updated: 2017/03/04 21:43:00 by ariard ### ########.fr */ +/* Updated: 2017/03/07 22:46:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_subshell.c b/42sh/src/parser/add_subshell.c index 9b5f6c58..88f25c43 100644 --- a/42sh/src/parser/add_subshell.c +++ b/42sh/src/parser/add_subshell.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 18:41:50 by ariard #+# #+# */ -/* Updated: 2017/03/05 15:34:12 by wescande ### ########.fr */ +/* Updated: 2017/03/07 22:46:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_var.c b/42sh/src/parser/add_var.c index e191490f..fe17bb85 100644 --- a/42sh/src/parser/add_var.c +++ b/42sh/src/parser/add_var.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 15:08:16 by ariard #+# #+# */ -/* Updated: 2017/03/07 14:40:21 by ariard ### ########.fr */ +/* Updated: 2017/03/07 22:47:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 1a11caaf..c57cc34a 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:57:44 by ariard #+# #+# */ -/* Updated: 2017/03/06 19:01:18 by ariard ### ########.fr */ +/* Updated: 2017/03/08 00:02:46 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ From 157519224db12be17d14b6cbb867d032b4e83fd0 Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 02:40:58 +0100 Subject: [PATCH 186/206] ajout des free en fonction du process --- 42sh/Makefile | 4 ++++ 42sh/includes/exec.h | 10 ++++++---- 42sh/src/exec/launch_until.c | 8 ++++---- 42sh/src/exec/set_process_until.c | 6 +++--- 42sh/src/job-control/process_free.c | 19 +++++++++---------- 42sh/src/job-control/process_free_cmd.c | 5 +++-- 42sh/src/job-control/process_free_cond.c | 20 ++++++++++++++++++++ 42sh/src/job-control/process_free_list.c | 20 ++++++++++++++++++++ 42sh/src/job-control/process_free_subshell.c | 19 +++++++++++++++++++ 9 files changed, 88 insertions(+), 23 deletions(-) create mode 100644 42sh/src/job-control/process_free_cond.c create mode 100644 42sh/src/job-control/process_free_list.c create mode 100644 42sh/src/job-control/process_free_subshell.c diff --git a/42sh/Makefile b/42sh/Makefile index fd6c392f..b162da3b 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -184,6 +184,10 @@ job-control/mark_job_as_running.c\ job-control/process_cmp_pid.c\ job-control/process_format.c\ job-control/process_free.c\ +job-control/process_free_cmd.c\ +job-control/process_free_cond.c\ +job-control/process_free_list.c\ +job-control/process_free_subshell.c\ job-control/put_job_in_background.c\ job-control/put_job_in_foreground.c\ job-control/sigchld_handler.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index b49ca82e..a9809369 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 01:04:12 by wescande ### ########.fr */ +/* Updated: 2017/03/08 02:38:42 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -75,9 +75,8 @@ union u_process_data struct s_data_cmd cmd; struct s_data_subshell subshell; struct s_data_cond d_while; + struct s_data_cond d_until; struct s_data_cond d_if; - struct s_data_cond d_else; - struct s_data_cond d_elif; struct s_data_list d_for; struct s_data_list d_case; }; @@ -190,7 +189,10 @@ int error_badidentifier(char *name); ** Mapping pour free les process */ void process_free(void *content, size_t content_size); -void process_free_cmd(t_process *p); +int process_free_cmd(t_process *p); +int process_free_cond(t_process *p); +int process_free_list(t_process *p); +int process_free_subshell(t_process *p); /* ** Mapping pour launch les process diff --git a/42sh/src/exec/launch_until.c b/42sh/src/exec/launch_until.c index 66a23a36..21fc64a1 100644 --- a/42sh/src/exec/launch_until.c +++ b/42sh/src/exec/launch_until.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 22:04:42 by wescande #+# #+# */ -/* Updated: 2017/03/07 22:06:50 by wescande ### ########.fr */ +/* Updated: 2017/03/08 02:35:09 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,13 +16,13 @@ static int do_until(t_process *p) { int ret; - ft_exec(&p->data.d_while.condition); + ft_exec(&p->data.d_until.condition); ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")) { - ft_exec(&p->data.d_while.content); + ft_exec(&p->data.d_until.content); ret = ft_atoi(ft_getenv(data_singleton()->env, "?")); - ft_exec(&p->data.d_while.condition); + ft_exec(&p->data.d_until.condition); } return (ret); } diff --git a/42sh/src/exec/set_process_until.c b/42sh/src/exec/set_process_until.c index 1238d828..17a00488 100644 --- a/42sh/src/exec/set_process_until.c +++ b/42sh/src/exec/set_process_until.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 22:22:24 by wescande #+# #+# */ -/* Updated: 2017/03/07 22:22:36 by wescande ### ########.fr */ +/* Updated: 2017/03/08 02:35:27 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,8 @@ int set_process_until(t_process *p, t_btree *ast, t_cmd *cmd) { (void)cmd; - p->data.d_while.condition = ast_copy(ast->left); - p->data.d_while.content = ast_copy(ast->right); + p->data.d_until.condition = ast_copy(ast->left); + p->data.d_until.content = ast_copy(ast->right); p->type = PROCESS_UNTIL; return (0); } diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index 7f5706ac..77eb5b96 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 01:38:58 by wescande ### ########.fr */ +/* Updated: 2017/03/08 02:38:47 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,12 +17,12 @@ t_itof g_freemap[] = {PROCESS_FUNCTION, NULL}, {PROCESS_BUILTIN, NULL}, {PROCESS_FILE, process_free_cmd}, - {PROCESS_SUBSHELL, NULL}, - {PROCESS_WHILE, NULL}, - {PROCESS_UNTIL, NULL}, - {PROCESS_IF, NULL}, - {PROCESS_FOR, NULL}, - {PROCESS_CASE, NULL}, + {PROCESS_SUBSHELL, process_free_subshell}, + {PROCESS_WHILE, process_free_cond}, + {PROCESS_UNTIL, process_free_cond}, + {PROCESS_IF, process_free_cond}, + {PROCESS_FOR, process_free_list}, + {PROCESS_CASE, process_free_list}, {0, NULL} }; @@ -34,9 +34,8 @@ void process_free(void *content, size_t content_size) (void)content_size; if (p->type >= PROCESS_MAX) return ; - if (!g_launchmap[p->type].f) - return ; - (g_freemap[p->type].f)(p); + if (g_freemap[p->type].f) + (g_freemap[p->type].f)(p); ft_lstdel(&p->redirs, ft_lst_cfree); free(p); } diff --git a/42sh/src/job-control/process_free_cmd.c b/42sh/src/job-control/process_free_cmd.c index 1989df65..96efd6e1 100644 --- a/42sh/src/job-control/process_free_cmd.c +++ b/42sh/src/job-control/process_free_cmd.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:58:02 by wescande #+# #+# */ -/* Updated: 2017/03/08 00:59:38 by wescande ### ########.fr */ +/* Updated: 2017/03/08 02:31:01 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -void process_free_cmd(t_process *p) +int process_free_cmd(t_process *p) { ft_strdel(&p->data.cmd.path); ft_sstrfree(p->data.cmd.av); + return (0); } diff --git a/42sh/src/job-control/process_free_cond.c b/42sh/src/job-control/process_free_cond.c new file mode 100644 index 00000000..69624104 --- /dev/null +++ b/42sh/src/job-control/process_free_cond.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_free_cond.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 02:26:31 by wescande #+# #+# */ +/* Updated: 2017/03/08 02:39:12 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_free_cond(t_process *p) +{ + btree_del(&p->data.d_while.condition, &ast_free); + btree_del(&p->data.d_while.content, &ast_free); + return (0); +} diff --git a/42sh/src/job-control/process_free_list.c b/42sh/src/job-control/process_free_list.c new file mode 100644 index 00000000..d0b05f69 --- /dev/null +++ b/42sh/src/job-control/process_free_list.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_free_list.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 02:37:04 by wescande #+# #+# */ +/* Updated: 2017/03/08 02:37:52 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_free_list(t_process *p) +{ + ft_ld_del(&p->data.d_for.list_word, &ft_tabdel); + btree_del(&p->data.d_for.content, &ast_free); + return (0); +} diff --git a/42sh/src/job-control/process_free_subshell.c b/42sh/src/job-control/process_free_subshell.c new file mode 100644 index 00000000..7fb49c4b --- /dev/null +++ b/42sh/src/job-control/process_free_subshell.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_free_subshell.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 02:38:12 by wescande #+# #+# */ +/* Updated: 2017/03/08 02:38:27 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_free_subshell(t_process *p) +{ + btree_del(&p->data.d_while.content, &ast_free); + return (0); +} From be78dfbdf88e26839cba9bc2875569e57045b7b2 Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 03:10:46 +0100 Subject: [PATCH 187/206] commit pour recup lib & node_copy --- 42sh/includes/builtin.h | 4 +--- 42sh/src/exec/is_function.c | 27 +++++++++++++++++++++++++++ 42sh/src/exec/process_setexec.c | 8 ++++---- 42sh/src/parser/add_func.c | 6 +++--- 4 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 42sh/src/exec/is_function.c diff --git a/42sh/includes/builtin.h b/42sh/includes/builtin.h index be6045e4..3662a1f0 100644 --- a/42sh/includes/builtin.h +++ b/42sh/includes/builtin.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:21:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 17:29:38 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 03:08:48 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,6 +32,4 @@ int builtin_bg(const char *path, char *const av[], char *const envp[]); int builtin_history(const char *path, char *const av[], char *const envp[]); int builtin_hash(const char *path, char *const av[], char *const envp[]); -extern t_stof g_builtins[]; - #endif diff --git a/42sh/src/exec/is_function.c b/42sh/src/exec/is_function.c new file mode 100644 index 00000000..227acb3c --- /dev/null +++ b/42sh/src/exec/is_function.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* is_function.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 02:45:15 by wescande #+# #+# */ +/* Updated: 2017/03/08 03:10:25 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +t_btree *is_function(t_process *p) +{ + t_list *tmp; + + tmp = data_singleton()->lst_func; + while (tmp) + { + if (!ft_strcmp(((t_astnode *)tmp->content)->data.str, p->data.cmd.av[0])) + btree_map(p->data.subshell.content, node_copy); + tmp = tmp->next; + } + return (NULL); +} diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 4242fb47..5f27ecf0 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:44:37 by wescande ### ########.fr */ +/* Updated: 2017/03/08 03:08:30 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,9 +16,9 @@ int process_setexec(t_process *p) { p->data.cmd.path = NULL; p->data.cmd.execf = NULL; - /* if ((p->execf = is_function(p))) */ - /* p->type = PROCESS_FUNCTION; */ - if ((p->data.cmd.execf = is_builtin(p))) + if ((p->data.subshell.content = is_function(p))) + p->type = PROCESS_FUNCTION; + else if ((p->data.cmd.execf = is_builtin(p))) p->type = PROCESS_BUILTIN; else if (ft_strchr(p->data.cmd.av[0], '/')) { diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index 736e7e22..66041625 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ -/* Updated: 2017/03/07 10:49:15 by ariard ### ########.fr */ +/* Updated: 2017/03/08 03:04:45 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,7 @@ int isfunc_name(t_btree **ast, t_list **lst) { DG("add func name"); node->type = FNAME; + node->data.str = ft_strdup(token->data); return (1); } if (node->type == FNAME && token->type == TK_PAREN_CLOSE && node->nest == 0) @@ -87,8 +88,7 @@ int add_one_func(t_btree **ast, t_list **lst) { t_btree *func_ast; - (void)lst; -// func_ast = btree_map(*ast, &id); + func_ast = btree_map(*ast, node_copy); ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(&func_ast, sizeof(*ast))); DG("arbre ajoute"); return (0); From 9f8f9bb72980878ea8790cc21894f84260dd4747 Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 04:49:50 +0100 Subject: [PATCH 188/206] normalement les fonctions sont fonctionnelles. necessitent plus de test. --- 42sh/Makefile | 9 +++--- 42sh/includes/exec.h | 46 +++++++++++++---------------- 42sh/libft | 2 +- 42sh/src/exec/exec_default.c | 21 ------------- 42sh/src/exec/exec_func.c | 15 ---------- 42sh/src/exec/exec_leaf.c | 4 +-- 42sh/src/exec/exec_until.c | 26 ---------------- 42sh/src/exec/ft_exec.c | 3 +- 42sh/src/exec/is_function.c | 4 +-- 42sh/src/exec/launch_function.c | 40 +++++++++++++++++++++++++ 42sh/src/exec/launch_process.c | 4 +-- 42sh/src/exec/node_copy.c | 10 +++---- 42sh/src/exec/process_setexec.c | 8 +++-- 42sh/src/job-control/process_free.c | 4 +-- 42sh/src/parser/add_func.c | 3 +- 15 files changed, 86 insertions(+), 113 deletions(-) delete mode 100644 42sh/src/exec/exec_default.c delete mode 100644 42sh/src/exec/exec_func.c delete mode 100644 42sh/src/exec/exec_until.c create mode 100644 42sh/src/exec/launch_function.c diff --git a/42sh/Makefile b/42sh/Makefile index 008572f3..2af77340 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -65,38 +65,37 @@ exec/exec_ampersand.c\ exec/exec_and_if.c\ exec/exec_case_branch.c\ exec/exec_command.c\ -exec/exec_default.c\ exec/exec_elif.c\ exec/exec_else.c\ -exec/exec_func.c\ exec/exec_leaf.c\ exec/exec_math.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ exec/exec_semi.c\ -exec/exec_until.c\ exec/exec_var.c\ exec/fd_is_valid.c\ exec/ft_exec.c\ exec/ft_findexec.c\ +exec/is_function.c\ exec/launch_builtin.c\ exec/launch_case.c\ exec/launch_file.c\ exec/launch_for.c\ +exec/launch_function.c\ exec/launch_if.c\ exec/launch_process.c\ exec/launch_subshell.c\ exec/launch_until.c\ exec/launch_while.c\ exec/mark_process_status.c\ +exec/node_copy.c\ exec/process_redirect.c\ exec/process_reset.c\ exec/process_setexec.c\ exec/process_setgroup.c\ exec/process_setsig.c\ -exec/redir_free.c\ exec/redir_copy.c\ -exec/node_copy.c\ +exec/redir_free.c\ exec/redirect_dgreat.c\ exec/redirect_dless.c\ exec/redirect_great.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index ea85b168..372c4ef0 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:05:38 by ariard ### ########.fr */ +/* Updated: 2017/03/08 03:25:53 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -74,6 +74,7 @@ union u_process_data { struct s_data_cmd cmd; struct s_data_subshell subshell; + struct s_data_subshell function; struct s_data_cond d_while; struct s_data_cond d_until; struct s_data_cond d_if; @@ -130,31 +131,6 @@ extern t_itof g_execmap[]; extern t_itof g_redirmap[]; extern t_itof g_launchmap[]; -int ft_exec(t_btree **ast); - -int exec_default(t_btree **ast); - -int exec_semi(t_btree **ast); -int exec_ampersand(t_btree **ast); -int exec_or_if(t_btree **ast); -int exec_and_if(t_btree **ast); -int exec_pipe(t_btree **ast); -/* int exec_redir(t_btree **ast); */ -//int exec_cmd(t_btree **ast); -int exec_leaf(t_btree **ast); - -//int exec_while(t_btree **ast); -//int exec_if(t_btree **ast); -int exec_elif(t_btree **ast); -int exec_else(t_btree **ast); -//int exec_until(t_btree **ast); -//int exec_default(t_btree **ast); -int exec_var(t_btree **ast); -//int exec_for(t_btree **ast); -//int exec_case(t_btree **ast); -int exec_case_branch(t_btree **ast); -int exec_math(t_btree **ast); - int process_setexec(t_process *p); int process_setgroup(t_process *p, pid_t pid); void process_setsig(void); @@ -186,6 +162,7 @@ char **token_to_argv(t_ld *ld, int do_match); int add_new_job(t_job *job); int error_badidentifier(char *name); +t_btree *is_function(t_process *p); /* ** Mapping pour free les process @@ -208,6 +185,7 @@ int launch_case(t_process *p); int launch_file(t_process *p); int launch_builtin(t_process *p); int launch_subshell(t_process *p); +int launch_function(t_process *p); /* ** Mapping pour set les process @@ -222,4 +200,20 @@ int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_subshell(t_process *p, t_btree *ast, t_cmd *cmd); +/* +** Mapping pour exec les process +*/ +int ft_exec(t_btree **ast); +int exec_leaf(t_btree **ast); +int exec_semi(t_btree **ast); +int exec_ampersand(t_btree **ast); +int exec_or_if(t_btree **ast); +int exec_and_if(t_btree **ast); +int exec_pipe(t_btree **ast); +int exec_elif(t_btree **ast); +int exec_else(t_btree **ast); +int exec_var(t_btree **ast); +int exec_case_branch(t_btree **ast); +int exec_math(t_btree **ast); + #endif diff --git a/42sh/libft b/42sh/libft index 4a36b1a5..73c28532 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 4a36b1a5e650ada2f66034d13312367694a6481a +Subproject commit 73c28532404e437d670607c909fbe56d717e9683 diff --git a/42sh/src/exec/exec_default.c b/42sh/src/exec/exec_default.c deleted file mode 100644 index 796a10a7..00000000 --- a/42sh/src/exec/exec_default.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_default.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 19:29:59 by ariard #+# #+# */ -/* Updated: 2017/02/05 22:18:50 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int exec_default(t_btree **ast) -{ - - (void)ast; -// btree_delone(ast, &ast_free); - return (0); -} diff --git a/42sh/src/exec/exec_func.c b/42sh/src/exec/exec_func.c deleted file mode 100644 index 7255d850..00000000 --- a/42sh/src/exec/exec_func.c +++ /dev/null @@ -1,15 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_while.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/06 22:05:35 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - - diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index 9a0ae4fd..2fafa04c 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:30:29 by wescande ### ########.fr */ +/* Updated: 2017/03/08 03:25:23 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,9 @@ int exec_leaf(t_btree **ast) t_process p; t_job *job; - DG("in exec leaf"); job = &data_singleton()->exec.job; if (set_process(&p, *ast)) return (1); - DG("set_process done"); if (!(launch_process(&p))) { job_addprocess(&p); diff --git a/42sh/src/exec/exec_until.c b/42sh/src/exec/exec_until.c deleted file mode 100644 index a26563e9..00000000 --- a/42sh/src/exec/exec_until.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exec_until.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/06 20:42:20 by ariard #+# #+# */ -/* Updated: 2017/03/08 02:09:21 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int exec_until(t_btree **ast) -{ - ft_exec(&(*ast)->left); - while (ft_strcmp(ft_getenv(data_singleton()->env, "?"), "1") == 0) - { - DG("before right"); - ft_exec(&(*ast)->right); - DG("before left"); - ft_exec(&(*ast)->left); - } - return (0); -} diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index 87b37ab5..c3cb73dc 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 01:48:55 by ariard ### ########.fr */ +/* Updated: 2017/03/08 03:34:10 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,7 +44,6 @@ int ft_exec(t_btree **ast) if (!*ast) return (0); item = (*ast)->item; - DG("COMPARE : %d vs %d (SUBSHEELLL)", item->type, SUBSHELL); while (g_execmap[i].id) { if (item->type == g_execmap[i].id) diff --git a/42sh/src/exec/is_function.c b/42sh/src/exec/is_function.c index 227acb3c..36bdcd5a 100644 --- a/42sh/src/exec/is_function.c +++ b/42sh/src/exec/is_function.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 02:45:15 by wescande #+# #+# */ -/* Updated: 2017/03/08 03:10:25 by wescande ### ########.fr */ +/* Updated: 2017/03/08 03:22:34 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ t_btree *is_function(t_process *p) while (tmp) { if (!ft_strcmp(((t_astnode *)tmp->content)->data.str, p->data.cmd.av[0])) - btree_map(p->data.subshell.content, node_copy); + return (btree_map(p->data.subshell.content, node_copy)); tmp = tmp->next; } return (NULL); diff --git a/42sh/src/exec/launch_function.c b/42sh/src/exec/launch_function.c new file mode 100644 index 00000000..cd5c08d4 --- /dev/null +++ b/42sh/src/exec/launch_function.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* launch_function.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 03:23:59 by wescande #+# #+# */ +/* Updated: 2017/03/08 03:24:53 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static int do_function(t_process *p) +{ + ft_exec(&p->data.function.content); + return (ft_atoi(ft_getenv(data_singleton()->env, "?"))); +} + +int launch_function(t_process *p) +{ + pid_t pid; + + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + { + pid = fork(); + if (pid == 0) + { + data_singleton()->opts &= ~SH_INTERACTIVE; + data_singleton()->opts &= ~SH_OPTS_JOBC; + exit(do_function(p)); + } + else if (pid > 0) + return (pid); + } + else + do_function(p); + return (0); +} diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 72f080fd..080c92e1 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 00:11:15 by wescande ### ########.fr */ +/* Updated: 2017/03/08 03:23:16 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_itof g_launchmap[] = { - {PROCESS_FUNCTION, NULL}, + {PROCESS_FUNCTION, launch_function}, {PROCESS_BUILTIN, launch_builtin}, {PROCESS_FILE, launch_file}, {PROCESS_SUBSHELL, launch_subshell}, diff --git a/42sh/src/exec/node_copy.c b/42sh/src/exec/node_copy.c index 23c4fd13..790102fd 100644 --- a/42sh/src/exec/node_copy.c +++ b/42sh/src/exec/node_copy.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ast_copy.c :+: :+: :+: */ +/* node_copy.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/03/07 20:44:42 by wescande #+# #+# */ -/* Updated: 2017/03/08 01:00:05 by ariard ### ########.fr */ +/* Created: 2017/03/08 03:38:36 by wescande #+# #+# */ +/* Updated: 2017/03/08 04:40:50 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,13 +20,13 @@ void *node_copy(void *data) if (!data) return (NULL); old = data; - ft_bzero((void *)&new, sizeof(t_astdata)); + new = (t_astnode *)ft_memalloc(sizeof(t_astnode)); new->nest = old->nest; new->full = old->full; new->type = old->type; new->pattern = old->pattern; if (old->type == CMD || old->type == TK_ASSIGNEMENT_WORD) - { + { new->data.cmd.redir = ft_lstdup(&old->data.cmd.redir, &redir_copy); new->data.cmd.token = ft_ld_copy(old->data.cmd.token, &tab_esc_copy); } diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 5f27ecf0..08964e53 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:08:30 by wescande ### ########.fr */ +/* Updated: 2017/03/08 03:32:49 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,14 @@ int process_setexec(t_process *p) { + t_btree *func; p->data.cmd.path = NULL; p->data.cmd.execf = NULL; - if ((p->data.subshell.content = is_function(p))) + if ((func = is_function(p))) + { + p->data.subshell.content = func; p->type = PROCESS_FUNCTION; + } else if ((p->data.cmd.execf = is_builtin(p))) p->type = PROCESS_BUILTIN; else if (ft_strchr(p->data.cmd.av[0], '/')) diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index 23471c08..6cb3f743 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:07:01 by ariard ### ########.fr */ +/* Updated: 2017/03/08 03:26:28 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_itof g_freemap[] = { - {PROCESS_FUNCTION, NULL}, + {PROCESS_FUNCTION, process_free_subshell}, {PROCESS_BUILTIN, NULL}, {PROCESS_FILE, process_free_cmd}, {PROCESS_SUBSHELL, process_free_subshell}, diff --git a/42sh/src/parser/add_func.c b/42sh/src/parser/add_func.c index 66041625..e417bcbf 100644 --- a/42sh/src/parser/add_func.c +++ b/42sh/src/parser/add_func.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/24 23:43:07 by ariard #+# #+# */ -/* Updated: 2017/03/08 03:04:45 by wescande ### ########.fr */ +/* Updated: 2017/03/08 03:21:13 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,6 +88,7 @@ int add_one_func(t_btree **ast, t_list **lst) { t_btree *func_ast; + (void)lst; func_ast = btree_map(*ast, node_copy); ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(&func_ast, sizeof(*ast))); DG("arbre ajoute"); From 91a8e81c45726a071fd7a1b2a527784463452a1f Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 12:04:05 +0100 Subject: [PATCH 189/206] minor libft interface changes --- 42sh/libft | 2 +- 42sh/parser_init.c | 0 42sh/src/exec/exec_leaf.c | 2 +- 42sh/src/exec/ft_exec.c | 2 +- 42sh/src/exec/node_copy.c | 6 +++--- 42sh/src/exec/redir_copy.c | 10 +++++----- 42sh/src/exec/set_process.c | 6 ++---- 42sh/src/exec/set_process_cmd.c | 2 +- 42sh/src/exec/set_process_map.c | 2 +- 42sh/src/exec/set_process_subshell.c | 2 +- 10 files changed, 16 insertions(+), 18 deletions(-) delete mode 100644 42sh/parser_init.c diff --git a/42sh/libft b/42sh/libft index 73c28532..b209bb1f 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 73c28532404e437d670607c909fbe56d717e9683 +Subproject commit b209bb1fb718a68256253d5ab5ff69a46a90d5d6 diff --git a/42sh/parser_init.c b/42sh/parser_init.c deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index 2fafa04c..e8ef5244 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/08 03:25:23 by wescande ### ########.fr */ +/* Updated: 2017/03/08 11:50:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/ft_exec.c b/42sh/src/exec/ft_exec.c index c3cb73dc..34a242b5 100644 --- a/42sh/src/exec/ft_exec.c +++ b/42sh/src/exec/ft_exec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:34:10 by wescande ### ########.fr */ +/* Updated: 2017/03/08 11:57:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/node_copy.c b/42sh/src/exec/node_copy.c index 790102fd..6c010038 100644 --- a/42sh/src/exec/node_copy.c +++ b/42sh/src/exec/node_copy.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 03:38:36 by wescande #+# #+# */ -/* Updated: 2017/03/08 04:40:50 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:01:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,10 +27,10 @@ void *node_copy(void *data) new->pattern = old->pattern; if (old->type == CMD || old->type == TK_ASSIGNEMENT_WORD) { - new->data.cmd.redir = ft_lstdup(&old->data.cmd.redir, &redir_copy); + new->data.cmd.redir = ft_lstmap(old->data.cmd.redir, &redir_copy); new->data.cmd.token = ft_ld_copy(old->data.cmd.token, &tab_esc_copy); } if (old->type == TK_FOR || old->type == TK_PAREN_OPEN || old->type == TK_CASE) - new->data.cmd.wordlist = ft_ld_copy(old->data.cmd.token, &tab_esc_copy); + new->data.cmd.wordlist = ft_ld_copy(old->data.cmd.token, &tab_esc_copy); return (new); } diff --git a/42sh/src/exec/redir_copy.c b/42sh/src/exec/redir_copy.c index 65e843e2..3dea51e4 100644 --- a/42sh/src/exec/redir_copy.c +++ b/42sh/src/exec/redir_copy.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:02:58 by ariard #+# #+# */ -/* Updated: 2017/03/08 00:41:57 by ariard ### ########.fr */ +/* Updated: 2017/03/08 11:53:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,14 +15,14 @@ void *redir_copy(void *data) { t_redir *old; - t_redir *new; + t_redir *new; if (!data) return (NULL); old = data; - ft_bzero((void *)&new, sizeof(t_astdata)); + new = (t_redir *)ft_memalloc(sizeof(t_redir)); new->type = old->type; new->n = old->n; new->word = ft_strdup(old->word); - return (0); -} + return (new); +} diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index 336bd5bb..b3912717 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:12:02 by wescande ### ########.fr */ +/* Updated: 2017/03/08 11:53:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,10 +38,8 @@ int set_process(t_process *p, t_btree *ast) p->to_close = fds[PIPE_READ]; p->fdout = fds[PIPE_WRITE]; exec->fdin = fds[PIPE_READ]; - p->redirs = ft_lstmap(cmd->redir, ft_id); + p->redirs = ft_lstmap(cmd->redir, &redir_copy); if (set_process_map(p, ast, cmd)) return (1); -// if (exec->control_count) -// p->attrs |= PROCESS_CONTROL; return (0); } diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index 4a7c6a1b..e2bdfd50 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:44:40 by wescande ### ########.fr */ +/* Updated: 2017/03/08 11:49:32 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index 9db3679d..bdf91a50 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ -/* Updated: 2017/03/08 00:23:22 by wescande ### ########.fr */ +/* Updated: 2017/03/08 11:50:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process_subshell.c b/42sh/src/exec/set_process_subshell.c index 897a9183..e44baf60 100644 --- a/42sh/src/exec/set_process_subshell.c +++ b/42sh/src/exec/set_process_subshell.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:02:01 by wescande #+# #+# */ -/* Updated: 2017/03/08 01:52:45 by ariard ### ########.fr */ +/* Updated: 2017/03/08 11:51:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 8cba9bc113a772ef884494bb28ae302819fe49d9 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 12:21:13 +0100 Subject: [PATCH 190/206] issue #52: rewrote lexer_sep entirely --- 42sh/includes/minishell.h | 2 +- 42sh/src/lexer/lexer_delim.c | 2 +- 42sh/src/lexer/lexer_end.c | 2 +- 42sh/src/lexer/lexer_great.c | 2 +- 42sh/src/lexer/lexer_less.c | 2 +- 42sh/src/lexer/lexer_lessand.c | 2 +- 42sh/src/lexer/lexer_paren.c | 4 ++-- 42sh/src/lexer/lexer_sep.c | 26 ++++++++++---------------- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/lexer/token_print.c | 4 ++-- 42sh/src/main/main.c | 2 +- 11 files changed, 22 insertions(+), 28 deletions(-) diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index deac19e8..9b20a56e 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:13:31 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:05:37 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index d67b61d5..72b7c47c 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:08:23 by ariard ### ########.fr */ +/* Updated: 2017/03/08 12:09:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_end.c b/42sh/src/lexer/lexer_end.c index 4e3be646..5e0b6710 100644 --- a/42sh/src/lexer/lexer_end.c +++ b/42sh/src/lexer/lexer_end.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 16:58:24 by jhalford #+# #+# */ -/* Updated: 2017/03/05 17:29:17 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 12:12:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 6e582bdc..f6f6a262 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:20:02 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:10:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 9d08611c..02e1ee54 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:19:48 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:10:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_lessand.c b/42sh/src/lexer/lexer_lessand.c index f7d30d45..3930c001 100644 --- a/42sh/src/lexer/lexer_lessand.c +++ b/42sh/src/lexer/lexer_lessand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 18:05:39 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:12:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_paren.c b/42sh/src/lexer/lexer_paren.c index 735e56fe..5abf4b69 100644 --- a/42sh/src/lexer/lexer_paren.c +++ b/42sh/src/lexer/lexer_paren.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 17:37:15 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:48:06 by ariard ### ########.fr */ +/* Updated: 2017/03/08 12:14:09 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int lexer_paren(t_list **alst, t_lexer *lexer) token = (*alst)->content; if (token->type) - lexer_lex(&(*alst)->next, lexer); + return (lexer_lex(&(*alst)->next, lexer)); if (lexer->str[lexer->pos] == '(') { token->type = TK_PAREN_OPEN; diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 6420498f..b44b41c5 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/03/07 20:26:36 by ariard ### ########.fr */ +/* Updated: 2017/03/08 12:20:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,26 +19,20 @@ int lexer_sep(t_list **alst, t_lexer *lexer) char cn; lexer->state = DEFAULT; - if (*alst) - { - token = (*alst)->content; - if (*token->data) - return (lexer_sep(&(*alst)->next, lexer)); - } - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } token = (*alst)->content; + if (token->type) + return (lexer_lex(&(*alst)->next, lexer)); c = lexer->str[lexer->pos]; - cn = lexer->str[lexer->pos + 1]; + lexer->pos++; + cn = lexer->str[lexer->pos]; if (c == '&') token->type = cn == '&' ? TK_AND_IF : TK_AMP; else if (c == '|') token->type = cn == '|' ? TK_OR_IF : TK_PIPE; - token->type = (c == ';') ? TK_SEMI : token->type; - token->type = (c == ';') && (cn == ';') ? TK_DSEMI : token->type; - lexer->pos += 1 + (token->type & (TK_AND_IF | TK_OR_IF | TK_DSEMI) ? 1 : 0); + else if (c == ';') + token->type = cn == ';' ? TK_DSEMI : TK_SEMI; + if (token->type == TK_AND_IF || token->type == TK_OR_IF + || token->type == TK_DSEMI) + lexer->pos++; return (lexer_lex(&(*alst)->next, lexer)); } diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index d5ad413c..b3e8aea4 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:00:18 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:10:37 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_print.c b/42sh/src/lexer/token_print.c index c4529027..c17e1605 100644 --- a/42sh/src/lexer/token_print.c +++ b/42sh/src/lexer/token_print.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:39:01 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:27:58 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 12:14:32 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ void token_print(t_list *lst) if (lst->content) token = lst->content; if (token->type) - DG("token : %s data [%s]\n", read_state(token->type), token->data); + DG("token : %s data [%s]", read_state(token->type), token->data); lst = lst->next; } } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 0527cf28..e20fcf4f 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:53:23 by ariard ### ########.fr */ +/* Updated: 2017/03/08 12:20:37 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 8a46d9fe2a4f72853698dd79f821585bba46cbcd Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 12:44:09 +0100 Subject: [PATCH 191/206] issue #48 first step --- 42sh/includes/exec.h | 4 ++-- 42sh/src/exec/launch_file.c | 9 +++++++-- 42sh/src/exec/process_setexec.c | 14 +++++++++++--- 42sh/src/exec/redir_free.c | 6 +----- 42sh/src/job-control/process_free.c | 6 +++--- 42sh/src/main/main.c | 2 +- 6 files changed, 25 insertions(+), 16 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 372c4ef0..e8c72bc6 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:25:53 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:26:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,7 @@ struct s_data_cmd char **av; char *path; t_execf *execf; - struct stat stat; + struct stat *stat; }; struct s_data_cond diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index afe5cb81..56b06a04 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:33:56 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:42:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,12 @@ int launch_file(t_process *p) ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(127); } - else if (S_ISDIR(p->data.cmd.stat.st_mode)) + else if (!p->data.cmd.stat) + { + ft_dprintf(2, "{red}%s: %s: no such file or directory\n", SHELL_NAME, p->data.cmd.av[0]); + exit(127); + } + else if (S_ISDIR(p->data.cmd.stat->st_mode)) { ft_dprintf(2, "{red}%s: %s: Is a directory{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(126); diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 08964e53..8d10402f 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:32:49 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:42:32 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ int process_setexec(t_process *p) t_btree *func; p->data.cmd.path = NULL; p->data.cmd.execf = NULL; + p->data.cmd.stat = ft_memalloc(sizeof(struct stat)); + DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); if ((func = is_function(p))) { p->data.subshell.content = func; @@ -29,7 +31,8 @@ int process_setexec(t_process *p) p->type = PROCESS_FILE; p->data.cmd.execf = &execve; p->data.cmd.path = ft_strdup(p->data.cmd.av[0]); - stat(p->data.cmd.path, &p->data.cmd.stat); + if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) + ft_memdel((void**)&p->data.cmd.stat); } else { @@ -37,7 +40,12 @@ int process_setexec(t_process *p) if (ft_hash(p)) { p->data.cmd.execf = &execve; - stat(p->data.cmd.path, &p->data.cmd.stat); + DG("found hash at [%s]", p->data.cmd.path); + if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) + { + ft_memdel((void**)&p->data.cmd.stat); + ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n", SHELL_NAME, p->data.cmd.path); + } } } return (0); diff --git a/42sh/src/exec/redir_free.c b/42sh/src/exec/redir_free.c index fa19403f..54f40a65 100644 --- a/42sh/src/exec/redir_free.c +++ b/42sh/src/exec/redir_free.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/03 18:12:57 by ariard #+# #+# */ -/* Updated: 2017/03/05 18:06:24 by ariard ### ########.fr */ +/* Updated: 2017/03/08 12:40:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,9 +22,5 @@ void redir_free(void *data, size_t content_size) { ft_strdel(&redir->word); } - /* else */ - /* redir->type = 0; */ - /* redir->n = 0; */ - /* redir->close = 1; */ free(redir); } diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index 6cb3f743..be1d1d6c 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:26:28 by wescande ### ########.fr */ +/* Updated: 2017/03/08 12:40:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ t_itof g_freemap[] = { {PROCESS_FUNCTION, process_free_subshell}, - {PROCESS_BUILTIN, NULL}, + {PROCESS_BUILTIN, process_free_cmd}, {PROCESS_FILE, process_free_cmd}, {PROCESS_SUBSHELL, process_free_subshell}, {PROCESS_WHILE, process_free_cond}, @@ -36,6 +36,6 @@ void process_free(void *content, size_t content_size) return ; if (g_freemap[p->type].f) (g_freemap[p->type].f)(p); - ft_lstdel(&p->redirs, ft_lst_cfree); + ft_lstdel(&p->redirs, redir_free); free(p); } diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index e20fcf4f..798ba6ce 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:20:37 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 12:41:03 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From e711ffc92704dea451bd6a2cb7ec1a48a0acc202 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 13:07:46 +0100 Subject: [PATCH 192/206] issue #50 done --- 42sh/Makefile | 1 - 42sh/includes/ft_readline.h | 14 ++++++------- 42sh/{ => sample}/laurier.sh | 0 42sh/src/builtin/builtin_exit.c | 12 ++++++------ 42sh/src/exec/launch_builtin.c | 2 +- 42sh/src/exec/process_setexec.c | 2 +- 42sh/src/line-editing/control_c_and_d.c | 2 +- 42sh/src/line-editing/readline.c | 2 +- 42sh/src/main/data_init.c | 3 ++- 42sh/src/main/main.c | 4 ++-- 42sh/src/main/shell_exit.c | 26 ------------------------- 42sh/src/main/shell_init.c | 3 +-- 12 files changed, 22 insertions(+), 49 deletions(-) rename 42sh/{ => sample}/laurier.sh (100%) delete mode 100644 42sh/src/main/shell_exit.c diff --git a/42sh/Makefile b/42sh/Makefile index 2af77340..7e90da5e 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -250,7 +250,6 @@ main/data_singleton.c\ main/ft_putast.c\ main/instruction_free.c\ main/main.c\ -main/shell_exit.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ diff --git a/42sh/includes/ft_readline.h b/42sh/includes/ft_readline.h index 419d74df..44fc4bd5 100644 --- a/42sh/includes/ft_readline.h +++ b/42sh/includes/ft_readline.h @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */ -/* Updated: 2017/03/07 18:36:00 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 13:00:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -54,12 +54,12 @@ # define TOUCHE_F5 892427035 # define TOUCHE_F6 925981467 -# define IS_QUOTES (1 << 0) -# define IS_BQUOTES (1 << 1) -# define IS_DQUOTES (1 << 2) -# define IS_BSLASH (1 << 3) -# define IS_ACCOLADE (1 << 4) -# define IS_BRACKET (1 << 5) +/* # define IS_QUOTES (1 << 0) */ +/* # define IS_BQUOTES (1 << 1) */ +/* # define IS_DQUOTES (1 << 2) */ +/* # define IS_BSLASH (1 << 3) */ +/* # define IS_ACCOLADE (1 << 4) */ +/* # define IS_BRACKET (1 << 5) */ # define STR data_singleton()->line.input # define POS data_singleton()->line.pos diff --git a/42sh/laurier.sh b/42sh/sample/laurier.sh similarity index 100% rename from 42sh/laurier.sh rename to 42sh/sample/laurier.sh diff --git a/42sh/src/builtin/builtin_exit.c b/42sh/src/builtin/builtin_exit.c index 370e60ac..80a40fca 100644 --- a/42sh/src/builtin/builtin_exit.c +++ b/42sh/src/builtin/builtin_exit.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 14:28:41 by jhalford #+# #+# */ -/* Updated: 2017/02/18 16:48:42 by gwojda ### ########.fr */ +/* Updated: 2017/03/08 13:04:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,15 +29,15 @@ int builtin_exit(const char *path, char *const av[], char *const envp[]) ft_dprintf(2, "{red}%s: you have live jobs (running or suspended).{eoc}\n", SHELL_NAME); return (0); } - if (av[1]) + if (av && av[1]) status = ft_atoi(av[1]); else - { - /* status = ft_atoi(ft_getenv(data_singleton()->env, "?")); */ - status = 0; - } + status = ft_atoi(ft_getenv(data_singleton()->env, "?")); ft_save_termios(-1); ft_free_hash_table(); + data_exit(); + if (SH_IS_INTERACTIVE(data_singleton()->opts)) + tcsetattr(STDIN, TCSANOW, &data_singleton()->jobc.shell_tmodes); exit(status); return (0); } diff --git a/42sh/src/exec/launch_builtin.c b/42sh/src/exec/launch_builtin.c index aed14ec5..47d090cc 100644 --- a/42sh/src/exec/launch_builtin.c +++ b/42sh/src/exec/launch_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:48:24 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:51:58 by wescande ### ########.fr */ +/* Updated: 2017/03/08 13:04:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c index 8d10402f..9ad7aedf 100644 --- a/42sh/src/exec/process_setexec.c +++ b/42sh/src/exec/process_setexec.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:42:32 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 12:54:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/control_c_and_d.c b/42sh/src/line-editing/control_c_and_d.c index d484cbaa..b80a982c 100644 --- a/42sh/src/line-editing/control_c_and_d.c +++ b/42sh/src/line-editing/control_c_and_d.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:17:28 by gwojda #+# #+# */ -/* Updated: 2017/02/14 14:08:21 by gwojda ### ########.fr */ +/* Updated: 2017/03/08 12:56:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/readline.c b/42sh/src/line-editing/readline.c index f9bf13df..19b57e47 100644 --- a/42sh/src/line-editing/readline.c +++ b/42sh/src/line-editing/readline.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */ -/* Updated: 2017/03/07 11:20:27 by gwojda ### ########.fr */ +/* Updated: 2017/03/08 13:00:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index ce7e2a03..e1155419 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:38:43 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 13:05:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ int data_init(void) data = data_singleton(); data->env = ft_sstrdup(environ); + set_exitstatus(0, 1); data->comp = NULL; data->opts = 0; data->exec.fd_save[0] = fcntl(0, F_DUPFD_CLOEXEC); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 798ba6ce..22308690 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:41:03 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 12:59:55 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -124,6 +124,6 @@ int main(int ac, char **av) // parser_clean; ; } - shell_exit(); + builtin_exit(NULL, NULL, NULL); return (0); } diff --git a/42sh/src/main/shell_exit.c b/42sh/src/main/shell_exit.c deleted file mode 100644 index 30d4ab43..00000000 --- a/42sh/src/main/shell_exit.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* shell_exit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/12 17:37:04 by jhalford #+# #+# */ -/* Updated: 2017/02/21 20:14:43 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -void shell_exit(void) -{ - t_data *data; - - /* DG("shell_exit()"); */ - data = data_singleton(); - data_exit(); - if (SH_HAS_JOBC(data->opts)) - job_kill_all(); - if (SH_IS_INTERACTIVE(data->opts)) - tcsetattr(STDIN, TCSANOW, &data_singleton()->jobc.shell_tmodes); -} diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index abf15a8e..d767aebd 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/03/07 16:38:13 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 13:04:03 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,6 @@ void shell_init(int ac, char **av) data = data_singleton(); data->argc = ac; data->argv = ft_sstrdup(av); - /* atexit(&shell_exit); */ shell_get_opts(ac, av); if (SH_IS_INTERACTIVE(data->opts)) { From 852895104173d966b5a9854ab70384b807c3323c Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 13:48:58 +0100 Subject: [PATCH 193/206] heredoc changes first step --- 42sh/src/lexer/lexer_dless.c | 28 ++++++++++++++-------------- 42sh/src/lexer/lexer_less.c | 7 ++----- 42sh/src/lexer/token_free.c | 2 +- 42sh/src/lexer/token_init.c | 2 +- 42sh/src/main/data_init.c | 2 +- 42sh/src/main/main.c | 2 +- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/42sh/src/lexer/lexer_dless.c b/42sh/src/lexer/lexer_dless.c index d3859b87..4ee8434c 100644 --- a/42sh/src/lexer/lexer_dless.c +++ b/42sh/src/lexer/lexer_dless.c @@ -10,20 +10,20 @@ int lexer_dless(t_list **alst, t_lexer *lexer) (void)lexer; heredoc_lst = *(t_list**)lexer->heredoc_stack->content; heredoc_tok = heredoc_lst->content; - if (!(heredoc_lst->next)) - { - ft_dprintf(2, "{red}%s: parse error near `\\n'{eoc}\n", SHELL_NAME); - return (1); - } - eof_tok = heredoc_lst->next->content; - if (!(eof_tok->type == TK_WORD)) - { - ft_dprintf(2, "{red}%s: expected word token after <<{eoc}\n", SHELL_NAME); - return (1); - } - DG("heredoc contains [%s]", heredoc_tok->data); - DG("heredoc ends at [%s]", eof_tok->data); - DG("input is [%s]", lexer->str + lexer->pos); + /* if (!(heredoc_lst->next)) */ + /* { */ + /* ft_dprintf(2, "{red}%s: parse error near `\\n'{eoc}\n", SHELL_NAME); */ + /* return (1); */ + /* } */ + /* eof_tok = heredoc_lst->next->content; */ + /* if (!(eof_tok->type == TK_WORD)) */ + /* { */ + /* ft_dprintf(2, "{red}%s: expected word token after <<{eoc}\n", SHELL_NAME); */ + /* return (1); */ + /* } */ + /* DG("heredoc contains [%s]", heredoc_tok->data); */ + /* DG("heredoc ends at [%s]", eof_tok->data); */ + /* DG("input is [%s]", lexer->str + lexer->pos); */ if (ft_strcmp(eof_tok->data, lexer->str + lexer->pos) == 0) { pop(&lexer->stack); diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 02e1ee54..8b9e0b0d 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:10:38 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 13:27:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ int lexer_less(t_list **alst, t_lexer *lexer) t_token *token; token = (*alst)->content; - token_append(token, lexer, 0, 0); lexer->pos++; if (lexer->str[lexer->pos] == '&') { @@ -28,11 +27,9 @@ int lexer_less(t_list **alst, t_lexer *lexer) } if (lexer->str[lexer->pos] == '<') { - token_free(token, 0); - (*alst)->content = token_init(); token->type = TK_DLESS; - lexer->pos++; push(&lexer->stack, DLESS); + lexer->pos++; lexer->state = DEFAULT; ft_lsteadd(&lexer->heredoc_stack, ft_lstnew(alst, sizeof(alst))); return (lexer_lex(&(*alst)->next, lexer)); diff --git a/42sh/src/lexer/token_free.c b/42sh/src/lexer/token_free.c index 0727f7a5..148ff2b6 100644 --- a/42sh/src/lexer/token_free.c +++ b/42sh/src/lexer/token_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:30 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:57:46 by ariard ### ########.fr */ +/* Updated: 2017/03/08 13:22:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_init.c b/42sh/src/lexer/token_init.c index 4739d61b..3e58f078 100644 --- a/42sh/src/lexer/token_init.c +++ b/42sh/src/lexer/token_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 15:30:25 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:55:35 by ariard ### ########.fr */ +/* Updated: 2017/03/08 13:21:55 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index e1155419..462e0902 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 13:05:23 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 13:48:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 22308690..1f7a6f58 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:59:55 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 13:27:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 4ee0f246328ab4fa1ec80fcb766c1ae58e43380f Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 14:28:34 +0100 Subject: [PATCH 194/206] compils now --- 42sh/src/exec/launch_process.c | 2 +- 42sh/src/lexer/lexer_dless.c | 22 +++++++++++----------- 42sh/src/main/data_init.c | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index 080c92e1..e812c0b3 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 03:23:16 by wescande ### ########.fr */ +/* Updated: 2017/03/08 14:26:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_dless.c b/42sh/src/lexer/lexer_dless.c index 4ee8434c..16fb05f3 100644 --- a/42sh/src/lexer/lexer_dless.c +++ b/42sh/src/lexer/lexer_dless.c @@ -10,17 +10,17 @@ int lexer_dless(t_list **alst, t_lexer *lexer) (void)lexer; heredoc_lst = *(t_list**)lexer->heredoc_stack->content; heredoc_tok = heredoc_lst->content; - /* if (!(heredoc_lst->next)) */ - /* { */ - /* ft_dprintf(2, "{red}%s: parse error near `\\n'{eoc}\n", SHELL_NAME); */ - /* return (1); */ - /* } */ - /* eof_tok = heredoc_lst->next->content; */ - /* if (!(eof_tok->type == TK_WORD)) */ - /* { */ - /* ft_dprintf(2, "{red}%s: expected word token after <<{eoc}\n", SHELL_NAME); */ - /* return (1); */ - /* } */ + if (!(heredoc_lst->next)) + { + ft_dprintf(2, "{red}%s: parse error near `\\n'{eoc}\n", SHELL_NAME); + return (1); + } + eof_tok = heredoc_lst->next->content; + if (!(eof_tok->type == TK_WORD)) + { + ft_dprintf(2, "{red}%s: expected word token after <<{eoc}\n", SHELL_NAME); + return (1); + } /* DG("heredoc contains [%s]", heredoc_tok->data); */ /* DG("heredoc ends at [%s]", eof_tok->data); */ /* DG("input is [%s]", lexer->str + lexer->pos); */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 462e0902..7e1bc423 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 13:48:27 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:26:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 95be4e209ccc9d0fb0be96dfea792717d4d2ad71 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 14:52:44 +0100 Subject: [PATCH 195/206] stuff --- 42sh/Makefile | 2 +- 42sh/includes/exec.h | 6 ++-- 42sh/src/exec/exec_leaf.c | 2 +- 42sh/src/exec/exec_reset.c | 31 ++++++++++++++++++++ 42sh/src/exec/launch_builtin.c | 2 +- 42sh/src/exec/launch_file.c | 5 +++- 42sh/src/exec/launch_process.c | 24 +-------------- 42sh/src/exec/launch_subshell.c | 2 +- 42sh/src/exec/process_reset.c | 8 ++--- 42sh/src/exec/process_setexec.c | 52 --------------------------------- 42sh/src/exec/set_process.c | 8 ++--- 42sh/src/exec/set_process_cmd.c | 38 ++++++++++++++++++++++-- 42sh/src/exec/set_process_map.c | 6 ++-- 42sh/src/main/data_init.c | 14 ++------- 42sh/src/main/main.c | 2 +- 15 files changed, 92 insertions(+), 110 deletions(-) create mode 100644 42sh/src/exec/exec_reset.c delete mode 100644 42sh/src/exec/process_setexec.c diff --git a/42sh/Makefile b/42sh/Makefile index 7e90da5e..0cac1aa5 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -71,6 +71,7 @@ exec/exec_leaf.c\ exec/exec_math.c\ exec/exec_or_if.c\ exec/exec_pipe.c\ +exec/exec_reset.c\ exec/exec_semi.c\ exec/exec_var.c\ exec/fd_is_valid.c\ @@ -91,7 +92,6 @@ exec/mark_process_status.c\ exec/node_copy.c\ exec/process_redirect.c\ exec/process_reset.c\ -exec/process_setexec.c\ exec/process_setgroup.c\ exec/process_setsig.c\ exec/redir_copy.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index e8c72bc6..59fd4d22 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:26:19 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:51:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -131,7 +131,8 @@ extern t_itof g_execmap[]; extern t_itof g_redirmap[]; extern t_itof g_launchmap[]; -int process_setexec(t_process *p); + +int exec_reset(void); int process_setgroup(t_process *p, pid_t pid); void process_setsig(void); void process_reset(t_process *p); @@ -190,6 +191,7 @@ int launch_function(t_process *p); /* ** Mapping pour set les process */ + int set_process(t_process *p, t_btree *ast); int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd); int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd); diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index e8ef5244..95f1d38b 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/08 11:50:20 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:47:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_reset.c b/42sh/src/exec/exec_reset.c new file mode 100644 index 00000000..2b925196 --- /dev/null +++ b/42sh/src/exec/exec_reset.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec_reset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 14:31:42 by jhalford #+# #+# */ +/* Updated: 2017/03/08 14:45:10 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int exec_reset(void) +{ + t_exec *exec; + + exec = &data_singleton()->exec; + exec->fd_save[0] = fcntl(0, F_DUPFD_CLOEXEC); + exec->fd_save[1] = fcntl(1, F_DUPFD_CLOEXEC); + exec->fd_save[2] = fcntl(2, F_DUPFD_CLOEXEC); + exec->op_stack = NULL; + exec->fdin = STDIN; + exec->attrs = 0; + exec->job.id = 0; + exec->job.pgid = 0; + exec->job.attrs = 0; + exec->job.first_process = NULL; + return (0); +} diff --git a/42sh/src/exec/launch_builtin.c b/42sh/src/exec/launch_builtin.c index 47d090cc..71497c10 100644 --- a/42sh/src/exec/launch_builtin.c +++ b/42sh/src/exec/launch_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:48:24 by jhalford #+# #+# */ -/* Updated: 2017/03/08 13:04:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:43:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index 56b06a04..180d0f58 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:42:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:46:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,10 +40,13 @@ int launch_file(t_process *p) ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(126); } + // for all leaves process_setgroup(p, 0); process_setsig(); if (process_redirect(p)) exit (1); + exec_reset(); + // (*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env); ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(42); diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index e812c0b3..dbe58ef0 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:26:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:45:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,6 @@ t_itof g_launchmap[] = int launch_process(t_process *p) { -// int i; int pid; if (p->type >= PROCESS_MAX) @@ -42,25 +41,4 @@ int launch_process(t_process *p) p->pid = pid; process_setgroup(p, pid); return (0); - /* - i = 0; - while (g_launchmap[i].id) - { - if (p->type == g_launchmap[i].id) - { - if (!g_launchmap[i].f) - return (-1); - p->attrs &= ~PROCESS_STATE_MASK; - p->attrs |= PROCESS_RUNNING; - if ((pid = (*g_launchmap[i].f)(p))) - { - p->pid = pid; - process_setgroup(p, pid); - return (0); - } - } - i++; - } - return (-1); - */ } diff --git a/42sh/src/exec/launch_subshell.c b/42sh/src/exec/launch_subshell.c index aa2f481d..98fd0bcb 100644 --- a/42sh/src/exec/launch_subshell.c +++ b/42sh/src/exec/launch_subshell.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:11:44 by wescande #+# #+# */ -/* Updated: 2017/03/08 00:32:13 by wescande ### ########.fr */ +/* Updated: 2017/03/08 14:44:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_reset.c b/42sh/src/exec/process_reset.c index 3b5c065e..7e12b8b3 100644 --- a/42sh/src/exec/process_reset.c +++ b/42sh/src/exec/process_reset.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */ -/* Updated: 2017/03/07 14:36:21 by wescande ### ########.fr */ +/* Updated: 2017/03/08 14:51:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,12 +18,10 @@ void process_reset(t_process *p) // p->path = NULL; // p->execf = NULL; p->pid = 0; - /* p->fdin = STDIN; */ - /* p->fdout = STDOUT; */ + p->fdin = STDIN; + p->fdout = STDOUT; p->to_close = 0; p->redirs = NULL; p->status = -1; p->attrs = 0; -// p->condition = NULL; -// p->content = NULL; } diff --git a/42sh/src/exec/process_setexec.c b/42sh/src/exec/process_setexec.c deleted file mode 100644 index 9ad7aedf..00000000 --- a/42sh/src/exec/process_setexec.c +++ /dev/null @@ -1,52 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* process_setexec.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:54:54 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int process_setexec(t_process *p) -{ - t_btree *func; - p->data.cmd.path = NULL; - p->data.cmd.execf = NULL; - p->data.cmd.stat = ft_memalloc(sizeof(struct stat)); - DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); - if ((func = is_function(p))) - { - p->data.subshell.content = func; - p->type = PROCESS_FUNCTION; - } - else if ((p->data.cmd.execf = is_builtin(p))) - p->type = PROCESS_BUILTIN; - else if (ft_strchr(p->data.cmd.av[0], '/')) - { - p->type = PROCESS_FILE; - p->data.cmd.execf = &execve; - p->data.cmd.path = ft_strdup(p->data.cmd.av[0]); - if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) - ft_memdel((void**)&p->data.cmd.stat); - } - else - { - p->type = PROCESS_FILE; - if (ft_hash(p)) - { - p->data.cmd.execf = &execve; - DG("found hash at [%s]", p->data.cmd.path); - if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) - { - ft_memdel((void**)&p->data.cmd.stat); - ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n", SHELL_NAME, p->data.cmd.path); - } - } - } - return (0); -} diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index b3912717..a19e1e1a 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 11:53:31 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:51:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ int set_process(t_process *p, t_btree *ast) int fds[2]; cmd = &((t_astnode *)ast->item)->data.cmd; - process_reset(p); + /* process_reset(p); */ exec = &data_singleton()->exec; op = pop(&exec->op_stack); if ((EXEC_IS_AND_IF(exec->attrs) @@ -39,7 +39,5 @@ int set_process(t_process *p, t_btree *ast) p->fdout = fds[PIPE_WRITE]; exec->fdin = fds[PIPE_READ]; p->redirs = ft_lstmap(cmd->redir, &redir_copy); - if (set_process_map(p, ast, cmd)) - return (1); - return (0); + return (set_process_map(p, ast, cmd)); } diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index e2bdfd50..3d4c3c72 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/08 11:49:32 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:46:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,43 @@ int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd) { + t_btree *func; + (void)ast; if (!(p->data.cmd.av = token_to_argv(cmd->token, 1))) return (1); - process_setexec(p); + p->data.cmd.path = NULL; + p->data.cmd.execf = NULL; + p->data.cmd.stat = ft_memalloc(sizeof(struct stat)); + DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); + if ((func = is_function(p))) + { + p->data.subshell.content = func; + p->type = PROCESS_FUNCTION; + } + else if ((p->data.cmd.execf = is_builtin(p))) + p->type = PROCESS_BUILTIN; + else if (ft_strchr(p->data.cmd.av[0], '/')) + { + p->type = PROCESS_FILE; + p->data.cmd.execf = &execve; + p->data.cmd.path = ft_strdup(p->data.cmd.av[0]); + if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) + ft_memdel((void**)&p->data.cmd.stat); + } + else + { + p->type = PROCESS_FILE; + if (ft_hash(p)) + { + p->data.cmd.execf = &execve; + DG("found hash at [%s]", p->data.cmd.path); + if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) + { + ft_memdel((void**)&p->data.cmd.stat); + ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n", SHELL_NAME, p->data.cmd.path); + } + } + } return (0); } diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index bdf91a50..3e32cc57 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ -/* Updated: 2017/03/08 11:50:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:48:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,8 +48,8 @@ int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) if (item->type == g_setprocessmap[i].id) { if (!g_setprocessmap[i].f) - return (0); + return (1); return ((*g_setprocessmap[i].f)(p, ast, cmd)); } - return (0); + return (1); } diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 7e1bc423..843047d7 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:26:44 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:39:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,17 +24,7 @@ int data_init(void) set_exitstatus(0, 1); data->comp = NULL; data->opts = 0; - data->exec.fd_save[0] = fcntl(0, F_DUPFD_CLOEXEC); - data->exec.fd_save[1] = fcntl(1, F_DUPFD_CLOEXEC); - data->exec.fd_save[2] = fcntl(2, F_DUPFD_CLOEXEC); - data->exec.op_stack = NULL; - data->exec.fdin = STDIN; - data->exec.attrs = 0; - - data->exec.job.id = 0; - data->exec.job.pgid = 0; - data->exec.job.attrs = 0; - data->exec.job.first_process = NULL; + exec_reset(); data->jobc.first_job = NULL; data->jobc.current_id = 1; diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 1f7a6f58..7cf15069 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/08 13:27:47 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:39:33 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From e2a254863c24cdb257e6553844ca22938e441fe9 Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 14:53:11 +0100 Subject: [PATCH 196/206] rectif du glob sur l'affichage du pattern quand pas de match, et ajout du / quand match avec un dossier --- 42sh/src/glob/dir_glob.c | 12 ++++++++---- 42sh/src/glob/glob.c | 5 ++--- 42sh/src/glob/match_pattern.c | 3 ++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/42sh/src/glob/dir_glob.c b/42sh/src/glob/dir_glob.c index 2e9f3281..e83d55b9 100644 --- a/42sh/src/glob/dir_glob.c +++ b/42sh/src/glob/dir_glob.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 12:07:16 by wescande #+# #+# */ -/* Updated: 2017/02/24 22:04:49 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:50:58 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,9 +49,13 @@ int dir_research(t_glob *gl, char *p, { DIR *dir; struct dirent *in; - int ret; - ret = 0; + if (!pat) + { + gl->found = 1; + ft_ld_pushfront(&gl->match, ft_strjoin(p, "/")); + return (0); + } if ((ft_strlen(p) <= 1 || p[ft_strlen(p) - 1] != '.') && is_directory(p)) { dir = opendir(p); @@ -60,5 +64,5 @@ int dir_research(t_glob *gl, char *p, (char *[2]){p, in->d_name}, pat, recursive); closedir(dir); } - return (ret); + return (0); } diff --git a/42sh/src/glob/glob.c b/42sh/src/glob/glob.c index b44b5c89..f3bbc2cf 100644 --- a/42sh/src/glob/glob.c +++ b/42sh/src/glob/glob.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:29:54 by wescande #+# #+# */ -/* Updated: 2017/03/03 20:38:53 by wescande ### ########.fr */ +/* Updated: 2017/03/08 14:50:56 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,8 +66,7 @@ char **glob(char *pat, unsigned char *esc, else dir_research(&gl, "/", gl.pat + 1, 0); if (!gl.found) - ft_ld_pushfront(&gl.match, - ft_strjoin(gl.cur_dir ? "" : "./", CH(gl.m_pat)[0])); + ft_ld_pushfront(&gl.match, ft_strdup(CH(gl.m_pat)[0])); if (!gl.m_pat->next) break ; gl.m_pat = gl.m_pat->next; diff --git a/42sh/src/glob/match_pattern.c b/42sh/src/glob/match_pattern.c index f3573fe5..57323c48 100644 --- a/42sh/src/glob/match_pattern.c +++ b/42sh/src/glob/match_pattern.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/24 17:30:23 by wescande #+# #+# */ -/* Updated: 2017/02/24 22:06:01 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:35:43 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,6 +90,7 @@ static char *manage_pat(t_glob *gl, char *pat, char *str) if (pat[0] == '.' && pat[1] == '/' && ((str[0] == '.' && str[1] != '/') || str[0] != '.')) { + DG("%s vs %s", pat, str); gl->cur_dir = 0; return (pat + 2); } From 145c116e1800fa48bb769f4fb9d773e6c803ffae Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 15:19:10 +0100 Subject: [PATCH 197/206] ajout de reinitialisation du des exec dans les forks + correctif d'un segv sur free du subshell --- 42sh/includes/exec.h | 18 +++++++------- 42sh/src/exec/launch_builtin.c | 3 ++- 42sh/src/exec/launch_case.c | 7 +++++- 42sh/src/exec/launch_for.c | 7 +++++- 42sh/src/exec/launch_function.c | 7 +++++- 42sh/src/exec/launch_if.c | 7 +++++- 42sh/src/exec/launch_subshell.c | 7 +++++- 42sh/src/exec/launch_until.c | 7 +++++- 42sh/src/exec/launch_while.c | 7 +++++- 42sh/src/exec/set_process.c | 10 ++++---- 42sh/src/exec/set_process_case.c | 5 ++-- 42sh/src/exec/set_process_cmd.c | 25 ++++++++------------ 42sh/src/exec/set_process_for.c | 5 ++-- 42sh/src/exec/set_process_if.c | 5 ++-- 42sh/src/exec/set_process_map.c | 6 ++--- 42sh/src/exec/set_process_subshell.c | 5 ++-- 42sh/src/exec/set_process_until.c | 5 ++-- 42sh/src/exec/set_process_while.c | 5 ++-- 42sh/src/job-control/job_remove.c | 3 +-- 42sh/src/job-control/process_free_cmd.c | 4 +++- 42sh/src/job-control/process_free_subshell.c | 4 ++-- 42sh/src/job-control/put_job_in_foreground.c | 10 +------- 22 files changed, 90 insertions(+), 72 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 59fd4d22..baf2e7d6 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:51:04 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:58:19 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -193,14 +193,14 @@ int launch_function(t_process *p); */ int set_process(t_process *p, t_btree *ast); -int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_until(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd); -int set_process_subshell(t_process *p, t_btree *ast, t_cmd *cmd); +int set_process_map(t_process *p, t_btree *ast); +int set_process_cmd(t_process *p, t_btree *ast); +int set_process_while(t_process *p, t_btree *ast); +int set_process_until(t_process *p, t_btree *ast); +int set_process_if(t_process *p, t_btree *ast); +int set_process_for(t_process *p, t_btree *ast); +int set_process_case(t_process *p, t_btree *ast); +int set_process_subshell(t_process *p, t_btree *ast); /* ** Mapping pour exec les process diff --git a/42sh/src/exec/launch_builtin.c b/42sh/src/exec/launch_builtin.c index 71497c10..0c80ecbe 100644 --- a/42sh/src/exec/launch_builtin.c +++ b/42sh/src/exec/launch_builtin.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:48:24 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:43:35 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:10:49 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,7 @@ int launch_builtin(t_process *p) process_setsig(); if (process_redirect(p)) exit (1); + exec_reset();///A FAIRE POUR LES BUILTIN OU PAS ? -> Q de William exit((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_case.c b/42sh/src/exec/launch_case.c index a7c096ff..6f248ae0 100644 --- a/42sh/src/exec/launch_case.c +++ b/42sh/src/exec/launch_case.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:02:23 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:02:46 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:11:02 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -57,6 +57,11 @@ int launch_case(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_case(p)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_for.c b/42sh/src/exec/launch_for.c index 6de71af2..0c39ac59 100644 --- a/42sh/src/exec/launch_for.c +++ b/42sh/src/exec/launch_for.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 17:34:43 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:02:18 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:07:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,6 +51,11 @@ int launch_for(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_for(p)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_function.c b/42sh/src/exec/launch_function.c index cd5c08d4..74678b8e 100644 --- a/42sh/src/exec/launch_function.c +++ b/42sh/src/exec/launch_function.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 03:23:59 by wescande #+# #+# */ -/* Updated: 2017/03/08 03:24:53 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:08:20 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,11 @@ int launch_function(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_function(p)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_if.c b/42sh/src/exec/launch_if.c index ca80fffb..7d389d56 100644 --- a/42sh/src/exec/launch_if.c +++ b/42sh/src/exec/launch_if.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 17:26:53 by wescande #+# #+# */ -/* Updated: 2017/03/07 21:03:04 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:07:47 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,6 +38,11 @@ int launch_if(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_if(p)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_subshell.c b/42sh/src/exec/launch_subshell.c index 98fd0bcb..1c2703b1 100644 --- a/42sh/src/exec/launch_subshell.c +++ b/42sh/src/exec/launch_subshell.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:11:44 by wescande #+# #+# */ -/* Updated: 2017/03/08 14:44:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:08:04 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,11 @@ int launch_subshell(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_subshell(p)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_until.c b/42sh/src/exec/launch_until.c index 21fc64a1..4c0f566d 100644 --- a/42sh/src/exec/launch_until.c +++ b/42sh/src/exec/launch_until.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 22:04:42 by wescande #+# #+# */ -/* Updated: 2017/03/08 02:35:09 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:08:13 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,6 +38,11 @@ int launch_until(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_until(p)); } else if (pid > 0) diff --git a/42sh/src/exec/launch_while.c b/42sh/src/exec/launch_while.c index a003c8b1..462edb8b 100644 --- a/42sh/src/exec/launch_while.c +++ b/42sh/src/exec/launch_while.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 17:20:53 by wescande #+# #+# */ -/* Updated: 2017/03/07 20:59:40 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:18:36 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,6 +55,11 @@ int launch_while(t_process *p) { data_singleton()->opts &= ~SH_INTERACTIVE; data_singleton()->opts &= ~SH_OPTS_JOBC; + process_setgroup(p, 0); + process_setsig(); + if (process_redirect(p)) + exit (1); + exec_reset(); exit(do_while(p)); } else if (pid > 0) diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index a19e1e1a..70d876be 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:51:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:58:21 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,11 +15,11 @@ int set_process(t_process *p, t_btree *ast) { t_exec *exec; - t_cmd *cmd; +// t_cmd *cmd; int op; int fds[2]; - cmd = &((t_astnode *)ast->item)->data.cmd; +// cmd = &((t_astnode *)ast->item)->data.cmd; /* process_reset(p); */ exec = &data_singleton()->exec; op = pop(&exec->op_stack); @@ -38,6 +38,6 @@ int set_process(t_process *p, t_btree *ast) p->to_close = fds[PIPE_READ]; p->fdout = fds[PIPE_WRITE]; exec->fdin = fds[PIPE_READ]; - p->redirs = ft_lstmap(cmd->redir, &redir_copy); - return (set_process_map(p, ast, cmd)); + p->redirs = ft_lstmap(((t_astnode *)ast->item)->data.cmd.redir, &redir_copy); + return (set_process_map(p, ast)); } diff --git a/42sh/src/exec/set_process_case.c b/42sh/src/exec/set_process_case.c index e7626df9..ac184d08 100644 --- a/42sh/src/exec/set_process_case.c +++ b/42sh/src/exec/set_process_case.c @@ -6,15 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 20:36:04 by wescande #+# #+# */ -/* Updated: 2017/03/08 01:49:48 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:59:25 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_case(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_case(t_process *p, t_btree *ast) { - (void)cmd; p->data.d_case.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); p->data.d_case.content = btree_map(ast->right, &node_copy); p->type = PROCESS_CASE; diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index 3d4c3c72..85d2ca4b 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,23 +6,23 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/08 14:46:10 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:03:40 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_cmd(t_process *p, t_btree *ast) { t_btree *func; - (void)ast; - if (!(p->data.cmd.av = token_to_argv(cmd->token, 1))) + if (!(p->data.cmd.av = token_to_argv(((t_astnode *)ast->item)->data.cmd.token, 1))) return (1); p->data.cmd.path = NULL; p->data.cmd.execf = NULL; p->data.cmd.stat = ft_memalloc(sizeof(struct stat)); DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); + p->type = PROCESS_FILE; if ((func = is_function(p))) { p->data.subshell.content = func; @@ -32,24 +32,19 @@ int set_process_cmd(t_process *p, t_btree *ast, t_cmd *cmd) p->type = PROCESS_BUILTIN; else if (ft_strchr(p->data.cmd.av[0], '/')) { - p->type = PROCESS_FILE; p->data.cmd.execf = &execve; p->data.cmd.path = ft_strdup(p->data.cmd.av[0]); if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) ft_memdel((void**)&p->data.cmd.stat); } - else + else if (ft_hash(p)) { - p->type = PROCESS_FILE; - if (ft_hash(p)) + p->data.cmd.execf = &execve; + DG("found hash at [%s]", p->data.cmd.path); + if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) { - p->data.cmd.execf = &execve; - DG("found hash at [%s]", p->data.cmd.path); - if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) - { - ft_memdel((void**)&p->data.cmd.stat); - ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n", SHELL_NAME, p->data.cmd.path); - } + ft_memdel((void**)&p->data.cmd.stat); + ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n", SHELL_NAME, p->data.cmd.path); } } return (0); diff --git a/42sh/src/exec/set_process_for.c b/42sh/src/exec/set_process_for.c index 66489f57..e51621ed 100644 --- a/42sh/src/exec/set_process_for.c +++ b/42sh/src/exec/set_process_for.c @@ -6,15 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ -/* Updated: 2017/03/08 01:50:33 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:59:08 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_for(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_for(t_process *p, t_btree *ast) { - (void)cmd; p->data.d_for.list_word = ft_ld_copy(((t_astnode *)ast->item)->data.cmd.wordlist, tab_esc_copy); p->data.d_for.content = btree_map(ast->right, &node_copy); p->type = PROCESS_FOR; diff --git a/42sh/src/exec/set_process_if.c b/42sh/src/exec/set_process_if.c index 0fae0f0a..3aaac67c 100644 --- a/42sh/src/exec/set_process_if.c +++ b/42sh/src/exec/set_process_if.c @@ -6,15 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:19:50 by wescande #+# #+# */ -/* Updated: 2017/03/08 01:51:09 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:59:17 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_if(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_if(t_process *p, t_btree *ast) { - (void)cmd; p->data.d_if.condition = btree_map(ast->left, &node_copy); p->data.d_if.content = btree_map(ast->right, &node_copy); p->type = PROCESS_IF; diff --git a/42sh/src/exec/set_process_map.c b/42sh/src/exec/set_process_map.c index 3e32cc57..cc9fb49a 100644 --- a/42sh/src/exec/set_process_map.c +++ b/42sh/src/exec/set_process_map.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:08:12 by wescande #+# #+# */ -/* Updated: 2017/03/08 14:48:02 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:58:36 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,7 @@ t_itof g_setprocessmap[] = {0, NULL} }; -int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_map(t_process *p, t_btree *ast) { int i; t_astnode *item; @@ -49,7 +49,7 @@ int set_process_map(t_process *p, t_btree *ast, t_cmd *cmd) { if (!g_setprocessmap[i].f) return (1); - return ((*g_setprocessmap[i].f)(p, ast, cmd)); + return ((*g_setprocessmap[i].f)(p, ast)); } return (1); } diff --git a/42sh/src/exec/set_process_subshell.c b/42sh/src/exec/set_process_subshell.c index e44baf60..b7cdb55f 100644 --- a/42sh/src/exec/set_process_subshell.c +++ b/42sh/src/exec/set_process_subshell.c @@ -6,15 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:02:01 by wescande #+# #+# */ -/* Updated: 2017/03/08 11:51:04 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:59:55 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_subshell(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_subshell(t_process *p, t_btree *ast) { - (void)cmd; p->data.subshell.content = btree_map(ast->right, &node_copy); p->type = PROCESS_SUBSHELL; return (0); diff --git a/42sh/src/exec/set_process_until.c b/42sh/src/exec/set_process_until.c index 20529720..c28b4172 100644 --- a/42sh/src/exec/set_process_until.c +++ b/42sh/src/exec/set_process_until.c @@ -6,15 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 22:22:24 by wescande #+# #+# */ -/* Updated: 2017/03/08 03:06:03 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:59:36 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_until(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_until(t_process *p, t_btree *ast) { - (void)cmd; p->data.d_while.condition = btree_map(ast->left, &node_copy); p->data.d_while.content = btree_map(ast->right, &node_copy); p->type = PROCESS_UNTIL; diff --git a/42sh/src/exec/set_process_while.c b/42sh/src/exec/set_process_while.c index acde7eb6..56807c2e 100644 --- a/42sh/src/exec/set_process_while.c +++ b/42sh/src/exec/set_process_while.c @@ -6,15 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 19:38:10 by wescande #+# #+# */ -/* Updated: 2017/03/08 01:51:38 by ariard ### ########.fr */ +/* Updated: 2017/03/08 14:58:54 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int set_process_while(t_process *p, t_btree *ast, t_cmd *cmd) +int set_process_while(t_process *p, t_btree *ast) { - (void)cmd; p->data.d_while.condition = btree_map(ast->left, &node_copy); p->data.d_while.content = btree_map(ast->right, &node_copy); p->type = PROCESS_WHILE; diff --git a/42sh/src/job-control/job_remove.c b/42sh/src/job-control/job_remove.c index dffc51c3..5dcade64 100644 --- a/42sh/src/job-control/job_remove.c +++ b/42sh/src/job-control/job_remove.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */ -/* Updated: 2017/03/08 02:03:58 by ariard ### ########.fr */ +/* Updated: 2017/03/08 15:06:12 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,6 @@ void job_remove(int id) j = ft_lst_find(jobc->first_job, &id, job_cmp_id)->content; if (job_is_completed(id)) { - DG(); p = ft_lstlast(j->first_process)->content; set_exitstatus(p->status, 0); if (id < data_singleton()->jobc.current_id) diff --git a/42sh/src/job-control/process_free_cmd.c b/42sh/src/job-control/process_free_cmd.c index 96efd6e1..ab2e446c 100644 --- a/42sh/src/job-control/process_free_cmd.c +++ b/42sh/src/job-control/process_free_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 00:58:02 by wescande #+# #+# */ -/* Updated: 2017/03/08 02:31:01 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:04:45 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,5 +16,7 @@ int process_free_cmd(t_process *p) { ft_strdel(&p->data.cmd.path); ft_sstrfree(p->data.cmd.av); + p->data.cmd.execf = NULL; + ft_memdel((void**)&p->data.cmd.stat); return (0); } diff --git a/42sh/src/job-control/process_free_subshell.c b/42sh/src/job-control/process_free_subshell.c index 7fb49c4b..12723743 100644 --- a/42sh/src/job-control/process_free_subshell.c +++ b/42sh/src/job-control/process_free_subshell.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 02:38:12 by wescande #+# #+# */ -/* Updated: 2017/03/08 02:38:27 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:16:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,6 @@ int process_free_subshell(t_process *p) { - btree_del(&p->data.d_while.content, &ast_free); + btree_del(&p->data.subshell.content, &ast_free); return (0); } diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 3ff70ce0..9532bb25 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/08 00:35:38 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:05:31 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,24 +26,16 @@ int put_job_in_foreground(t_job *j, int cont) if (kill(-j->pgid, SIGCONT) < 0) DG("kill(SIGCONT) failed"); } - DG(); job_wait(j->id); - DG(); job_remove(j->id); - DG(); - tcsetpgrp(STDIN, jobc->shell_pgid); - tcgetattr(STDIN, &j->tmodes); tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); } else { - DG(); job_wait(j->id); - DG(); job_remove(j->id); - DG(); } return (0); } From 794a3f9936f3428fba77d238b8561465f73964cf Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 15:53:10 +0100 Subject: [PATCH 198/206] heredoc changes to lexer done --- 42sh/Makefile | 2 +- 42sh/includes/lexer.h | 8 +++-- 42sh/includes/types.h | 3 +- 42sh/src/exec/set_process.c | 2 +- 42sh/src/lexer/lexer_dless.c | 41 -------------------------- 42sh/src/lexer/lexer_end.c | 19 ++++-------- 42sh/src/lexer/lexer_heredoc.c | 53 ++++++++++++++++++++++++++++++++++ 42sh/src/lexer/lexer_less.c | 5 +--- 42sh/src/lexer/lexer_lex.c | 4 +-- 42sh/src/main/main.c | 8 ++--- 10 files changed, 75 insertions(+), 70 deletions(-) delete mode 100644 42sh/src/lexer/lexer_dless.c create mode 100644 42sh/src/lexer/lexer_heredoc.c diff --git a/42sh/Makefile b/42sh/Makefile index 0cac1aa5..4196032e 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -206,11 +206,11 @@ lexer/lexer_bquote.c\ lexer/lexer_curly_braces.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ -lexer/lexer_dless.c\ lexer/lexer_dquote.c\ lexer/lexer_end.c\ lexer/lexer_great.c\ lexer/lexer_greatand.c\ +lexer/lexer_heredoc.c\ lexer/lexer_init.c\ lexer/lexer_less.c\ lexer/lexer_lessand.c\ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index d47b2e0f..21b7209a 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:28:10 by ariard ### ########.fr */ +/* Updated: 2017/03/08 15:52:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,7 @@ enum e_lexstate { DEFAULT, PAREN, + HEREDOC, NEWLINE, DELIM, SEP, @@ -34,7 +35,6 @@ enum e_lexstate GREAT, LESSAND, GREATAND, - DLESS, QUOTE, DQUOTE, BQUOTE, @@ -99,10 +99,13 @@ t_lexstate get_state_redir(t_lexer *lexer); int get_lexer_stack(t_lexer lexer); int get_reserved_words(t_list **alst); int insert_newline(t_list **alst); + void lexer_init(t_lexer *lexer); + int lexer_lex(t_list **alst, t_lexer *lexer); int lexer_default(t_list **alst, t_lexer *lexer); int lexer_newline(t_list **alst, t_lexer *lexer); +int lexer_heredoc(t_list **alst, t_lexer *lexer); int lexer_delim(t_list **alst, t_lexer *lexer); int lexer_sep(t_list **alst, t_lexer *lexer); int lexer_word(t_list **alst, t_lexer *lexer); @@ -111,7 +114,6 @@ int lexer_less(t_list **alst, t_lexer *lexer); int lexer_great(t_list **alst, t_lexer *lexer); int lexer_greatand(t_list **alst, t_lexer *lexer); int lexer_lessand(t_list **alst, t_lexer *lexer); -int lexer_dless(t_list **alst, t_lexer *lexer); int lexer_quote(t_list **alst, t_lexer *lexer); int lexer_dquote(t_list **alst, t_lexer *lexer); int lexer_bquote(t_list **alst, t_lexer *lexer); diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 95e2be0c..791d6634 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/08 00:22:56 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:50:49 by jhalford ### ########.fr */ /* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -192,6 +192,7 @@ enum e_sym MATH_SUP, REDIR, CMD, + HEREDOCDATA, ALL = 200, TERMINUS = 300, }; diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index a19e1e1a..7dcf4a55 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:51:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 14:55:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_dless.c b/42sh/src/lexer/lexer_dless.c deleted file mode 100644 index 16fb05f3..00000000 --- a/42sh/src/lexer/lexer_dless.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "minishell.h" - -int lexer_dless(t_list **alst, t_lexer *lexer) -{ - t_list *heredoc_lst; - t_token *eof_tok; - t_token *heredoc_tok; - - (void)alst; - (void)lexer; - heredoc_lst = *(t_list**)lexer->heredoc_stack->content; - heredoc_tok = heredoc_lst->content; - if (!(heredoc_lst->next)) - { - ft_dprintf(2, "{red}%s: parse error near `\\n'{eoc}\n", SHELL_NAME); - return (1); - } - eof_tok = heredoc_lst->next->content; - if (!(eof_tok->type == TK_WORD)) - { - ft_dprintf(2, "{red}%s: expected word token after <<{eoc}\n", SHELL_NAME); - return (1); - } - /* DG("heredoc contains [%s]", heredoc_tok->data); */ - /* DG("heredoc ends at [%s]", eof_tok->data); */ - /* DG("input is [%s]", lexer->str + lexer->pos); */ - if (ft_strcmp(eof_tok->data, lexer->str + lexer->pos) == 0) - { - pop(&lexer->stack); - pop(&lexer->heredoc_stack); - while (lexer->str[++lexer->pos]) - ; - ft_strappend(&lexer->str, (char[]){'\n', 0}); - lexer->pos++; - return (0); - } - else - while (lexer->str[lexer->pos]) - token_append_char(heredoc_tok, lexer->str[lexer->pos++], 0, 0); - return (lexer_end(alst, lexer)); -} diff --git a/42sh/src/lexer/lexer_end.c b/42sh/src/lexer/lexer_end.c index 5e0b6710..52a2bd3d 100644 --- a/42sh/src/lexer/lexer_end.c +++ b/42sh/src/lexer/lexer_end.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 16:58:24 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:12:40 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:52:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,21 +16,14 @@ int lexer_end(t_list **alst, t_lexer *lexer) { t_token *token; - if ((*alst && (lexer->state == QUOTE || lexer->state == DQUOTE - || lexer->state == BQUOTE)) || get_lexer_stack(*lexer) == DLESS) + if (*alst && (lexer->state == QUOTE + || lexer->state == DQUOTE + || lexer->state == BQUOTE)) { + token = (*alst)->content; ft_strappend(&lexer->str, (char[]){'\n', 0}); + token_append_char(token, '\n', 1, 0); lexer->pos++; - if (get_lexer_stack(*lexer) == DLESS) - { - token = (*(t_list**)lexer->heredoc_stack->content)->content; - token_append_char(token, '\n', 0, 0); - } - else - { - token = (*alst)->content; - token_append_char(token, '\n', 1, 0); - } return (0); } return (0); diff --git a/42sh/src/lexer/lexer_heredoc.c b/42sh/src/lexer/lexer_heredoc.c new file mode 100644 index 00000000..d5fa357a --- /dev/null +++ b/42sh/src/lexer/lexer_heredoc.c @@ -0,0 +1,53 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_heredoc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 15:51:17 by jhalford #+# #+# */ +/* Updated: 2017/03/08 15:52:48 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int lexer_heredoc(t_list **alst, t_lexer *lexer) +{ + t_token *token; + + token = (*alst)->content; + token->type = HEREDOCDATA; + token_append_str(token, lexer->str, 0, 0); + return (0); + /* heredoc_lst = *(t_list**)lexer->heredoc_stack->content; */ + /* heredoc_tok = heredoc_lst->content; */ + /* if (!(heredoc_lst->next)) */ + /* { */ + /* ft_dprintf(2, "{red}%s: parse error near `\\n'{eoc}\n", SHELL_NAME); */ + /* return (1); */ + /* } */ + /* eof_tok = heredoc_lst->next->content; */ + /* if (!(eof_tok->type == TK_WORD)) */ + /* { */ + /* ft_dprintf(2, "{red}%s: expected word token after <<{eoc}\n", SHELL_NAME); */ + /* return (1); */ + /* } */ + /* DG("heredoc contains [%s]", heredoc_tok->data); */ + /* DG("heredoc ends at [%s]", eof_tok->data); */ + /* DG("input is [%s]", lexer->str + lexer->pos); */ + /* if (ft_strcmp(eof_tok->data, lexer->str + lexer->pos) == 0) */ + /* { */ + /* /1* pop(&lexer->stack); *1/ */ + /* pop(&lexer->heredoc_stack); */ + /* while (lexer->str[++lexer->pos]) */ + /* ; */ + /* ft_strappend(&lexer->str, (char[]){'\n', 0}); */ + /* lexer->pos++; */ + /* return (0); */ + /* } */ + /* else */ + /* while (lexer->str[lexer->pos]) */ + /* token_append_char(heredoc_tok, lexer->str[lexer->pos++], 0, 0); */ + /* return (lexer_end(alst, lexer)); */ +} diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 8b9e0b0d..49354932 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/03/08 13:27:33 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:35:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,17 +21,14 @@ int lexer_less(t_list **alst, t_lexer *lexer) if (lexer->str[lexer->pos] == '&') { token->type = TK_LESSAND; - token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_lessand(alst, lexer)); } if (lexer->str[lexer->pos] == '<') { token->type = TK_DLESS; - push(&lexer->stack, DLESS); lexer->pos++; lexer->state = DEFAULT; - ft_lsteadd(&lexer->heredoc_stack, ft_lstnew(alst, sizeof(alst))); return (lexer_lex(&(*alst)->next, lexer)); } token->type = TK_LESS; diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 9ec90b49..7a32b1d7 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/06 14:55:25 by ariard ### ########.fr */ +/* Updated: 2017/03/08 15:51:39 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = { &lexer_default, &lexer_paren, + &lexer_heredoc, &lexer_newline, &lexer_delim, &lexer_sep, @@ -25,7 +26,6 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_great, &lexer_lessand, &lexer_greatand, - &lexer_dless, &lexer_quote, &lexer_dquote, &lexer_bquote, diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 7cf15069..fc5a8925 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:39:33 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:36:38 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,12 +39,12 @@ int handle_instruction(int fd) ft_strappend(&lexer.str, str); if (get_lexer_stack(lexer) == BACKSLASH) pop(&lexer.stack); - else if (get_lexer_stack(lexer) == DLESS) - lexer.state = DLESS; + /* else if (get_lexer_stack(lexer) == DLESS) */ + /* lexer.state = DLESS; */ ltoken = ft_lstlast(token); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); - if (get_lexer_stack(lexer) > 1) + if (get_lexer_stack(lexer) > 2) continue ; lexer.state = DEFAULT; if (get_reserved_words(&token)) From fa82326823cc3ff8371e6ece1df5454dd6b4813d Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 8 Mar 2017 16:06:04 +0100 Subject: [PATCH 199/206] before pull heredoc --- 42sh/file | 16 ++++++++++++++++ 42sh/includes/builtin.h | 2 +- 42sh/includes/lexer.h | 4 ++-- 42sh/includes/types.h | 2 +- 42sh/libft | 2 +- 42sh/src/main/main.c | 4 ++-- 6 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 42sh/file diff --git a/42sh/file b/42sh/file new file mode 100644 index 00000000..07e7726d --- /dev/null +++ b/42sh/file @@ -0,0 +1,16 @@ +total 80 +-rw-r--r-- 1 ariard 2016_paris 8813 Mar 8 03:05 Makefile +-rw-r--r-- 1 ariard 2016_paris 6781 Mar 8 02:33 STDBUG +drwxr-xr-x 7 ariard 2016_paris 238 Mar 4 14:53 TESTSHELL +-rw-r--r-- 1 ariard 2016_paris 4396 Mar 4 14:53 donovan_segaults_06-02 +-rw-r--r-- 1 ariard 2016_paris 0 Mar 8 16:02 file +drwxr-xr-x 16 ariard 2016_paris 544 Mar 8 15:52 includes +-rw-r--r-- 1 ariard 2016_paris 117 Mar 8 00:08 laurier.sh +drwxr-xr-x 10 ariard 2016_paris 340 Mar 8 03:04 libft +-rw-r--r-- 1 ariard 2016_paris 0 Mar 4 14:53 parser_init.c +drwxr-xr-x 6 ariard 2016_paris 204 Mar 4 14:53 pdf +drwxr-xr-x 29 ariard 2016_paris 986 Mar 4 14:53 sample +drwxr-xr-x 13 ariard 2016_paris 442 Mar 7 19:42 src +-rwxr-xr-x 1 ariard 2016_paris 890 Mar 4 14:53 test_framework.sh +-rwxr-xr-x 1 ariard 2016_paris 690 Mar 4 14:53 update_makefile.sh +/Users/ariard/Projects/42sh diff --git a/42sh/includes/builtin.h b/42sh/includes/builtin.h index be6045e4..4610a117 100644 --- a/42sh/includes/builtin.h +++ b/42sh/includes/builtin.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:21:56 by jhalford #+# #+# */ -/* Updated: 2017/03/07 17:29:38 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 15:49:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index d47b2e0f..21483e8a 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:28:10 by ariard ### ########.fr */ +/* Updated: 2017/03/08 15:49:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,7 @@ enum e_lexstate { DEFAULT, PAREN, + DLESS, NEWLINE, DELIM, SEP, @@ -34,7 +35,6 @@ enum e_lexstate GREAT, LESSAND, GREATAND, - DLESS, QUOTE, DQUOTE, BQUOTE, diff --git a/42sh/includes/types.h b/42sh/includes/types.h index 95e2be0c..dd5e9f82 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/08 00:22:56 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:52:51 by ariard ### ########.fr */ /* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/libft b/42sh/libft index 4a36b1a5..73c28532 160000 --- a/42sh/libft +++ b/42sh/libft @@ -1 +1 @@ -Subproject commit 4a36b1a5e650ada2f66034d13312367694a6481a +Subproject commit 73c28532404e437d670607c909fbe56d717e9683 diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 0527cf28..e8ac59eb 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:53:23 by ariard ### ########.fr */ +/* Updated: 2017/03/08 15:48:41 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,7 +44,7 @@ int handle_instruction(int fd) ltoken = ft_lstlast(token); if (lexer_lex(token ? <oken : &token, &lexer)) return (1); - if (get_lexer_stack(lexer) > 1) + if (get_lexer_stack(lexer) > 2) continue ; lexer.state = DEFAULT; if (get_reserved_words(&token)) From 2bcf45696731d0fe6aaa642fc3c2f9fb4e09764c Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 8 Mar 2017 16:06:15 +0100 Subject: [PATCH 200/206] before pull heredoc --- 42sh/file | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 42sh/file diff --git a/42sh/file b/42sh/file deleted file mode 100644 index 07e7726d..00000000 --- a/42sh/file +++ /dev/null @@ -1,16 +0,0 @@ -total 80 --rw-r--r-- 1 ariard 2016_paris 8813 Mar 8 03:05 Makefile --rw-r--r-- 1 ariard 2016_paris 6781 Mar 8 02:33 STDBUG -drwxr-xr-x 7 ariard 2016_paris 238 Mar 4 14:53 TESTSHELL --rw-r--r-- 1 ariard 2016_paris 4396 Mar 4 14:53 donovan_segaults_06-02 --rw-r--r-- 1 ariard 2016_paris 0 Mar 8 16:02 file -drwxr-xr-x 16 ariard 2016_paris 544 Mar 8 15:52 includes --rw-r--r-- 1 ariard 2016_paris 117 Mar 8 00:08 laurier.sh -drwxr-xr-x 10 ariard 2016_paris 340 Mar 8 03:04 libft --rw-r--r-- 1 ariard 2016_paris 0 Mar 4 14:53 parser_init.c -drwxr-xr-x 6 ariard 2016_paris 204 Mar 4 14:53 pdf -drwxr-xr-x 29 ariard 2016_paris 986 Mar 4 14:53 sample -drwxr-xr-x 13 ariard 2016_paris 442 Mar 7 19:42 src --rwxr-xr-x 1 ariard 2016_paris 890 Mar 4 14:53 test_framework.sh --rwxr-xr-x 1 ariard 2016_paris 690 Mar 4 14:53 update_makefile.sh -/Users/ariard/Projects/42sh From 86a733ffe5d4cf041382904de9eccd95f037071c Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 16:24:25 +0100 Subject: [PATCH 201/206] ajout affichage du job control --- 42sh/Makefile | 9 +++++ 42sh/includes/exec.h | 15 ++++++- 42sh/src/job-control/process_format.c | 15 ++----- 42sh/src/job-control/process_print.c | 40 +++++++++++++++++++ 42sh/src/job-control/process_print_case.c | 19 +++++++++ 42sh/src/job-control/process_print_cmd.c | 18 +++++++++ 42sh/src/job-control/process_print_for.c | 19 +++++++++ 42sh/src/job-control/process_print_function.c | 19 +++++++++ 42sh/src/job-control/process_print_if.c | 19 +++++++++ 42sh/src/job-control/process_print_subshell.c | 19 +++++++++ 42sh/src/job-control/process_print_until.c | 19 +++++++++ 42sh/src/job-control/process_print_while.c | 19 +++++++++ 42sh/src/job-control/put_job_in_foreground.c | 2 +- 13 files changed, 218 insertions(+), 14 deletions(-) create mode 100644 42sh/src/job-control/process_print.c create mode 100644 42sh/src/job-control/process_print_case.c create mode 100644 42sh/src/job-control/process_print_cmd.c create mode 100644 42sh/src/job-control/process_print_for.c create mode 100644 42sh/src/job-control/process_print_function.c create mode 100644 42sh/src/job-control/process_print_if.c create mode 100644 42sh/src/job-control/process_print_subshell.c create mode 100644 42sh/src/job-control/process_print_until.c create mode 100644 42sh/src/job-control/process_print_while.c diff --git a/42sh/Makefile b/42sh/Makefile index 0cac1aa5..48d5d54f 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -188,6 +188,15 @@ job-control/process_free_cmd.c\ job-control/process_free_cond.c\ job-control/process_free_list.c\ job-control/process_free_subshell.c\ +job-control/process_print.c\ +job-control/process_print_case.c\ +job-control/process_print_cmd.c\ +job-control/process_print_for.c\ +job-control/process_print_function.c\ +job-control/process_print_if.c\ +job-control/process_print_subshell.c\ +job-control/process_print_until.c\ +job-control/process_print_while.c\ job-control/put_job_in_background.c\ job-control/put_job_in_foreground.c\ job-control/sigchld_handler.c\ diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index baf2e7d6..fa76f002 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:58:19 by wescande ### ########.fr */ +/* Updated: 2017/03/08 16:19:22 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -218,4 +218,17 @@ int exec_var(t_btree **ast); int exec_case_branch(t_btree **ast); int exec_math(t_btree **ast); +/* +** Mapping pour afficher les process +*/ +void process_print(t_process *p); +int process_print_subshell(void); +int process_print_while(void); +int process_print_if(void); +int process_print_case(void); +int process_print_until(void); +int process_print_function(void); +int process_print_for(void); +void process_print_cmd(t_process *p); + #endif diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index 96052289..27173f3d 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */ -/* Updated: 2017/03/07 21:24:17 by wescande ### ########.fr */ +/* Updated: 2017/03/08 16:21:18 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,7 +51,7 @@ static void process_format_com_long(t_list **plist) ft_putstr(" )"); } else*/ - ft_sstrprint(p->data.cmd.av, ' '); + process_print(p); if ((*plist)->next) ft_putstr(" |"); (*plist) = (*plist)->next; @@ -72,16 +72,7 @@ static void process_format_com_short(t_list **plist, t_flag state) p->attrs &= ~PROCESS_STATE_MASK; p->attrs &= ~PROCESS_RUNNING; } -/* if (p->attrs & PROCESS_CONTROL) - ft_putstr("script"); - else if (p->attrs & PROCESS_SUBSHELL) - { - ft_putstr("( "); - ft_putstr(p->data.cmd.av[2]); - ft_putstr(" )"); - } - else*/ - ft_sstrprint(p->data.cmd.av, ' '); + process_print(p); if ((*plist)->next) ft_putstr(" | "); (*plist) = (*plist)->next; diff --git a/42sh/src/job-control/process_print.c b/42sh/src/job-control/process_print.c new file mode 100644 index 00000000..4e0efb16 --- /dev/null +++ b/42sh/src/job-control/process_print.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:03:32 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:20:19 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +t_itof g_printmap[] = +{ + {PROCESS_FUNCTION, process_print_function}, + {PROCESS_BUILTIN, NULL}, + {PROCESS_FILE, NULL}, + {PROCESS_SUBSHELL, process_print_subshell}, + {PROCESS_WHILE, process_print_while}, + {PROCESS_UNTIL, process_print_until}, + {PROCESS_IF, process_print_if}, + {PROCESS_FOR, process_print_for}, + {PROCESS_CASE, process_print_case}, + {0, NULL} +}; + +void process_print(t_process *p) +{ + if (p->type == PROCESS_BUILTIN || p->type == PROCESS_FUNCTION) + { + process_print_cmd(p); + return ; + } + if (p->type >= PROCESS_MAX) + return ; + if (g_printmap[p->type].f) + (g_printmap[p->type].f)(); +} diff --git a/42sh/src/job-control/process_print_case.c b/42sh/src/job-control/process_print_case.c new file mode 100644 index 00000000..a8c63c13 --- /dev/null +++ b/42sh/src/job-control/process_print_case.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_case.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:15:22 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:15:38 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_case(void) +{ + ft_putstr("CASE GROUP"); + return (0); +} diff --git a/42sh/src/job-control/process_print_cmd.c b/42sh/src/job-control/process_print_cmd.c new file mode 100644 index 00000000..617dea18 --- /dev/null +++ b/42sh/src/job-control/process_print_cmd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_cmd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:17:16 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:20:11 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void process_print_cmd(t_process *p) +{ + ft_sstrprint(p->data.cmd.av, ' '); +} diff --git a/42sh/src/job-control/process_print_for.c b/42sh/src/job-control/process_print_for.c new file mode 100644 index 00000000..e671c5d3 --- /dev/null +++ b/42sh/src/job-control/process_print_for.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_for.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:14:21 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:14:32 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_for(void) +{ + ft_putstr("FOR GROUP"); + return (0); +} diff --git a/42sh/src/job-control/process_print_function.c b/42sh/src/job-control/process_print_function.c new file mode 100644 index 00000000..d9dbde4d --- /dev/null +++ b/42sh/src/job-control/process_print_function.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_function.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:12:18 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:12:44 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_function(void) +{ + ft_putstr("FUNCTION GROUP"); + return (0); +} diff --git a/42sh/src/job-control/process_print_if.c b/42sh/src/job-control/process_print_if.c new file mode 100644 index 00000000..4dc43cd2 --- /dev/null +++ b/42sh/src/job-control/process_print_if.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:14:48 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:14:55 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_if(void) +{ + ft_putstr("IF GROUP"); + return (0); +} diff --git a/42sh/src/job-control/process_print_subshell.c b/42sh/src/job-control/process_print_subshell.c new file mode 100644 index 00000000..ad88b517 --- /dev/null +++ b/42sh/src/job-control/process_print_subshell.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_subshell.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:06:06 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:11:58 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_subshell(void) +{ + ft_putstr("( SUBSHELL GROUP )"); + return (0); +} diff --git a/42sh/src/job-control/process_print_until.c b/42sh/src/job-control/process_print_until.c new file mode 100644 index 00000000..6460da08 --- /dev/null +++ b/42sh/src/job-control/process_print_until.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_until.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:16:00 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:16:17 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_until(void) +{ + ft_putstr("UNTIL GROUP"); + return (0); +} diff --git a/42sh/src/job-control/process_print_while.c b/42sh/src/job-control/process_print_while.c new file mode 100644 index 00000000..5c8d67d8 --- /dev/null +++ b/42sh/src/job-control/process_print_while.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process_print_while.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:15:01 by wescande #+# #+# */ +/* Updated: 2017/03/08 16:15:15 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int process_print_while(void) +{ + ft_putstr("WHILE GROUP"); + return (0); +} diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 9532bb25..02aee361 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:05:31 by wescande ### ########.fr */ +/* Updated: 2017/03/08 15:34:45 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ From 0d162c50f5b6210cdb264c7213768dafd266d787 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 17:46:38 +0100 Subject: [PATCH 202/206] started rapiring jobc and heredoc lexer now OK' --- 42sh/includes/exec.h | 4 ++-- 42sh/includes/job_control.h | 2 +- 42sh/includes/lexer.h | 2 +- 42sh/src/exec/exec_ampersand.c | 13 +++---------- 42sh/src/exec/exec_leaf.c | 2 +- 42sh/src/exec/exec_semi.c | 3 +-- 42sh/src/exec/launch_file.c | 6 ++---- 42sh/src/exec/mark_process_status.c | 5 +++-- 42sh/src/exec/set_process.c | 6 ++---- 42sh/src/exec/set_process_cmd.c | 6 +++--- 42sh/src/job-control/do_job_notification.c | 2 +- 42sh/src/job-control/job_addprocess.c | 8 +++----- 42sh/src/job-control/job_notify_change.c | 2 +- 42sh/src/job-control/job_notify_new.c | 2 +- 42sh/src/job-control/job_remove.c | 2 +- 42sh/src/job-control/job_update_status.c | 2 +- 42sh/src/job-control/job_wait.c | 2 +- 42sh/src/job-control/put_job_in_foreground.c | 2 +- 42sh/src/job-control/sigchld_handler.c | 5 +---- 42sh/src/lexer/lexer_heredoc.c | 6 ++++-- 42sh/src/lexer/lexer_sep.c | 2 +- 42sh/src/lexer/token_append.c | 2 +- 42sh/src/line-editing/control_c_and_d.c | 2 +- 42sh/src/line-editing/ft_prompt.c | 2 +- 24 files changed, 38 insertions(+), 52 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index baf2e7d6..cdf63189 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:58:19 by wescande ### ########.fr */ +/* Updated: 2017/03/08 16:45:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ # define IS_PIPEEND(p) ((p).fdout == STDOUT) # define IS_PIPESINGLE(p) (IS_PIPESTART(p) && IS_PIPEEND(p)) -# define EXEC_BG (1 << 1) +/* # define EXEC_BG (1 << 1) */ # define EXEC_AND_IF (1 << 2) # define EXEC_OR_IF (1 << 3) # define EXEC_IF_BRANCH (1 << 4) diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index 62c32983..b92c31cc 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/03/05 16:28:37 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 16:45:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 21b7209a..f4cb38a0 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:52:11 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 16:44:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_ampersand.c b/42sh/src/exec/exec_ampersand.c index a95c357c..d9b65bbf 100644 --- a/42sh/src/exec/exec_ampersand.c +++ b/42sh/src/exec/exec_ampersand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:01:30 by jhalford #+# #+# */ -/* Updated: 2017/03/07 18:24:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 16:46:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,15 +21,8 @@ int exec_ampersand(t_btree **ast) exec = &data_singleton()->exec; push(&exec->op_stack, TK_AMP); ft_exec(&(*ast)->left); - exec->attrs &= ~EXEC_BG; + exec->attrs &= ~EXEC_AOL_MASK; + exec->job.attrs &= ~JOB_BG; ft_exec(&(*ast)->right); - /* if (SH_HAS_JOBC(data_singleton()->opts)) */ - /* data_singleton()->exec.job.attributes |= JOB_BG; */ - /* ft_exec(&(*ast)->left); */ - /* if (SH_HAS_JOBC(data_singleton()->opts)) */ - /* data_singleton()->exec.job.attributes &= ~JOB_BG; */ - /* ft_exec(&(*ast)->right); */ - -// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index 95f1d38b..b4a770c2 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/08 14:47:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:40:14 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/exec_semi.c b/42sh/src/exec/exec_semi.c index 4a0d2699..7f8b91ce 100644 --- a/42sh/src/exec/exec_semi.c +++ b/42sh/src/exec/exec_semi.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 20:52:05 by jhalford #+# #+# */ -/* Updated: 2017/03/06 18:09:54 by ariard ### ########.fr */ +/* Updated: 2017/03/08 16:41:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,5 @@ int exec_semi(t_btree **ast) ft_exec(&(*ast)->left); exec->attrs &= ~EXEC_AOL_MASK; ft_exec(&(*ast)->right); -// btree_delone(ast, &ast_free); return (0); } diff --git a/42sh/src/exec/launch_file.c b/42sh/src/exec/launch_file.c index 180d0f58..249c49d1 100644 --- a/42sh/src/exec/launch_file.c +++ b/42sh/src/exec/launch_file.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 14:53:31 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:46:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:35:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ int launch_file(t_process *p) { int pid; - DG("in file"); + /* DG("in file"); */ pid = fork(); if (pid == 0) { @@ -40,13 +40,11 @@ int launch_file(t_process *p) ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(126); } - // for all leaves process_setgroup(p, 0); process_setsig(); if (process_redirect(p)) exit (1); exec_reset(); - // (*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env); ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->data.cmd.av[0]); exit(42); diff --git a/42sh/src/exec/mark_process_status.c b/42sh/src/exec/mark_process_status.c index ecc3c9ea..aa9597b3 100644 --- a/42sh/src/exec/mark_process_status.c +++ b/42sh/src/exec/mark_process_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:28:55 by wescande ### ########.fr */ +/* Updated: 2017/03/08 17:44:22 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,7 +39,8 @@ int mark_process_status(pid_t pid, int status) } return (0); } - ft_dprintf(2, "No child process %d.\n", pid); + ft_dprintf(2, "{red}No child process %d.\n", pid); + return (0); } return (-1); } diff --git a/42sh/src/exec/set_process.c b/42sh/src/exec/set_process.c index b8135905..cf7f2fbf 100644 --- a/42sh/src/exec/set_process.c +++ b/42sh/src/exec/set_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:55:27 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 16:46:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,8 +19,6 @@ int set_process(t_process *p, t_btree *ast) int op; int fds[2]; -// cmd = &((t_astnode *)ast->item)->data.cmd; - /* process_reset(p); */ exec = &data_singleton()->exec; op = pop(&exec->op_stack); if ((EXEC_IS_AND_IF(exec->attrs) @@ -31,7 +29,7 @@ int set_process(t_process *p, t_btree *ast) fds[PIPE_WRITE] = STDOUT; fds[PIPE_READ] = STDIN; if (op == TK_AMP) - exec->attrs |= JOB_BG; + exec->job.attrs |= JOB_BG; else if (op == TK_PIPE) pipe(fds); p->fdin = exec->fdin; diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index 9367917a..d923aa72 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/08 15:55:25 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:13:30 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ int set_process_cmd(t_process *p, t_btree *ast) p->data.cmd.path = NULL; p->data.cmd.execf = NULL; p->data.cmd.stat = ft_memalloc(sizeof(struct stat)); - DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); + /* DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); */ p->type = PROCESS_FILE; if ((func = is_function(p))) { @@ -40,7 +40,7 @@ int set_process_cmd(t_process *p, t_btree *ast) else if (ft_hash(p)) { p->data.cmd.execf = &execve; - DG("found hash at [%s]", p->data.cmd.path); + /* DG("found hash at [%s]", p->data.cmd.path); */ if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) { ft_memdel((void**)&p->data.cmd.stat); diff --git a/42sh/src/job-control/do_job_notification.c b/42sh/src/job-control/do_job_notification.c index 48829692..5977c224 100644 --- a/42sh/src/job-control/do_job_notification.c +++ b/42sh/src/job-control/do_job_notification.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 13:01:19 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:46:51 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:36:00 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_addprocess.c b/42sh/src/job-control/job_addprocess.c index 42c5229e..393aad41 100644 --- a/42sh/src/job-control/job_addprocess.c +++ b/42sh/src/job-control/job_addprocess.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:12:31 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:40:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,7 @@ int job_addprocess(t_process *p) jobc = &data_singleton()->jobc; job = &data_singleton()->exec.job; + DG("adding pid=[%i] to job"); if (IS_PIPESTART(*p)) { job_update_id(); @@ -27,10 +28,7 @@ int job_addprocess(t_process *p) ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job))); } job = jobc->first_job->content; - if (p->pid > 0) - { - ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p))); - } + ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p))); if (JOB_IS_BG(job->attrs) && IS_PIPEEND(*p)) job_notify_new(job); return (0); diff --git a/42sh/src/job-control/job_notify_change.c b/42sh/src/job-control/job_notify_change.c index 3ec46e79..9535b95a 100644 --- a/42sh/src/job-control/job_notify_change.c +++ b/42sh/src/job-control/job_notify_change.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 15:04:03 by jhalford #+# #+# */ -/* Updated: 2017/01/31 14:46:48 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:18:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_notify_new.c b/42sh/src/job-control/job_notify_new.c index d19feb96..3a4a19a8 100644 --- a/42sh/src/job-control/job_notify_new.c +++ b/42sh/src/job-control/job_notify_new.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:27:01 by jhalford #+# #+# */ -/* Updated: 2016/12/15 17:15:54 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:22:16 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_remove.c b/42sh/src/job-control/job_remove.c index 5dcade64..64e3f7ee 100644 --- a/42sh/src/job-control/job_remove.c +++ b/42sh/src/job-control/job_remove.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:06:12 by wescande ### ########.fr */ +/* Updated: 2017/03/08 17:41:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_update_status.c b/42sh/src/job-control/job_update_status.c index cae2b934..3549ee93 100644 --- a/42sh/src/job-control/job_update_status.c +++ b/42sh/src/job-control/job_update_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */ -/* Updated: 2017/03/03 18:56:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:41:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_wait.c b/42sh/src/job-control/job_wait.c index 966b5f3c..e0cd6195 100644 --- a/42sh/src/job-control/job_wait.c +++ b/42sh/src/job-control/job_wait.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */ -/* Updated: 2017/03/03 19:42:12 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:24:07 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index 9532bb25..fe5126ac 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:05:31 by wescande ### ########.fr */ +/* Updated: 2017/03/08 17:40:28 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/sigchld_handler.c b/42sh/src/job-control/sigchld_handler.c index 4fe9724a..22d4c8a6 100644 --- a/42sh/src/job-control/sigchld_handler.c +++ b/42sh/src/job-control/sigchld_handler.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 17:37:56 by jhalford #+# #+# */ -/* Updated: 2017/03/05 15:30:35 by wescande ### ########.fr */ +/* Updated: 2017/03/08 17:21:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,5 @@ void sigchld_handler(int signo) { -// t_data *data; - (void)signo; -// data = data_singleton(); } diff --git a/42sh/src/lexer/lexer_heredoc.c b/42sh/src/lexer/lexer_heredoc.c index e655aee2..ba7fcecb 100644 --- a/42sh/src/lexer/lexer_heredoc.c +++ b/42sh/src/lexer/lexer_heredoc.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 15:51:17 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:53:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:46:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,9 @@ int lexer_heredoc(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = HEREDOCDATA; - token_append_str(token, lexer->str, 0, 0); + while (lexer->str[lexer->pos]) + if (token_append_char(token, lexer->str[lexer->pos++], esc, esc2)) + return (1); return (0); /* heredoc_lst = *(t_list**)lexer->heredoc_stack->content; */ /* heredoc_tok = heredoc_lst->content; */ diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index b44b41c5..980aad75 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:20:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:11:35 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 45a45b97..72a5617b 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/03/03 15:12:41 by wescande ### ########.fr */ +/* Updated: 2017/03/08 17:45:08 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/control_c_and_d.c b/42sh/src/line-editing/control_c_and_d.c index b80a982c..c4a24893 100644 --- a/42sh/src/line-editing/control_c_and_d.c +++ b/42sh/src/line-editing/control_c_and_d.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:17:28 by gwojda #+# #+# */ -/* Updated: 2017/03/08 12:56:46 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:37:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/ft_prompt.c b/42sh/src/line-editing/ft_prompt.c index a9a87efa..83817667 100644 --- a/42sh/src/line-editing/ft_prompt.c +++ b/42sh/src/line-editing/ft_prompt.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:51:33 by gwojda #+# #+# */ -/* Updated: 2017/02/16 14:27:57 by gwojda ### ########.fr */ +/* Updated: 2017/03/08 17:21:36 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 0c938e89631b766b012b496580eb1cdd47645676 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 17:53:02 +0100 Subject: [PATCH 203/206] compiles now --- 42sh/src/job-control/do_job_notification.c | 2 +- 42sh/src/lexer/lexer_heredoc.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/42sh/src/job-control/do_job_notification.c b/42sh/src/job-control/do_job_notification.c index 5977c224..b7750b42 100644 --- a/42sh/src/job-control/do_job_notification.c +++ b/42sh/src/job-control/do_job_notification.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 13:01:19 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:36:00 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:52:29 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_heredoc.c b/42sh/src/lexer/lexer_heredoc.c index ba7fcecb..c75b95fc 100644 --- a/42sh/src/lexer/lexer_heredoc.c +++ b/42sh/src/lexer/lexer_heredoc.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 15:51:17 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:46:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:52:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int lexer_heredoc(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = HEREDOCDATA; while (lexer->str[lexer->pos]) - if (token_append_char(token, lexer->str[lexer->pos++], esc, esc2)) + if (token_append_char(token, lexer->str[lexer->pos++], 0, 0)) return (1); return (0); /* heredoc_lst = *(t_list**)lexer->heredoc_stack->content; */ From c2952d577cfcb94881a87664137ba24c633af29a Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Wed, 8 Mar 2017 20:58:34 +0100 Subject: [PATCH 204/206] hanged jobs printing and some other stuff --- 42sh/includes/exec.h | 15 +---------- 42sh/includes/job_control.h | 14 +++++++++- 42sh/src/exec/exec_leaf.c | 5 ++-- 42sh/src/exec/launch_process.c | 4 +-- 42sh/src/exec/mark_process_status.c | 5 ++-- 42sh/src/exec/process_setgroup.c | 2 +- 42sh/src/exec/set_process_cmd.c | 4 +-- 42sh/src/job-control/builtin_jobs.c | 2 +- 42sh/src/job-control/do_job_notification.c | 2 +- 42sh/src/job-control/job_addprocess.c | 4 +-- 42sh/src/job-control/job_is_stopped.c | 2 +- 42sh/src/job-control/job_notify_new.c | 2 +- 42sh/src/job-control/job_remove.c | 2 +- 42sh/src/job-control/job_update_status.c | 9 ++++--- 42sh/src/job-control/job_wait.c | 8 ++++-- 42sh/src/job-control/process_format.c | 11 +------- 42sh/src/job-control/process_free.c | 3 +-- 42sh/src/job-control/process_print.c | 14 +++------- 42sh/src/job-control/process_print_case.c | 5 ++-- 42sh/src/job-control/process_print_cmd.c | 5 ++-- 42sh/src/job-control/process_print_for.c | 5 ++-- 42sh/src/job-control/process_print_function.c | 5 ++-- 42sh/src/job-control/process_print_if.c | 5 ++-- 42sh/src/job-control/process_print_subshell.c | 7 ++--- 42sh/src/job-control/process_print_until.c | 5 ++-- 42sh/src/job-control/process_print_while.c | 5 ++-- 42sh/src/job-control/put_job_in_background.c | 2 +- 42sh/src/job-control/put_job_in_foreground.c | 27 ++++++++----------- 42sh/src/lexer/lexer_heredoc.c | 2 +- 42sh/src/line-editing/ft_prompt.c | 2 +- 42sh/src/main/data_init.c | 2 +- 42sh/src/main/shell_init.c | 2 +- 32 files changed, 90 insertions(+), 97 deletions(-) diff --git a/42sh/includes/exec.h b/42sh/includes/exec.h index 0ef7bb7c..850f95d6 100644 --- a/42sh/includes/exec.h +++ b/42sh/includes/exec.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:46:53 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 19:15:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -218,17 +218,4 @@ int exec_var(t_btree **ast); int exec_case_branch(t_btree **ast); int exec_math(t_btree **ast); -/* -** Mapping pour afficher les process -*/ -void process_print(t_process *p); -int process_print_subshell(void); -int process_print_while(void); -int process_print_if(void); -int process_print_case(void); -int process_print_until(void); -int process_print_function(void); -int process_print_for(void); -void process_print_cmd(t_process *p); - #endif diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index b92c31cc..0598611e 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */ -/* Updated: 2017/03/08 16:45:21 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:06:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -84,5 +84,17 @@ void sigttou_handler(int signo); int process_cmp_pid(t_process *p, pid_t *pid); void process_format(t_list **p, int firstp, int opts); +/* +** Mapping pour afficher les process +*/ +void process_print(t_process *p); +int process_print_subshell(t_process *p); +int process_print_while(t_process *p); +int process_print_if(t_process *p); +int process_print_case(t_process *p); +int process_print_until(t_process *p); +int process_print_function(t_process *p); +int process_print_for(t_process *p); +int process_print_cmd(t_process *p); #endif diff --git a/42sh/src/exec/exec_leaf.c b/42sh/src/exec/exec_leaf.c index b4a770c2..3a242088 100644 --- a/42sh/src/exec/exec_leaf.c +++ b/42sh/src/exec/exec_leaf.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ -/* Updated: 2017/03/08 17:40:14 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:31:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ int exec_leaf(t_btree **ast) return (1); if (!(launch_process(&p))) { + DG("forked pid=[%i], name=[%s]", p.pid, p.data.cmd.av[0]); job_addprocess(&p); if (IS_PIPEEND(p)) { @@ -29,8 +30,8 @@ int exec_leaf(t_btree **ast) put_job_in_foreground(job, 0); else put_job_in_background(job, 0); + job->pgid = 0; } - job->pgid = 0; } if (p.fdout != STDOUT) close(p.fdout); diff --git a/42sh/src/exec/launch_process.c b/42sh/src/exec/launch_process.c index dbe58ef0..2013bfa2 100644 --- a/42sh/src/exec/launch_process.c +++ b/42sh/src/exec/launch_process.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:45:54 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:46:03 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,13 +23,13 @@ t_itof g_launchmap[] = {PROCESS_IF, launch_if}, {PROCESS_FOR, launch_for}, {PROCESS_CASE, launch_case}, - {0, NULL} }; int launch_process(t_process *p) { int pid; + DG("launchprocess"); if (p->type >= PROCESS_MAX) return (-1); if (!g_launchmap[p->type].f) diff --git a/42sh/src/exec/mark_process_status.c b/42sh/src/exec/mark_process_status.c index aa9597b3..c2e7dd97 100644 --- a/42sh/src/exec/mark_process_status.c +++ b/42sh/src/exec/mark_process_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:44:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 18:49:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,13 +17,14 @@ int mark_process_status(pid_t pid, int status) t_list *plist; t_process *p; + DG("MPS pid=%i,s=%i", pid, status); if (pid > 1) { - DG("MPS pid=%i,s=%i", pid, status); if ((plist = job_getprocess(pid))) { p = plist->content; p->status = status; + DG("marking pid=[%i], name=[%s]", p->pid, p->data.cmd.av[0]); if (WIFSTOPPED(status)) { p->attrs &= ~PROCESS_STATE_MASK; diff --git a/42sh/src/exec/process_setgroup.c b/42sh/src/exec/process_setgroup.c index 60caf7e9..e255b3ed 100644 --- a/42sh/src/exec/process_setgroup.c +++ b/42sh/src/exec/process_setgroup.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:48:10 by jhalford #+# #+# */ -/* Updated: 2017/03/03 16:34:02 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:53:48 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/set_process_cmd.c b/42sh/src/exec/set_process_cmd.c index d923aa72..76b4b098 100644 --- a/42sh/src/exec/set_process_cmd.c +++ b/42sh/src/exec/set_process_cmd.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/07 15:06:05 by wescande #+# #+# */ -/* Updated: 2017/03/08 17:13:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 18:49:55 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,6 @@ int set_process_cmd(t_process *p, t_btree *ast) p->data.cmd.path = NULL; p->data.cmd.execf = NULL; p->data.cmd.stat = ft_memalloc(sizeof(struct stat)); - /* DG("gonna setexec av[0]=[%s]", p->data.cmd.av[0]); */ p->type = PROCESS_FILE; if ((func = is_function(p))) { @@ -40,7 +39,6 @@ int set_process_cmd(t_process *p, t_btree *ast) else if (ft_hash(p)) { p->data.cmd.execf = &execve; - /* DG("found hash at [%s]", p->data.cmd.path); */ if (stat(p->data.cmd.path, p->data.cmd.stat) == -1) { ft_memdel((void**)&p->data.cmd.stat); diff --git a/42sh/src/job-control/builtin_jobs.c b/42sh/src/job-control/builtin_jobs.c index 70395bf6..3031cde0 100644 --- a/42sh/src/job-control/builtin_jobs.c +++ b/42sh/src/job-control/builtin_jobs.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 17:43:01 by jhalford #+# #+# */ -/* Updated: 2017/01/31 15:05:34 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 18:52:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/do_job_notification.c b/42sh/src/job-control/do_job_notification.c index b7750b42..7d73c78a 100644 --- a/42sh/src/job-control/do_job_notification.c +++ b/42sh/src/job-control/do_job_notification.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 13:01:19 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:52:29 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:35:18 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_addprocess.c b/42sh/src/job-control/job_addprocess.c index 393aad41..af8e039d 100644 --- a/42sh/src/job-control/job_addprocess.c +++ b/42sh/src/job-control/job_addprocess.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:40:08 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:16:09 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int job_addprocess(t_process *p) jobc = &data_singleton()->jobc; job = &data_singleton()->exec.job; - DG("adding pid=[%i] to job"); + DG("adding pid=[%i] to job", p->pid); if (IS_PIPESTART(*p)) { job_update_id(); diff --git a/42sh/src/job-control/job_is_stopped.c b/42sh/src/job-control/job_is_stopped.c index 60eed462..16c2bee8 100644 --- a/42sh/src/job-control/job_is_stopped.c +++ b/42sh/src/job-control/job_is_stopped.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/06 12:31:00 by wescande ### ########.fr */ +/* Updated: 2017/03/08 20:53:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_notify_new.c b/42sh/src/job-control/job_notify_new.c index 3a4a19a8..79e35da1 100644 --- a/42sh/src/job-control/job_notify_new.c +++ b/42sh/src/job-control/job_notify_new.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:27:01 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:22:16 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 18:28:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_remove.c b/42sh/src/job-control/job_remove.c index 64e3f7ee..b1e88928 100644 --- a/42sh/src/job-control/job_remove.c +++ b/42sh/src/job-control/job_remove.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:41:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 18:18:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/job_update_status.c b/42sh/src/job-control/job_update_status.c index 3549ee93..1cae0944 100644 --- a/42sh/src/job-control/job_update_status.c +++ b/42sh/src/job-control/job_update_status.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:41:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:35:12 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,9 @@ void job_update_status(void) pid_t pid; do - pid = waitpid (WAIT_ANY, &status, WUNTRACED|WNOHANG); - while (!mark_process_status (pid, status)); + { + pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG); + DG("pid=[%d]", pid); + } + while (!mark_process_status(pid, status)); } diff --git a/42sh/src/job-control/job_wait.c b/42sh/src/job-control/job_wait.c index e0cd6195..8b991d00 100644 --- a/42sh/src/job-control/job_wait.c +++ b/42sh/src/job-control/job_wait.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:24:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:46:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,11 +15,15 @@ int job_wait(int id) { pid_t pid; + t_job *j; + t_jobc *jobc; int status; DG("job wait [%i]", id); + jobc = &data_singleton()->jobc; + j = ft_lst_find(jobc->first_job, &id, job_cmp_id)->content; do - pid = waitpid(WAIT_ANY, &status, WUNTRACED); + pid = waitpid(-j->pgid, &status, WUNTRACED); while (!mark_process_status(pid, status) && !job_is_stopped(id) && !job_is_completed(id)); diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index 27173f3d..c8a36422 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */ -/* Updated: 2017/03/08 16:21:18 by wescande ### ########.fr */ +/* Updated: 2017/03/08 20:08:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,15 +42,6 @@ static void process_format_com_long(t_list **plist) t_process *p; p = (*plist)->content; -/* if (p->attrs & PROCESS_CONTROL) - ft_putstr("script"); - else if (p->attrs & PROCESS_SUBSHELL) - { - ft_putstr("( "); -// ft_putstr(p->data.cmd.av[2]); - ft_putstr(" )"); - } - else*/ process_print(p); if ((*plist)->next) ft_putstr(" |"); diff --git a/42sh/src/job-control/process_free.c b/42sh/src/job-control/process_free.c index be1d1d6c..40a156b4 100644 --- a/42sh/src/job-control/process_free.c +++ b/42sh/src/job-control/process_free.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:40:22 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:13:57 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,6 @@ t_itof g_freemap[] = {PROCESS_IF, process_free_cond}, {PROCESS_FOR, process_free_list}, {PROCESS_CASE, process_free_list}, - {0, NULL} }; void process_free(void *content, size_t content_size) diff --git a/42sh/src/job-control/process_print.c b/42sh/src/job-control/process_print.c index 4e0efb16..af0313dc 100644 --- a/42sh/src/job-control/process_print.c +++ b/42sh/src/job-control/process_print.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:03:32 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:20:19 by wescande ### ########.fr */ +/* Updated: 2017/03/08 20:44:26 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,26 +15,20 @@ t_itof g_printmap[] = { {PROCESS_FUNCTION, process_print_function}, - {PROCESS_BUILTIN, NULL}, - {PROCESS_FILE, NULL}, + {PROCESS_BUILTIN, process_print_cmd}, + {PROCESS_FILE, process_print_cmd}, {PROCESS_SUBSHELL, process_print_subshell}, {PROCESS_WHILE, process_print_while}, {PROCESS_UNTIL, process_print_until}, {PROCESS_IF, process_print_if}, {PROCESS_FOR, process_print_for}, {PROCESS_CASE, process_print_case}, - {0, NULL} }; void process_print(t_process *p) { - if (p->type == PROCESS_BUILTIN || p->type == PROCESS_FUNCTION) - { - process_print_cmd(p); - return ; - } if (p->type >= PROCESS_MAX) return ; if (g_printmap[p->type].f) - (g_printmap[p->type].f)(); + (*g_printmap[p->type].f)(p); } diff --git a/42sh/src/job-control/process_print_case.c b/42sh/src/job-control/process_print_case.c index a8c63c13..165045fb 100644 --- a/42sh/src/job-control/process_print_case.c +++ b/42sh/src/job-control/process_print_case.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:15:22 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:15:38 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:13:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_case(void) +int process_print_case(t_process *p) { + (void)p; ft_putstr("CASE GROUP"); return (0); } diff --git a/42sh/src/job-control/process_print_cmd.c b/42sh/src/job-control/process_print_cmd.c index 617dea18..8ae2307b 100644 --- a/42sh/src/job-control/process_print_cmd.c +++ b/42sh/src/job-control/process_print_cmd.c @@ -6,13 +6,14 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:17:16 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:20:11 by wescande ### ########.fr */ +/* Updated: 2017/03/08 20:28:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -void process_print_cmd(t_process *p) +int process_print_cmd(t_process *p) { ft_sstrprint(p->data.cmd.av, ' '); + return (0); } diff --git a/42sh/src/job-control/process_print_for.c b/42sh/src/job-control/process_print_for.c index e671c5d3..0d622e01 100644 --- a/42sh/src/job-control/process_print_for.c +++ b/42sh/src/job-control/process_print_for.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:14:21 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:14:32 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:13:16 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_for(void) +int process_print_for(t_process *p) { + (void)p; ft_putstr("FOR GROUP"); return (0); } diff --git a/42sh/src/job-control/process_print_function.c b/42sh/src/job-control/process_print_function.c index d9dbde4d..e0f0f91f 100644 --- a/42sh/src/job-control/process_print_function.c +++ b/42sh/src/job-control/process_print_function.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:12:18 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:12:44 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:13:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_function(void) +int process_print_function(t_process *p) { + (void)p; ft_putstr("FUNCTION GROUP"); return (0); } diff --git a/42sh/src/job-control/process_print_if.c b/42sh/src/job-control/process_print_if.c index 4dc43cd2..a64d3276 100644 --- a/42sh/src/job-control/process_print_if.c +++ b/42sh/src/job-control/process_print_if.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:14:48 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:14:55 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:14:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_if(void) +int process_print_if(t_process *p) { + (void)p; ft_putstr("IF GROUP"); return (0); } diff --git a/42sh/src/job-control/process_print_subshell.c b/42sh/src/job-control/process_print_subshell.c index ad88b517..647db0b5 100644 --- a/42sh/src/job-control/process_print_subshell.c +++ b/42sh/src/job-control/process_print_subshell.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:06:06 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:11:58 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:14:54 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_subshell(void) +int process_print_subshell(t_process *p) { - ft_putstr("( SUBSHELL GROUP )"); + (void)p; + ft_putstr("SUBSHELL GROUP"); return (0); } diff --git a/42sh/src/job-control/process_print_until.c b/42sh/src/job-control/process_print_until.c index 6460da08..2732e796 100644 --- a/42sh/src/job-control/process_print_until.c +++ b/42sh/src/job-control/process_print_until.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:16:00 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:16:17 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:13:36 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_until(void) +int process_print_until(t_process *p) { + (void)p; ft_putstr("UNTIL GROUP"); return (0); } diff --git a/42sh/src/job-control/process_print_while.c b/42sh/src/job-control/process_print_while.c index 5c8d67d8..9c4a67f3 100644 --- a/42sh/src/job-control/process_print_while.c +++ b/42sh/src/job-control/process_print_while.c @@ -6,14 +6,15 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 16:15:01 by wescande #+# #+# */ -/* Updated: 2017/03/08 16:15:15 by wescande ### ########.fr */ +/* Updated: 2017/03/08 19:14:13 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int process_print_while(void) +int process_print_while(t_process *p) { + (void)p; ft_putstr("WHILE GROUP"); return (0); } diff --git a/42sh/src/job-control/put_job_in_background.c b/42sh/src/job-control/put_job_in_background.c index 8498bea7..b72e7e98 100644 --- a/42sh/src/job-control/put_job_in_background.c +++ b/42sh/src/job-control/put_job_in_background.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 15:03:29 by jhalford #+# #+# */ -/* Updated: 2017/03/02 20:57:36 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:33:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/job-control/put_job_in_foreground.c b/42sh/src/job-control/put_job_in_foreground.c index d290a3ca..9e5ae442 100644 --- a/42sh/src/job-control/put_job_in_foreground.c +++ b/42sh/src/job-control/put_job_in_foreground.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:47:06 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:33:21 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,25 +17,20 @@ int put_job_in_foreground(t_job *j, int cont) t_jobc *jobc; jobc = &data_singleton()->jobc; + tcsetpgrp(STDIN, j->pgid); + if (cont) + { + tcsetattr(STDIN, TCSADRAIN, &j->tmodes); + if (kill(-j->pgid, SIGCONT) < 0) + DG("kill(SIGCONT) failed"); + } + job_wait(j->id); + job_remove(j->id); + tcsetpgrp(STDIN, jobc->shell_pgid); if (SH_HAS_JOBC(data_singleton()->opts)) { - tcsetpgrp(STDIN, j->pgid); - if (cont) - { - tcsetattr(STDIN, TCSADRAIN, &j->tmodes); - if (kill(-j->pgid, SIGCONT) < 0) - DG("kill(SIGCONT) failed"); - } - job_wait(j->id); - job_remove(j->id); - tcsetpgrp(STDIN, jobc->shell_pgid); tcgetattr(STDIN, &j->tmodes); tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes); } - else - { - job_wait(j->id); - job_remove(j->id); - } return (0); } diff --git a/42sh/src/lexer/lexer_heredoc.c b/42sh/src/lexer/lexer_heredoc.c index c75b95fc..4129d0f2 100644 --- a/42sh/src/lexer/lexer_heredoc.c +++ b/42sh/src/lexer/lexer_heredoc.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 15:51:17 by jhalford #+# #+# */ -/* Updated: 2017/03/08 17:52:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 18:11:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/line-editing/ft_prompt.c b/42sh/src/line-editing/ft_prompt.c index 83817667..838eb879 100644 --- a/42sh/src/line-editing/ft_prompt.c +++ b/42sh/src/line-editing/ft_prompt.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:51:33 by gwojda #+# #+# */ -/* Updated: 2017/03/08 17:21:36 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:57:05 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 843047d7..b34b569a 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:39:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:56:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/shell_init.c b/42sh/src/main/shell_init.c index d767aebd..6b0c2fa9 100644 --- a/42sh/src/main/shell_init.c +++ b/42sh/src/main/shell_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */ -/* Updated: 2017/03/08 13:04:03 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:56:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ From 4a22ddc0e1708a4cd62792ca01da48195a537484 Mon Sep 17 00:00:00 2001 From: wescande Date: Wed, 8 Mar 2017 21:27:37 +0100 Subject: [PATCH 205/206] rectif du fork git prompt --- 42sh/src/line-editing/ft_prompt.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/42sh/src/line-editing/ft_prompt.c b/42sh/src/line-editing/ft_prompt.c index 838eb879..213c33da 100644 --- a/42sh/src/line-editing/ft_prompt.c +++ b/42sh/src/line-editing/ft_prompt.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 13:51:33 by gwojda #+# #+# */ -/* Updated: 2017/03/08 20:57:05 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 21:23:54 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,12 +20,13 @@ static int ft_git_status(void) char *line; pid_t soon; char *exec[] = {"git", "status", "--porcelain", "--branch", NULL}; + int ret; pipe(pip); if ((soon = fork())) { - wait(&soon); - if (WEXITSTATUS(soon)) + waitpid(soon, &ret, WUNTRACED); + if (WEXITSTATUS(ret)) return (-1); close(pip[1]); get_next_line(pip[0], &line); From 791b99e46966f59f1e3da9c791ecdf5fd09c7600 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 8 Mar 2017 23:18:55 +0100 Subject: [PATCH 206/206] last commit --- 42sh/Makefile | 1 + 42sh/includes/minishell.h | 3 ++- 42sh/includes/parser.h | 4 +++ 42sh/includes/types.h | 3 ++- 42sh/src/lexer/insert_newline.c | 3 +-- 42sh/src/lexer/lexer_end.c | 2 +- 42sh/src/lexer/lexer_heredoc.c | 9 +++++-- 42sh/src/lexer/lexer_word.c | 2 +- 42sh/src/main/data_init.c | 3 ++- 42sh/src/main/data_singleton.c | 2 +- 42sh/src/main/main.c | 17 ++++++++----- 42sh/src/parser/add_cmd.c | 9 +------ 42sh/src/parser/add_redir.c | 26 +++++++++++++------ 42sh/src/parser/aggregate_sym.c | 9 ++++--- 42sh/src/parser/eval_sym.c | 3 ++- 42sh/src/parser/ft_parse.c | 4 ++- 42sh/src/parser/heredoc_parser.c | 43 ++++++++++++++++++++++++++++++++ 42sh/src/parser/parser_init.c | 3 ++- 42sh/src/parser/produce_sym.c | 9 ++++--- 42sh/src/parser/read_stack.c | 4 ++- 20 files changed, 115 insertions(+), 44 deletions(-) create mode 100644 42sh/src/parser/heredoc_parser.c diff --git a/42sh/Makefile b/42sh/Makefile index 4196032e..46f6de4d 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -269,6 +269,7 @@ parser/build_tree.c\ parser/error_syntax.c\ parser/eval_sym.c\ parser/ft_parse.c\ +parser/heredoc_parser.c\ parser/parser_init.c\ parser/pop_stack.c\ parser/produce_sym.c\ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index 9b20a56e..6dcbefc4 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:05:37 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:53:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,6 +42,7 @@ struct s_data t_comp *comp; t_exec exec; t_jobc jobc; + t_list *heredoc_queue; char **local_var; t_list *lst_func; }; diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index a144c663..6e8a06ff 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -30,6 +30,7 @@ struct s_parser t_parstate state; t_list *stack; t_sym *new_sym; + t_list *heredoc_queue; }; struct s_aggrematch @@ -74,6 +75,8 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state); int push_stack(t_list **stack, t_sym new_sym); int pop_stack(t_list **stack, t_sym erase_sym); +int pop_heredoc(t_list **heredoc_queue, t_list **lst); + int error_syntax(t_list **token, t_parser *parser, t_btree **ast); int error_EOF(t_list **token, t_parser *parser, t_btree **ast); @@ -158,6 +161,7 @@ struct s_redir t_type type; int n; char *word; + char *heredoc_data; /* int close; */ }; diff --git a/42sh/includes/types.h b/42sh/includes/types.h index cf5b074f..15b72159 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/08 16:08:38 by ariard ### ########.fr */ +/* Updated: 2017/03/08 17:16:00 by ariard ### ########.fr */ /* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -193,6 +193,7 @@ enum e_sym REDIR, CMD, HEREDOCDATA, + HEREDOC_DELIM, ALL = 200, TERMINUS = 300, }; diff --git a/42sh/src/lexer/insert_newline.c b/42sh/src/lexer/insert_newline.c index 7a24a0ca..8cd60a2a 100644 --- a/42sh/src/lexer/insert_newline.c +++ b/42sh/src/lexer/insert_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 21:05:23 by ariard #+# #+# */ -/* Updated: 2017/02/24 16:22:08 by ariard ### ########.fr */ +/* Updated: 2017/03/08 18:33:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ int insert_newline(t_list **alst) { t_token *token; - DG("insert newline"); token = token_init(); token->type = TK_NEWLINE; ft_lsteadd(alst, ft_lstnew(token, sizeof(*token))); diff --git a/42sh/src/lexer/lexer_end.c b/42sh/src/lexer/lexer_end.c index 52a2bd3d..ec527e69 100644 --- a/42sh/src/lexer/lexer_end.c +++ b/42sh/src/lexer/lexer_end.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/05 16:58:24 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:52:31 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 17:52:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_heredoc.c b/42sh/src/lexer/lexer_heredoc.c index e655aee2..a1efef2d 100644 --- a/42sh/src/lexer/lexer_heredoc.c +++ b/42sh/src/lexer/lexer_heredoc.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 15:51:17 by jhalford #+# #+# */ -/* Updated: 2017/03/08 15:53:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 20:04:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,8 +18,13 @@ int lexer_heredoc(t_list **alst, t_lexer *lexer) token = (*alst)->content; token->type = HEREDOCDATA; - token_append_str(token, lexer->str, 0, 0); + //token_append_char(token, '\n', 0, 0); + while (lexer->str[lexer->pos]) + if (token_append_char(token, lexer->str[lexer->pos++], 0, 0)) + return (1); return (0); + //ft_strappend(&lexer->str, (char[]){'\n', 0}); + //lexer->pos++; /* heredoc_lst = *(t_list**)lexer->heredoc_stack->content; */ /* heredoc_tok = heredoc_lst->content; */ /* if (!(heredoc_lst->next)) */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index b3e8aea4..d322ee59 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/03/08 12:10:37 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 19:07:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index 843047d7..3bb1774b 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/08 14:39:07 by jhalford ### ########.fr */ +/* Updated: 2017/03/08 21:02:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ int data_init(void) data->local_var = NULL; data->lst_func = NULL; + data->heredoc_queue = NULL; if ((term_name = ft_getenv(data->env, "TERM")) == NULL) return (-1); if (tgetent(NULL, term_name) != 1) diff --git a/42sh/src/main/data_singleton.c b/42sh/src/main/data_singleton.c index e86abb8d..51fe1e00 100644 --- a/42sh/src/main/data_singleton.c +++ b/42sh/src/main/data_singleton.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 11:36:39 by jhalford #+# #+# */ -/* Updated: 2017/02/20 20:57:52 by ariard ### ########.fr */ +/* Updated: 2017/03/08 20:50:57 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index a65b3758..8079edab 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/03/08 16:06:44 by ariard ### ########.fr */ +/* Updated: 2017/03/08 21:58:19 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ int handle_instruction(int fd) while (1) { if ((ret = readline(fd, get_lexer_stack(lexer) || - parser.state == UNDEFINED, &str))) + parser.state == UNDEFINED || lexer.state == HEREDOC, &str))) { if (ret == -1) return (-1); @@ -52,10 +52,15 @@ int handle_instruction(int fd) token_print(token); if (insert_newline(&token)) return (1); - DG("exit newline"); if (ft_parse(&ast, &token, &parser)) continue ; - if (parser.state == SUCCESS) + DG(); + lexer.state = (data_singleton()->heredoc_queue) ? HEREDOC : 0; + if (data_singleton()->heredoc_queue) + DG("still in HEREDOC"); + if (lexer.state) + continue; + else if (parser.state == SUCCESS) break ; else if (parser.state == ERROR && SH_IS_INTERACTIVE(data_singleton()->opts)) { @@ -67,8 +72,8 @@ int handle_instruction(int fd) } DG("Before execution:"); // btree_print(STDBUG, ast, &ft_putast); - if (ft_exec(&ast)) - return (1); +// if (ft_exec(&ast)) +// return (1); instruction_free(&token, &parser, &ast); ft_add_str_in_history(lexer.str); return (0); diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 47eb3499..f7c8f491 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/07 20:10:10 by wescande ### ########.fr */ +/* Updated: 2017/03/08 16:19:23 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,13 +88,6 @@ int add_cmd(t_btree **ast, t_list **lst) else node->type = CMD; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) -/* if ((my_tab = (char **)malloc(sizeof(char *) * 4))) - { - my_tab[0] = ft_strdup(token->data); - my_tab[1] = (char *)dup_char_esc(token->esc, token->size >> 3); - my_tab[2] = (char *)dup_char_esc(token->esc2, token->size >> 3); - my_tab[3] = NULL; - }*/ ft_ld_pushback(&node->data.cmd.token, gen_tab(token->data, token->esc, token->esc2, 1)); return (0); diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 3040c067..b4747ba2 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/07 22:46:46 by ariard ### ########.fr */ +/* Updated: 2017/03/08 22:11:07 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -60,6 +60,7 @@ int add_redir_word(t_btree **ast, t_list **lst) t_astnode *node; t_token *token; t_redir *redir; + t_redir *temp; token = (*lst)->content; node = (*ast)->item; @@ -67,12 +68,13 @@ int add_redir_word(t_btree **ast, t_list **lst) { DG("add file"); redir = (ft_lstlast(node->data.cmd.redir))->content; - DG("now redir.type :%s", read_state(redir->type)); - DG("n is ? : %d", redir->n); + DG("now redir.type :%s", read_state(redir->type)); + redir->word = ft_strdup(token->data); if (redir->type == TK_DLESS) - redir->word = NULL; - else - redir->word = ft_strdup(token->data); + { + temp = ft_lstlast((data_singleton()->heredoc_queue))->content; + temp->word = redir->word; + } } return (0); } @@ -83,6 +85,7 @@ int add_redir_type(t_btree **ast, t_list **lst) t_token *token; t_redir redir; t_redir *temp; + t_redir *temp_heredoc; if (!*ast) gen_node(ast); @@ -90,16 +93,23 @@ int add_redir_type(t_btree **ast, t_list **lst) node = (*ast)->item; if (!(node->type == TK_IO_NUMBER)) { - DG("add redir"); redir.n = (token->type == TK_LESS || token->type == TK_DLESS || token->type == TK_LESSAND) ? STDIN : STDOUT; - redir.type = token->type; + redir.type = token->type; + redir.heredoc_data = NULL; ft_lsteadd(&node->data.cmd.redir, ft_lstnew(&redir, sizeof(redir))); + if (token->type == TK_DLESS) + ft_lsteadd(&data_singleton()->heredoc_queue, ft_lstnew(&redir, sizeof(redir))); } else { temp = (ft_lstlast(node->data.cmd.redir))->content; temp->type = token->type; + if (token->type == TK_DLESS) + { + temp_heredoc = data_singleton()->heredoc_queue->content; + temp_heredoc->n = temp->n; + } } node->type = REDIR; return (0); diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 65edcf13..a91f6a8c 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -103,6 +103,7 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, {NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK}, {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, + {NEWLINE_LIST, PROGRAM, PROGRAM, PROGRAM}, {SEQUENTIAL_SEP, FOR_WORDLIST, SEQUENTIAL_SEP, FOR_WORDLIST}, //to check {FILENAME, TK_LESS, IO_FILE, TK_LESS}, @@ -335,21 +336,21 @@ int aggregate_sym(t_list **stack, t_sym *new_sym, t_parstate *state) return (1); i = 0; head = (*stack)->content; - DG("aggregate head %s && sym %s", - read_state(*head), read_state(*new_sym)); +// DG("aggregate head %s && sym %s", +// read_state(*head), read_state(*new_sym)); while (g_aggrematch[i].top) { if (*new_sym == g_aggrematch[i].top && MATCH_STACK(*head, g_aggrematch[i].under)) { - DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); +// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym)); *new_sym = g_aggrematch[i].new_sym; if (g_aggrematch[i].erase_sym) { pop_stack(stack, g_aggrematch[i].erase_sym); head = (*stack)->content; - DG("stack after pop: %s", read_state(*head)); +// DG("stack after pop: %s", read_state(*head)); } if (eval_sym(stack, *new_sym)) { diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 957c647d..5919b135 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -551,6 +551,7 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, TK_BANG}, {NEWLINE_LIST, TK_PAREN_OPEN}, {NEWLINE_LIST, TK_LBRACE}, + {NEWLINE_LIST, PROGRAM}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESS}, {HERE_END, TK_DLESSDASH}, @@ -1123,7 +1124,7 @@ int eval_sym(t_list **stack, t_sym new_sym) if (!*stack) return (1); head = (*stack)->content; - DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); +// DG("eval head %s && sym %s", read_state(*head), read_state(new_sym)); i = 0; while (g_stackmatch[i].top) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index ee706c67..c949eb17 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -34,6 +34,8 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) { t_sym *head; + if (pop_heredoc(&parser->heredoc_queue, token)) + return (0); while (*token) { produce_sym(&parser->stack, parser->new_sym, token); @@ -53,7 +55,7 @@ int ft_parse(t_btree **ast, t_list **token, t_parser *parser) else parser->state = UNDEFINED; build_tree(ast, token); - btree_print(STDBUG, *ast, &ft_putast); +// btree_print(STDBUG, *ast, &ft_putast); if ((end_instruction(&parser->stack) && !(*token)->next)) insert_linebreak(token); else diff --git a/42sh/src/parser/heredoc_parser.c b/42sh/src/parser/heredoc_parser.c new file mode 100644 index 00000000..e76b7791 --- /dev/null +++ b/42sh/src/parser/heredoc_parser.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredoc_parser.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ariard +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/08 16:21:05 by ariard #+# #+# */ +/* Updated: 2017/03/08 23:18:29 by ariard ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int pop_heredoc(t_list **heredoc_queue, t_list **lst) +{ + t_token *token; + t_list *temp; + t_list *temp2; + t_redir *head; + + temp = NULL; + if (!heredoc_queue && !*heredoc_queue) + return (0); + token = (*lst)->content; + if (token->type == HEREDOCDATA) + { + head = data_singleton()->heredoc_queue->content; + temp = data_singleton()->heredoc_queue; + DG("compare %s with %s", (char *)token->data, head->word); + if (head && ft_strcmp((char *)token->data, head->word) == 0) + { + temp2 = temp->next; + free(temp); + data_singleton()->heredoc_queue = temp2; + } + else + head->heredoc_data = ft_strjoin(head->heredoc_data, token->data); + ft_lstdel(lst, &token_free); + return (1); + } + return (0); +} diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index 6b807a98..7e599c4f 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/03/06 17:04:33 by ariard ### ########.fr */ +/* Updated: 2017/03/08 21:56:56 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,4 +19,5 @@ void parser_init(t_parser *parser) parser->stack = NULL; push_stack(&parser->stack, TERMINUS); push_stack(&parser->stack, LINEBREAK); + parser->heredoc_queue = NULL; } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 6881847c..a4d17984 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/03/07 21:24:40 by wescande ### ########.fr */ +/* Updated: 2017/03/08 18:00:22 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -96,6 +96,7 @@ t_prodmatch g_prodmatch[] = {TK_NEWLINE, CONDITION, NEWLINE_LIST}, {TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST}, {TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST}, + {TK_NEWLINE, PROGRAM, NEWLINE_LIST}, {TK_SEMI, MATH_SUP, SEPARATOR_OP}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP}, @@ -118,8 +119,8 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) return (1); token = (*lst)->content; head = (*stack)->content; - DG("produce stack : %s && token : %s", read_state(*head), - read_state(token->type)); +// DG("produce stack : %s && token : %s", read_state(*head), +// read_state(token->type)); i = 0; *new_sym = 0; while (g_prodmatch[i].new_sym) @@ -127,7 +128,7 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst) if (token->type == g_prodmatch[i].token && *head == g_prodmatch[i].stack) { - DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); +// DG("MATCH : %s", read_state(g_prodmatch[i].new_sym)); *new_sym = g_prodmatch[i].new_sym; } i++; diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 4f28e16c..0e272f80 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/08 00:23:48 by wescande ### ########.fr */ +/* Updated: 2017/03/08 17:39:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ char *read_state(t_sym current) { + if (current == HEREDOCDATA) + return ("HEREDOCDATA"); if (current == TERMINUS) return ("TERMINUS"); if (current == SEQUENCE)