aboutsummaryrefslogtreecommitdiff
path: root/src/builtin/exit.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-23 09:09:17 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-23 10:31:27 +0200
commit11b258841f4a15c514c49af7d378b51cd6a8ab79 (patch)
tree0df3f625f49fc1a8ca0e74f81272120f07a35feb /src/builtin/exit.c
parent58fc321ec43be4c3f7976769733116232361857a (diff)
downloadminishell-11b258841f4a15c514c49af7d378b51cd6a8ab79.tar.gz
minishell-11b258841f4a15c514c49af7d378b51cd6a8ab79.tar.bz2
minishell-11b258841f4a15c514c49af7d378b51cd6a8ab79.zip
Fixing builtin which needed to not be run in a child process, Added exit builtin
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);
}