From dea3e1c7a8df55af437b7adb6ee7a108d1cda22b Mon Sep 17 00:00:00 2001 From: gwojda Date: Wed, 22 Mar 2017 15:46:42 +0100 Subject: [PATCH 1/5] fix bugs completion... --- 42sh/src/completion/c_match.c | 48 +++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/42sh/src/completion/c_match.c b/42sh/src/completion/c_match.c index 0fc2d8eb..7daa6f1d 100644 --- a/42sh/src/completion/c_match.c +++ b/42sh/src/completion/c_match.c @@ -6,33 +6,59 @@ /* By: alao +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/10/15 13:27:14 by alao #+# #+# */ -/* Updated: 2017/03/22 15:13:12 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 15:46:22 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" +static int c_is_delim(char c) +{ + if (c == ' ' || c == '<' || c == '>' || c == '\n' || c == ';') + return (1); + return (0); +} + +static char *c_strdupi(char *s, int (*f)(char)) +{ + int i; + char *str; + + i = 0; + while (s[i] && !(*f)(s[i])) + i++; + str = (char *)ft_malloc(sizeof(char) * (i + 1)); + if (str) + { + str[i--] = '\0'; + while (i >= 0) + { + str[i] = s[i]; + i--; + } + } + return (str); +} + + /* ** Seek the current word. */ -static char *c_current_words(t_comp *c) +static char *c_current_words(void) { size_t pos; char *str; - (void)c; pos = data_singleton()->line.pos; str = data_singleton()->line.input; - DG("pos = \"%zu\"", pos); - while (pos && str[pos] != ' ' && str[pos] != '<' - && str[pos] != '>' && str[pos] != '\n' && str[pos] != ';') + if (pos && c_is_delim(str[pos])) --pos; - if (str[pos] == ' ' || str[pos] == '<' - || str[pos] == '>' || str[pos] == '\n' || str[pos] == ';') + while (pos && !c_is_delim(str[pos])) + --pos; + if (c_is_delim(str[pos])) ++pos; - DG("pos = \"%zu\"", pos); - return (str + pos); + return (c_strdupi(str + pos, &c_is_delim)); } /* @@ -44,7 +70,7 @@ int c_matching(t_data *s, t_comp *c) char *current_word; DG("c->rcmd = \"%s\"", c->rcmd); - current_word = c_current_words(c); + current_word = c_current_words(); DG("current_word = \"%s\"", current_word); if (ft_strchr(c->rcmd, '/')) c_seek_abs_path(c, current_word); From c237b5119e63cf9dfe2be8954cee6f5675c70e3b Mon Sep 17 00:00:00 2001 From: gwojda Date: Wed, 22 Mar 2017 15:49:31 +0100 Subject: [PATCH 2/5] sans le debug et avec un free c'est mieux --- 42sh/src/completion/c_match.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/42sh/src/completion/c_match.c b/42sh/src/completion/c_match.c index 7daa6f1d..07391a64 100644 --- a/42sh/src/completion/c_match.c +++ b/42sh/src/completion/c_match.c @@ -6,7 +6,7 @@ /* By: alao +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/10/15 13:27:14 by alao #+# #+# */ -/* Updated: 2017/03/22 15:46:22 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 15:49:09 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -69,9 +69,7 @@ int c_matching(t_data *s, t_comp *c) { char *current_word; - DG("c->rcmd = \"%s\"", c->rcmd); current_word = c_current_words(); - DG("current_word = \"%s\"", current_word); if (ft_strchr(c->rcmd, '/')) c_seek_abs_path(c, current_word); else if (ft_strchr(c->rcmd, '$')) @@ -80,6 +78,7 @@ int c_matching(t_data *s, t_comp *c) c_seek_binary(s, c); else c_seek_files(s, c, current_word); + ft_strdel(¤t_word); if (s->comp && s->comp->lst) { c_sizing(c); From fbe5987502a343be655158e857476d7b956a9946 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 22 Mar 2017 15:54:09 +0100 Subject: [PATCH 3/5] close #147 --- 42sh/log | 775 +++++++++++++++++++++--------------- 42sh/src/exec/plaunch_for.c | 21 +- 2 files changed, 471 insertions(+), 325 deletions(-) diff --git a/42sh/log b/42sh/log index 449d1acb..385a758d 100644 --- a/42sh/log +++ b/42sh/log @@ -1,313 +1,462 @@ -Norme: ./src/builtin/bt_read_get.c -Norme: ./src/builtin/builtin_echo.c -Norme: ./src/builtin/bt_read_term.c -Norme: ./src/builtin/builtin_exit.c -Norme: ./src/builtin/builtin_hash.c -Norme: ./src/builtin/builtin_history.c -Norme: ./src/builtin/builtin_export.c -Norme: ./src/builtin/builtin_cd.c -Norme: ./src/builtin/builtin_return_status.c -Norme: ./src/builtin/builtin_env.c -Error (line 61): function env_treat_flag has 32 lines -Norme: ./src/builtin/builtin_unset.c -Norme: ./src/builtin/builtin_unsetenv.c -Norme: ./src/builtin/builtin_setenv.c -Error (line 15): wrong number of spaces in preprocessor line -Norme: ./src/builtin/error_msg.c -Norme: ./src/builtin/is_builtin.c -Norme: ./src/builtin/builtin_read.c -Norme: ./src/completion/c_arrow.c -Norme: ./src/builtin/builtin_math.c -Norme: ./src/completion/c_find_abspath.c -Norme: ./src/completion/c_find_binary.c -Norme: ./src/completion/c_find_env.c -Norme: ./src/completion/c_clear.c -Norme: ./src/completion/c_match.c -Norme: ./src/completion/c_init.c -Norme: ./src/completion/c_find_files.c -Norme: ./src/completion/c_misc.c -Norme: ./src/completion/c_match_glob.c -Error (line 19): function c_replace_globbing has 27 lines -Norme: ./src/completion/c_match_update.c -Norme: ./src/completion/c_parser.c -Norme: ./src/completion/c_output.c -Norme: ./src/completion/c_sizing.c -Norme: ./src/completion/c_terminal.c -Norme: ./src/completion/c_printer.c -Norme: ./src/exec/bad_fd.c -Norme: ./src/completion/completion.c -Norme: ./src/exec/error_badidentifier.c -Norme: ./src/exec/ast_free.c -Norme: ./src/exec/exec_ampersand.c -Norme: ./src/exec/exec_and_if.c -Norme: ./src/exec/exec_bang.c -Norme: ./src/exec/exec_else.c -Norme: ./src/exec/exec_elif.c -Norme: ./src/exec/exec_case_branch.c -Norme: ./src/exec/exec_pipe.c -Norme: ./src/exec/exec_or_if.c -Norme: ./src/exec/exec_semi.c -Norme: ./src/exec/exec_var.c -Norme: ./src/exec/exec_reset.c -Norme: ./src/exec/fd_is_valid.c -Norme: ./src/completion/c_pathsolver.c -Norme: ./src/exec/exec_leaf.c -Error (line 55): bad indentation -Norme: ./src/exec/mark_process_status.c -Norme: ./src/exec/is_function.c -Error (line 31, col 3): missing space after break -Norme: ./src/exec/ft_findexec.c -Norme: ./src/exec/pfree_cmd.c -Norme: ./src/exec/pfree_func.c -Norme: ./src/exec/pfree_cond.c -Norme: ./src/exec/ft_exec.c -Norme: ./src/exec/pfree_subshell.c -Norme: ./src/exec/node_copy.c -Norme: ./src/exec/pfree_list.c -Norme: ./src/exec/plaunch_brace.c -Norme: ./src/exec/plaunch_empty.c -Norme: ./src/exec/plaunch_builtin.c -Norme: ./src/exec/plaunch_case.c -Norme: ./src/exec/plaunch_if.c -Error (line 19): comment not well formatted -Error (line 19): comment not well placed -Norme: ./src/exec/plaunch_subshell.c -Norme: ./src/exec/plaunch_function.c -Error (line 15): spaces at the end of line -Error (line 29): spaces at the end of line -Error (line 29, col 19): bad character after ; -Norme: ./src/exec/plaunch_for.c -Norme: ./src/exec/plaunch_while.c -Norme: ./src/exec/plaunch_file.c -Norme: ./src/exec/plaunch_until.c -Norme: ./src/exec/process_resetfds.c -Error (line 25): comment not well formatted -Error (line 25): bad indentation -Error (line 25): line has 146 characters -Error (line 25): comment not well placed -Error (line 26): comment not well formatted -Error (line 26): bad indentation -Error (line 26): comment not well placed -Error (line 27): bad indentation -Error (line 28): comment not well formatted -Error (line 28): comment not well placed -Error (line 29): comment not well formatted -Error (line 29): comment not well placed -Error (line 30): comment not well formatted -Error (line 30): comment not well placed -Norme: ./src/exec/process_setgroup.c -Norme: ./src/exec/process_launch.c -Error (line 49): comment not well formatted -Error (line 49): comment not well placed -Error (line 50): comment not well formatted -Error (line 50): comment not well placed -Error (line 67): bad indentation -Norme: ./src/exec/process_setsig.c -Norme: ./src/exec/pset_brace.c -Norme: ./src/exec/process_redirect.c -Norme: ./src/exec/pset_case.c -Norme: ./src/exec/pset_for.c -Norme: ./src/exec/pset_if.c -Norme: ./src/exec/pset_subshell.c -Norme: ./src/exec/pset_until.c -Norme: ./src/exec/process_set.c -Error (line 47): function process_set has 26 lines -Norme: ./src/exec/pset_while.c -Norme: ./src/exec/redir_free.c -Norme: ./src/exec/pset_cmd.c -Norme: ./src/exec/redirect_dgreat.c -Norme: ./src/exec/redir_copy.c -Norme: ./src/exec/redirect_great.c -Norme: ./src/exec/redirect_dless.c -Norme: ./src/exec/redirect_less.c -Norme: ./src/exec/redirect_greatand.c -Norme: ./src/exec/set_exitstatus.c -Norme: ./src/exec/redirect_lessand.c -Norme: ./src/exec/token_to_argv.c -Norme: ./src/glob/esc_print.c -Norme: ./src/glob/dir_glob.c -Norme: ./src/glob/command_getoutput.c -Error: global scope bad aligned -Error (line 47): line has 83 characters -Error (line 52): function execute_command has 26 lines -Norme: ./src/glob/expand_home.c -Norme: ./src/glob/expand_esc.c -Norme: ./src/glob/ft_strsplit_esc.c -Error (line 69): line has 84 characters -Norme: ./src/glob/expand_brace.c -Norme: ./src/glob/expand_var.c -Norme: ./src/glob/gen_tab_esc.c -Norme: ./src/glob/is_char_esc.c -Norme: ./src/glob/ft_strsplit_spe.c -Norme: ./src/glob/tab_esc_copy.c -Norme: ./src/glob/word_is_assignment.c -Norme: ./src/glob/glob.c -Norme: ./src/hash_table/hash.c -Norme: ./src/hash_table/ft_add_hash.c -Norme: ./src/hash_table/hash_str.c -Norme: ./src/hash_table/hash_free.c -Norme: ./src/hash_table/is_hash.c -Norme: ./src/history/add_str_in_history.c -Norme: ./src/glob/expand_bquote.c -Error: 6 functions in the file -Norme: ./src/history/history.c -Norme: ./src/history/history_parsing_toolz_2.c -Norme: ./src/history/history_parsing_toolz.c -Norme: ./src/history/list_toolz.c -Norme: ./src/glob/match_pattern.c -Error (line 75): line has 82 characters -Norme: ./src/history/history_parsing.c -Norme: ./src/job_control/builtin_bg.c -Norme: ./src/job_control/do_job_notification.c -Norme: ./src/job_control/builtin_fg.c -Error (line 15): function builtin_fg has 31 lines -Norme: ./src/job_control/has_running_job.c -Norme: ./src/history/surch_in_history.c -Norme: ./src/job_control/has_stopped_job.c -Norme: ./src/job_control/job_cmp_id.c -Norme: ./src/job_control/job_format.c -Norme: ./src/job_control/job_addprocess.c -Error (line 27): comment not well formatted -Error (line 27): comment not well placed -Norme: ./src/job_control/job_free.c -Norme: ./src/job_control/builtin_jobs.c -Norme: ./src/job_control/job_format_head.c -Norme: ./src/job_control/job_getprocess.c -Norme: ./src/job_control/job_hup_all.c -Norme: ./src/job_control/job_is_completed.c -Norme: ./src/job_control/job_is_stopped.c -Norme: ./src/job_control/job_notify_change.c -Norme: ./src/job_control/job_getrank.c -Norme: ./src/job_control/job_run.c -Norme: ./src/job_control/job_notify_new.c -Norme: ./src/job_control/job_update_id.c -Norme: ./src/job_control/job_remove.c -Norme: ./src/job_control/job_update_status.c -Norme: ./src/job_control/pprint_brace.c -Norme: ./src/job_control/mark_job_as_running.c -Norme: ./src/job_control/pprint_case.c -Norme: ./src/job_control/pprint_cmd.c -Norme: ./src/job_control/pprint_for.c -Norme: ./src/job_control/pprint_function.c -Norme: ./src/job_control/pprint_if.c -Norme: ./src/job_control/pprint_until.c -Norme: ./src/job_control/pprint_subshell.c -Norme: ./src/job_control/pprint_while.c -Norme: ./src/job_control/job_wait.c -Norme: ./src/job_control/process_cmp_pid.c -Norme: ./src/job_control/put_job_in_background.c -Norme: ./src/job_control/process_free.c -Norme: ./src/job_control/sigchld_handler.c -Norme: ./src/job_control/sigint_handler.c -Norme: ./src/job_control/sigtstp_handler.c -Norme: ./src/job_control/sigttou_handler.c -Norme: ./src/job_control/sigttin_handler.c -Norme: ./src/lexer/get_lexer_stack.c -Norme: ./src/job_control/put_job_in_foreground.c -Norme: ./src/lexer/do_lexer_routine.c -Error (line 15): function do_lexer_routine has 27 lines -Error (line 24): missing newline after if -Error (line 24): spaces at the end of line -Error (line 28): spaces at the end of line -Norme: ./src/lexer/get_state_redir.c -Norme: ./src/lexer/get_state_global.c -Norme: ./src/lexer/insert_newline.c -Norme: ./src/lexer/isrw_delim.c -Error (line 15): spaces at the end of line -Error (line 19): spaces at the end of line -Norme: ./src/lexer/keep_last_type.c -Error (line 22): spaces at the end of line -Error (line 22, col 0): no newline after block -Norme: ./src/lexer/get_reserved_words.c -Error (line 41): spaces at the end of line -Norme: ./src/lexer/lexer_backslash.c -Norme: ./src/job_control/process_format.c -Norme: ./src/lexer/lexer_default.c -Norme: ./src/lexer/lexer_destroy.c -Norme: ./src/lexer/lexer_bquote.c -Norme: ./src/lexer/lexer_curly_braces.c -Norme: ./src/lexer/lexer_delim.c -Norme: ./src/lexer/lexer_end.c -Norme: ./src/lexer/lexer_heredoc.c -Norme: ./src/lexer/lexer_init.c -Norme: ./src/lexer/lexer_great.c -Norme: ./src/lexer/lexer_newline.c -Norme: ./src/lexer/lexer_dquote.c -Norme: ./src/lexer/lexer_less.c -Norme: ./src/lexer/lexer_lex.c -Norme: ./src/lexer/lexer_paren.c -Norme: ./src/lexer/lexer_quote.c -Norme: ./src/lexer/lexer_number.c -Norme: ./src/lexer/token_cmp_type.c -Norme: ./src/lexer/lexer_word.c -Norme: ./src/lexer/lexer_sep.c -Norme: ./src/lexer/token_free.c -Norme: ./src/lexer/token_print.c -Norme: ./src/lexer/token_init.c -Norme: ./src/lexer/token_append.c -Norme: ./src/line_editing/control_features.c -Norme: ./src/line_editing/completion.c -Norme: ./src/line_editing/home_end.c -Norme: ./src/line_editing/copy_cut_paste.c -Error (line 40): function ft_v has 26 lines -Norme: ./src/line_editing/init_line.c -Norme: ./src/line_editing/init_history.c -Norme: ./src/line_editing/init_termcaps.c -Norme: ./src/line_editing/ft_prompt.c -Norme: ./src/line_editing/get_key.c -Norme: ./src/line_editing/move_left_and_right.c -Norme: ./src/line_editing/move_up_and_down.c -Norme: ./src/line_editing/readline.c -Error (line 15): function readline has 27 lines -Norme: ./src/line_editing/resize.c -Norme: ./src/line_editing/queue.c -Norme: ./src/main/data_exit.c -Norme: ./src/line_editing/print_and_del.c -Norme: ./src/main/data_singleton.c -Norme: ./src/line_editing/move_to_word.c -Norme: ./src/main/data_init.c -Error (line 15, col 14): global named environ is not well prefixed -Error (line 46): function data_init has 30 lines -Error (line 68): comment not well formatted -Error (line 68): bad indentation -Error (line 68): comment not well placed -Error (line 70): comment not well formatted -Error (line 70): comment not well placed -Norme: ./src/main/main.c -Norme: ./src/parser/add_bang.c -Norme: ./src/main/ft_putast.c -Error (line 15): function ft_putast has 83 lines -Error (line 15): declarations must be followed by one empty line in ft_putast -Error (line 19): spaces at the end of line -Error (line 52, col 21): missing space around == -Norme: ./src/main/shell_init.c -Error (line 31): function get_input_fd has 30 lines -Norme: ./src/parser/add_case.c -Norme: ./src/parser/add_cmd.c -Norme: ./src/parser/add_condition.c -Norme: ./src/parser/add_number.c -Norme: ./src/parser/add_loop.c -Norme: ./src/parser/add_sep.c -Norme: ./src/parser/add_func.c -Error (line 97, col 3): missing space after break -Error (line 100): spaces at the end of line -Error (line 120): must begin only by tabulations -Norme: ./src/parser/add_subshell.c -Norme: ./src/parser/do_parser_routine.c -Norme: ./src/parser/build_tree.c -Norme: ./src/parser/error_syntax.c -Norme: ./src/parser/add_redir.c -Norme: ./src/parser/heredoc_parser.c -Norme: ./src/parser/ft_parse.c -Norme: ./src/parser/parser_init.c -Norme: ./src/parser/parser_destroy.c -Norme: ./src/parser/pop_stack.c -Norme: ./src/parser/push_stack.c -Norme: ./src/parser/redir_init.c -Norme: ./src/parser/stack_init.c -Norme: ./src/parser/sym_free.c -Norme: ./src/parser/tree_func_free.c -Norme: ./src/parser/tree_wrapper.c -Norme: ./src/parser/produce_sym.c -Norme: ./src/parser/aggregate_sym.c -Norme: ./src/parser/eval_sym.c +On branch master +Your branch is up-to-date with 'origin/master'. +Changes to be committed: + (use "git reset HEAD ..." to unstage) + + deleted: libft/objs/btree/btree_apply_by_level.d + deleted: libft/objs/btree/btree_apply_infix.d + deleted: libft/objs/btree/btree_apply_prefix.d + deleted: libft/objs/btree/btree_apply_suffix.d + deleted: libft/objs/btree/btree_create_node.d + deleted: libft/objs/btree/btree_del.d + deleted: libft/objs/btree/btree_delone.d + deleted: libft/objs/btree/btree_insert_data.d + deleted: libft/objs/btree/btree_level_count.d + deleted: libft/objs/btree/btree_map.d + deleted: libft/objs/btree/btree_print.d + deleted: libft/objs/btree/btree_search_item.d + deleted: libft/objs/char/ft_isalnum.d + deleted: libft/objs/char/ft_isalpha.d + deleted: libft/objs/char/ft_isascii.d + deleted: libft/objs/char/ft_isdigit.d + deleted: libft/objs/char/ft_isprint.d + deleted: libft/objs/char/ft_tolower.d + deleted: libft/objs/char/ft_toupper.d + deleted: libft/objs/cliopts/cliopts_get.d + deleted: libft/objs/cliopts/cliopts_has.d + deleted: libft/objs/color/ft_color_mk.d + deleted: libft/objs/color/ft_color_mkif.d + deleted: libft/objs/color/ft_color_reset.d + deleted: libft/objs/color/ft_color_set.d + deleted: libft/objs/dlst/ft_dlstadd_after.d + deleted: libft/objs/dlst/ft_dlstadd_before.d + deleted: libft/objs/dlst/ft_dlstdel.d + deleted: libft/objs/dlst/ft_dlstdelone.d + deleted: libft/objs/dlst/ft_dlstlast.d + deleted: libft/objs/dlst/ft_dlstnew.d + deleted: libft/objs/dlst/ft_dlstrtostr.d + deleted: libft/objs/dlst/ft_dlstsize.d + deleted: libft/objs/error/error.d + deleted: libft/objs/ft_printf/ft_conversion.d + deleted: libft/objs/ft_printf/ft_fmt_simplify.d + deleted: libft/objs/ft_printf/ft_fmt_validate_conv.d + deleted: libft/objs/ft_printf/ft_fmt_validate_flags.d + deleted: libft/objs/ft_printf/ft_fmt_validate_mod.d + deleted: libft/objs/ft_printf/ft_printf.d + deleted: libft/objs/ft_printf/ft_printf_color.d + deleted: libft/objs/ft_printf/ft_printf_parse.d + deleted: libft/objs/ft_printf/ft_transform.d + deleted: libft/objs/ft_printf/ft_vprintf.d + deleted: libft/objs/ft_printf/lib_fmt.d + deleted: libft/objs/ft_printf/lib_fmt_error.d + deleted: libft/objs/ft_printf/lib_pad.d + deleted: libft/objs/ft_printf/lib_pad_sharp.d + deleted: libft/objs/get_next_line/get_next_line.d + deleted: libft/objs/lst/ft_id.d + deleted: libft/objs/lst/ft_lst_at.d + deleted: libft/objs/lst/ft_lst_bfree.d + deleted: libft/objs/lst/ft_lst_cfree.d + deleted: libft/objs/lst/ft_lst_delif.d + deleted: libft/objs/lst/ft_lst_delsub.d + deleted: libft/objs/lst/ft_lst_filter.d + deleted: libft/objs/lst/ft_lst_find.d + deleted: libft/objs/lst/ft_lst_merge.d + deleted: libft/objs/lst/ft_lst_order_delsub.d + deleted: libft/objs/lst/ft_lst_print.d + deleted: libft/objs/lst/ft_lst_print2.d + deleted: libft/objs/lst/ft_lst_removeif.d + deleted: libft/objs/lst/ft_lst_reverse.d + deleted: libft/objs/lst/ft_lst_size.d + deleted: libft/objs/lst/ft_lst_sorted_insert.d + deleted: libft/objs/lst/ft_lst_sorted_merge.d + deleted: libft/objs/lst/ft_lstadd.d + deleted: libft/objs/lst/ft_lstdel.d + deleted: libft/objs/lst/ft_lstdelone.d + deleted: libft/objs/lst/ft_lsteadd.d + deleted: libft/objs/lst/ft_lstiter.d + deleted: libft/objs/lst/ft_lstlast.d + deleted: libft/objs/lst/ft_lstmap.d + deleted: libft/objs/lst/ft_lstnadd.d + deleted: libft/objs/lst/ft_lstnew.d + deleted: libft/objs/lst/ft_lstnew_range.d + deleted: libft/objs/lst/ft_lstsort.d + deleted: libft/objs/lst/pop.d + deleted: libft/objs/lst/push.d + deleted: libft/objs/math/ft_addrcmp.d + deleted: libft/objs/math/ft_ilen.d + deleted: libft/objs/math/ft_ilen_base.d + deleted: libft/objs/math/ft_itoa.d + deleted: libft/objs/math/ft_itoa_base.d + deleted: libft/objs/math/ft_lllen.d + deleted: libft/objs/math/ft_lllen_base.d + deleted: libft/objs/math/ft_lltoa_base.d + deleted: libft/objs/math/ft_uilen.d + deleted: libft/objs/math/ft_uitoa_base.d + deleted: libft/objs/math/ft_ulltoa_base.d + deleted: libft/objs/math/id.d + deleted: libft/objs/mem/ft_bzero.d + deleted: libft/objs/mem/ft_malloc.d + deleted: libft/objs/mem/ft_memalloc.d + deleted: libft/objs/mem/ft_memccpy.d + deleted: libft/objs/mem/ft_memchr.d + deleted: libft/objs/mem/ft_memcmp.d + deleted: libft/objs/mem/ft_memcpy.d + deleted: libft/objs/mem/ft_memdel.d + deleted: libft/objs/mem/ft_memmove.d + deleted: libft/objs/mem/ft_memset.d + deleted: libft/objs/mem/ft_realloc.d + deleted: libft/objs/path/ft_path_notdir.d + deleted: libft/objs/printing/ft_putchar.d + deleted: libft/objs/printing/ft_putendl.d + deleted: libft/objs/printing/ft_putnbr.d + deleted: libft/objs/printing/ft_putstr.d + deleted: libft/objs/sstr/ft_sstradd.d + deleted: libft/objs/sstr/ft_sstrcat.d + deleted: libft/objs/sstr/ft_sstrdel.d + deleted: libft/objs/sstr/ft_sstrdup.d + deleted: libft/objs/sstr/ft_sstrfree.d + deleted: libft/objs/sstr/ft_sstrprint.d + deleted: libft/objs/sstr/ft_sstrprint_fd.d + deleted: libft/objs/sstr/ft_sstrsort.d + deleted: libft/objs/sstr/ft_sstrstr.d + deleted: libft/objs/str/ft_atoi.d + deleted: libft/objs/str/ft_convert_base.d + deleted: libft/objs/str/ft_putaddr_fd.d + deleted: libft/objs/str/ft_split_whitespaces.d + deleted: libft/objs/str/ft_str3join.d + deleted: libft/objs/str/ft_strappend.d + deleted: libft/objs/str/ft_strbetween.d + deleted: libft/objs/str/ft_strcat.d + deleted: libft/objs/str/ft_strcatf.d + deleted: libft/objs/str/ft_strchr.d + deleted: libft/objs/str/ft_strchrcpy.d + deleted: libft/objs/str/ft_strclr.d + deleted: libft/objs/str/ft_strcmp.d + deleted: libft/objs/str/ft_strcpy.d + deleted: libft/objs/str/ft_strcspn.d + deleted: libft/objs/str/ft_strcut.d + deleted: libft/objs/str/ft_strdel.d + deleted: libft/objs/str/ft_strdup.d + deleted: libft/objs/str/ft_strdupchr.d + deleted: libft/objs/str/ft_strduptr.d + deleted: libft/objs/str/ft_strequ.d + deleted: libft/objs/str/ft_strinsert.d + deleted: libft/objs/str/ft_stris.d + deleted: libft/objs/str/ft_striter.d + deleted: libft/objs/str/ft_striteri.d + deleted: libft/objs/str/ft_strjoin.d + deleted: libft/objs/str/ft_strlcat.d + deleted: libft/objs/str/ft_strlen.d + deleted: libft/objs/str/ft_strlenchr.d + deleted: libft/objs/str/ft_strmap.d + deleted: libft/objs/str/ft_strmapi.d + deleted: libft/objs/str/ft_strncat.d + deleted: libft/objs/str/ft_strncmp.d + deleted: libft/objs/str/ft_strncpy.d + deleted: libft/objs/str/ft_strnequ.d + deleted: libft/objs/str/ft_strnew.d + deleted: libft/objs/str/ft_strnstr.d + deleted: libft/objs/str/ft_strrchr.d + deleted: libft/objs/str/ft_strreplace.d + deleted: libft/objs/str/ft_strrev.d + deleted: libft/objs/str/ft_strsplit.d + deleted: libft/objs/str/ft_strstr.d + deleted: libft/objs/str/ft_strsub.d + deleted: libft/objs/str/ft_strtok.d + deleted: libft/objs/str/ft_strtrim.d + deleted: libft/objs/sys/dup2_close.d + deleted: libft/objs/sys/fd_replace.d + deleted: libft/objs/sys/ft_getenv.d + deleted: libft/objs/sys/ft_xattr_count.d + deleted: libft/objs/sys/ft_xattr_print.d + deleted: libft/objs/time/ft_mytime_free.d + deleted: libft/objs/time/ft_mytime_get.d + deleted: libft/objs/time/ft_time_isrecent.d + deleted: objs/builtin/bt_read_get.d + deleted: objs/builtin/bt_read_term.d + deleted: objs/builtin/builtin_cd.d + deleted: objs/builtin/builtin_echo.d + deleted: objs/builtin/builtin_env.d + deleted: objs/builtin/builtin_exit.d + deleted: objs/builtin/builtin_export.d + deleted: objs/builtin/builtin_hash.d + deleted: objs/builtin/builtin_history.d + deleted: objs/builtin/builtin_math.d + deleted: objs/builtin/builtin_read.d + deleted: objs/builtin/builtin_return_status.d + deleted: objs/builtin/builtin_setenv.d + deleted: objs/builtin/builtin_unset.d + deleted: objs/builtin/builtin_unsetenv.d + deleted: objs/builtin/error_msg.d + deleted: objs/builtin/is_builtin.d + deleted: objs/completion/c_arrow.d + deleted: objs/completion/c_clear.d + deleted: objs/completion/c_find_abspath.d + deleted: objs/completion/c_find_binary.d + deleted: objs/completion/c_find_env.d + deleted: objs/completion/c_find_files.d + deleted: objs/completion/c_init.d + deleted: objs/completion/c_match.d + deleted: objs/completion/c_match_glob.d + deleted: objs/completion/c_match_update.d + deleted: objs/completion/c_misc.d + deleted: objs/completion/c_output.d + deleted: objs/completion/c_parser.d + deleted: objs/completion/c_pathsolver.d + deleted: objs/completion/c_printer.d + deleted: objs/completion/c_sizing.d + deleted: objs/completion/c_terminal.d + deleted: objs/completion/completion.d + deleted: objs/exec/ast_free.d + deleted: objs/exec/bad_fd.d + deleted: objs/exec/error_badidentifier.d + deleted: objs/exec/exec_ampersand.d + deleted: objs/exec/exec_and_if.d + deleted: objs/exec/exec_bang.d + deleted: objs/exec/exec_case_branch.d + deleted: objs/exec/exec_elif.d + deleted: objs/exec/exec_else.d + deleted: objs/exec/exec_leaf.d + deleted: objs/exec/exec_or_if.d + deleted: objs/exec/exec_pipe.d + deleted: objs/exec/exec_reset.d + deleted: objs/exec/exec_semi.d + deleted: objs/exec/exec_var.d + deleted: objs/exec/fd_is_valid.d + deleted: objs/exec/ft_exec.d + deleted: objs/exec/ft_findexec.d + deleted: objs/exec/is_function.d + deleted: objs/exec/mark_process_status.d + deleted: objs/exec/node_copy.d + deleted: objs/exec/pfree_cmd.d + deleted: objs/exec/pfree_cond.d + deleted: objs/exec/pfree_func.d + deleted: objs/exec/pfree_list.d + deleted: objs/exec/pfree_subshell.d + deleted: objs/exec/plaunch_brace.d + deleted: objs/exec/plaunch_builtin.d + deleted: objs/exec/plaunch_case.d + deleted: objs/exec/plaunch_empty.d + deleted: objs/exec/plaunch_file.d + deleted: objs/exec/plaunch_for.d + deleted: objs/exec/plaunch_function.d + deleted: objs/exec/plaunch_if.d + deleted: objs/exec/plaunch_subshell.d + deleted: objs/exec/plaunch_until.d + deleted: objs/exec/plaunch_while.d + deleted: objs/exec/process_launch.d + deleted: objs/exec/process_redirect.d + deleted: objs/exec/process_resetfds.d + deleted: objs/exec/process_set.d + deleted: objs/exec/process_setgroup.d + deleted: objs/exec/process_setsig.d + deleted: objs/exec/pset_brace.d + deleted: objs/exec/pset_case.d + deleted: objs/exec/pset_cmd.d + deleted: objs/exec/pset_for.d + deleted: objs/exec/pset_if.d + deleted: objs/exec/pset_subshell.d + deleted: objs/exec/pset_until.d + deleted: objs/exec/pset_while.d + deleted: objs/exec/redir_copy.d + deleted: objs/exec/redir_free.d + deleted: objs/exec/redirect_dgreat.d + deleted: objs/exec/redirect_dless.d + deleted: objs/exec/redirect_great.d + deleted: objs/exec/redirect_greatand.d + deleted: objs/exec/redirect_less.d + deleted: objs/exec/redirect_lessand.d + deleted: objs/exec/set_exitstatus.d + deleted: objs/exec/token_to_argv.d + deleted: objs/glob/command_getoutput.d + deleted: objs/glob/dir_glob.d + deleted: objs/glob/esc_print.d + deleted: objs/glob/expand_bquote.d + deleted: objs/glob/expand_brace.d + deleted: objs/glob/expand_esc.d + deleted: objs/glob/expand_home.d + deleted: objs/glob/expand_var.d + deleted: objs/glob/ft_strsplit_esc.d + deleted: objs/glob/ft_strsplit_spe.d + deleted: objs/glob/gen_tab_esc.d + deleted: objs/glob/glob.d + deleted: objs/glob/is_char_esc.d + deleted: objs/glob/lib_perso/ft_ld_back.d + deleted: objs/glob/lib_perso/ft_ld_clear.d + deleted: objs/glob/lib_perso/ft_ld_copy.d + deleted: objs/glob/lib_perso/ft_ld_del.d + deleted: objs/glob/lib_perso/ft_ld_front.d + deleted: objs/glob/lib_perso/ft_ld_new.d + deleted: objs/glob/lib_perso/ft_ld_order.d + deleted: objs/glob/lib_perso/ft_ld_pushback.d + deleted: objs/glob/lib_perso/ft_ld_pushfront.d + deleted: objs/glob/lib_perso/ft_ld_reverse.d + deleted: objs/glob/lib_perso/ft_ld_size.d + deleted: objs/glob/lib_perso/ft_ld_swap.d + deleted: objs/glob/lib_perso/ft_ld_to_tab.d + deleted: objs/glob/lib_perso/ft_memrealloc.d + deleted: objs/glob/lib_perso/ft_strjoinf.d + deleted: objs/glob/lib_perso/ft_strsubf.d + deleted: objs/glob/lib_perso/ft_tabdel.d + deleted: objs/glob/lib_perso/ft_tablen.d + deleted: objs/glob/match_pattern.d + deleted: objs/glob/tab_esc_copy.d + deleted: objs/glob/word_is_assignment.d + deleted: objs/hash_table/ft_add_hash.d + deleted: objs/hash_table/hash.d + deleted: objs/hash_table/hash_free.d + deleted: objs/hash_table/hash_str.d + deleted: objs/hash_table/is_hash.d + deleted: objs/history/add_str_in_history.d + deleted: objs/history/history.d + deleted: objs/history/history_parsing.d + deleted: objs/history/history_parsing_toolz.d + deleted: objs/history/history_parsing_toolz_2.d + deleted: objs/history/list_toolz.d + deleted: objs/history/surch_in_history.d + deleted: objs/job_control/builtin_bg.d + deleted: objs/job_control/builtin_fg.d + deleted: objs/job_control/builtin_jobs.d + deleted: objs/job_control/do_job_notification.d + deleted: objs/job_control/has_running_job.d + deleted: objs/job_control/has_stopped_job.d + deleted: objs/job_control/job_addprocess.d + deleted: objs/job_control/job_cmp_id.d + deleted: objs/job_control/job_format.d + deleted: objs/job_control/job_format_head.d + deleted: objs/job_control/job_free.d + deleted: objs/job_control/job_getprocess.d + deleted: objs/job_control/job_getrank.d + deleted: objs/job_control/job_hup_all.d + deleted: objs/job_control/job_is_completed.d + deleted: objs/job_control/job_is_stopped.d + deleted: objs/job_control/job_notify_change.d + deleted: objs/job_control/job_notify_new.d + deleted: objs/job_control/job_remove.d + deleted: objs/job_control/job_run.d + deleted: objs/job_control/job_update_id.d + deleted: objs/job_control/job_update_status.d + deleted: objs/job_control/job_wait.d + deleted: objs/job_control/mark_job_as_running.d + deleted: objs/job_control/pprint_brace.d + deleted: objs/job_control/pprint_case.d + deleted: objs/job_control/pprint_cmd.d + deleted: objs/job_control/pprint_for.d + deleted: objs/job_control/pprint_function.d + deleted: objs/job_control/pprint_if.d + deleted: objs/job_control/pprint_subshell.d + deleted: objs/job_control/pprint_until.d + deleted: objs/job_control/pprint_while.d + deleted: objs/job_control/process_cmp_pid.d + deleted: objs/job_control/process_format.d + deleted: objs/job_control/process_free.d + deleted: objs/job_control/put_job_in_background.d + deleted: objs/job_control/put_job_in_foreground.d + deleted: objs/job_control/sigchld_handler.d + deleted: objs/job_control/sigint_handler.d + deleted: objs/job_control/sigtstp_handler.d + deleted: objs/job_control/sigttin_handler.d + deleted: objs/job_control/sigttou_handler.d + deleted: objs/lexer/do_lexer_routine.d + deleted: objs/lexer/get_lexer_stack.d + deleted: objs/lexer/get_reserved_words.d + deleted: objs/lexer/get_state_global.d + deleted: objs/lexer/get_state_redir.d + deleted: objs/lexer/insert_newline.d + deleted: objs/lexer/isrw_delim.d + deleted: objs/lexer/keep_last_type.d + deleted: objs/lexer/lexer_backslash.d + deleted: objs/lexer/lexer_bquote.d + deleted: objs/lexer/lexer_curly_braces.d + deleted: objs/lexer/lexer_default.d + deleted: objs/lexer/lexer_delim.d + deleted: objs/lexer/lexer_destroy.d + deleted: objs/lexer/lexer_dquote.d + deleted: objs/lexer/lexer_end.d + deleted: objs/lexer/lexer_great.d + deleted: objs/lexer/lexer_heredoc.d + deleted: objs/lexer/lexer_init.d + deleted: objs/lexer/lexer_less.d + deleted: objs/lexer/lexer_lex.d + deleted: objs/lexer/lexer_newline.d + deleted: objs/lexer/lexer_number.d + deleted: objs/lexer/lexer_paren.d + deleted: objs/lexer/lexer_quote.d + deleted: objs/lexer/lexer_sep.d + deleted: objs/lexer/lexer_word.d + deleted: objs/lexer/token_append.d + deleted: objs/lexer/token_cmp_type.d + deleted: objs/lexer/token_free.d + deleted: objs/lexer/token_init.d + deleted: objs/lexer/token_print.d + deleted: objs/line_editing/completion.d + deleted: objs/line_editing/control_features.d + deleted: objs/line_editing/copy_cut_paste.d + deleted: objs/line_editing/ft_prompt.d + deleted: objs/line_editing/get_key.d + deleted: objs/line_editing/home_end.d + deleted: objs/line_editing/init_history.d + deleted: objs/line_editing/init_line.d + deleted: objs/line_editing/init_termcaps.d + deleted: objs/line_editing/lib_line_editing/ft_nb_line.d + deleted: objs/line_editing/lib_line_editing/tool_line.d + deleted: objs/line_editing/lib_line_editing/tool_line_2.d + deleted: objs/line_editing/lib_line_editing/toolz.d + deleted: objs/line_editing/lib_line_editing/toolz2.d + deleted: objs/line_editing/lib_line_editing/toolz_parseur.d + deleted: objs/line_editing/lib_line_editing/toolz_termcaps.d + deleted: objs/line_editing/move_left_and_right.d + deleted: objs/line_editing/move_to_word.d + deleted: objs/line_editing/move_up_and_down.d + deleted: objs/line_editing/print_and_del.d + deleted: objs/line_editing/queue.d + deleted: objs/line_editing/readline.d + deleted: objs/line_editing/resize.d + deleted: objs/main/data_exit.d + deleted: objs/main/data_init.d + deleted: objs/main/data_singleton.d + deleted: objs/main/ft_putast.d + deleted: objs/main/main.d + deleted: objs/main/shell_init.d + deleted: objs/parser/add_bang.d + deleted: objs/parser/add_case.d + deleted: objs/parser/add_cmd.d + deleted: objs/parser/add_condition.d + deleted: objs/parser/add_func.d + deleted: objs/parser/add_loop.d + deleted: objs/parser/add_number.d + deleted: objs/parser/add_redir.d + deleted: objs/parser/add_sep.d + deleted: objs/parser/add_subshell.d + deleted: objs/parser/aggregate_sym.d + deleted: objs/parser/build_tree.d + deleted: objs/parser/do_parser_routine.d + deleted: objs/parser/error_syntax.d + deleted: objs/parser/eval_sym.d + deleted: objs/parser/ft_parse.d + deleted: objs/parser/heredoc_parser.d + deleted: objs/parser/parser_destroy.d + deleted: objs/parser/parser_init.d + deleted: objs/parser/pop_stack.d + deleted: objs/parser/produce_sym.d + deleted: objs/parser/push_stack.d + deleted: objs/parser/read_stack.d + deleted: objs/parser/redir_init.d + deleted: objs/parser/stack_init.d + deleted: objs/parser/sym_free.d + deleted: objs/parser/tree_func_free.d + deleted: objs/parser/tree_wrapper.d + modified: src/parser/add_bang.c + modified: src/parser/add_case.c + modified: src/parser/add_condition.c + modified: src/parser/add_loop.c + modified: src/parser/add_number.c + modified: src/parser/add_sep.c + modified: src/parser/add_subshell.c + +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: log + diff --git a/42sh/src/exec/plaunch_for.c b/42sh/src/exec/plaunch_for.c index 37772296..30c28c9e 100644 --- a/42sh/src/exec/plaunch_for.c +++ b/42sh/src/exec/plaunch_for.c @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/15 00:49:20 by wescande #+# #+# */ -/* Updated: 2017/03/21 00:51:01 by wescande ### ########.fr */ +/* Updated: 2017/03/22 15:51:04 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,18 +23,15 @@ int plaunch_for(t_process *p) var = ((char **)temp->content)[0]; if (!word_is_assignment(temp->content)) return (error_badidentifier(var)); - temp = temp->next; - while (temp) + i = 0; + av = token_to_argv(temp, 1); + while (av[++i]) { - i = -1; - av = token_to_argv(temp, 1); - while (av[++i]) - { - builtin_setenv("setenv", (char*[]){"local", var, av[i], 0}, - NULL); - ft_exec(&p->data.d_for.content); - } - temp = temp->next; + builtin_setenv("setenv", (char*[]){"local", var, av[i], 0}, + NULL); + ft_exec(&p->data.d_for.content); } + ft_tabdel(&av); + sleep(10); return (0); } From cd9657faea14bf5fe0019bee80c3bc60e6b765b7 Mon Sep 17 00:00:00 2001 From: gwojda Date: Wed, 22 Mar 2017 16:02:37 +0100 Subject: [PATCH 4/5] fin fix completion --- 42sh/src/completion/c_find_files.c | 2 +- 42sh/src/completion/c_match.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/42sh/src/completion/c_find_files.c b/42sh/src/completion/c_find_files.c index bc621a50..6052b698 100644 --- a/42sh/src/completion/c_find_files.c +++ b/42sh/src/completion/c_find_files.c @@ -6,7 +6,7 @@ /* By: alao +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 13:31:21 by alao #+# #+# */ -/* Updated: 2017/03/22 12:57:02 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 16:02:18 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/completion/c_match.c b/42sh/src/completion/c_match.c index 07391a64..3c9b3a0f 100644 --- a/42sh/src/completion/c_match.c +++ b/42sh/src/completion/c_match.c @@ -6,7 +6,7 @@ /* By: alao +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/10/15 13:27:14 by alao #+# #+# */ -/* Updated: 2017/03/22 15:49:09 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 16:02:25 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,11 +70,11 @@ int c_matching(t_data *s, t_comp *c) char *current_word; current_word = c_current_words(); - if (ft_strchr(c->rcmd, '/')) + if (ft_strchr(current_word, '/')) c_seek_abs_path(c, current_word); - else if (ft_strchr(c->rcmd, '$')) + else if (ft_strchr(current_word, '$')) c_seek_env(c, current_word); - else if (c->rcmd[0] != '.' && !(ft_strchr(c->rcmd, ' '))) + else if (current_word[0] != '.' && !(ft_strchr(c->rcmd, ' '))) c_seek_binary(s, c); else c_seek_files(s, c, current_word); From c014815d73cb6f2e169353669a2d5d56531379e9 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Wed, 22 Mar 2017 16:11:48 +0100 Subject: [PATCH 5/5] close #148 --- 42sh/src/parser/eval_sym.c | 2 +- 42sh/src/parser/produce_sym.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index f3f95ca1..458e17c9 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/11 16:11:21 by ariard #+# #+# */ -/* Updated: 2017/03/18 15:51:55 by ariard ### ########.fr */ +/* Updated: 2017/03/22 16:11:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 62465821..9027522a 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/17 18:09:37 by ariard ### ########.fr */ +/* Updated: 2017/03/22 16:10:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,6 @@ 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_RBRACE, CMD_NAME}, {TK_WORD, TK_IF, CMD_NAME}, {TK_WORD, TK_THEN, CMD_NAME}, @@ -69,9 +68,16 @@ t_prodmatch g_prodmatch[] = {TK_ASSIGNMENT_WORD, TK_ELIF, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, TK_ELSE, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, NEWLINE_LIST, CMD_PREFIX}, - {TK_ASSIGNMENT_WORD, CMD_NAME, CMD_SUFFIX}, - {TK_ASSIGNMENT_WORD, CMD_SUPERIOR, CMD_SUFFIX}, - {TK_ASSIGNMENT_WORD, PIPE_SEMI_SEQUENCE, CMD_SUFFIX}, + {TK_ASSIGNMENT_WORD, CMD_NAME, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, CMD_SUPERIOR, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, COMPOUND_LIST, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, COMPLETE_CONDITION, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, CONDITION, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, AND_OR, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, AND_OR_MAJOR, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, PIPE_SEMI_SEQUENCE, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, SEQUENCE, CMD_PREFIX}, + {TK_ASSIGNMENT_WORD, COMPLETE_COMMANDS, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, CMD_WORD, CMD_SUFFIX}, {TK_NAME, TK_BANG, FNAME}, {TK_NAME, LINEBREAK, FNAME},