summaryrefslogtreecommitdiffstats
path: root/src/e_redirs.c
diff options
context:
space:
mode:
authorJozanLeClerc <bousset.rudy@gmail.com>2020-09-28 17:14:39 +0200
committerJozanLeClerc <bousset.rudy@gmail.com>2020-09-28 17:14:39 +0200
commit60865a986bfbee6923c8b85351d1ec6f5062bc08 (patch)
treef6bbfd6bcde2826b30f09a101fb98d59e5d09708 /src/e_redirs.c
parentlater (diff)
download42-minishell-60865a986bfbee6923c8b85351d1ec6f5062bc08.tar.gz
42-minishell-60865a986bfbee6923c8b85351d1ec6f5062bc08.tar.bz2
42-minishell-60865a986bfbee6923c8b85351d1ec6f5062bc08.tar.xz
42-minishell-60865a986bfbee6923c8b85351d1ec6f5062bc08.tar.zst
42-minishell-60865a986bfbee6923c8b85351d1ec6f5062bc08.zip
In progress
Diffstat (limited to '')
-rw-r--r--src/e_redirs.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/e_redirs.c b/src/e_redirs.c
index 7416349..b07026f 100644
--- a/src/e_redirs.c
+++ b/src/e_redirs.c
@@ -15,12 +15,25 @@
#include <stddef.h>
#include <fcntl.h>
#include <unistd.h>
+#include <stdio.h>
#include "f_fail.h"
#include "s_destroy.h"
#include "s_line.h"
#include "s_struct.h"
+static void e_redir_minus_two(struct s_lredir *ptr, t_msh *msh)
+{
+ (void)msh;
+ if (ptr->heredoc == NULL)
+ {
+ return ;
+ }
+ dup2(STDOUT_FILENO, STDIN_FILENO);
+ write(STDOUT_FILENO, ptr->heredoc, ft_strlen(ptr->heredoc) + 1);
+ close(STDIN_FILENO);
+}
+
static void e_redir_minus_one(struct s_lredir *ptr, t_msh *msh)
{
int32_t fd;
@@ -67,7 +80,11 @@ void e_dup_redirs(const t_com *com, t_msh *msh)
ptr = com->rdr;
while (ptr != NULL)
{
- if (ptr->redir == -1)
+ if (ptr->redir == -2)
+ {
+ e_redir_minus_two(ptr, msh);
+ }
+ else if (ptr->redir == -1)
{
e_redir_minus_one(ptr, msh);
}