aboutsummaryrefslogtreecommitdiff
path: root/src/builtin/exit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/builtin/exit.c')
-rw-r--r--src/builtin/exit.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/builtin/exit.c b/src/builtin/exit.c
index 1e6ec45..aa5d10b 100644
--- a/src/builtin/exit.c
+++ b/src/builtin/exit.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:10:16 by charles #+# #+# */
-/* Updated: 2020/04/01 17:10:17 by charles ### ########.fr */
+/* Updated: 2020/06/23 10:03:39 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,7 +19,28 @@
int builtin_exit(char **argv, t_env env)
{
- (void)argv;
+ int status;
+
(void)env;
+ if (argv[1] == NULL)
+ status = 0;
+ else if (argv[2] != NULL)
+ {
+ // replace with minishell error system
+ ft_putendl_fd("minishell: exit: too many arguments", STDERR_FILENO);
+ return 1;
+ }
+ else
+ {
+ errno = 0;
+ status = ft_atoi_strict(argv[1]);
+ if (errno != 0)
+ {
+ // replace with minishell error system
+ ft_putendl_fd("minishell: exit: ---argv[1]---: numeric argument required", STDERR_FILENO);
+ return 2;
+ }
+ }
+ exit(status % 256);
return (0);
}