some correctif
This commit is contained in:
parent
40aebb29b2
commit
d3821b9ac7
14 changed files with 72 additions and 55 deletions
|
|
@ -280,7 +280,7 @@ $(OBJ_DIR)%.o : $(SRC_DIR)%.c | $(OBJ_DIR)
|
||||||
@$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB)))))
|
@$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB)))))
|
||||||
@$(eval COLOR=$(shell echo $$(($(PERCENT)%35+196))))
|
@$(eval COLOR=$(shell echo $$(($(PERCENT)%35+196))))
|
||||||
@$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB)))))
|
@$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB)))))
|
||||||
@printf "\r\033[38;5;11m⌛ MAKE %10.10s : %2d%% \033[48;5;%dm%*s\033[0m%*s\033[48;5;255m \033[0m \033[38;5;11m %*s\033[0m\033[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) "$@"
|
@printf "\r\033[38;5;11m⌛ MAKE %10.10s : %2d%% \033[48;5;%dm%*s\033[0m%*s\033[48;5;255m \033[0m \033[38;5;11m %*.*s\033[0m\033[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) $(DELTA) "$@"
|
||||||
@$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\
|
@$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\
|
||||||
-I $(INC_DIR)\
|
-I $(INC_DIR)\
|
||||||
-I $(LIBFT_INC)
|
-I $(LIBFT_INC)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */
|
/* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/05 15:19:44 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:33:24 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -21,13 +21,14 @@
|
||||||
# define PROCESS_SCRIPT (1 << 2)
|
# define PROCESS_SCRIPT (1 << 2)
|
||||||
# define PROCESS_SUBSHELL (1 << 3)
|
# define PROCESS_SUBSHELL (1 << 3)
|
||||||
# define PROCESS_UNKNOWN (1 << 4)
|
# define PROCESS_UNKNOWN (1 << 4)
|
||||||
# define PROCESS_COMPLETED (1 << 5)
|
# define PROCESS_CONTROL (1 << 5)
|
||||||
# define PROCESS_SUSPENDED (1 << 6)
|
# define PROCESS_COMPLETED (1 << 6)
|
||||||
# define PROCESS_RUNNING (1 << 7)
|
# define PROCESS_SUSPENDED (1 << 7)
|
||||||
# define PROCESS_CONTINUED (1 << 8)
|
# define PROCESS_RUNNING (1 << 8)
|
||||||
|
# define PROCESS_CONTINUED (1 << 9)
|
||||||
|
|
||||||
# define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4)
|
# define PROCESS_TYPE_MASK (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5)
|
||||||
# define PROCESS_STATE_MASK (1 << 5 | 1 << 6 | 1 << 7 | 1 << 8)
|
# define PROCESS_STATE_MASK (1 << 6 | 1 << 7 | 1 << 8 | 1 << 9)
|
||||||
|
|
||||||
# define IS_PIPESTART(p) ((p).fdin == STDIN)
|
# define IS_PIPESTART(p) ((p).fdin == STDIN)
|
||||||
# define IS_PIPEEND(p) ((p).fdout == STDOUT)
|
# define IS_PIPEEND(p) ((p).fdout == STDOUT)
|
||||||
|
|
@ -62,20 +63,18 @@ struct s_process
|
||||||
int to_close;
|
int to_close;
|
||||||
t_list *redirs;
|
t_list *redirs;
|
||||||
int status;
|
int status;
|
||||||
t_flag attributes;
|
t_flag attrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct s_exec
|
struct s_exec
|
||||||
{
|
{
|
||||||
/* char *aol_status; */
|
|
||||||
/* int aol_search; */
|
|
||||||
t_job job;
|
t_job job;
|
||||||
/* t_process process; */
|
|
||||||
int fd_save[3];
|
int fd_save[3];
|
||||||
t_flag attrs;
|
t_flag attrs;
|
||||||
int fdin;
|
int fdin;
|
||||||
t_list *op_stack;
|
t_list *op_stack;
|
||||||
char *case_pattern;
|
char *case_pattern;
|
||||||
|
int control_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct s_execmap
|
struct s_execmap
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0270e3651474c1b20bb0d6873f5c6188ccf43897
|
Subproject commit 6a2672a19268c6481525d9aaee5bd35722bbd75a
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */
|
/* Created: 2017/01/30 17:33:53 by ariard #+# #+# */
|
||||||
/* Updated: 2017/03/04 17:19:18 by ariard ### ########.fr */
|
/* Updated: 2017/03/06 12:27:23 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -17,11 +17,13 @@ int exec_while(t_btree **ast)
|
||||||
DG("exec while condition");
|
DG("exec while condition");
|
||||||
ft_exec(&(*ast)->left);
|
ft_exec(&(*ast)->left);
|
||||||
DG("ret :[%s]", ft_getenv(data_singleton()->env, "?"));
|
DG("ret :[%s]", ft_getenv(data_singleton()->env, "?"));
|
||||||
|
++data_singleton()->exec.control_count;
|
||||||
while (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")))
|
while (!(ft_strcmp(ft_getenv(data_singleton()->env, "?"), "0")))
|
||||||
{
|
{
|
||||||
DG("in the while");
|
DG("in the while");
|
||||||
ft_exec(&(*ast)->right);
|
ft_exec(&(*ast)->right);
|
||||||
ft_exec(&(*ast)->left);
|
ft_exec(&(*ast)->left);
|
||||||
}
|
}
|
||||||
|
--data_singleton()->exec.control_count;
|
||||||
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/05 18:08:57 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:28:21 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -19,16 +19,16 @@ int launch_process(t_process *p)
|
||||||
/* DG("gonna launch [%s]", p->av[0]); */
|
/* DG("gonna launch [%s]", p->av[0]); */
|
||||||
/* DG("fdin=[%i]", p->fdin); */
|
/* DG("fdin=[%i]", p->fdin); */
|
||||||
/* DG("fdout=[%i]", p->fdout); */
|
/* DG("fdout=[%i]", p->fdout); */
|
||||||
if (p->attributes & PROCESS_BUILTIN && IS_PIPESINGLE(*p))
|
if (p->attrs & PROCESS_BUILTIN && IS_PIPESINGLE(*p))
|
||||||
{
|
{
|
||||||
if (process_redirect(p))
|
if (process_redirect(p))
|
||||||
return (1);
|
return (1);
|
||||||
set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1);
|
set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env), 1);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attrs &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_RUNNING;
|
p->attrs |= PROCESS_RUNNING;
|
||||||
if (p->attributes & (PROCESS_BINARY | PROCESS_SCRIPT)
|
if (p->attrs & (PROCESS_BINARY | PROCESS_SCRIPT)
|
||||||
&& access(p->path, X_OK) == -1)
|
&& access(p->path, X_OK) == -1)
|
||||||
{
|
{
|
||||||
ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]);
|
ft_dprintf(2, "{red}%s: permission denied: %s{eoc}\n", SHELL_NAME, p->av[0]);
|
||||||
|
|
@ -38,7 +38,7 @@ int launch_process(t_process *p)
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == 0)
|
if (pid == 0)
|
||||||
{
|
{
|
||||||
if (p->attributes & PROCESS_UNKNOWN)
|
if (p->attrs & PROCESS_UNKNOWN)
|
||||||
{
|
{
|
||||||
ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]);
|
ft_dprintf(2, "{red}%s: command not found: %s{eoc}\n", SHELL_NAME, p->av[0]);
|
||||||
exit(127);
|
exit(127);
|
||||||
|
|
@ -47,7 +47,7 @@ int launch_process(t_process *p)
|
||||||
process_setsig();
|
process_setsig();
|
||||||
if (process_redirect(p))
|
if (process_redirect(p))
|
||||||
exit (1);
|
exit (1);
|
||||||
if (p->attributes & PROCESS_BUILTIN)
|
if (p->attrs & PROCESS_BUILTIN)
|
||||||
exit((*p->execf)(p->path, p->av, data_singleton()->env));
|
exit((*p->execf)(p->path, p->av, data_singleton()->env));
|
||||||
(*p->execf)(p->path, p->av, data_singleton()->env);
|
(*p->execf)(p->path, p->av, data_singleton()->env);
|
||||||
ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]);
|
ft_dprintf(2, "{red}%s: internal execve error on %s{eoc}\n", SHELL_NAME, p->av[0]);
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */
|
/* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/03 19:02:54 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:28:55 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -26,13 +26,13 @@ int mark_process_status(pid_t pid, int status)
|
||||||
p->status = status;
|
p->status = status;
|
||||||
if (WIFSTOPPED(status))
|
if (WIFSTOPPED(status))
|
||||||
{
|
{
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attrs &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_SUSPENDED;
|
p->attrs |= PROCESS_SUSPENDED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attrs &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_COMPLETED;
|
p->attrs |= PROCESS_COMPLETED;
|
||||||
if (WIFSIGNALED(status))
|
if (WIFSIGNALED(status))
|
||||||
ft_printf("{mag}%d: Terminated by signal %d.\n{eoc}",
|
ft_printf("{mag}%d: Terminated by signal %d.\n{eoc}",
|
||||||
(int)pid, WTERMSIG(status));
|
(int)pid, WTERMSIG(status));
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */
|
/* Created: 2017/02/07 17:44:22 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/03 16:36:06 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:29:17 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -23,5 +23,5 @@ void process_reset(t_process *p)
|
||||||
p->to_close = 0;
|
p->to_close = 0;
|
||||||
p->redirs = NULL;
|
p->redirs = NULL;
|
||||||
p->status = -1;
|
p->status = -1;
|
||||||
p->attributes = 0;
|
p->attrs = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */
|
/* Created: 2016/12/13 17:07:10 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/05 18:09:31 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:26:01 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -16,22 +16,22 @@ int process_setexec(t_process *p)
|
||||||
{
|
{
|
||||||
p->path = NULL;
|
p->path = NULL;
|
||||||
if ((p->execf = is_builtin(p)))
|
if ((p->execf = is_builtin(p)))
|
||||||
p->attributes |= PROCESS_BUILTIN;
|
p->attrs |= PROCESS_BUILTIN;
|
||||||
else if (ft_strchr(p->av[0], '/'))
|
else if (ft_strchr(p->av[0], '/'))
|
||||||
{
|
{
|
||||||
p->execf = &execve;
|
p->execf = &execve;
|
||||||
p->attributes |= PROCESS_SCRIPT;
|
p->attrs |= PROCESS_SCRIPT;
|
||||||
p->path = ft_strdup(p->av[0]);
|
p->path = ft_strdup(p->av[0]);
|
||||||
}
|
}
|
||||||
else if (ft_hash(p))
|
else if (ft_hash(p))
|
||||||
{
|
{
|
||||||
p->execf = &execve;
|
p->execf = &execve;
|
||||||
p->attributes |= PROCESS_BINARY;
|
p->attrs |= PROCESS_BINARY;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p->execf = NULL;
|
p->execf = NULL;
|
||||||
p->attributes |= PROCESS_UNKNOWN;
|
p->attrs |= PROCESS_UNKNOWN;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
|
|
|
||||||
|
|
@ -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/05 15:42:45 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:26:11 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -40,7 +40,16 @@ int set_process(t_process *p, t_btree *ast)
|
||||||
p->to_close = fds[PIPE_READ];
|
p->to_close = fds[PIPE_READ];
|
||||||
p->fdout = fds[PIPE_WRITE];
|
p->fdout = fds[PIPE_WRITE];
|
||||||
exec->fdin = fds[PIPE_READ];
|
exec->fdin = fds[PIPE_READ];
|
||||||
p->redirs = cmd->redir;
|
p->redirs = ft_lstmap(cmd->redir, ft_id);
|
||||||
|
t_list *tmp = p->redirs;
|
||||||
|
while (tmp)
|
||||||
|
{
|
||||||
|
t_redir *toto = tmp->content;
|
||||||
|
printf("IIIIIIIIIIIIIIIIIIIIIII%lld |%d| {%s}\n", toto->type, toto->n, toto->word);
|
||||||
|
tmp= tmp->next;
|
||||||
|
}
|
||||||
process_setexec(p);
|
process_setexec(p);
|
||||||
|
if (exec->control_count)
|
||||||
|
p->attrs |= PROCESS_CONTROL;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 15:10:20 by jhalford #+# #+# */
|
/* Created: 2016/12/13 15:10:20 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/31 13:52:36 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:30:22 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,7 +25,7 @@ int job_is_completed(int id)
|
||||||
while (lst)
|
while (lst)
|
||||||
{
|
{
|
||||||
p = lst->content;
|
p = lst->content;
|
||||||
if (!(p->attributes & PROCESS_COMPLETED))
|
if (!(p->attrs & PROCESS_COMPLETED))
|
||||||
return (0);
|
return (0);
|
||||||
lst = lst->next;
|
lst = lst->next;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */
|
/* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/11 17:54:33 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:31:00 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,7 +25,7 @@ int job_is_stopped(int id)
|
||||||
while (lst)
|
while (lst)
|
||||||
{
|
{
|
||||||
p = lst->content;
|
p = lst->content;
|
||||||
if (!(p->attributes & (PROCESS_COMPLETED | PROCESS_SUSPENDED)))
|
if (!(p->attrs & (PROCESS_COMPLETED | PROCESS_SUSPENDED)))
|
||||||
return (0);
|
return (0);
|
||||||
lst = lst->next;
|
lst = lst->next;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/08 14:40:40 by jhalford #+# #+# */
|
/* Created: 2017/01/08 14:40:40 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/03 16:47:28 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:30:50 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -21,10 +21,10 @@ void mark_job_as_running(t_job *j)
|
||||||
while (plist)
|
while (plist)
|
||||||
{
|
{
|
||||||
p = plist->content;
|
p = plist->content;
|
||||||
if (p->attributes & PROCESS_SUSPENDED)
|
if (p->attrs & PROCESS_SUSPENDED)
|
||||||
{
|
{
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attrs &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_CONTINUED;
|
p->attrs |= PROCESS_CONTINUED;
|
||||||
}
|
}
|
||||||
plist = plist->next;
|
plist = plist->next;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */
|
/* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/31 15:10:56 by jhalford ### ########.fr */
|
/* Updated: 2017/03/06 12:32:05 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@ static void process_format_state(t_process *p)
|
||||||
{
|
{
|
||||||
int state;
|
int state;
|
||||||
|
|
||||||
state = p->attributes & PROCESS_STATE_MASK;
|
state = p->attrs & PROCESS_STATE_MASK;
|
||||||
if (state == PROCESS_RUNNING)
|
if (state == PROCESS_RUNNING)
|
||||||
ft_putstr("running ");
|
ft_putstr("running ");
|
||||||
else if (state == PROCESS_SUSPENDED)
|
else if (state == PROCESS_SUSPENDED)
|
||||||
|
|
@ -24,8 +24,8 @@ static void process_format_state(t_process *p)
|
||||||
else if (state == PROCESS_CONTINUED)
|
else if (state == PROCESS_CONTINUED)
|
||||||
{
|
{
|
||||||
ft_putstr("continued");
|
ft_putstr("continued");
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attrs &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_RUNNING;
|
p->attrs |= PROCESS_RUNNING;
|
||||||
}
|
}
|
||||||
else if (state == PROCESS_COMPLETED)
|
else if (state == PROCESS_COMPLETED)
|
||||||
{
|
{
|
||||||
|
|
@ -42,7 +42,9 @@ static void process_format_com_long(t_list **plist)
|
||||||
t_process *p;
|
t_process *p;
|
||||||
|
|
||||||
p = (*plist)->content;
|
p = (*plist)->content;
|
||||||
if (p->attributes & PROCESS_SUBSHELL)
|
if (p->attrs & PROCESS_CONTROL)
|
||||||
|
ft_putstr("script");
|
||||||
|
else if (p->attrs & PROCESS_SUBSHELL)
|
||||||
{
|
{
|
||||||
ft_putstr("( ");
|
ft_putstr("( ");
|
||||||
ft_putstr(p->av[2]);
|
ft_putstr(p->av[2]);
|
||||||
|
|
@ -62,15 +64,17 @@ static void process_format_com_short(t_list **plist, t_flag state)
|
||||||
while (*plist)
|
while (*plist)
|
||||||
{
|
{
|
||||||
p = (*plist)->content;
|
p = (*plist)->content;
|
||||||
if (!(p->attributes & state) ||
|
if (!(p->attrs & state) ||
|
||||||
(state == PROCESS_COMPLETED && p->status != 0))
|
(state == PROCESS_COMPLETED && p->status != 0))
|
||||||
break ;
|
break ;
|
||||||
if (p->attributes & PROCESS_CONTINUED)
|
if (p->attrs & PROCESS_CONTINUED)
|
||||||
{
|
{
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attrs &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes &= ~PROCESS_RUNNING;
|
p->attrs &= ~PROCESS_RUNNING;
|
||||||
}
|
}
|
||||||
if (p->attributes & PROCESS_SUBSHELL)
|
if (p->attrs & PROCESS_CONTROL)
|
||||||
|
ft_putstr("script");
|
||||||
|
else if (p->attrs & PROCESS_SUBSHELL)
|
||||||
{
|
{
|
||||||
ft_putstr("( ");
|
ft_putstr("( ");
|
||||||
ft_putstr(p->av[2]);
|
ft_putstr(p->av[2]);
|
||||||
|
|
@ -90,7 +94,7 @@ void process_format(t_list **plist, int firstp, int opts)
|
||||||
t_flag state;
|
t_flag state;
|
||||||
|
|
||||||
p = (*plist)->content;
|
p = (*plist)->content;
|
||||||
state = p->attributes & PROCESS_STATE_MASK;
|
state = p->attrs & PROCESS_STATE_MASK;
|
||||||
if (!firstp)
|
if (!firstp)
|
||||||
ft_printf(" ");
|
ft_printf(" ");
|
||||||
if (opts & JOBS_OPTS_L)
|
if (opts & JOBS_OPTS_L)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */
|
/* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/03/05 16:47:43 by ariard ### ########.fr */
|
/* Updated: 2017/03/06 12:39:14 by wescande ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -57,7 +57,10 @@ int handle_instruction(int fd)
|
||||||
if (parser.state == SUCCESS)
|
if (parser.state == SUCCESS)
|
||||||
break ;
|
break ;
|
||||||
else if (parser.state == ERROR && SH_IS_INTERACTIVE(data_singleton()->opts))
|
else if (parser.state == ERROR && SH_IS_INTERACTIVE(data_singleton()->opts))
|
||||||
|
{
|
||||||
|
ft_add_str_in_history(lexer.str);
|
||||||
return (error_syntax(&token, &parser, &ast));
|
return (error_syntax(&token, &parser, &ast));
|
||||||
|
}
|
||||||
else if (parser.state == ERROR)
|
else if (parser.state == ERROR)
|
||||||
error_syntax(&token, &parser, &ast);
|
error_syntax(&token, &parser, &ast);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue