From 8e1c7369d4940cdacb1a62b95fec0d194048f0bf Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Thu, 23 Mar 2023 17:21:32 +0100 Subject: [PATCH] =?UTF-8?q?Rien=20=C3=A0=20dire=20:')?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bonus/pipex_bonus.c | 5 ++--- bonus/pipex_parsing_bonus.c | 7 +++++-- bonus/pipex_utils2_bonus.c | 16 ++++++++++------ bonus/pipex_utils_bonus2.c | 0 mandatory/pipex_parsing.c | 11 ++++++----- 5 files changed, 23 insertions(+), 16 deletions(-) create mode 100644 bonus/pipex_utils_bonus2.c diff --git a/bonus/pipex_bonus.c b/bonus/pipex_bonus.c index 29c0f37..1778229 100644 --- a/bonus/pipex_bonus.c +++ b/bonus/pipex_bonus.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/03/20 09:48:45 by erey-bet #+# #+# */ -/* Updated: 2023/03/21 15:29:21 by erey-bet ### ########.fr */ +/* Updated: 2023/03/23 17:15:05 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -105,8 +105,7 @@ int main(int argc, char *argv[], char **env) return (free_all(&data)); } else if (parsing(argc, argv, env, &data)) - return (free_all(&data)); - data.argc = argc; + return (1); if (verification_command(argv, data)) return (free_all(&data)); if (pipex(argc, data)) diff --git a/bonus/pipex_parsing_bonus.c b/bonus/pipex_parsing_bonus.c index fb280cb..a086216 100644 --- a/bonus/pipex_parsing_bonus.c +++ b/bonus/pipex_parsing_bonus.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/19 17:03:01 by erey-bet #+# #+# */ -/* Updated: 2023/03/21 15:16:49 by erey-bet ### ########.fr */ +/* Updated: 2023/03/23 17:14:59 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ int parsing(int argc, char *argv[], char **env, t_data *data) { int i; + data->argc = argc; data->fd2 = open(argv[argc - 1], O_WRONLY | O_TRUNC | O_CREAT, 0644); if (data->fd2 < 0) return (print_error(0, argv[argc - 1])); @@ -27,12 +28,14 @@ int parsing(int argc, char *argv[], char **env, t_data *data) return (1); data->flgs = ft_calloc(argc - 2, sizeof(char *)); if (!data->flgs) - return (1); + return (free_all(data)); i = -1; while (++i < argc - 3) { data->cmds[i] = get_command(argv[2 + i]); data->flgs[i] = ft_split(argv[2 + i], ' '); + if (!data->cmds[i] || !data->flgs[i]) + return (free_all(data)); } data->env = env; return (0); diff --git a/bonus/pipex_utils2_bonus.c b/bonus/pipex_utils2_bonus.c index f04f834..cea29dd 100644 --- a/bonus/pipex_utils2_bonus.c +++ b/bonus/pipex_utils2_bonus.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/14 15:46:08 by erey-bet #+# #+# */ -/* Updated: 2023/03/22 16:24:46 by erey-bet ### ########.fr */ +/* Updated: 2023/03/23 17:17:24 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,10 +64,13 @@ void free_flgs(t_data *data) y = -1; while (++y < data->argc - 3) { - i = -1; - while (data->flgs[y][++i]) - free(data->flgs[y][i]); - free(data->flgs[y]); + if (data->flgs[y]) + { + i = -1; + while (data->flgs[y][++i]) + free(data->flgs[y][i]); + free(data->flgs[y]); + } } free(data->flgs); } @@ -86,7 +89,8 @@ int free_all(t_data *data) { i = -1; while (++i < data->argc - 3) - free(data->cmds[i]); + if (data->cmds[i]) + free(data->cmds[i]); free(data->cmds); } return (1); diff --git a/bonus/pipex_utils_bonus2.c b/bonus/pipex_utils_bonus2.c new file mode 100644 index 0000000..e69de29 diff --git a/mandatory/pipex_parsing.c b/mandatory/pipex_parsing.c index 4aa3658..02601b6 100644 --- a/mandatory/pipex_parsing.c +++ b/mandatory/pipex_parsing.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/19 17:03:01 by erey-bet #+# #+# */ -/* Updated: 2023/03/21 15:58:19 by erey-bet ### ########.fr */ +/* Updated: 2023/03/23 17:04:19 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,9 +62,11 @@ char *cmd_exist(char **env, char **cmd, int y, char **s) { char *path; size_t i; + size_t len; i = 4; - while (i < ft_strlen(*env)) + len = ft_strlen(*env); + while (i < len) { test_acces(s, cmd, &path, &y); if (path) @@ -72,7 +74,7 @@ char *cmd_exist(char **env, char **cmd, int y, char **s) *s = ft_calloc(ft_strlen(*env) + 1, 1); if (*s == NULL) return (NULL); - while ((*env)[++i] != ':') + while ((*env)[++i] != ':' && i < len) (*s)[y++] = (*env)[i]; } free(*s); @@ -87,8 +89,7 @@ char *find_command(char **env, char *cmd) while (*env != NULL) { - if (ft_strnstr(*env, "PATH=/", ft_strlen(*env)) - && ft_strchr(*env, ':') > 0) + if (ft_strnstr(*env, "PATH=", 6)) break ; env++; }