Fixed exit using old code + updates

This commit is contained in:
marcnava-42cursus
2026-02-13 22:05:25 +01:00
parent 217505e3b0
commit 637391470b

View File

@@ -12,7 +12,18 @@
#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_minishell *msh
)
@@ -24,21 +35,21 @@ u_int8_t builtin_exit(
msh->exit = 1;
return (msh->exit_status);
}
else if (!ft_strisnum(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
if (exit_arg_is_invalid(cmd.argv[1]))
{
ft_eprintf("minishell: exit: %s: numeric argument required\n",
cmd.argv[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);
}