From cfd4a67957c8a1c57e21e892b5060bc6c5d017f0 Mon Sep 17 00:00:00 2001 From: Tanguy Maze Date: Fri, 18 Oct 2019 14:17:34 +0200 Subject: [PATCH] Changed comportment on error for check_path functions --- srcs/ms_env.c | 2 +- srcs/ms_exec.c | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/srcs/ms_env.c b/srcs/ms_env.c index cca57b9..c21c6f6 100644 --- a/srcs/ms_env.c +++ b/srcs/ms_env.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/09/20 11:43:53 by tmaze #+# #+# */ -/* Updated: 2019/09/27 16:21:14 by tmaze ### ########.fr */ +/* Updated: 2019/10/18 14:17:12 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/ms_exec.c b/srcs/ms_exec.c index 6fdf5c4..4307f34 100644 --- a/srcs/ms_exec.c +++ b/srcs/ms_exec.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/09/26 16:25:00 by tmaze #+# #+# */ -/* Updated: 2019/10/10 14:05:31 by tmaze ### ########.fr */ +/* Updated: 2019/10/18 14:10:59 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,18 +39,20 @@ char *check_path_slash(char *exec) if ((i = access(exec, F_OK)) != 0) put_error(exec, "no such file or directory"); if (i != 0) - return (exec); + return (NULL); if ((i = stat(exec, &info)) != 0) put_error(exec, "can't determine info"); if (i != 0) - return (exec); + return (NULL); if (!S_ISREG(info.st_mode)) { put_error(exec, "not an executable file"); - return (exec); + return (NULL); } if ((i = access(exec, X_OK)) != 0) put_error(exec, "permission denied"); + if (i != 0) + return (NULL); return (exec); } @@ -64,24 +66,24 @@ char *check_path_dot(char *exec, t_env *env) || path->val == NULL || (tmp = ft_strjoin(path->val, "/")) == NULL) { put_error(exec, "memory error"); - return (exec); + return (NULL); } if ((ret = ft_strjoin(tmp, exec)) == NULL) put_error(exec, "memory error"); ft_strdel(&tmp); if (ret == NULL) - return (exec); + return (NULL); if (access(ret, F_OK) == 0) { if (access(ret, X_OK) == 0) - return (ret); + return (exec); put_error(exec, "permission denied"); ft_strdel(&ret); - return (exec); + return (NULL); } put_error(exec, "no such file or directory"); ft_strdel(&ret); - return (exec); + return (NULL); } char *check_path(char *exec, t_env *env) @@ -165,6 +167,7 @@ int exec_cmd(char **argv, t_env **env) if (ft_strcmp(path, argv[0]) != 0) ft_strdel(&path); ft_del_words_tables(&env_tab); + lstdel(env); exit(-1); } else if (ret == -1)