summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozanLeClerc <bousset.rudy@gmail.com>2020-04-23 20:13:04 +0200
committerJozanLeClerc <bousset.rudy@gmail.com>2020-04-23 20:13:04 +0200
commit2274253667db7bb8c52440ec1b79d6106482b44b (patch)
treee3ca092c988656596113826ab667e8c07621e7e1
parentI am happy (diff)
download42-minishell-2274253667db7bb8c52440ec1b79d6106482b44b.tar.gz
42-minishell-2274253667db7bb8c52440ec1b79d6106482b44b.tar.bz2
42-minishell-2274253667db7bb8c52440ec1b79d6106482b44b.tar.xz
42-minishell-2274253667db7bb8c52440ec1b79d6106482b44b.tar.zst
42-minishell-2274253667db7bb8c52440ec1b79d6106482b44b.zip
Not bad tbh
-rw-r--r--Makefile1
-rw-r--r--src/ft_e_builtins.c34
-rw-r--r--src/ft_e_externs.c43
-rw-r--r--src/ft_m_loop.c1
-rw-r--r--src/ft_m_redirs.c50
-rw-r--r--src/ft_m_redirs.h21
6 files changed, 80 insertions, 70 deletions
diff --git a/Makefile b/Makefile
index b367985..e95d96c 100644
--- a/Makefile
+++ b/Makefile
@@ -32,6 +32,7 @@ SRCS_NAME += ft_f_file.c
SRCS_NAME += ft_m_funptr.c
SRCS_NAME += ft_m_loop.c
SRCS_NAME += ft_m_prompt.c
+SRCS_NAME += ft_m_redirs.c
SRCS_NAME += ft_s_destroy.c
SRCS_NAME += ft_s_init.c
SRCS_NAME += ft_s_lcom.c
diff --git a/src/ft_e_builtins.c b/src/ft_e_builtins.c
index d32fbaa..bc3eece 100644
--- a/src/ft_e_builtins.c
+++ b/src/ft_e_builtins.c
@@ -14,46 +14,14 @@
#include <libft.h>
#include <stdlib.h>
#include <stdint.h>
-#include <fcntl.h>
#include <unistd.h>
-#include <errno.h>
-#include "ft_f_file.h"
+#include "ft_m_redirs.h"
#include "ft_s_destroy.h"
#include "ft_s_lcom.h"
#include "ft_s_struct.h"
static void
- ft_dup_redirs(const t_lcom *ptr,
- t_msh *msh)
-{
- int32_t fd;
-
- if (ptr->redir == -1)
- {
- if ((fd = open(ptr->rdrpath, O_RDONLY)) == -1)
- ft_f_file(ptr->rdrpath, msh);
- /* TODO: handle < redir */
- }
- if (ptr->redir == 1)
- {
- if ((fd = open(ptr->rdrpath,
- O_CREAT | O_TRUNC | O_WRONLY, 0644)) == -1)
- ft_f_file(ptr->rdrpath, msh);
- dup2(fd, STDOUT_FILENO);
- close(fd);
- }
- if (ptr->redir == 2)
- {
- if ((fd = open(ptr->rdrpath,
- O_CREAT | O_APPEND | O_WRONLY, 0644)) == -1)
- ft_f_file(ptr->rdrpath, msh);
- dup2(fd, STDOUT_FILENO);
- close(fd);
- }
-}
-
-static void
ft_e_builtin_child(const t_lcom *ptr,
uint8_t bu_id,
t_msh *msh)
diff --git a/src/ft_e_externs.c b/src/ft_e_externs.c
index 448a243..fa682a0 100644
--- a/src/ft_e_externs.c
+++ b/src/ft_e_externs.c
@@ -13,50 +13,19 @@
#include <sys/wait.h>
#include <libft.h>
#include <stdlib.h>
-#include <fcntl.h>
+#include <stdint.h>
#include <unistd.h>
-#include <errno.h>
-#include "ft_f_file.h"
#include "ft_e_externs_next.h"
+#include "ft_m_redirs.h"
+#include "ft_s_destroy.h"
#include "ft_s_lcom.h"
#include "ft_s_struct.h"
-#include "ft_s_destroy.h"
-
-static void
- ft_dup_redirs(const t_lcom *ptr,
- t_msh *msh)
-{
- int32_t fd;
-
- if (ptr->redir == -1)
- {
- if ((fd = open(ptr->rdrpath, O_RDONLY)) == -1)
- ft_f_file(ptr->rdrpath, msh);
- /* TODO: handle < redir */
- }
- if (ptr->redir == 1)
- {
- if ((fd = open(ptr->rdrpath,
- O_CREAT | O_TRUNC | O_WRONLY, 0644)) == -1)
- ft_f_file(ptr->rdrpath, msh);
- dup2(fd, STDOUT_FILENO);
- close(fd);
- }
- if (ptr->redir == 2)
- {
- if ((fd = open(ptr->rdrpath,
- O_CREAT | O_APPEND | O_WRONLY, 0644)) == -1)
- ft_f_file(ptr->rdrpath, msh);
- dup2(fd, STDOUT_FILENO);
- close(fd);
- }
-}
static void
-ft_e_extern_child(const char *fullpath,
- t_lcom *ptr,
- t_msh *msh)
+ ft_e_extern_child(const char *fullpath,
+ t_lcom *ptr,
+ t_msh *msh)
{
int32_t ret;
diff --git a/src/ft_m_loop.c b/src/ft_m_loop.c
index 6902d0b..def1f91 100644
--- a/src/ft_m_loop.c
+++ b/src/ft_m_loop.c
@@ -42,6 +42,7 @@ uint8_t
/* TODO: redirect vvv redirect */
/* "msh ~> cat < Makefile" aka read to stdin */
/* TODO: "msh ~> some command \": re GNL into ft_nrealloc */
+ /* TODO: the chad pipes | */
}
else
{
diff --git a/src/ft_m_redirs.c b/src/ft_m_redirs.c
new file mode 100644
index 0000000..66c002a
--- /dev/null
+++ b/src/ft_m_redirs.c
@@ -0,0 +1,50 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_m_redirs.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "ft_f_file.h"
+#include "ft_s_destroy.h"
+#include "ft_s_lcom.h"
+#include "ft_s_struct.h"
+
+void
+ ft_dup_redirs(const t_lcom *ptr,
+ t_msh *msh)
+{
+ int32_t fd;
+
+ if (ptr->redir == -1)
+ {
+ if ((fd = open(ptr->rdrpath, O_RDONLY)) == -1)
+ ft_f_file(ptr->rdrpath, msh);
+ /* TODO: handle < redir */
+ }
+ if (ptr->redir == 1)
+ {
+ if ((fd = open(ptr->rdrpath,
+ O_CREAT | O_TRUNC | O_WRONLY, 0644)) == -1)
+ ft_f_file(ptr->rdrpath, msh);
+ dup2(fd, STDOUT_FILENO);
+ close(fd);
+ }
+ if (ptr->redir == 2)
+ {
+ if ((fd = open(ptr->rdrpath,
+ O_CREAT | O_APPEND | O_WRONLY, 0644)) == -1)
+ ft_f_file(ptr->rdrpath, msh);
+ dup2(fd, STDOUT_FILENO);
+ close(fd);
+ }
+}
diff --git a/src/ft_m_redirs.h b/src/ft_m_redirs.h
new file mode 100644
index 0000000..9021cb8
--- /dev/null
+++ b/src/ft_m_redirs.h
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_m_redirs.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_M_REDIRS_H
+#define FT_M_REDIRS_H
+
+#include "ft_s_struct.h"
+
+void ft_dup_redirs(const t_lcom *ptr,
+ t_msh *msh);
+
+#endif