fik leak redirection

This commit is contained in:
kinou-p 2022-04-20 16:58:23 +02:00
parent f0ec3de703
commit 53b6ba7967
6 changed files with 36 additions and 14 deletions

View File

@ -6,7 +6,7 @@
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2022/03/06 12:50:24 by apommier #+# #+# #
# Updated: 2022/04/20 04:44:00 by apommier ### ########.fr #
# Updated: 2022/04/20 15:53:50 by apommier ### ########.fr #
# #
# **************************************************************************** #

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
/* Updated: 2022/04/20 04:44:53 by apommier ### ########.fr */
/* Updated: 2022/04/20 16:52:50 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
@ -68,7 +68,7 @@ char **ft_dup_double(char **env);
void execute(t_cmd *cmd);
//set_cmd.c
int error_parsing(void);
char *error_parsing(void);
t_cmd *set_cmd(char *input, char **path, int nb);
//exec_utils.c

View File

@ -6,13 +6,13 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/04/19 16:53:13 by apommier #+# #+# */
/* Updated: 2022/04/19 18:27:58 by apommier ### ########.fr */
/* Updated: 2022/04/20 16:51:05 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#include "../../includes/minishell.h"
int error_parsing(void)
char *error_parsing(void)
{
ft_putstr_fd("Minishell: error while parsing command\n", 2);
return (0);

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/03/09 15:18:58 by apommier #+# #+# */
/* Updated: 2022/04/20 15:22:35 by apommier ### ########.fr */
/* Updated: 2022/04/20 16:49:33 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
@ -82,7 +82,7 @@ int set_redirect_in(t_s_cmd *cmd, char **line, int *i, int index)
{
*line = ft_input(*line, cmd, *i);
if (!(*line))
return (error_parsing());
return (0);
if (cmd->in_type == 1)
{
if (wait_prompt(cmd, index, 0, 0) == -1)
@ -110,7 +110,7 @@ char *set_redirection(t_s_cmd *cmd, char *line, int index, int i)
if (!is_in_quote(line, i))
{
line = ft_output(line, cmd, i);
if (!set_file(cmd->outfile, cmd->in_type))
if (!line || !set_file(cmd->outfile, cmd->in_type))
return (0);
i = 0;
}

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/04/19 14:44:22 by apommier #+# #+# */
/* Updated: 2022/04/19 18:20:56 by apommier ### ########.fr */
/* Updated: 2022/04/20 16:50:37 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
@ -46,9 +46,9 @@ char *set_input(char *line, t_s_cmd *cmd, int index)
free(cmd->infile);
cmd->infile = get_word(line, index);
cmd->infile = set_var(cmd->big_cmd, cmd->infile);
if (cmd->in_type == 0)
if (cmd->in_type == 0 && !check_access_input(cmd))
{
if (!check_access_input(cmd))
free(line);
return (0);
}
line = cut_str(line, index, i);
@ -70,7 +70,7 @@ char *ft_input(char *line, t_s_cmd *cmd, int index)
else
cmd->in_type = 0;
if (next == '<' || next == '>' || !next)
return (0);
return (error_parsing());
line = set_input(line, cmd, i);
if (!line)
return (0);

View File

@ -6,12 +6,29 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/04/19 14:45:10 by apommier #+# #+# */
/* Updated: 2022/04/20 14:09:57 by apommier ### ########.fr */
/* Updated: 2022/04/20 16:45:06 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#include "../../includes/minishell.h"
int check_access_output(t_s_cmd *cmd)
{
if (access(cmd->outfile, W_OK))
{
ft_putstr_fd("Minishell: ", 2);
ft_putstr_fd(cmd->outfile, 2);
if (access(cmd->outfile, F_OK))
ft_putstr_fd(": no such file\n", 2);
else
ft_putstr_fd(": Permission denied\n", 2);
free(cmd->outfile);
return (0);
}
return (1);
}
char *set_output(char *line, t_s_cmd *cmd, int index)
{
int i;
@ -31,6 +48,11 @@ char *set_output(char *line, t_s_cmd *cmd, int index)
free(cmd->outfile);
cmd->outfile = get_word(line, index);
cmd->outfile = set_var(cmd->big_cmd, cmd->outfile);
if (!check_access_output(cmd))
{
free(line);
return (0);
}
line = cut_str(line, index, i);
return (line);
}