42_minishell/builtins/exit.c

44 lines
1.6 KiB
C
Raw Permalink Normal View History

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* exit.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/02/24 10:17:59 by erey-bet #+# #+# */
2023-04-05 06:31:05 -04:00
/* Updated: 2023/04/05 12:30:46 by erey-bet ### ########.fr */
/* */
/* ************************************************************************** */
#include "./builtins_private.h"
2023-02-28 08:54:57 -05:00
static int error(int err, char *reason, char *problem)
{
2023-04-05 06:24:20 -04:00
ft_putstr_fd("bozoshell: bozo_exit ", 2);
if (problem != NULL)
{
2023-02-28 08:40:51 -05:00
ft_putstr_fd(problem, 2);
2023-02-28 08:53:56 -05:00
write(2, ": ", 3);
}
2023-02-28 08:40:51 -05:00
ft_putstr_fd(reason, 2);
return (err);
}
2023-04-05 06:17:16 -04:00
int ft_exit(char **args, int err)
{
if (args[0] == NULL)
2023-03-10 08:53:22 -05:00
{
2023-04-05 06:31:05 -04:00
write(1, "bozo_exit\n", 10);
2023-04-05 06:17:16 -04:00
return (err);
2023-03-10 08:53:22 -05:00
}
2023-02-28 08:28:54 -05:00
err = ft_atoi_check(args[0]);
if (err == 1)
2023-04-05 06:24:20 -04:00
return (error(err, "bozo_exit: numeric argument required\n", args[0]));
if (args[1] != NULL)
2023-04-05 06:24:20 -04:00
return (error(-1, "bozo_exit: too many arguments\n", NULL));
2023-02-28 08:40:51 -05:00
if (err > 0)
2023-04-05 06:24:20 -04:00
return (error(err, "bozo_exit: numeric argument required\n", args[0]));
2023-03-10 08:53:22 -05:00
write(1, "exit\n", 6);
return ((ft_atoi(args[0]) % 256 + 256) % 256);
}