fix: exit code works

This commit is contained in:
Camille Chauvet
2023-03-20 15:31:39 +01:00
parent d56aac4b25
commit a58f9a0c76
8 changed files with 37 additions and 18 deletions

View File

@ -1,17 +1,19 @@
#include "./utils.h"
#include <unistd.h>
char *ft_get_executable_with_path(const char *name)
char *ft_get_executable_with_path(t_data *data, const char *name)
{
char *path;
if (access(name, F_OK) != 0)
{
data->exit_code = 127;
ft_eprintf("minishell: %s bash: No such file or directery\n");
return (NULL);
}
if (access(name, X_OK) != 0)
{
data->exit_code = 126;
ft_eprintf("minishell: %s: permission denied\n", name);
return (NULL);
}
@ -24,7 +26,7 @@ char *ft_get_executable_with_path(const char *name)
return (path);
}
char *ft_get_executable_without_path(t_list **env, const char *name)
char *ft_get_executable_without_path(t_data *data, const char *name)
{
char **tab;
char *paths;
@ -32,9 +34,10 @@ char *ft_get_executable_without_path(t_list **env, const char *name)
size_t i;
path = NULL;
paths = get_value_by_key("PATH", env);
paths = get_value_by_key("PATH", data->env);
if (paths == NULL)
{
data->exit_code = 127;
ft_eprintf("minishell: %s: command not found\n", name);
return (NULL);
}
@ -61,17 +64,20 @@ char *ft_get_executable_without_path(t_list **env, const char *name)
}
ft_freer_tab_ultimate(1, tab);
if (path == NULL)
{
data->exit_code = 127;
ft_eprintf("minishell: %s: command not found\n", name);
}
return (path);
}
char *ft_get_executable(t_list **env, const char *name)
char *ft_get_executable(t_data *data, const char *name)
{
char *path;
if (name[0] == '.' || name[0] == '/')
path = ft_get_executable_with_path(name);
path = ft_get_executable_with_path(data, name);
else
path = ft_get_executable_without_path(env, name);
path = ft_get_executable_without_path(data, name);
return (path);
}

View File

@ -28,7 +28,7 @@ char **ft_split_quoted(const char *s, char c);
void ft_strshift(char *str, int shift);
char *ft_quote_remover(char *str);
int ft_atoi_check(const char *nptr);
char *ft_get_executable(t_list **env, const char *name);
char *ft_get_executable(t_data *data, const char *name);
void ft_closer(int fds[2]);
void ft_add_fd(int fds[2], int fd);