From 487a66394061f2d14a2fa421302966b5442d643f Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Mon, 27 Jul 2020 18:55:07 +0200 Subject: I couldn't see shit --- src/e_builtins.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/e_builtins.c (limited to 'src/e_builtins.c') diff --git a/src/e_builtins.c b/src/e_builtins.c new file mode 100644 index 0000000..e35416a --- /dev/null +++ b/src/e_builtins.c @@ -0,0 +1,89 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* e_builtins.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include +#include + +#include "m_redirs.h" +#include "s_destroy.h" +#include "s_lcom.h" +#include "s_struct.h" + +static void + e_builtin_child(const t_lcom *ptr, + uint8_t bu_id, + t_msh *msh) +{ + int32_t ret; + + dup_redirs(ptr, msh); + ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); + lcom_clear(&msh->curr); + s_destroy(msh); + exit(ret); +} + +static void + e_builtin_parent(pid_t pid, + const t_lcom *ptr, + uint8_t bu_id, + t_msh *msh) +{ + int32_t status; + int32_t ret; + + while (wait(&status) != pid) + ; + ret = WEXITSTATUS(status); + if (bu_id != 6) + msh->ret = ret; + if (bu_id == 1 && msh->ret == 0) + { + msh->bu_ptr[bu_id](ptr->argv + 1, msh); + /* TODO: export $PWD */ + } + else if (bu_id == 6 && ret == 0) + { + if (ptr->argv[1]) + ret = ft_atoi(ptr->argv[1]); + else + ret = msh->ret; + lcom_clear(&msh->curr); + s_destroy(msh); + exit(ret); + } +} + +void + e_builtin(const t_lcom *ptr, + uint8_t bu_id, + t_msh *msh) +{ + pid_t pid; + + /* TODO: find a way to handle exit | bu_id = 6 */ + if ((pid = fork()) == 0) + { + e_builtin_child(ptr, bu_id, msh); + } + else if (pid < 0) + { + /* TODO: handle fork failed */ + } + else + { + e_builtin_parent(pid, ptr, bu_id, msh); + } +} -- cgit v1.2.3 From 6dc6bf6f46b736299826bfdd63192bdee16ba875 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 30 Jul 2020 18:08:50 +0200 Subject: Less retarded stuff --- src/e_builtins.c | 117 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 62 insertions(+), 55 deletions(-) (limited to 'src/e_builtins.c') diff --git a/src/e_builtins.c b/src/e_builtins.c index e35416a..ca512a3 100644 --- a/src/e_builtins.c +++ b/src/e_builtins.c @@ -21,69 +21,76 @@ #include "s_lcom.h" #include "s_struct.h" -static void - e_builtin_child(const t_lcom *ptr, - uint8_t bu_id, - t_msh *msh) -{ - int32_t ret; +/* static void */ +/* e_builtin_child(const t_lcom *ptr, */ +/* uint8_t bu_id, */ +/* t_msh *msh) */ +/* { */ +/* int32_t ret; */ - dup_redirs(ptr, msh); - ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); - lcom_clear(&msh->curr); - s_destroy(msh); - exit(ret); -} +/* dup_redirs(ptr, msh); */ +/* ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); */ +/* lcom_clear(&msh->curr); */ +/* s_destroy(msh); */ +/* exit(ret); */ +/* } */ -static void - e_builtin_parent(pid_t pid, - const t_lcom *ptr, - uint8_t bu_id, - t_msh *msh) -{ - int32_t status; - int32_t ret; +/* static void */ +/* e_builtin_parent(pid_t pid, */ +/* const t_lcom *ptr, */ +/* uint8_t bu_id, */ +/* t_msh *msh) */ +/* { */ +/* int32_t status; */ +/* int32_t ret; */ - while (wait(&status) != pid) - ; - ret = WEXITSTATUS(status); - if (bu_id != 6) - msh->ret = ret; - if (bu_id == 1 && msh->ret == 0) - { - msh->bu_ptr[bu_id](ptr->argv + 1, msh); - /* TODO: export $PWD */ - } - else if (bu_id == 6 && ret == 0) - { - if (ptr->argv[1]) - ret = ft_atoi(ptr->argv[1]); - else - ret = msh->ret; - lcom_clear(&msh->curr); - s_destroy(msh); - exit(ret); - } -} +/* while (wait(&status) != pid) */ +/* ; */ +/* ret = WEXITSTATUS(status); */ +/* if (bu_id != FT_ID_EXIT) */ +/* msh->ret = ret; */ +/* if (bu_id == FT_ID_CD && msh->ret == 0) */ +/* { */ +/* msh->bu_ptr[bu_id](ptr->argv + 1, msh); */ +/* /\* TODO: export $PWD *\/ */ +/* } */ +/* else if (bu_id == FT_ID_EXIT && ret == 0) */ +/* { */ +/* if (ptr->argv[1]) */ +/* ret = ft_atoi(ptr->argv[1]); */ +/* else */ +/* ret = msh->ret; */ +/* lcom_clear(&msh->curr); */ +/* s_destroy(msh); */ +/* exit(ret); */ +/* } */ +/* } */ void e_builtin(const t_lcom *ptr, uint8_t bu_id, t_msh *msh) { - pid_t pid; + int32_t ret; + + dup_redirs(ptr, msh); + ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); + lcom_clear(&msh->curr); + msh->ret = ret; + /* pid_t pid; */ - /* TODO: find a way to handle exit | bu_id = 6 */ - if ((pid = fork()) == 0) - { - e_builtin_child(ptr, bu_id, msh); - } - else if (pid < 0) - { - /* TODO: handle fork failed */ - } - else - { - e_builtin_parent(pid, ptr, bu_id, msh); - } + /* /\* TODO: find a way to handle exit | bu_id = 6 *\/ */ + /* e_builtin_child(ptr, bu_id, msh); */ + /* if ((pid = fork()) == 0) */ + /* { */ + /* e_builtin_child(ptr, bu_id, msh); */ + /* } */ + /* else if (pid < 0) */ + /* { */ + /* /\* TODO: handle fork failed *\/ */ + /* } */ + /* else */ + /* { */ + /* e_builtin_parent(pid, ptr, bu_id, msh); */ + /* } */ } -- cgit v1.2.3 From c19bd35afdb45e49cebdfd96e7adb1e6fe477f0c Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 30 Jul 2020 20:30:58 +0200 Subject: Double exit no more --- src/e_builtins.c | 61 -------------------------------------------------------- 1 file changed, 61 deletions(-) (limited to 'src/e_builtins.c') diff --git a/src/e_builtins.c b/src/e_builtins.c index ca512a3..fe4f7e1 100644 --- a/src/e_builtins.c +++ b/src/e_builtins.c @@ -21,51 +21,6 @@ #include "s_lcom.h" #include "s_struct.h" -/* static void */ -/* e_builtin_child(const t_lcom *ptr, */ -/* uint8_t bu_id, */ -/* t_msh *msh) */ -/* { */ -/* int32_t ret; */ - -/* dup_redirs(ptr, msh); */ -/* ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); */ -/* lcom_clear(&msh->curr); */ -/* s_destroy(msh); */ -/* exit(ret); */ -/* } */ - -/* static void */ -/* e_builtin_parent(pid_t pid, */ -/* const t_lcom *ptr, */ -/* uint8_t bu_id, */ -/* t_msh *msh) */ -/* { */ -/* int32_t status; */ -/* int32_t ret; */ - -/* while (wait(&status) != pid) */ -/* ; */ -/* ret = WEXITSTATUS(status); */ -/* if (bu_id != FT_ID_EXIT) */ -/* msh->ret = ret; */ -/* if (bu_id == FT_ID_CD && msh->ret == 0) */ -/* { */ -/* msh->bu_ptr[bu_id](ptr->argv + 1, msh); */ -/* /\* TODO: export $PWD *\/ */ -/* } */ -/* else if (bu_id == FT_ID_EXIT && ret == 0) */ -/* { */ -/* if (ptr->argv[1]) */ -/* ret = ft_atoi(ptr->argv[1]); */ -/* else */ -/* ret = msh->ret; */ -/* lcom_clear(&msh->curr); */ -/* s_destroy(msh); */ -/* exit(ret); */ -/* } */ -/* } */ - void e_builtin(const t_lcom *ptr, uint8_t bu_id, @@ -77,20 +32,4 @@ void ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); lcom_clear(&msh->curr); msh->ret = ret; - /* pid_t pid; */ - - /* /\* TODO: find a way to handle exit | bu_id = 6 *\/ */ - /* e_builtin_child(ptr, bu_id, msh); */ - /* if ((pid = fork()) == 0) */ - /* { */ - /* e_builtin_child(ptr, bu_id, msh); */ - /* } */ - /* else if (pid < 0) */ - /* { */ - /* /\* TODO: handle fork failed *\/ */ - /* } */ - /* else */ - /* { */ - /* e_builtin_parent(pid, ptr, bu_id, msh); */ - /* } */ } -- cgit v1.2.3 From 1c1901379b76e9869e3612d217c60784858c60ad Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 31 Jul 2020 23:59:35 +0200 Subject: Leak free --- src/e_builtins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/e_builtins.c') diff --git a/src/e_builtins.c b/src/e_builtins.c index fe4f7e1..5f53f90 100644 --- a/src/e_builtins.c +++ b/src/e_builtins.c @@ -30,6 +30,6 @@ void dup_redirs(ptr, msh); ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh); - lcom_clear(&msh->curr); + /* lcom_clear(&msh->curr); */ msh->ret = ret; } -- cgit v1.2.3