execution stuff, job control changes, some norm

This commit is contained in:
Jack Halford 2017-03-20 15:33:43 +01:00
parent 28b2a059a5
commit 12b19423b3
41 changed files with 98 additions and 134 deletions

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/27 20:29:56 by jhalford #+# #+# */
/* Updated: 2017/03/20 10:35:30 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:05:18 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:38:24 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:17:20 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -16,7 +16,6 @@
# include <sys/types.h>
# include <sys/wait.h>
# include <termios.h>
/* # include "libft.h" */
# include "types.h"
# include "exec.h"
@ -43,15 +42,14 @@ void job_update_rank(void);
int do_job_notification(void);
void job_notify_new(int id);
void job_notify_change(int id);
void job_format(t_job *j, int opts);
void job_format_head(t_job *j);
void job_update_status(void);
void mark_job_as_running (t_job *j);
int mark_process_status(pid_t pid, int status);
int job_is_stopped(int id);
int job_is_completed(int id);
int job_is_stopped(t_job *job);
int job_is_completed(t_job *job);
void job_new(char **av, pid_t pid);
void job_run(t_job *job, int foreground);

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:51:45 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:10:24 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -17,8 +17,6 @@
# include "libft.h"
# include "types.h"
# define RW_SEP (TK_NEWLINE | TK_AMP | TK_SEMI | TK_WHILE | TK_DONE\
| TK_DO | TK_IF | TK_FI | TK_THEN | TK_ELIF | TK_ELSE)
enum e_lexstate
{
DEFAULT,

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 11:50:46 by jhalford #+# #+# */
/* Updated: 2017/03/15 18:43:15 by ariard ### ########.fr */
/* Updated: 2017/03/20 14:09:06 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -18,7 +18,9 @@ t_btree *btree_map(t_btree *root, void *(*f)(void *))
if (!root)
return (NULL);
new = btree_create_node((*f)(root->item), root->content_size);
if (!(new = (t_btree *)malloc(sizeof(*new))))
return (NULL);
new->item = (*f)(root->item);
new->left = btree_map(root->left, f);
new->right = btree_map(root->right, f);
return (new);

View file

@ -6,7 +6,7 @@
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/03 14:57:21 by jhalford #+# #+# */
/* Updated: 2017/03/20 12:25:42 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:06:55 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/20 15:01:45 by jhalford #+# #+# */
/* Updated: 2017/03/20 08:31:25 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:41:43 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */
/* Updated: 2017/03/20 08:24:10 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:57:59 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 15:47:30 by wescande #+# #+# */
/* Updated: 2017/03/20 10:54:59 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:47:34 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 02:45:15 by wescande #+# #+# */
/* Updated: 2017/03/15 18:57:03 by ariard ### ########.fr */
/* Updated: 2017/03/20 14:07:39 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */
/* Updated: 2017/03/20 10:40:20 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:33:51 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -32,5 +32,5 @@ int mark_process_status(pid_t pid, int status)
return (0);
}
ft_dprintf(2, "{red}No child process %d.\n", pid);
return (0);
return (1);
}

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 03:38:36 by wescande #+# #+# */
/* Updated: 2017/03/15 16:48:40 by ariard ### ########.fr */
/* Updated: 2017/03/20 14:06:47 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/05 14:54:45 by jhalford #+# #+# */
/* Updated: 2017/03/20 12:22:50 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:51:06 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -1,53 +1,46 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pset_cmd.c :+: :+: :+: */
/* pset_cmd.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 15:06:05 by wescande #+# #+# */
/* Updated: 2017/03/20 10:28:38 by jhalford ### ########.fr */
/* Created: 2017/03/20 12:41:54 by jhalford #+# #+# */
/* Updated: 2017/03/20 14:07:42 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int pset_cmd(t_process *p, t_btree *ast)
int pset_cmd(t_process *p, t_btree *ast)
{
t_btree *func;
t_btree *func;
if (ast && !(p->data.cmd.av = token_to_argv(((t_astnode *)ast->item)->data.cmd.token, 1)))
{
p->type = PROCESS_EMPTY;
return (0);
}
p->data.cmd.path = NULL;
p->data.cmd.execf = NULL;
p->data.cmd.stat = ft_memalloc(sizeof(struct stat));
p->type = PROCESS_FILE;
if (ast && !(p->data.cmd.av =
token_to_argv(((t_astnode *)ast->item)->data.cmd.token, 1)))
return ((p->type = PROCESS_EMPTY) ? 0 : 0);
if ((func = is_function(p)))
{
btree_print(STDBUG, func, &ft_putast);
p->data.function.content = func;
p->type = PROCESS_FUNCTION;
}
else if ((p->data.cmd.execf = is_builtin(p)))
p->type = PROCESS_BUILTIN;
else if (ft_strchr(p->data.cmd.av[0], '/'))
{
p->data.cmd.execf = &execve;
p->data.cmd.path = ft_strdup(p->data.cmd.av[0]);
if (stat(p->data.cmd.path, p->data.cmd.stat) == -1)
ft_memdel((void**)&p->data.cmd.stat);
}
else if ((p->data.cmd.path = ft_hash(p->data.cmd.av[0])))
else if ((p->type = PROCESS_FILE))
{
DG();
p->data.cmd.stat = ft_memalloc(sizeof(struct stat));
p->data.cmd.execf = &execve;
p->data.cmd.path = ft_strchr(p->data.cmd.av[0], '/') ?
ft_strdup(p->data.cmd.av[0]) : ft_hash(p->data.cmd.av[0]);
if (stat(p->data.cmd.path, p->data.cmd.stat) == -1)
{
ft_memdel((void**)&p->data.cmd.stat);
ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n", SHELL_NAME, p->data.cmd.path);
ft_dprintf(2, "{red}%s: %s: unexpected stat (2) failure\n",
SHELL_NAME, p->data.cmd.path);
return (-1);
}
}
DG();
return (0);
}

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 00:02:01 by wescande #+# #+# */
/* Updated: 2017/03/20 10:28:24 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:39:37 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -1,15 +1,3 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pset_until.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 22:22:24 by wescande #+# #+# */
/* Updated: 2017/03/20 10:27:47 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int pset_until(t_process *p, t_btree *ast)

View file

@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pset_while.c :+: :+: :+: */
/* pset_while.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 19:38:10 by wescande #+# #+# */
/* Updated: 2017/03/20 10:27:31 by jhalford ### ########.fr */
/* Created: 2017/03/20 12:39:07 by jhalford #+# #+# */
/* Updated: 2017/03/20 12:39:08 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/03 18:12:57 by ariard #+# #+# */
/* Updated: 2017/03/20 12:21:21 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:38:53 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -22,6 +22,6 @@ void redir_free(void *data, size_t content_size)
if (redir->type == TK_DLESS)
ft_strdel(&redir->heredoc_data);
redir->type = 0;
redir->n = 0;
redir->n = 0;
free(redir);
}

View file

@ -5,7 +5,8 @@
/* +:+ +:+ +:+ */
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Updated: 2017/02/07 16:05:09 by jhalford ### ########.fr */
/* Created: 2017/03/20 12:36:10 by jhalford #+# #+# */
/* Updated: 2017/03/20 12:36:15 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,13 +6,13 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/06 22:03:53 by jhalford #+# #+# */
/* Updated: 2017/03/13 17:40:54 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:38:41 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int redirect_great(t_redir* redir)
int redirect_great(t_redir *redir)
{
int fdold;
int fdnew;

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/06 22:12:31 by jhalford #+# #+# */
/* Updated: 2017/03/16 19:07:41 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:36:22 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -24,7 +24,8 @@ int redirect_greatand(t_redir *redir)
}
if (!ft_stris(redir->word, ft_isdigit))
{
ft_dprintf(2, "{red}%s: %s: can only be digits{eoc}\n", SHELL_NAME, redir->word);
ft_dprintf(2, "{red}%s: %s: can only be digits{eoc}\n",
data_singleton()->argv[0], redir->word);
return (1);
}
fdold = ft_atoi(redir->word);

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/06 22:09:53 by jhalford #+# #+# */
/* Updated: 2017/03/13 19:22:09 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:36:55 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -22,7 +22,7 @@ int redirect_less(t_redir *redir)
{
ft_dprintf(2, "{red}%s: %s: no such file or directory\n",
SHELL_NAME, redir->word);
exit (1);
return (1);
}
dup2(fdold, fdnew);
return (0);

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/06 22:11:18 by jhalford #+# #+# */
/* Updated: 2017/03/15 17:49:15 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:36:38 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -24,7 +24,8 @@ int redirect_lessand(t_redir *redir)
}
if (!ft_stris(redir->word, ft_isdigit))
{
ft_dprintf(2, "{red}%s: %s: can only be digits{eoc}\n", SHELL_NAME, redir->word);
ft_dprintf(2, "{red}%s: %s: can only be digits{eoc}\n",
data_singleton()->argv[0], redir->word);
return (1);
}
fdold = ft_atoi(redir->word);

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */
/* Updated: 2017/03/14 00:54:47 by ariard ### ########.fr */
/* Updated: 2017/03/20 12:58:31 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 13:01:19 by jhalford #+# #+# */
/* Updated: 2017/03/20 12:15:50 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:23:28 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -27,10 +27,11 @@ int do_job_notification(void)
{
j = jlist->content;
jlist = jlist->next;
if ((job_is_stopped(j->id) && !(j->attrs & JOB_NOTIFIED)))
if (job_is_completed(j)
|| (job_is_stopped(j) && !(j->attrs & JOB_NOTIFIED)))
{
ret = 1;
job_notify_change(j->id);
job_format(j, JOBS_OPTS_L);
j->attrs |= JOB_NOTIFIED;
job_remove(j->id);
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:32:08 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:16:48 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/31 15:07:30 by jhalford #+# #+# */
/* Updated: 2017/03/03 19:42:19 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:18:52 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/09 12:38:31 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:10:27 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:27:04 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -27,7 +27,7 @@ void job_getrank(int (*rank)[2])
while (jlist && i < 2)
{
job = jlist->content;
if (job_is_stopped(job->id))
if (job_is_stopped(job))
(*rank)[i++] = job->id;
jlist = jlist->next;
}

View file

@ -6,26 +6,22 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 15:10:20 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:30:44 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:37:10 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int job_is_completed(int id)
int job_is_completed(t_job *job)
{
t_list *lst;
t_job *job;
t_jobc *jobc;
t_process *p;
jobc = &data_singleton()->jobc;
job = ft_lst_find(jobc->first_job, &id, job_cmp_id)->content;
lst = job->first_process;
while (lst)
{
p = lst->content;
if (!(p->state == PROCESS_COMPLETED))
if (p->state != PROCESS_COMPLETED)
return (0);
lst = lst->next;
}

View file

@ -6,27 +6,22 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:32:00 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:36:37 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int job_is_stopped(int id)
int job_is_stopped(t_job *job)
{
t_list *lst;
t_job *job;
t_jobc *jobc;
t_process *p;
jobc = &data_singleton()->jobc;
job = ft_lst_find(jobc->first_job, &id, job_cmp_id)->content;
lst = job->first_process;
while (lst)
{
p = lst->content;
if (!((p->state == PROCESS_COMPLETED)
|| !(p->state == PROCESS_SUSPENDED)))
if (p->state != PROCESS_COMPLETED && p->state != PROCESS_SUSPENDED)
return (0);
lst = lst->next;
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/12 15:04:03 by jhalford #+# #+# */
/* Updated: 2017/03/20 10:21:10 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:24:47 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 14:27:01 by jhalford #+# #+# */
/* Updated: 2017/03/17 23:10:47 by wescande ### ########.fr */
/* Updated: 2017/03/20 14:26:31 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:40:09 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:31:22 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -23,12 +23,14 @@ void job_remove(int id)
if (!(jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id)))
return ;
j = jlist->content;
if (job_is_completed(id))
if (job_is_completed(j))
{
DG();
p = ft_lstlast(j->first_process)->content;
set_exitstatus(p->status, 0);
if (id < data_singleton()->jobc.current_id)
data_singleton()->jobc.current_id = id;
ft_lst_delif(&jobc->first_job, &id, job_cmp_id, job_free);
DG();
}
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */
/* Updated: 2017/03/20 12:12:45 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:36:02 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */
/* Updated: 2017/03/16 18:01:57 by jhalford ### ########.fr */
/* Updated: 2017/03/20 14:31:28 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -16,11 +16,14 @@ int job_wait(int id)
{
pid_t pid;
t_job *j;
t_list *jlist;
t_jobc *jobc;
int status;
jobc = &data_singleton()->jobc;
j = ft_lst_find(jobc->first_job, &id, job_cmp_id)->content;
if (!(jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id)))
return (-1);
j = jlist->content;
while (1)
{
if ((pid = waitpid(-j->pgid, &status, WUNTRACED)) == -1
@ -28,8 +31,8 @@ int job_wait(int id)
ft_dprintf(2, "{red}%s: waitpid error errno=%i{eoc}\n",
SHELL_NAME, errno);
if (pid <= 1 || mark_process_status(pid, status)
|| job_is_stopped(id)
|| job_is_completed(id))
|| job_is_stopped(j)
|| job_is_completed(j))
break ;
}
return (0);

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */
/* Updated: 2017/03/20 11:39:42 by jhalford ### ########.fr */
/* Updated: 2017/03/20 12:55:37 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/19 14:24:38 by wescande #+# #+# */
/* Updated: 2017/03/19 14:31:39 by wescande ### ########.fr */
/* Updated: 2017/03/20 15:19:05 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 20:39:06 by jhalford #+# #+# */
/* Updated: 2017/03/20 10:02:52 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:00:58 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -26,6 +26,7 @@ t_lexstate get_state_global(t_lexer *lexer)
if ((ft_is_delim(c) && (ret = DELIM))
|| ((c == '&' || c == ';' || c == '|' || c == '!') && (ret = SEP))
|| ((c == '\\') && (ret = BACKSLASH))
|| ((c == '\n') && (ret = NEWLINE))
|| ((c == '\'') && (ret = QUOTE))
|| ((c == '\"') && (ret = DQUOTE))
|| ((c == '`') && (ret = BQUOTE))

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */
/* Updated: 2017/03/08 12:09:52 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:32:07 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -22,10 +22,7 @@ int lexer_delim(t_list **alst, t_lexer *lexer)
lexer->state = DEFAULT;
if (token->type)
return (lexer_lex(&(*alst)->next, lexer));
else
{
if (lexer->str[lexer->pos] == 0)
ft_lst_delif(alst, (*alst)->content, &ft_addrcmp, &token_free);
return (lexer_lex(alst, lexer));
}
if (lexer->str[lexer->pos] == 0)
ft_lst_delif(alst, (*alst)->content, &ft_addrcmp, &token_free);
return (lexer_lex(alst, lexer));
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */
/* Updated: 2017/03/19 12:13:42 by gwojda ### ########.fr */
/* Updated: 2017/03/20 15:02:05 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -37,11 +37,6 @@ int ft_is_delim(char c)
return (c == ' ' || c == '\t');
}
int ft_is_delim_list(char c)
{
return (c == ';' || c == '\n' || c == '&');
}
int lexer_lex(t_list **alst, t_lexer *lexer)
{
t_token *token;

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/23 23:19:46 by ariard #+# #+# */
/* Updated: 2017/03/03 18:00:24 by jhalford ### ########.fr */
/* Updated: 2017/03/20 15:25:03 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -16,18 +16,10 @@ int lexer_newline(t_list **alst, t_lexer *lexer)
{
t_token *token;
if (*alst)
{
token = (*alst)->content;
if (*token->data)
return (lexer_newline(&(*alst)->next, lexer));
}
else
{
token = token_init();
*alst = ft_lstnew(token, sizeof(*token));
}
token = (*alst)->content;
if (token->type)
return (lexer_lex(&(*alst)->next, lexer));
lexer->pos++;
token->type = TK_NEWLINE;
return (lexer_lex(&(*alst)->next, lexer));
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */
/* Updated: 2017/03/16 18:21:30 by ariard ### ########.fr */
/* Updated: 2017/03/20 15:23:35 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */