recup master fix

This commit is contained in:
wescande 2017-03-17 21:19:15 +01:00
commit 26d660fd72
8 changed files with 32 additions and 32 deletions

View file

@ -214,7 +214,6 @@ lexer/get_reserved_words.c\
lexer/get_state_global.c\
lexer/get_state_redir.c\
lexer/insert_newline.c\
lexer/lexer_assignement_word.c\
lexer/lexer_backslash.c\
lexer/lexer_bquote.c\
lexer/lexer_curly_braces.c\

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */
/* Updated: 2017/03/17 00:20:53 by ariard ### ########.fr */
/* Updated: 2017/03/17 21:13:09 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -41,14 +41,13 @@
struct s_data
{
t_flag opts;
int fd;
char **env;
int argc;
char **argv;
t_line line;
t_list *token;
t_btree *ast;
t_lexer lexer;
t_parser parser;
t_parser parser;
t_comp *comp;
t_exec exec;
t_jobc jobc;

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/03 11:56:49 by jhalford #+# #+# */
/* Updated: 2017/03/17 20:17:41 by jhalford ### ########.fr */
/* Updated: 2017/03/17 21:01:45 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */
/* Updated: 2017/03/17 20:07:57 by jhalford ### ########.fr */
/* Updated: 2017/03/17 21:01:50 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 14:19:48 by gwojda #+# #+# */
/* Updated: 2017/03/17 16:10:40 by gwojda ### ########.fr */
/* Updated: 2017/03/17 21:14:15 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -19,7 +19,7 @@ int readline(int has_prompt, char **input)
if (!has_prompt)
data_singleton()->line.prompt_size = 1;
if (!SH_IS_INTERACTIVE(data_singleton()->opts))
return ((ret = get_next_line(STDIN, input)) >= 0 ? !ret : ret);
return ((ret = get_next_line(data_singleton()->fd, input)) >= 0 ? !ret : ret);
readline_init(has_prompt);
ret = ft_read_stdin(input);
if (ret < 0)

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */
/* Updated: 2017/03/17 17:41:33 by gwojda ### ########.fr */
/* Updated: 2017/03/17 21:16:25 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -18,7 +18,7 @@ int data_init(int ac, char **av)
{
t_data *data;
char *term_name;
char* shlvl;
char *shlvl;
data = data_singleton();
data->argc = ac;
@ -38,8 +38,6 @@ int data_init(int ac, char **av)
data->opts = 0;
exec_reset();
data->lst_func = NULL;
data->token = NULL;
data->ast = NULL;
lexer_init(&data->lexer);
parser_init(&data->parser);
if ((term_name = ft_getenv(data->env, "TERM")) == NULL)

View file

@ -28,7 +28,7 @@ static int do_readline_routine(char **stream)
return (ret);
}
static int do_lexer_routine(char *stream)
static int do_lexer_routine(t_list **token, char *stream)
{
t_list *ltoken;
t_data *data;
@ -42,8 +42,8 @@ static int do_lexer_routine(char *stream)
ft_strappend(&data->lexer.str, stream);
if (get_lexer_stack(data->lexer) == BACKSLASH)
pop(&data->lexer.stack);
ltoken = ft_lstlast(data->token);
if (lexer_lex(data->token ? &ltoken : &data->token, &data->lexer) < 0)
ltoken = ft_lstlast(*token);
if (lexer_lex(*token ? &ltoken : token, &data->lexer) < 0)
exit(1);
if (get_lexer_stack(data->lexer) > 2)
return (1);
@ -51,24 +51,24 @@ static int do_lexer_routine(char *stream)
return (0);
}
static int do_parser_routine(void)
static int do_parser_routine(t_list **token, t_btree **ast)
{
t_data *data;
data = data_singleton();
if (get_reserved_words(data->token))
if (get_reserved_words(*token))
return (1);
if (insert_newline(&data->token))
if (insert_newline(token))
return (1);
if (data->parser.state == SUCCESS && stack_init(&data->parser))
exit(1);
if (ft_parse(&data->ast, &data->token, &data->parser))
if (ft_parse(ast, token, &data->parser))
exit(1);
if ((data->lexer.state = data->parser.heredoc_queue ? HEREDOC : DEFAULT))
return (0);
if (data->parser.state == ERROR)
{
error_syntax(&data->token);
error_syntax(token);
return (1);
}
else if (data->parser.state == SUCCESS)
@ -76,7 +76,7 @@ static int do_parser_routine(void)
return (0);
}
static int handle_instruction()
static int handle_instruction(t_list **token, t_btree **ast)
{
int ret;
char *stream;
@ -88,14 +88,14 @@ static int handle_instruction()
{
if ((ret = do_readline_routine(&stream)) > 0)
return (ret);
if (do_lexer_routine(stream) > 0)
if (do_lexer_routine(token, stream) > 0)
continue ;
token_print(data->token);
if (do_parser_routine() > 0)
token_print(*token);
if (do_parser_routine(token, ast) > 0)
break ;
}
/* btree_print(STDBUG, ast, &ft_putast); */
if (data->parser.state == SUCCESS && ft_exec(&data->ast) < 0)
if (data->parser.state == SUCCESS && ft_exec(ast) < 0)
exit(1);
if (SH_IS_INTERACTIVE(data->opts) && data->lexer.str)
ft_add_str_in_history(data->lexer.str);
@ -106,6 +106,8 @@ int main(int ac, char **av)
{
int ret;
t_data *data;
t_list *token;
t_btree *ast;
g_argv = av;
setlocale(LC_ALL, "");
@ -113,14 +115,16 @@ int main(int ac, char **av)
if (shell_init(ac, av))
return (1);
DG("JOBC is %s", SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF");
token = NULL;
ast = NULL;
data = data_singleton();
while (1)
{
ret = handle_instruction();
ret = handle_instruction(&token, &ast);
lexer_destroy(&data->lexer);
parser_destroy(&data->parser);
ft_lstdel(&data->token, &ft_lst_cfree);
btree_del(&data->ast, &ft_lst_cfree);
ft_lstdel(&token, &token_free);
btree_del(&ast, &ast_free);
if (ret == 1)
break ;
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */
/* Updated: 2017/03/17 19:57:55 by wescande ### ########.fr */
/* Updated: 2017/03/17 21:18:15 by wescande ### ########.fr */
/* */
/* ************************************************************************** */
@ -33,11 +33,10 @@ int get_input_fd(char **av)
else if (data->opts & SH_OPTS_LC)
{
pipe(fds);
dup2_close(fds[PIPE_READ], 10);
fd = 10;
file = *cliopts_getdata(av);
write(fds[PIPE_WRITE], file, ft_strlen(file));
close(fds[PIPE_WRITE]);
dup2_close(fds[PIPE_READ], (fd = 10));
fcntl(fd, F_SETFD, FD_CLOEXEC);
return (fd);
}
@ -93,6 +92,7 @@ int shell_init(int ac, char **av)
}
if (cliopts_get(av, g_opts, data))
return (ft_perror());
data->fd = get_input_fd(av);
if (SH_IS_INTERACTIVE(data->opts))
interactive_settings();
return (0);