42_minishell/builtins/exit.c

47 lines
1.5 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* exit.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/02/24 10:17:59 by erey-bet #+# #+# */
/* Updated: 2023/02/24 12:44:05 by erey-bet ### ########.fr */
/* */
/* ************************************************************************** */
#include "../minishell.h"
static int error(int err, char *reason, char *problem, int fd)
{
write(fd, "bash: exit: ", 12);
if (problem != NULL)
{
ft_putstr_fd(problem, fd);
write(fd, ": ", 2);
}
ft_putstr_fd(reason, fd);
write(fd, "\n", 1);
return (err);
}
int ft_exit(char **args, int fd)
{
int i;
if (args[0] == NULL)
return (0);
i = -1;
if (ft_atoi_check(args[0]) == 0)
return (error(2, "numeric argument required", args[0], fd));
if (args[1] != NULL)
return (error(-1, "too many arguments", NULL, fd));
return (0);
}
int main(int argc, char *argv[])
{
(void)argc;
return(ft_exit(argv + 1, 1));
}