diff --git a/Makefile b/Makefile index 0baae2b..55cc676 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: apommier +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # 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 # # # # **************************************************************************** # diff --git a/includes/minishell.h b/includes/minishell.h index a6f8539..186ef66 100644 --- a/includes/minishell.h +++ b/includes/minishell.h @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 diff --git a/srcs/set_cmd/set_cmd_utils.c b/srcs/set_cmd/set_cmd_utils.c index ed0c418..9896817 100644 --- a/srcs/set_cmd/set_cmd_utils.c +++ b/srcs/set_cmd/set_cmd_utils.c @@ -6,13 +6,13 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); diff --git a/srcs/set_redirection/redirection.c b/srcs/set_redirection/redirection.c index 72ba24b..ba706fd 100644 --- a/srcs/set_redirection/redirection.c +++ b/srcs/set_redirection/redirection.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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; } diff --git a/srcs/set_redirection/set_input.c b/srcs/set_redirection/set_input.c index 4629995..9325116 100644 --- a/srcs/set_redirection/set_input.c +++ b/srcs/set_redirection/set_input.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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,10 +46,10 @@ 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)) - return (0); + free(line); + return (0); } line = cut_str(line, index, i); return (line); @@ -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); diff --git a/srcs/set_redirection/set_output.c b/srcs/set_redirection/set_output.c index d56aec2..b027a6a 100644 --- a/srcs/set_redirection/set_output.c +++ b/srcs/set_redirection/set_output.c @@ -6,12 +6,29 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); }