fix: execve failed
This commit is contained in:
parent
3d62d3dde9
commit
3d68490320
@ -11,6 +11,7 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "execution_private.h"
|
#include "execution_private.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
static int ft_own_cmd(t_data *data, t_cmd *cmd)
|
static int ft_own_cmd(t_data *data, t_cmd *cmd)
|
||||||
{
|
{
|
||||||
@ -41,7 +42,7 @@ static int ft_own_cmd(t_data *data, t_cmd *cmd)
|
|||||||
return (return_code);
|
return (return_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ft_executor(t_cmd *cmd, char **env)
|
static bool ft_executor(t_cmd *cmd, char **env)
|
||||||
{
|
{
|
||||||
if (cmd->fd_in[0] == -1 || cmd->fd_out[0] == -1 || cmd->executable == NULL)
|
if (cmd->fd_in[0] == -1 || cmd->fd_out[0] == -1 || cmd->executable == NULL)
|
||||||
return (0);
|
return (0);
|
||||||
@ -52,11 +53,15 @@ static int ft_executor(t_cmd *cmd, char **env)
|
|||||||
{
|
{
|
||||||
dup2(cmd->fd_in[0], 0);
|
dup2(cmd->fd_in[0], 0);
|
||||||
dup2(cmd->fd_out[0], 1);
|
dup2(cmd->fd_out[0], 1);
|
||||||
if (cmd->fd_in[0] > 2)
|
if (cmd->fd_in[1] != -1)
|
||||||
close(cmd->fd_in[0]);
|
dup2(cmd->fd_in[1], 0);
|
||||||
if (cmd->fd_out[0] > 2)
|
if (cmd->fd_out[1] != -1)
|
||||||
close(cmd->fd_out[0]);
|
dup2(cmd->fd_out[1], 1);
|
||||||
|
ft_closer(cmd->fd_in);
|
||||||
|
ft_closer(cmd->fd_out);
|
||||||
execve(cmd->executable, cmd->args, env);
|
execve(cmd->executable, cmd->args, env);
|
||||||
|
ft_eprintf("minishell: permission denied: %s\n", cmd->executable);
|
||||||
|
return (1);
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -78,9 +83,9 @@ static int ft_cmd_executor(t_data *data, t_cmd *cmd)
|
|||||||
if (env == NULL)
|
if (env == NULL)
|
||||||
return (1);
|
return (1);
|
||||||
exit_code = ft_executor(cmd, env);
|
exit_code = ft_executor(cmd, env);
|
||||||
if (exit_code == -1)
|
|
||||||
return (1);
|
|
||||||
ft_freer_tab_ultimate(1, env);
|
ft_freer_tab_ultimate(1, env);
|
||||||
|
if (exit_code == 1)
|
||||||
|
return (1);
|
||||||
}
|
}
|
||||||
if (ft_gen_exit_code(data))
|
if (ft_gen_exit_code(data))
|
||||||
return (1);
|
return (1);
|
||||||
|
Loading…
Reference in New Issue
Block a user