From f70c506fed0a917daa70e56c93e60e6e7745bd66 Mon Sep 17 00:00:00 2001 From: y-syo Date: Mon, 10 Jun 2024 18:17:12 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix(exec=5Ffn)?= =?UTF-8?q?:=20fixed=20exec=20functions,=20not=20normed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/exec/exec_split_cmd.c | 15 ++++++++------- src/exec/get_path.c | 15 ++++++--------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/exec/exec_split_cmd.c b/src/exec/exec_split_cmd.c index 528683b..e805cb7 100644 --- a/src/exec/exec_split_cmd.c +++ b/src/exec/exec_split_cmd.c @@ -6,7 +6,7 @@ /* By: mmoussou cmd[0] != '/') - cmd->cmd = get_cmd_global_path(cmd->cmd, env); - else if (cmd->cmd[0] == '.' && cmd->cmd[1] == '/') + if (cmd->cmd[0] == '.' && cmd->cmd[1] == '/') cmd->cmd = get_cmd_local_path(cmd->cmd, env); + else if (cmd->cmd[0] != '/') + cmd->cmd = get_cmd_global_path(cmd->cmd, env); if (!(cmd->cmd)) return (-1); return (0); @@ -70,7 +71,7 @@ int exec_single_cmd(t_cmd *cmd, char **env, t_env *env_t) if (status == -1) return (-1); status = switch_cmd_path(cmd, env_t); - if (!status) + if (status == -1) return (-1); fork_pid = fork(); if (fork_pid == -1) @@ -96,7 +97,7 @@ int exec_last_cmd(t_cmd *cmd, char **env, t_env *env_t) if (status == -1) return (-1); status = switch_cmd_path(cmd, env_t); - if (!status) + if (status == -1) return (-1); fork_pid = fork(); if (fork_pid == -1) diff --git a/src/exec/get_path.c b/src/exec/get_path.c index 551c403..7c12b2a 100644 --- a/src/exec/get_path.c +++ b/src/exec/get_path.c @@ -6,7 +6,7 @@ /* By: mmoussou d_name) + 2); + + strlen(dir_entry->d_name) + 3); if (!abs_path) return (-1); - ft_strlcat(abs_path, path, ft_strlen(path)); - ft_strlcat(abs_path, "/", 1); - ft_strlcat(abs_path, dir_entry->d_name, ft_strlen(dir_entry->d_name)); + ft_strlcpy(abs_path, path, ft_strlen(path) + 1); + ft_strlcat(abs_path, "/", ft_strlen(abs_path) + 2); + ft_strlcat(abs_path, dir_entry->d_name, ft_strlen(abs_path) + + ft_strlen(dir_entry->d_name) + 1); stat(abs_path, &entry); if (S_ISREG(entry.st_mode) && (entry.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) @@ -55,7 +53,6 @@ int add_path_to_list(char *path, struct dirent *dir_entry, t_list *list_entry) return (-1); } } - free(abs_path); return (0); }