From 637391470be63c8d0084843b9b8c22c822366e03 Mon Sep 17 00:00:00 2001 From: marcnava-42cursus Date: Fri, 13 Feb 2026 22:05:25 +0100 Subject: [PATCH] Fixed exit using old code + updates --- src/builtins/exit/exit.c | 41 +++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/src/builtins/exit/exit.c b/src/builtins/exit/exit.c index 11b3727..55622f9 100644 --- a/src/builtins/exit/exit.c +++ b/src/builtins/exit/exit.c @@ -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); }