pull
This commit is contained in:
commit
c2d392b520
19 changed files with 89 additions and 22 deletions
|
|
@ -82,6 +82,7 @@ exec/fd_is_valid.c\
|
||||||
exec/ft_exec.c\
|
exec/ft_exec.c\
|
||||||
exec/ft_findexec.c\
|
exec/ft_findexec.c\
|
||||||
exec/is_function.c\
|
exec/is_function.c\
|
||||||
|
exec/launch_brace.c\
|
||||||
exec/launch_builtin.c\
|
exec/launch_builtin.c\
|
||||||
exec/launch_case.c\
|
exec/launch_case.c\
|
||||||
exec/launch_file.c\
|
exec/launch_file.c\
|
||||||
|
|
@ -110,6 +111,7 @@ exec/redirect_less.c\
|
||||||
exec/redirect_lessand.c\
|
exec/redirect_lessand.c\
|
||||||
exec/set_exitstatus.c\
|
exec/set_exitstatus.c\
|
||||||
exec/set_process.c\
|
exec/set_process.c\
|
||||||
|
exec/set_process_brace.c\
|
||||||
exec/set_process_case.c\
|
exec/set_process_case.c\
|
||||||
exec/set_process_cmd.c\
|
exec/set_process_cmd.c\
|
||||||
exec/set_process_for.c\
|
exec/set_process_for.c\
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
cat: wefwewef: No such file or directory
|
|
||||||
|
|
@ -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/13 17:40:32 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:14:44 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -74,6 +74,7 @@ union u_process_data
|
||||||
{
|
{
|
||||||
struct s_data_cmd cmd;
|
struct s_data_cmd cmd;
|
||||||
struct s_data_subshell subshell;
|
struct s_data_subshell subshell;
|
||||||
|
struct s_data_subshell brace;
|
||||||
struct s_data_subshell function;
|
struct s_data_subshell function;
|
||||||
struct s_data_cond d_while;
|
struct s_data_cond d_while;
|
||||||
struct s_data_cond d_until;
|
struct s_data_cond d_until;
|
||||||
|
|
@ -88,6 +89,7 @@ enum e_process_type
|
||||||
PROCESS_BUILTIN,
|
PROCESS_BUILTIN,
|
||||||
PROCESS_FILE,
|
PROCESS_FILE,
|
||||||
PROCESS_SUBSHELL,
|
PROCESS_SUBSHELL,
|
||||||
|
PROCESS_BRACE,
|
||||||
PROCESS_WHILE,
|
PROCESS_WHILE,
|
||||||
PROCESS_UNTIL,
|
PROCESS_UNTIL,
|
||||||
PROCESS_IF,
|
PROCESS_IF,
|
||||||
|
|
@ -187,6 +189,7 @@ int launch_case(t_process *p);
|
||||||
int launch_file(t_process *p);
|
int launch_file(t_process *p);
|
||||||
int launch_builtin(t_process *p);
|
int launch_builtin(t_process *p);
|
||||||
int launch_subshell(t_process *p);
|
int launch_subshell(t_process *p);
|
||||||
|
int launch_brace(t_process *p);
|
||||||
int launch_function(t_process *p);
|
int launch_function(t_process *p);
|
||||||
int launch_empty(t_process *p);
|
int launch_empty(t_process *p);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit b209bb1fb718a68256253d5ab5ff69a46a90d5d6
|
Subproject commit 9382dc10fdb91892ab26604a5776e5301ab88b71
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/15 11:39:37 by gwojda #+# #+# */
|
/* Created: 2017/02/15 11:39:37 by gwojda #+# #+# */
|
||||||
/* Updated: 2017/03/13 17:48:21 by ariard ### ########.fr */
|
/* Updated: 2017/03/13 19:00:58 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -14,7 +14,12 @@
|
||||||
|
|
||||||
int builtin_export(const char *path, char *const av[], char *const envp[])
|
int builtin_export(const char *path, char *const av[], char *const envp[])
|
||||||
{
|
{
|
||||||
if (ft_strcmp(av[0], "export") == 0)
|
char *equal;
|
||||||
av++;
|
|
||||||
return (builtin_setenv(path, av, envp));
|
if ((equal = ft_strchr(av[1], '=')))
|
||||||
|
{
|
||||||
|
*equal = 0;
|
||||||
|
builtin_setenv(path, (char*[]){"setenv", av[1], equal + 1}, envp);
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */
|
/* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/07 11:28:05 by ariard ### ########.fr */
|
/* Updated: 2017/03/13 18:10:37 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -22,7 +22,8 @@ int builtin_setenv(const char *path, char *const av[], char *const envp[])
|
||||||
(void)path;
|
(void)path;
|
||||||
i = 0;
|
i = 0;
|
||||||
env = &data_singleton()->env;
|
env = &data_singleton()->env;
|
||||||
if (ft_strcmp(av[0], "setenv") == 0)
|
if (ft_strcmp(av[0], "setenv") == 0
|
||||||
|
|| ft_strcmp(av[0], "export") == 0)
|
||||||
av++;
|
av++;
|
||||||
if (!av[0])
|
if (!av[0])
|
||||||
{
|
{
|
||||||
|
|
@ -31,6 +32,7 @@ int builtin_setenv(const char *path, char *const av[], char *const envp[])
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
DG("str3join(%s,%s,%s)", av[0], "=", av[1]);
|
||||||
str = ft_str3join(av[0], "=", av[1]);
|
str = ft_str3join(av[0], "=", av[1]);
|
||||||
while ((*env)[i])
|
while ((*env)[i])
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/07 15:47:30 by wescande #+# #+# */
|
/* Created: 2017/03/07 15:47:30 by wescande #+# #+# */
|
||||||
/* Updated: 2017/03/13 17:40:29 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:06:45 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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/13 14:03:44 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:08:20 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -31,6 +31,7 @@ t_itof g_execmap[] =
|
||||||
{TK_ASSIGNEMENT_WORD, &exec_var},
|
{TK_ASSIGNEMENT_WORD, &exec_var},
|
||||||
{MATH, &exec_math},
|
{MATH, &exec_math},
|
||||||
{SUBSHELL, &exec_leaf},
|
{SUBSHELL, &exec_leaf},
|
||||||
|
{TK_LBRACE, &exec_leaf},
|
||||||
{TK_BANG, &exec_bang},
|
{TK_BANG, &exec_bang},
|
||||||
{CMD, &exec_leaf},
|
{CMD, &exec_leaf},
|
||||||
{0, 0},
|
{0, 0},
|
||||||
|
|
|
||||||
24
42sh/src/exec/launch_brace.c
Normal file
24
42sh/src/exec/launch_brace.c
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* launch_brace.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/03/13 19:09:30 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/03/13 19:21:39 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int launch_brace(t_process *p)
|
||||||
|
{
|
||||||
|
if (process_redirect(p))
|
||||||
|
{
|
||||||
|
set_exitstatus(1, 1);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
ft_exec(&p->data.subshell.content);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/07 15:48:24 by jhalford #+# #+# */
|
/* Created: 2017/03/07 15:48:24 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/11 18:16:25 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:15:13 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -19,7 +19,10 @@ int launch_builtin(t_process *p)
|
||||||
if (IS_PIPESINGLE(*p))
|
if (IS_PIPESINGLE(*p))
|
||||||
{
|
{
|
||||||
if (process_redirect(p))
|
if (process_redirect(p))
|
||||||
|
{
|
||||||
|
set_exitstatus(1, 1);
|
||||||
return (0);
|
return (0);
|
||||||
|
}
|
||||||
set_exitstatus((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env), 1);
|
set_exitstatus((*p->data.cmd.execf)(p->data.cmd.path, p->data.cmd.av, data_singleton()->env), 1);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */
|
/* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/13 17:38:30 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:21:40 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -18,6 +18,7 @@ t_itof g_launchmap[] =
|
||||||
{PROCESS_BUILTIN, launch_builtin},
|
{PROCESS_BUILTIN, launch_builtin},
|
||||||
{PROCESS_FILE, launch_file},
|
{PROCESS_FILE, launch_file},
|
||||||
{PROCESS_SUBSHELL, launch_subshell},
|
{PROCESS_SUBSHELL, launch_subshell},
|
||||||
|
{PROCESS_BRACE, launch_brace},
|
||||||
{PROCESS_WHILE, launch_while},
|
{PROCESS_WHILE, launch_while},
|
||||||
{PROCESS_UNTIL, launch_until},
|
{PROCESS_UNTIL, launch_until},
|
||||||
{PROCESS_IF, launch_if},
|
{PROCESS_IF, launch_if},
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/08 00:11:44 by wescande #+# #+# */
|
/* Created: 2017/03/08 00:11:44 by wescande #+# #+# */
|
||||||
/* Updated: 2017/03/13 13:27:48 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:12:26 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/06 22:09:53 by jhalford #+# #+# */
|
/* Created: 2017/02/06 22:09:53 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/13 17:42:53 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:22:09 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */
|
/* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/13 17:38:56 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:06:50 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
21
42sh/src/exec/set_process_brace.c
Normal file
21
42sh/src/exec/set_process_brace.c
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* set_process_brace.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/03/13 19:07:34 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/03/13 19:08:27 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int set_process_brace(t_process *p, t_btree *ast)
|
||||||
|
{
|
||||||
|
p->data.subshell.content = btree_map(ast->right, &node_copy);
|
||||||
|
p->type = PROCESS_BRACE;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/07 15:08:12 by wescande #+# #+# */
|
/* Created: 2017/03/07 15:08:12 by wescande #+# #+# */
|
||||||
/* Updated: 2017/03/13 17:39:03 by jhalford ### ########.fr */
|
/* Updated: 2017/03/13 19:08:25 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -26,6 +26,7 @@ t_itof g_setprocessmap[] =
|
||||||
{MATH, NULL},
|
{MATH, NULL},
|
||||||
{SUBSHELL, &set_process_subshell},
|
{SUBSHELL, &set_process_subshell},
|
||||||
{CMD, &set_process_cmd},
|
{CMD, &set_process_cmd},
|
||||||
|
{TK_LBRACE, &set_process_subshell},
|
||||||
{0, NULL}
|
{0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/03/08 00:02:01 by wescande #+# #+# */
|
/* Created: 2017/03/08 00:02:01 by wescande #+# #+# */
|
||||||
/* Updated: 2017/03/08 14:59:55 by wescande ### ########.fr */
|
/* Updated: 2017/03/13 19:07:18 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */
|
/* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/07 19:33:58 by ariard ### ########.fr */
|
/* Updated: 2017/03/13 19:03:43 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -15,8 +15,12 @@
|
||||||
t_lexstate get_state_global(t_lexer *lexer)
|
t_lexstate get_state_global(t_lexer *lexer)
|
||||||
{
|
{
|
||||||
char c;
|
char c;
|
||||||
|
char cn;
|
||||||
|
char cl;
|
||||||
|
|
||||||
c = lexer->str[lexer->pos];
|
c = lexer->str[lexer->pos];
|
||||||
|
cn = lexer->str[lexer->pos + 1];
|
||||||
|
cl = lexer->str[lexer->pos ? lexer->pos - 1 : 0];
|
||||||
if (ft_is_delim(c))
|
if (ft_is_delim(c))
|
||||||
return (DELIM);
|
return (DELIM);
|
||||||
else if (c == '&' || c == ';' || c == '|' || c == '!')
|
else if (c == '&' || c == ';' || c == '|' || c == '!')
|
||||||
|
|
@ -31,7 +35,8 @@ t_lexstate get_state_global(t_lexer *lexer)
|
||||||
return (BQUOTE);
|
return (BQUOTE);
|
||||||
else if (c == '(' || c == ')')
|
else if (c == '(' || c == ')')
|
||||||
return (PAREN);
|
return (PAREN);
|
||||||
else if (c == '{' || c == '}')
|
else if ((c == '{' && cn == ' ')
|
||||||
|
|| (c == '}' && cl == ' '))
|
||||||
return (CURLY_BRACKETS);
|
return (CURLY_BRACKETS);
|
||||||
else if (c == 0)
|
else if (c == 0)
|
||||||
return (END);
|
return (END);
|
||||||
|
|
|
||||||
|
|
@ -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/13 19:27:04 by ariard ### ########.fr */
|
/* Updated: 2017/03/13 19:31:26 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -24,7 +24,7 @@ int isdir_sep(t_btree **ast, t_list **list)
|
||||||
if ((node->type == CMD || node->type == TK_IO_NUMBER
|
if ((node->type == CMD || node->type == TK_IO_NUMBER
|
||||||
|| node->type == TK_WHILE || node->type == TK_IF
|
|| node->type == TK_WHILE || node->type == TK_IF
|
||||||
|| node->type == TK_FOR || node->type == SUBSHELL
|
|| node->type == TK_FOR || node->type == SUBSHELL
|
||||||
|| node->type == TK_CASE || node->type == TK_RBRACE
|
|| node->type == TK_CASE || node->type == TK_LBRACE
|
||||||
|| node->type == TK_UNTIL)
|
|| node->type == TK_UNTIL)
|
||||||
&& (token->type == TK_LESS || token->type == TK_GREAT
|
&& (token->type == TK_LESS || token->type == TK_GREAT
|
||||||
|| token->type == TK_GREATAND || token->type == TK_LESSAND
|
|| token->type == TK_GREATAND || token->type == TK_LESSAND
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue