Fixed exit using old code + updates
This commit is contained in:
@@ -12,7 +12,18 @@
|
|||||||
|
|
||||||
#include "builtins.h"
|
#include "builtins.h"
|
||||||
|
|
||||||
u_int8_t builtin_exit(
|
static bool exit_arg_is_invalid(const char *arg)
|
||||||
|
{
|
||||||
|
if (arg == NULL)
|
||||||
|
return (true);
|
||||||
|
if ((*arg == '+' || *arg == '-') && arg[1] == '\0')
|
||||||
|
return (true);
|
||||||
|
if (!ft_strisnum(arg))
|
||||||
|
return (true);
|
||||||
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t builtin_exit(
|
||||||
t_command cmd,
|
t_command cmd,
|
||||||
t_minishell *msh
|
t_minishell *msh
|
||||||
)
|
)
|
||||||
@@ -24,21 +35,21 @@ u_int8_t builtin_exit(
|
|||||||
msh->exit = 1;
|
msh->exit = 1;
|
||||||
return (msh->exit_status);
|
return (msh->exit_status);
|
||||||
}
|
}
|
||||||
else if (!ft_strisnum(cmd.argv[1]))
|
if (exit_arg_is_invalid(cmd.argv[1]))
|
||||||
{
|
|
||||||
ft_eputstr("exit: ");
|
|
||||||
ft_eputendl(cmd.argv[1]);
|
|
||||||
ft_eputendl(": numeric argument required");
|
|
||||||
return (2);
|
|
||||||
}
|
|
||||||
else if (cmd.argc > 2)
|
|
||||||
{
|
|
||||||
ft_eputendl("exit: too many arguments");
|
|
||||||
return (2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
ft_eprintf("minishell: exit: %s: numeric argument required\n",
|
||||||
|
cmd.argv[1]);
|
||||||
msh->exit = 1;
|
msh->exit = 1;
|
||||||
return ((u_int8_t)ft_atol(cmd.argv[1]));
|
msh->exit_status = 2;
|
||||||
|
return (msh->exit_status);
|
||||||
}
|
}
|
||||||
|
if (cmd.argc > 2)
|
||||||
|
{
|
||||||
|
ft_eputendl("minishell: exit: too many arguments");
|
||||||
|
msh->exit_status = EXIT_FAILURE;
|
||||||
|
return (msh->exit_status);
|
||||||
|
}
|
||||||
|
msh->exit = 1;
|
||||||
|
msh->exit_status = (uint8_t)ft_atol(cmd.argv[1]);
|
||||||
|
return (msh->exit_status);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user