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); }