trying to make files work

This commit is contained in:
Jack Halford 2017-03-03 19:05:42 +01:00
parent eac301aa16
commit 8b88d41ed9
12 changed files with 51 additions and 51 deletions

1
42sh/sample/ls Normal file
View file

@ -0,0 +1 @@
ls

View file

@ -6,7 +6,7 @@
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:50:48 by jhalford ### ########.fr */
/* Updated: 2017/03/03 19:02:44 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -76,13 +76,15 @@ int exec_cmd(t_btree **ast)
if (fds[PIPE_WRITE] != STDOUT)
close(fds[PIPE_WRITE]);
if (IS_PIPEEND(p))
add_new_job(job);
if (JOB_IS_FG(job->attrs))
put_job_in_foreground(job, 0);
else
{
job_notify_new(job);
put_job_in_background(job, 0);
add_new_job(job);
if (JOB_IS_FG(job->attrs))
put_job_in_foreground(job, 0);
else
{
job_notify_new(job);
put_job_in_background(job, 0);
}
}
return (0);
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/27 20:30:32 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:26:31 by jhalford ### ########.fr */
/* Updated: 2017/03/03 19:03:46 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/03 18:32:23 by jhalford ### ########.fr */
/* Updated: 2017/03/03 19:02:54 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -17,9 +17,9 @@ int mark_process_status(pid_t pid, int status)
t_list *plist;
t_process *p;
DG("PMS pid=%i,s=%i", pid, status);
if (pid > 1)
{
DG("MPS pid=%i,s=%i", pid, status);
if ((plist = job_getprocess(pid)))
{
p = plist->content;

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/02 20:44:21 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:51:22 by jhalford ### ########.fr */
/* Updated: 2017/03/03 18:54:10 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -24,6 +24,5 @@ int add_new_job(t_job *job)
job->id = jobc->current_id;
job->pgid = ((t_process*)job->first_process->content)->pid;
ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job)));
job = jobc->first_job->content;
return (0);
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/31 15:07:30 by jhalford #+# #+# */
/* Updated: 2017/01/31 15:07:41 by jhalford ### ########.fr */
/* Updated: 2017/03/03 19:03:01 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/01/31 13:44:26 by jhalford ### ########.fr */
/* Updated: 2017/03/03 18:53:32 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:37:10 by jhalford ### ########.fr */
/* Updated: 2017/03/03 18:56:57 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -17,7 +17,7 @@ void job_update_status(void)
int status;
pid_t pid;
pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG);
while (!mark_process_status(pid, status))
pid = waitpid(WAIT_ANY, &status, WUNTRACED | WNOHANG);
do
pid = waitpid (WAIT_ANY, &status, WUNTRACED|WNOHANG);
while (!mark_process_status (pid, status));
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/15 11:49:05 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:38:12 by jhalford ### ########.fr */
/* Updated: 2017/03/03 18:54:18 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -18,18 +18,6 @@ int job_wait(int id)
int status;
DG("job wait [%i]", id);
/* if (job_is_stopped(id)) */
/* return (0); */
/* job_update_status(); */
/* DG("after update status"); */
/* pid = waitpid(WAIT_ANY, &status, WUNTRACED); */
/* while (!process_mark_status(pid, status) */
/* && !job_is_completed(id) */
/* && !job_is_stopped(id)) */
/* { */
/* pid = waitpid(WAIT_ANY, &status, WUNTRACED); */
/* } */
do
pid = waitpid(WAIT_ANY, &status, WUNTRACED);
while (!mark_process_status(pid, status)

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:52:03 by jhalford ### ########.fr */
/* Updated: 2017/03/03 18:57:58 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -16,21 +16,28 @@ int put_job_in_foreground(t_job *j, int cont)
{
t_jobc *jobc;
jobc = &data_singleton()->jobc;
tcsetpgrp(STDIN, j->pgid);
tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes);
if (cont)
if (SH_HAS_JOBC(data_singleton()->opts))
{
tcsetattr(STDIN, TCSADRAIN, &j->tmodes);
if (kill(-j->pgid, SIGCONT) < 0)
DG("kill(SIGCONT) failed");
jobc = &data_singleton()->jobc;
tcsetpgrp(STDIN, j->pgid);
tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes);
if (cont)
{
tcsetattr(STDIN, TCSADRAIN, &j->tmodes);
if (kill(-j->pgid, SIGCONT) < 0)
DG("kill(SIGCONT) failed");
}
job_wait(j->id);
job_remove(j->id);
tcsetpgrp(STDIN, jobc->shell_pgid);
tcgetattr(STDIN, &j->tmodes);
tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes);
tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes);
}
job_wait(j->id);
job_remove(j->id);
tcsetpgrp(STDIN, jobc->shell_pgid);
tcgetattr(STDIN, &j->tmodes);
tcsetattr(STDIN, TCSADRAIN, &jobc->shell_tmodes);
else
job_wait(j->id);
return (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/03 17:39:30 by jhalford ### ########.fr */
/* Updated: 2017/03/03 18:55:05 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */
/* Updated: 2017/03/03 18:33:40 by wescande ### ########.fr */
/* Updated: 2017/03/03 19:05:22 by jhalford ### ########.fr */
/* */
/* ************************************************************************** */
@ -97,7 +97,10 @@ int get_input_fd()
return (fd);
}
else if ((file = shell_get_avdata()))
return (open(file, O_RDONLY));
{
if (fd = open(file, O_RDONLY))
return (fd);
}
else
return (STDIN);
}
@ -108,13 +111,13 @@ int main(int ac, char **av)
setlocale(LC_ALL, "");
shell_init(ac, av);
DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s",
SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF");
if ((fd = get_input_fd()) < 0)
{
ft_printf("{red}%s: No such file or directory\n{eoc}", SHELL_NAME);
return (1);
}
DG("{inv}{bol}{gre}start of shell{eoc} JOBC is %s, fd=[%i]",
SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF", fd);
while (handle_instruction(fd) == 0)
{
// lexer_clean;