diff options
Diffstat (limited to '')
| -rw-r--r-- | src/ft_e_builtins.c | 34 | ||||
| -rw-r--r-- | src/ft_e_externs.c | 43 | ||||
| -rw-r--r-- | src/ft_m_loop.c | 1 | ||||
| -rw-r--r-- | src/ft_m_redirs.c | 50 | ||||
| -rw-r--r-- | src/ft_m_redirs.h | 21 | 
5 files changed, 79 insertions, 70 deletions
| 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 | 
