merge
This commit is contained in:
commit
a4ec2bd9bc
40 changed files with 253 additions and 170 deletions
|
|
@ -6,14 +6,14 @@
|
||||||
# By: wescande <wescande@student.42.fr> +#+ +:+ +#+ #
|
# By: wescande <wescande@student.42.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2016/08/29 21:32:58 by wescande #+# #+# #
|
# Created: 2016/08/29 21:32:58 by wescande #+# #+# #
|
||||||
# Updated: 2017/03/23 03:25:35 by wescande ### ########.fr #
|
# Updated: 2017/03/23 16:37:26 by gwojda ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
NAME = 42sh
|
NAME = 42sh
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
FLAGS = -Wall -Wextra -Werror #-fvisibility=hidden #-fsanitize=address
|
FLAGS = -Wall -Wextra -Werror -fvisibility=hidden -fsanitize=address
|
||||||
D_FLAGS = -g
|
D_FLAGS = -g
|
||||||
|
|
||||||
DELTA = $$(echo "$$(tput cols)-47"|bc)
|
DELTA = $$(echo "$$(tput cols)-47"|bc)
|
||||||
|
|
@ -72,6 +72,7 @@ exec/exec_bang.c\
|
||||||
exec/exec_case_branch.c\
|
exec/exec_case_branch.c\
|
||||||
exec/exec_elif.c\
|
exec/exec_elif.c\
|
||||||
exec/exec_else.c\
|
exec/exec_else.c\
|
||||||
|
exec/exec_func.c\
|
||||||
exec/exec_leaf.c\
|
exec/exec_leaf.c\
|
||||||
exec/exec_or_if.c\
|
exec/exec_or_if.c\
|
||||||
exec/exec_pipe.c\
|
exec/exec_pipe.c\
|
||||||
|
|
@ -214,6 +215,7 @@ job_control/sigttin_handler.c\
|
||||||
job_control/sigttou_handler.c\
|
job_control/sigttou_handler.c\
|
||||||
lexer/do_lexer_routine.c\
|
lexer/do_lexer_routine.c\
|
||||||
lexer/get_lexer_stack.c\
|
lexer/get_lexer_stack.c\
|
||||||
|
lexer/get_lexer_stack2.c\
|
||||||
lexer/get_reserved_words.c\
|
lexer/get_reserved_words.c\
|
||||||
lexer/get_state_global.c\
|
lexer/get_state_global.c\
|
||||||
lexer/get_state_redir.c\
|
lexer/get_state_redir.c\
|
||||||
|
|
|
||||||
1
42sh/file
Normal file
1
42sh/file
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
YOLO
|
||||||
1
42sh/file1
Normal file
1
42sh/file1
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
nous
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/02/18 11:13:04 by alao #+# #+# */
|
/* Created: 2016/02/18 11:13:04 by alao #+# #+# */
|
||||||
/* Updated: 2017/03/22 18:19:43 by alao ### ########.fr */
|
/* Updated: 2017/03/23 15:41:32 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -186,5 +186,6 @@ int c_exclusion_folder(t_comp *c);
|
||||||
int ft_sstrlen(char **s);
|
int ft_sstrlen(char **s);
|
||||||
char *ft_sstrtostr(char **s, char *sep);
|
char *ft_sstrtostr(char **s, char *sep);
|
||||||
char *ft_add_escape(char *str, char to_escape);
|
char *ft_add_escape(char *str, char to_escape);
|
||||||
|
void c_lst_id(t_comp *c);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */
|
/* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/22 16:35:00 by jhalford ### ########.fr */
|
/* Updated: 2017/03/23 16:27:10 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -227,5 +227,6 @@ int exec_var(t_btree **ast);
|
||||||
int exec_case_branch(t_btree **ast);
|
int exec_case_branch(t_btree **ast);
|
||||||
int exec_math(t_btree **ast);
|
int exec_math(t_btree **ast);
|
||||||
int exec_bang(t_btree **ast);
|
int exec_bang(t_btree **ast);
|
||||||
|
int exec_func(t_btree **ast);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */
|
/* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/23 11:45:05 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:16:57 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -88,7 +88,14 @@ typedef struct s_key
|
||||||
int (*f)(char **str, size_t *pos);
|
int (*f)(char **str, size_t *pos);
|
||||||
} t_key;
|
} t_key;
|
||||||
|
|
||||||
|
typedef struct s_cpy
|
||||||
|
{
|
||||||
|
int value;
|
||||||
|
int (*f)(char **str, size_t *pos, size_t pos_ref);
|
||||||
|
} t_cpy;
|
||||||
|
|
||||||
extern t_key g_keys[];
|
extern t_key g_keys[];
|
||||||
|
extern t_cpy g_cpy[];
|
||||||
|
|
||||||
void ft_reset_tab(char *tabl);
|
void ft_reset_tab(char *tabl);
|
||||||
void ft_putnc(char c, int n);
|
void ft_putnc(char c, int n);
|
||||||
|
|
@ -130,13 +137,13 @@ size_t ft_hist_len(void);
|
||||||
|
|
||||||
int underline_right(char **str, size_t *pos, size_t pos_ref);
|
int underline_right(char **str, size_t *pos, size_t pos_ref);
|
||||||
int underline_left(char **str, size_t *pos, size_t pos_ref);
|
int underline_left(char **str, size_t *pos, size_t pos_ref);
|
||||||
void underline_home(char **str, size_t *pos, size_t pos_ref);
|
int underline_home(char **str, size_t *pos, size_t pos_ref);
|
||||||
void underline_end(char **str, size_t *pos, size_t pos_ref);
|
int underline_end(char **str, size_t *pos, size_t pos_ref);
|
||||||
|
int underline_down(char **str, size_t *pos, size_t pos_ref);
|
||||||
|
int underline_up(char **str, size_t *pos, size_t pos_ref);
|
||||||
void underline_check_end_of_line(char *str, size_t pos);
|
void underline_check_end_of_line(char *str, size_t pos);
|
||||||
void reset_term(char **str, size_t *pos);
|
void reset_term(char **str, size_t *pos);
|
||||||
void reset_and_remove_term(char **str, size_t *pos, char *copy_tmp);
|
void reset_and_remove_term(char **str, size_t *pos, char *copy_tmp);
|
||||||
void underline_down(char **str, size_t *pos, size_t pos_ref);
|
|
||||||
void underline_up(char **str, size_t *pos, size_t pos_ref);
|
|
||||||
|
|
||||||
int ft_read_stdin(char **input);
|
int ft_read_stdin(char **input);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@
|
||||||
/* ::: :::::::: */
|
/* ::: :::::::: */
|
||||||
/* job_control.h :+: :+: :+: */
|
/* job_control.h :+: :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */
|
/* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/22 17:24:08 by jhalford ### ########.fr */
|
/* Updated: 2017/03/23 16:13:56 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */
|
/* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/22 22:07:49 by wescande ### ########.fr */
|
/* Updated: 2017/03/23 15:18:36 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -85,6 +85,7 @@ char *stack_to_prompt(t_list *stack);
|
||||||
t_lexstate get_state_global(t_lexer *lexer);
|
t_lexstate get_state_global(t_lexer *lexer);
|
||||||
t_lexstate get_state_redir(t_lexer *lexer);
|
t_lexstate get_state_redir(t_lexer *lexer);
|
||||||
int get_lexer_stack(t_lexer lexer);
|
int get_lexer_stack(t_lexer lexer);
|
||||||
|
int get_lexer_stack2(t_lexer lexer);
|
||||||
int get_reserved_words(t_list *temp);
|
int get_reserved_words(t_list *temp);
|
||||||
int isrw_delim(t_type type);
|
int isrw_delim(t_type type);
|
||||||
int keep_last_type(t_type *type, t_list *token);
|
int keep_last_type(t_type *type, t_list *token);
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
# By: jhalford <jack@crans.org> +#+ +:+ +#+ #
|
# By: jhalford <jack@crans.org> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2017/02/07 16:09:36 by jhalford #+# #+# #
|
# Created: 2017/02/07 16:09:36 by jhalford #+# #+# #
|
||||||
# Updated: 2017/03/21 12:25:27 by gwojda ### ########.fr #
|
# Updated: 2017/03/23 16:38:05 by gwojda ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@ RM = /bin/rm -rf
|
||||||
|
|
||||||
W_FLAGS = -Wall -Wextra -Werror -g
|
W_FLAGS = -Wall -Wextra -Werror -g
|
||||||
D_FLAGS = -g
|
D_FLAGS = -g
|
||||||
V_FLAGS = #-fvisibility=hidden
|
V_FLAGS = -fvisibility=hidden
|
||||||
FLAGS = $(W_FLAGS) $(D_FLAGS) $(V_FLAGS)
|
FLAGS = $(W_FLAGS) $(D_FLAGS) $(V_FLAGS)
|
||||||
|
|
||||||
DELTA = $$(echo "$$(tput cols)-47"|bc)
|
DELTA = $$(echo "$$(tput cols)-47"|bc)
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@
|
||||||
/* ::: :::::::: */
|
/* ::: :::::::: */
|
||||||
/* ft_sstrsort.c :+: :+: :+: */
|
/* ft_sstrsort.c :+: :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/03 18:03:37 by jhalford #+# #+# */
|
/* Created: 2016/11/03 18:03:37 by jhalford #+# #+# */
|
||||||
/* Updated: 2016/11/23 14:46:54 by jhalford ### ########.fr */
|
/* Updated: 2017/03/23 14:40:25 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/17 18:54:00 by ariard #+# #+# */
|
/* Created: 2017/03/17 18:54:00 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/23 01:08:14 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 15:06:18 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,8 +25,6 @@ static char *do_math(char *value, char operator, char *operand)
|
||||||
|
|
||||||
ope1 = ft_atoi(value);
|
ope1 = ft_atoi(value);
|
||||||
ope2 = ft_atoi(operand);
|
ope2 = ft_atoi(operand);
|
||||||
DG("value %s -> %li", value, ope1);
|
|
||||||
DG("operand %s -> %li", operand, ope2);
|
|
||||||
if ((operator == '/') && ope2 == 0)
|
if ((operator == '/') && ope2 == 0)
|
||||||
return (SH_ERR(MATHERR_4) ? NULL : NULL);
|
return (SH_ERR(MATHERR_4) ? NULL : NULL);
|
||||||
if ((operator == '%') && ope2 == 0)
|
if ((operator == '%') && ope2 == 0)
|
||||||
|
|
@ -36,7 +34,6 @@ static char *do_math(char *value, char operator, char *operand)
|
||||||
ope1 = (operator == '/') ? ope1 / ope2 : ope1;
|
ope1 = (operator == '/') ? ope1 / ope2 : ope1;
|
||||||
ope1 = (operator == '*') ? ope1 * ope2 : ope1;
|
ope1 = (operator == '*') ? ope1 * ope2 : ope1;
|
||||||
ope1 = (operator == '%') ? ope1 % ope2 : ope1;
|
ope1 = (operator == '%') ? ope1 % ope2 : ope1;
|
||||||
DG("output=%s (%li)", ft_itoa(ope1), ope1);
|
|
||||||
return (ft_itoa(ope1));
|
return (ft_itoa(ope1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -48,8 +45,10 @@ int builtin_math(const char *path, char *const av[], char *const envp[])
|
||||||
|
|
||||||
(void)path;
|
(void)path;
|
||||||
(void)envp;
|
(void)envp;
|
||||||
if (!av || !av[1] || !av[2] || !av[3] || av[4])
|
DG();
|
||||||
|
if (!av || !av[0] || !av[1] || !av[2] || !av[3] || av[4])
|
||||||
return (SH_ERR(MATHERR_0));
|
return (SH_ERR(MATHERR_0));
|
||||||
|
DG();
|
||||||
value = ft_getenv(data_singleton()->local_var, av[1]);
|
value = ft_getenv(data_singleton()->local_var, av[1]);
|
||||||
operator = av[2][0];
|
operator = av[2][0];
|
||||||
if (!(ft_strchr("+-/*%", operator)))
|
if (!(ft_strchr("+-/*%", operator)))
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/09 16:54:59 by gwojda #+# #+# */
|
/* Created: 2017/03/09 16:54:59 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/22 20:25:19 by alao ### ########.fr */
|
/* Updated: 2017/03/23 15:42:37 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -37,4 +37,5 @@ void c_seek_abs_path(t_comp *c, char *current_word)
|
||||||
c_parser(c, c->cpath, c->match);
|
c_parser(c, c->cpath, c->match);
|
||||||
if (c->lst == NULL || c->lst == c->lst->prev)
|
if (c->lst == NULL || c->lst == c->lst->prev)
|
||||||
c_exclusion_folder(c);
|
c_exclusion_folder(c);
|
||||||
|
c_lst_id(c);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/09 13:30:57 by alao #+# #+# */
|
/* Created: 2017/01/09 13:30:57 by alao #+# #+# */
|
||||||
/* Updated: 2017/03/16 08:28:03 by alao ### ########.fr */
|
/* Updated: 2017/03/23 15:41:12 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -35,5 +35,6 @@ int c_seek_binary(t_data *s, t_comp *c)
|
||||||
c_parser(c, paths[i++], c->rcmd);
|
c_parser(c, paths[i++], c->rcmd);
|
||||||
tmp ? ft_memdel((void *)&tmp) : (0);
|
tmp ? ft_memdel((void *)&tmp) : (0);
|
||||||
paths ? ft_sstrfree(paths) : (0);
|
paths ? ft_sstrfree(paths) : (0);
|
||||||
|
c_lst_id(c);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/09 15:50:24 by gwojda #+# #+# */
|
/* Created: 2017/03/09 15:50:24 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/22 12:29:40 by alao ### ########.fr */
|
/* Updated: 2017/03/23 15:41:19 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -50,5 +50,6 @@ int c_seek_env(t_comp *c, char *current_word)
|
||||||
c_addnode(c, ft_strndup(env[i], ft_strchr(env[i], '=') - env[i]));
|
c_addnode(c, ft_strndup(env[i], ft_strchr(env[i], '=') - env[i]));
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
c_lst_id(c);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/09 13:31:21 by alao #+# #+# */
|
/* Created: 2017/01/09 13:31:21 by alao #+# #+# */
|
||||||
/* Updated: 2017/03/22 16:02:18 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 15:42:46 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -105,5 +105,6 @@ int c_seek_files(t_data *s, t_comp *c, char *current_word)
|
||||||
if (c->match && ft_strequ(c->match, c->lst->name))
|
if (c->match && ft_strequ(c->match, c->lst->name))
|
||||||
c_exclusion_folder(c);
|
c_exclusion_folder(c);
|
||||||
}
|
}
|
||||||
|
c_lst_id(c);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/16 22:17:10 by alao #+# #+# */
|
/* Created: 2017/02/16 22:17:10 by alao #+# #+# */
|
||||||
/* Updated: 2017/03/22 18:23:04 by alao ### ########.fr */
|
/* Updated: 2017/03/23 16:11:29 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,33 +6,63 @@
|
||||||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/09 13:52:07 by alao #+# #+# */
|
/* Created: 2017/01/09 13:52:07 by alao #+# #+# */
|
||||||
/* Updated: 2017/03/21 14:46:39 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:12:05 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "completion.h"
|
#include "completion.h"
|
||||||
|
|
||||||
|
void c_lst_id(t_comp *c)
|
||||||
|
{
|
||||||
|
t_clst *lst;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
lst = c->lst;
|
||||||
|
if (!lst)
|
||||||
|
return ;
|
||||||
|
lst->cursor = 1;
|
||||||
|
if (!lst)
|
||||||
|
return ;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
lst->id = i;
|
||||||
|
lst = lst->next;
|
||||||
|
++i;
|
||||||
|
if (lst == c->lst)
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Add the matching element to the list
|
** Add the matching element to the list
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void c_add_to_lst(t_comp *c, t_clst *node)
|
void c_add_to_lst(t_comp *c, t_clst *node)
|
||||||
{
|
{
|
||||||
|
t_clst *lst;
|
||||||
|
|
||||||
|
lst = c->lst;
|
||||||
if (c->lst == NULL)
|
if (c->lst == NULL)
|
||||||
{
|
{
|
||||||
c->lst = node;
|
c->lst = node;
|
||||||
node->next = node;
|
node->next = node;
|
||||||
node->prev = node;
|
node->prev = node;
|
||||||
node->cursor = 1;
|
|
||||||
node->id = 1;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
node->id = c->lst->prev->id + 1;
|
while (ft_strcmp(lst->name, node->name) < 0)
|
||||||
c->lst->prev->next = node;
|
{
|
||||||
node->prev = c->lst->prev;
|
lst = lst->next;
|
||||||
node->next = c->lst;
|
if (lst == c->lst)
|
||||||
c->lst->prev = node;
|
break ;
|
||||||
|
}
|
||||||
|
lst->prev->next = node;
|
||||||
|
node->prev = lst->prev;
|
||||||
|
node->next = lst;
|
||||||
|
lst->prev = node;
|
||||||
|
if (lst == c->lst && ft_strcmp(lst->name, node->name) > 0)
|
||||||
|
c->lst = node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
56
42sh/src/exec/exec_func.c
Normal file
56
42sh/src/exec/exec_func.c
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* exec_func.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/03/23 16:25:23 by ariard #+# #+# */
|
||||||
|
/* Updated: 2017/03/23 16:27:57 by ariard ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
t_list *is_already_func(t_btree **new)
|
||||||
|
{
|
||||||
|
t_list *tmp;
|
||||||
|
t_btree **ast;
|
||||||
|
char **new_name;
|
||||||
|
char **old_name;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
tmp = data_singleton()->lst_func;
|
||||||
|
new_name = token_to_argv(((t_astnode *)(*new)->item)->data.cmd.token, 1);
|
||||||
|
ret = 1;
|
||||||
|
while (tmp && ret)
|
||||||
|
{
|
||||||
|
if ((ast = tmp->content) && !*ast)
|
||||||
|
break ;
|
||||||
|
old_name = token_to_argv(((t_astnode *)
|
||||||
|
(*ast)->item)->data.cmd.token, 1);
|
||||||
|
ret = (new_name && new_name[0] && old_name && old_name[0]
|
||||||
|
&& !ft_strcmp(new_name[0], old_name[0])) ? 0 : 1;
|
||||||
|
ft_tabdel(&old_name);
|
||||||
|
tmp = (ret) ? tmp->next : tmp;
|
||||||
|
}
|
||||||
|
ft_tabdel(&new_name);
|
||||||
|
if (!ret)
|
||||||
|
return (tmp);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
int exec_func(t_btree **ast)
|
||||||
|
{
|
||||||
|
t_btree *func_ast;
|
||||||
|
t_list *old_func;
|
||||||
|
|
||||||
|
func_ast = btree_map(*ast, &node_copy);
|
||||||
|
if ((old_func = is_already_func(&func_ast)))
|
||||||
|
{
|
||||||
|
ft_lst_delif(&data_singleton()->lst_func,
|
||||||
|
old_func->content, &ft_addrcmp, &tree_func_free);
|
||||||
|
}
|
||||||
|
ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(&func_ast, sizeof(*ast)));
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */
|
/* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/22 19:52:58 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:25:01 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -32,6 +32,7 @@ t_itof g_execmap[] =
|
||||||
{SUBSHELL, &exec_leaf},
|
{SUBSHELL, &exec_leaf},
|
||||||
{TK_LBRACE, &exec_leaf},
|
{TK_LBRACE, &exec_leaf},
|
||||||
{TK_BANG, &exec_bang},
|
{TK_BANG, &exec_bang},
|
||||||
|
{FNAME, &exec_func},
|
||||||
{CMD, &exec_leaf},
|
{CMD, &exec_leaf},
|
||||||
{0, 0},
|
{0, 0},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/08 03:38:36 by wescande #+# #+# */
|
/* Created: 2017/03/08 03:38:36 by wescande #+# #+# */
|
||||||
/* Updated: 2017/03/22 21:50:06 by jhalford ### ########.fr */
|
/* Updated: 2017/03/23 16:28:41 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,13 +25,7 @@ void *node_copy(void *data)
|
||||||
new->full = old->full;
|
new->full = old->full;
|
||||||
new->type = old->type;
|
new->type = old->type;
|
||||||
new->pattern = old->pattern;
|
new->pattern = old->pattern;
|
||||||
if (old->type == CMD || old->type == TK_ASSIGNMENT_WORD)
|
|
||||||
{
|
|
||||||
new->data.cmd.redir = ft_lstmap(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);
|
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 || old->type == FNAME)
|
|
||||||
new->data.cmd.token = ft_ld_copy(old->data.cmd.token, &tab_esc_copy);
|
|
||||||
return (new);
|
return (new);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/08 03:23:59 by wescande #+# #+# */
|
/* Created: 2017/03/08 03:23:59 by wescande #+# #+# */
|
||||||
/* Updated: 2017/03/23 06:19:00 by wescande ### ########.fr */
|
/* Updated: 2017/03/23 15:06:30 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -17,24 +17,14 @@
|
||||||
|
|
||||||
int plaunch_function(t_process *p)
|
int plaunch_function(t_process *p)
|
||||||
{
|
{
|
||||||
static int protection= 0;
|
static int protection;
|
||||||
/* char *val; */
|
|
||||||
|
|
||||||
/* if (ft_atoi(ft_getenv(data_singleton()->env, "FUNC_LVL")) > FUNC_LVL) */
|
|
||||||
/* return(SH_ERR(FUNCERR_0)); */
|
|
||||||
|
|
||||||
|
if (!protection)
|
||||||
|
protection = 0;
|
||||||
if (protection >= FUNC_LVL)
|
if (protection >= FUNC_LVL)
|
||||||
return(SH_ERR(FUNCERR_0));
|
return(SH_ERR(FUNCERR_0));
|
||||||
protection++;
|
protection++;
|
||||||
|
|
||||||
// jack faut qu on parle
|
|
||||||
/* val = ft_itoa(ft_atoi(ft_getenv(data_singleton()->env, "FUNC_LVL")) + 1); */
|
|
||||||
/* builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL", val, NULL}, NULL); */
|
|
||||||
/* ft_strdel(&val); */
|
|
||||||
ft_exec(&p->data.function.content);
|
ft_exec(&p->data.function.content);
|
||||||
/* val = ft_itoa(ft_atoi(ft_getenv(data_singleton()->env, "FUNC_LVL")) - 1); */
|
|
||||||
/* builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL", val, NULL}, NULL); */
|
|
||||||
/* ft_strdel(&val); */
|
|
||||||
protection--;
|
protection--;
|
||||||
return (ft_atoi(ft_getenv(data_singleton()->env, "?")));
|
return (ft_atoi(ft_getenv(data_singleton()->env, "?")));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */
|
/* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/21 17:40:35 by jhalford ### ########.fr */
|
/* Updated: 2017/03/23 16:06:39 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -37,6 +37,7 @@ int process_redirect(t_process *p)
|
||||||
while (redirs)
|
while (redirs)
|
||||||
{
|
{
|
||||||
redir = redirs->content;
|
redir = redirs->content;
|
||||||
|
DG("redir type is %s", read_state(redir->type));
|
||||||
if (redir->n > 9)
|
if (redir->n > 9)
|
||||||
return (bad_fd(redir->n));
|
return (bad_fd(redir->n));
|
||||||
i = -1;
|
i = -1;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/20 12:41:54 by jhalford #+# #+# */
|
/* Created: 2017/03/20 12:41:54 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/23 06:29:11 by wescande ### ########.fr */
|
/* Updated: 2017/03/23 14:48:58 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
20
42sh/src/lexer/get_lexer_stack2.c
Normal file
20
42sh/src/lexer/get_lexer_stack2.c
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* get_lexer_stack2.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/03/23 15:15:46 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/03/23 16:12:26 by gwojda ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int get_lexer_stack2(t_lexer lexer)
|
||||||
|
{
|
||||||
|
if (!(lexer.stack && lexer.stack->next))
|
||||||
|
return (0);
|
||||||
|
return (*(int*)lexer.stack->next->content);
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */
|
/* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/23 03:41:34 by wescande ### ########.fr */
|
/* Updated: 2017/03/23 15:17:27 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -36,7 +36,8 @@ int lexer_bquote(t_list **alst, t_lexer *lexer)
|
||||||
if (lexer->str[lexer->pos] == 0)
|
if (lexer->str[lexer->pos] == 0)
|
||||||
return (push(&lexer->stack, BACKSLASH) ? 0 : 0);
|
return (push(&lexer->stack, BACKSLASH) ? 0 : 0);
|
||||||
}
|
}
|
||||||
token_append(token, lexer, back || token->type == TK_ASSIGNMENT_WORD, back);
|
token_append(token, lexer, back || token->type == TK_ASSIGNMENT_WORD
|
||||||
|
|| get_lexer_stack2(*lexer) == DQUOTE, back);
|
||||||
lexer->pos++;
|
lexer->pos++;
|
||||||
return (lexer_lex(alst, lexer));
|
return (lexer_lex(alst, lexer));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,28 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/19 12:45:06 by gwojda #+# #+# */
|
/* Created: 2016/12/19 12:45:06 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/23 11:44:51 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:28:01 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
|
t_cpy g_cpy[] =
|
||||||
|
{
|
||||||
|
{FLECHE_GAUCHE , &underline_left },
|
||||||
|
{FLECHE_DROITE , &underline_right },
|
||||||
|
{FLECHE_HAUT , &underline_up },
|
||||||
|
{FLECHE_BAS , &underline_down },
|
||||||
|
{TOUCHE_HOME , &underline_home },
|
||||||
|
{TOUCHE_END , &underline_end },
|
||||||
|
{0 , 0 },
|
||||||
|
};
|
||||||
|
|
||||||
int ft_x(char **str, size_t *pos)
|
int ft_x(char **str, size_t *pos)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
size_t pos_ref;
|
size_t pos_ref;
|
||||||
|
int ret;
|
||||||
|
int i;
|
||||||
|
|
||||||
pos_ref = *pos;
|
pos_ref = *pos;
|
||||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||||
|
|
@ -25,21 +37,14 @@ int ft_x(char **str, size_t *pos)
|
||||||
while (42)
|
while (42)
|
||||||
{
|
{
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
i = 0;
|
||||||
if (read(STDIN, &ret, sizeof(int)) < 0)
|
if (read(STDIN, &ret, sizeof(int)) < 0)
|
||||||
return (-1);
|
return (-1);
|
||||||
if (ret == FLECHE_GAUCHE && !underline_left(str, pos, pos_ref))
|
while (g_cpy[i].value && g_cpy[i].value != ret)
|
||||||
return (0);
|
++i;
|
||||||
else if (ret == FLECHE_DROITE && !underline_right(str, pos, pos_ref))
|
if (g_cpy[i].value && (ret = g_cpy[i].f(str, pos, pos_ref)))
|
||||||
return (0);
|
return (ret);
|
||||||
else if (ret == TOUCHE_HOME)
|
else
|
||||||
underline_home(str, pos, pos_ref);
|
|
||||||
else if (ret == TOUCHE_END)
|
|
||||||
underline_end(str, pos, pos_ref);
|
|
||||||
else if (ret == FLECHE_HAUT)
|
|
||||||
underline_up(str, pos, pos_ref);
|
|
||||||
else if (ret == FLECHE_BAS)
|
|
||||||
underline_down(str, pos, pos_ref);
|
|
||||||
else if (ret != FLECHE_DROITE && ret != FLECHE_GAUCHE)
|
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
if (data_singleton()->line.copy_tmp && *data_singleton()->line.copy_tmp)
|
if (data_singleton()->line.copy_tmp && *data_singleton()->line.copy_tmp)
|
||||||
|
|
@ -49,8 +54,9 @@ int ft_x(char **str, size_t *pos)
|
||||||
|
|
||||||
int ft_c(char **str, size_t *pos)
|
int ft_c(char **str, size_t *pos)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
size_t pos_ref;
|
size_t pos_ref;
|
||||||
|
int ret;
|
||||||
|
int i;
|
||||||
|
|
||||||
pos_ref = *pos;
|
pos_ref = *pos;
|
||||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||||
|
|
@ -60,21 +66,14 @@ int ft_c(char **str, size_t *pos)
|
||||||
while (42)
|
while (42)
|
||||||
{
|
{
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
i = 0;
|
||||||
if (read(STDIN, &ret, sizeof(int)) < 0)
|
if (read(STDIN, &ret, sizeof(int)) < 0)
|
||||||
return (-1);
|
return (-1);
|
||||||
if (ret == FLECHE_GAUCHE && !underline_left(str, pos, pos_ref))
|
while (g_cpy[i].value && g_cpy[i].value != ret)
|
||||||
return (0);
|
++i;
|
||||||
else if (ret == FLECHE_DROITE && !underline_right(str, pos, pos_ref))
|
if (g_cpy[i].value && (ret = g_cpy[i].f(str, pos, pos_ref)))
|
||||||
return (0);
|
return (ret);
|
||||||
else if (ret == TOUCHE_HOME)
|
else if (!g_cpy[i].value)
|
||||||
underline_home(str, pos, pos_ref);
|
|
||||||
else if (ret == TOUCHE_END)
|
|
||||||
underline_end(str, pos, pos_ref);
|
|
||||||
else if (ret == FLECHE_HAUT)
|
|
||||||
underline_up(str, pos, pos_ref);
|
|
||||||
else if (ret == FLECHE_BAS)
|
|
||||||
underline_down(str, pos, pos_ref);
|
|
||||||
else if (ret != FLECHE_DROITE && ret != FLECHE_GAUCHE)
|
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
reset_term(str, pos);
|
reset_term(str, pos);
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/23 11:43:40 by gwojda #+# #+# */
|
/* Created: 2017/03/23 11:43:40 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/23 11:45:20 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:21:46 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void underline_down(char **str, size_t *pos, size_t pos_ref)
|
int underline_down(char **str, size_t *pos, size_t pos_ref)
|
||||||
{
|
{
|
||||||
size_t pos_tmp;
|
size_t pos_tmp;
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -36,4 +36,5 @@ void underline_down(char **str, size_t *pos, size_t pos_ref)
|
||||||
underline_left(str, pos, pos_ref);
|
underline_left(str, pos, pos_ref);
|
||||||
--pos_tmp;
|
--pos_tmp;
|
||||||
}
|
}
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/22 23:18:15 by gwojda #+# #+# */
|
/* Created: 2017/03/22 23:18:15 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/22 23:42:27 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:21:53 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void underline_end(char **str, size_t *pos, size_t pos_ref)
|
int underline_end(char **str, size_t *pos, size_t pos_ref)
|
||||||
{
|
{
|
||||||
size_t pos_tmp;
|
size_t pos_tmp;
|
||||||
|
|
||||||
|
|
@ -32,4 +32,5 @@ void underline_end(char **str, size_t *pos, size_t pos_ref)
|
||||||
underline_left(str, pos, pos_ref);
|
underline_left(str, pos, pos_ref);
|
||||||
--pos_tmp;
|
--pos_tmp;
|
||||||
}
|
}
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/22 23:11:05 by gwojda #+# #+# */
|
/* Created: 2017/03/22 23:11:05 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/22 23:44:44 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:22:01 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void underline_home(char **str, size_t *pos, size_t pos_ref)
|
int underline_home(char **str, size_t *pos, size_t pos_ref)
|
||||||
{
|
{
|
||||||
size_t pos_tmp;
|
size_t pos_tmp;
|
||||||
|
|
||||||
|
|
@ -29,4 +29,5 @@ void underline_home(char **str, size_t *pos, size_t pos_ref)
|
||||||
--pos_tmp;
|
--pos_tmp;
|
||||||
}
|
}
|
||||||
*pos = pos_tmp;
|
*pos = pos_tmp;
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/22 22:54:28 by gwojda #+# #+# */
|
/* Created: 2017/03/22 22:54:28 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/22 23:08:58 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:25:19 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ static int reset_term_hard(void)
|
||||||
ft_putnc('\b', ft_strlen(data_singleton()->line.copy_tmp));
|
ft_putnc('\b', ft_strlen(data_singleton()->line.copy_tmp));
|
||||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||||
data_singleton()->line.pos_tmp = 0;
|
data_singleton()->line.pos_tmp = 0;
|
||||||
return (0);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void left_abs(char **str, size_t *pos)
|
static void left_abs(char **str, size_t *pos)
|
||||||
|
|
@ -27,10 +27,12 @@ static void left_abs(char **str, size_t *pos)
|
||||||
ft_putchar('\b');
|
ft_putchar('\b');
|
||||||
data_singleton()->line.pos_tmp = 0;
|
data_singleton()->line.pos_tmp = 0;
|
||||||
ft_puttermcaps("mr");
|
ft_puttermcaps("mr");
|
||||||
|
ft_putstr("\x1b[38;5;196m");
|
||||||
data_singleton()->line.copy_tmp = ft_realloc_imput(data_singleton()->
|
data_singleton()->line.copy_tmp = ft_realloc_imput(data_singleton()->
|
||||||
line.copy_tmp, (*str)[*pos], data_singleton()->line.pos_tmp);
|
line.copy_tmp, (*str)[*pos], data_singleton()->line.pos_tmp);
|
||||||
ft_putchar((*str)[*pos]);
|
ft_putchar((*str)[*pos]);
|
||||||
underline_check_end_of_line(*str, *pos + 1);
|
underline_check_end_of_line(*str, *pos + 1);
|
||||||
|
ft_putstr("\033[22;37m");
|
||||||
ft_puttermcaps("me");
|
ft_puttermcaps("me");
|
||||||
ft_putchar('\b');
|
ft_putchar('\b');
|
||||||
}
|
}
|
||||||
|
|
@ -51,12 +53,12 @@ static void left_mv_back(char **str, size_t *pos)
|
||||||
int underline_left(char **str, size_t *pos, size_t pos_ref)
|
int underline_left(char **str, size_t *pos, size_t pos_ref)
|
||||||
{
|
{
|
||||||
if (!*pos)
|
if (!*pos)
|
||||||
return (1);
|
return (0);
|
||||||
if ((*str)[*pos - 1] == '\n')
|
if ((*str)[*pos - 1] == '\n')
|
||||||
return (reset_term_hard());
|
return (reset_term_hard());
|
||||||
if (*pos > pos_ref)
|
if (*pos > pos_ref)
|
||||||
left_mv_back(str, pos);
|
left_mv_back(str, pos);
|
||||||
else
|
else
|
||||||
left_abs(str, pos);
|
left_abs(str, pos);
|
||||||
return (1);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/22 22:50:52 by gwojda #+# #+# */
|
/* Created: 2017/03/22 22:50:52 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/23 10:59:04 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:25:34 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -18,15 +18,17 @@ static int reset_term_hard(void)
|
||||||
ft_putstr(data_singleton()->line.copy_tmp);
|
ft_putstr(data_singleton()->line.copy_tmp);
|
||||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||||
data_singleton()->line.pos_tmp = 0;
|
data_singleton()->line.pos_tmp = 0;
|
||||||
return (0);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void right_abs(char **str, size_t *pos)
|
static void right_abs(char **str, size_t *pos)
|
||||||
{
|
{
|
||||||
ft_puttermcaps("mr");
|
ft_puttermcaps("mr");
|
||||||
|
ft_putstr("\x1b[38;5;196m");
|
||||||
data_singleton()->line.copy_tmp = ft_realloc_imput(data_singleton()->
|
data_singleton()->line.copy_tmp = ft_realloc_imput(data_singleton()->
|
||||||
line.copy_tmp, (*str)[*pos], data_singleton()->line.pos_tmp);
|
line.copy_tmp, (*str)[*pos], data_singleton()->line.pos_tmp);
|
||||||
ft_putchar((*str)[*pos]);
|
ft_putchar((*str)[*pos]);
|
||||||
|
ft_putstr("\033[22;37m");
|
||||||
ft_puttermcaps("me");
|
ft_puttermcaps("me");
|
||||||
++(data_singleton()->line.pos_tmp);
|
++(data_singleton()->line.pos_tmp);
|
||||||
++(*pos);
|
++(*pos);
|
||||||
|
|
@ -47,12 +49,12 @@ static void right_mv_back(char **str, size_t *pos)
|
||||||
int underline_right(char **str, size_t *pos, size_t pos_ref)
|
int underline_right(char **str, size_t *pos, size_t pos_ref)
|
||||||
{
|
{
|
||||||
if (!(*pos < ft_strlen(*str)))
|
if (!(*pos < ft_strlen(*str)))
|
||||||
return (1);
|
return (0);
|
||||||
if ((*str)[*pos] == '\n')
|
if ((*str)[*pos] == '\n')
|
||||||
return (reset_term_hard());
|
return (reset_term_hard());
|
||||||
if (*pos >= pos_ref)
|
if (*pos >= pos_ref)
|
||||||
right_abs(str, pos);
|
right_abs(str, pos);
|
||||||
else
|
else
|
||||||
right_mv_back(str, pos);
|
right_mv_back(str, pos);
|
||||||
return (1);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/23 11:35:48 by gwojda #+# #+# */
|
/* Created: 2017/03/23 11:35:48 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/23 11:39:49 by gwojda ### ########.fr */
|
/* Updated: 2017/03/23 16:22:12 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void underline_up(char **str, size_t *pos, size_t pos_ref)
|
int underline_up(char **str, size_t *pos, size_t pos_ref)
|
||||||
{
|
{
|
||||||
size_t pos_tmp;
|
size_t pos_tmp;
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -33,4 +33,5 @@ void underline_up(char **str, size_t *pos, size_t pos_ref)
|
||||||
--i;
|
--i;
|
||||||
}
|
}
|
||||||
*pos = pos_tmp;
|
*pos = pos_tmp;
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */
|
/* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/23 06:19:27 by wescande ### ########.fr */
|
/* Updated: 2017/03/23 14:57:19 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -66,9 +66,6 @@ int data_init(int ac, char **av)
|
||||||
data->lst_func = NULL;
|
data->lst_func = NULL;
|
||||||
lexer_init(&data->lexer);
|
lexer_init(&data->lexer);
|
||||||
parser_init(&data->parser);
|
parser_init(&data->parser);
|
||||||
/* if (!ft_getenv(data_singleton()->env, "FUNC_LVL")) */
|
|
||||||
/* builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL", "-1", */
|
|
||||||
/* NULL}, NULL); */
|
|
||||||
if ((term_name = ft_getenv(data->env, "TERM")) == NULL)
|
if ((term_name = ft_getenv(data->env, "TERM")) == NULL)
|
||||||
{
|
{
|
||||||
term_name = "dumb";
|
term_name = "dumb";
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/20 14:45:40 by gwojda #+# #+# */
|
/* Created: 2017/03/20 14:45:40 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/23 00:28:58 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:40:12 by gwojda ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -49,6 +49,7 @@ static int handle_instruction(t_list **token, t_btree **ast)
|
||||||
else if (ret > 0)
|
else if (ret > 0)
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
|
btree_print(STDBUG, *ast, &ft_putast);
|
||||||
if (data->parser.state == SUCCESS && ft_exec(ast) < 0)
|
if (data->parser.state == SUCCESS && ft_exec(ast) < 0)
|
||||||
exit(1);
|
exit(1);
|
||||||
else if (data->parser.state != SUCCESS)
|
else if (data->parser.state != SUCCESS)
|
||||||
|
|
@ -67,7 +68,6 @@ int main(int ac, char **av)
|
||||||
|
|
||||||
g_argv = av;
|
g_argv = av;
|
||||||
DG("----------------");
|
DG("----------------");
|
||||||
setlocale(LC_ALL, "");
|
|
||||||
if (shell_init(ac, av) != 0)
|
if (shell_init(ac, av) != 0)
|
||||||
return (1);
|
return (1);
|
||||||
token = NULL;
|
token = NULL;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */
|
/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/17 19:31:52 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:29:12 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/24 23:43:07 by ariard #+# #+# */
|
/* Created: 2017/02/24 23:43:07 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/22 19:21:58 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:26:09 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -73,53 +73,6 @@ int add_func_cmd(t_btree **ast, t_list **lst)
|
||||||
|| token->type == TK_FI || token->type == TK_RBRACE
|
|| token->type == TK_FI || token->type == TK_RBRACE
|
||||||
|| token->type == TK_PAREN_CLOSE) && node->type == FNAME
|
|| token->type == TK_PAREN_CLOSE) && node->type == FNAME
|
||||||
&& node->nest == 0)
|
&& node->nest == 0)
|
||||||
{
|
|
||||||
node->full = 1;
|
node->full = 1;
|
||||||
add_one_func(ast, lst);
|
|
||||||
}
|
|
||||||
return (add_cmd(&(*ast)->right, lst));
|
return (add_cmd(&(*ast)->right, lst));
|
||||||
}
|
}
|
||||||
|
|
||||||
t_list *is_already_func(t_btree **new)
|
|
||||||
{
|
|
||||||
t_list *tmp;
|
|
||||||
t_btree **ast;
|
|
||||||
char **new_name;
|
|
||||||
char **old_name;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
tmp = data_singleton()->lst_func;
|
|
||||||
new_name = token_to_argv(((t_astnode *)(*new)->item)->data.cmd.token, 1);
|
|
||||||
ret = 1;
|
|
||||||
while (tmp && ret)
|
|
||||||
{
|
|
||||||
if ((ast = tmp->content) && !*ast)
|
|
||||||
break ;
|
|
||||||
old_name = token_to_argv(((t_astnode *)
|
|
||||||
(*ast)->item)->data.cmd.token, 1);
|
|
||||||
ret = (new_name && new_name[0] && old_name && old_name[0]
|
|
||||||
&& !ft_strcmp(new_name[0], old_name[0])) ? 0 : 1;
|
|
||||||
ft_tabdel(&old_name);
|
|
||||||
tmp = (ret) ? tmp->next : tmp;
|
|
||||||
}
|
|
||||||
ft_tabdel(&new_name);
|
|
||||||
if (!ret)
|
|
||||||
return (tmp);
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int add_one_func(t_btree **ast, t_list **lst)
|
|
||||||
{
|
|
||||||
t_btree *func_ast;
|
|
||||||
t_list *old_func;
|
|
||||||
|
|
||||||
(void)lst;
|
|
||||||
func_ast = btree_map(*ast, &node_copy);
|
|
||||||
if ((old_func = is_already_func(&func_ast)))
|
|
||||||
{
|
|
||||||
ft_lst_delif(&data_singleton()->lst_func,
|
|
||||||
old_func->content, &ft_addrcmp, &tree_func_free);
|
|
||||||
}
|
|
||||||
ft_lsteadd(&data_singleton()->lst_func, ft_lstnew(&func_ast, sizeof(*ast)));
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/17 16:39:05 by ariard #+# #+# */
|
/* Created: 2017/02/17 16:39:05 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/17 17:54:49 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:29:03 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/11 15:58:38 by ariard #+# #+# */
|
/* Created: 2017/03/11 15:58:38 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/22 19:00:06 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:03:22 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/15 18:32:59 by ariard #+# #+# */
|
/* Created: 2017/02/15 18:32:59 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/17 19:50:08 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 15:26:31 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -84,6 +84,7 @@ int build_tree(t_btree **ast, t_list **lst)
|
||||||
i = 0;
|
i = 0;
|
||||||
token = (*lst)->content;
|
token = (*lst)->content;
|
||||||
check_cache(token, cache);
|
check_cache(token, cache);
|
||||||
|
DG("new");
|
||||||
while (g_treematch[i].type)
|
while (g_treematch[i].type)
|
||||||
{
|
{
|
||||||
if ((isseparator(token, cache) && g_treematch[i].type == token->type))
|
if ((isseparator(token, cache) && g_treematch[i].type == token->type))
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/11 16:11:21 by ariard #+# #+# */
|
/* Created: 2017/03/11 16:11:21 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/22 19:00:15 by ariard ### ########.fr */
|
/* Updated: 2017/03/23 16:04:51 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -842,6 +842,21 @@ t_stackmatch g_stackmatch[] =
|
||||||
{COMPLETE_CONDITION, COMPLETE_COMMANDS},
|
{COMPLETE_CONDITION, COMPLETE_COMMANDS},
|
||||||
{COMPLETE_CONDITION, COMPLETE_CONDITION},
|
{COMPLETE_CONDITION, COMPLETE_CONDITION},
|
||||||
{COMPLETE_CONDITION, SEQUENCE},
|
{COMPLETE_CONDITION, SEQUENCE},
|
||||||
|
{COMPLETE_CONDITION, TK_WHILE},
|
||||||
|
{COMPLETE_CONDITION, TK_UNTIL},
|
||||||
|
{COMPLETE_CONDITION, TK_DO},
|
||||||
|
{COMPLETE_CONDITION, TK_IF},
|
||||||
|
{COMPLETE_CONDITION, TK_ELIF},
|
||||||
|
{COMPLETE_CONDITION, TK_THEN},
|
||||||
|
{COMPLETE_CONDITION, TK_ELSE},
|
||||||
|
{COMPLETE_CONDITION, COMPOUND_LIST},
|
||||||
|
{COMPLETE_CONDITION, CASE_LIST_NS},
|
||||||
|
{COMPLETE_CONDITION, TK_BANG},
|
||||||
|
{COMPLETE_CONDITION, SEPARATOR_OP},
|
||||||
|
{COMPLETE_CONDITION, NEWLINE_LIST},
|
||||||
|
{COMPLETE_CONDITION, AND_OR_MAJOR},
|
||||||
|
{COMPLETE_CONDITION, CASE_LIST_NS},
|
||||||
|
{COMPLETE_CONDITION, FUNC_NAME},
|
||||||
{FNAME, LINEBREAK},
|
{FNAME, LINEBREAK},
|
||||||
{FNAME, TK_PAREN_OPEN},
|
{FNAME, TK_PAREN_OPEN},
|
||||||
{FNAME, TK_LBRACE},
|
{FNAME, TK_LBRACE},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue