add ft_exit.c and return when exit
This commit is contained in:
parent
8d6301e9e0
commit
50b63411bf
3
Makefile
3
Makefile
@ -6,7 +6,7 @@
|
|||||||
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2022/03/06 12:50:24 by apommier #+# #+# #
|
# Created: 2022/03/06 12:50:24 by apommier #+# #+# #
|
||||||
# Updated: 2022/04/15 05:49:45 by apommier ### ########.fr #
|
# Updated: 2022/04/15 12:36:24 by apommier ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -18,6 +18,7 @@ SRCS = srcs/main.c\
|
|||||||
srcs/set_cmd/set_cmd.c\
|
srcs/set_cmd/set_cmd.c\
|
||||||
srcs/set_redirection/redirection.c\
|
srcs/set_redirection/redirection.c\
|
||||||
srcs/set_redirection/utils.c\
|
srcs/set_redirection/utils.c\
|
||||||
|
srcs/built_in/exit.c\
|
||||||
srcs/built_in/unset.c\
|
srcs/built_in/unset.c\
|
||||||
srcs/built_in/cd.c\
|
srcs/built_in/cd.c\
|
||||||
srcs/built_in/echo.c\
|
srcs/built_in/echo.c\
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/15 00:20:25 by apommier ### ########.fr */
|
/* Updated: 2022/04/15 12:33:26 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ char *get_command(char **exec, char **env);
|
|||||||
|
|
||||||
//free_cmd
|
//free_cmd
|
||||||
void free_cmd(t_cmd *cmd);
|
void free_cmd(t_cmd *cmd);
|
||||||
void exit_shell(t_cmd *cmd);
|
void exit_shell(t_cmd *cmd, int ret);
|
||||||
|
|
||||||
//set_quote.c
|
//set_quote.c
|
||||||
char *set_var(t_cmd *big_cmd, char *cmd);
|
char *set_var(t_cmd *big_cmd, char *cmd);
|
||||||
@ -117,6 +117,7 @@ int size_path(char **str);
|
|||||||
int check_return(t_s_cmd *cmd, int var);
|
int check_return(t_s_cmd *cmd, int var);
|
||||||
|
|
||||||
//real builtin
|
//real builtin
|
||||||
|
void ft_exit(t_s_cmd *cmd);
|
||||||
int print_env(t_cmd *cmd);
|
int print_env(t_cmd *cmd);
|
||||||
void ft_env(t_s_cmd *cmd, char **env);
|
void ft_env(t_s_cmd *cmd, char **env);
|
||||||
void ft_exit(t_s_cmd *cmd);
|
void ft_exit(t_s_cmd *cmd);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/02/28 17:12:52 by sadjigui #+# #+# */
|
/* Created: 2022/02/28 17:12:52 by sadjigui #+# #+# */
|
||||||
/* Updated: 2022/04/09 21:24:02 by apommier ### ########.fr */
|
/* Updated: 2022/04/15 12:35:45 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
int is_builtin(char *cmd)
|
int is_builtin(char *cmd)
|
||||||
{
|
{
|
||||||
|
if (!ft_strcmp(cmd, "exit"))
|
||||||
|
return (1);
|
||||||
if (!ft_strcmp(cmd, "env"))
|
if (!ft_strcmp(cmd, "env"))
|
||||||
return (1);
|
return (1);
|
||||||
if (!ft_strcmp(cmd, "export"))
|
if (!ft_strcmp(cmd, "export"))
|
||||||
@ -31,6 +33,8 @@ int is_builtin(char *cmd)
|
|||||||
|
|
||||||
void call_builtin(t_cmd *cmd)
|
void call_builtin(t_cmd *cmd)
|
||||||
{
|
{
|
||||||
|
if (!ft_strcmp(cmd->current_s_cmd->cmd, "exit"))
|
||||||
|
ft_exit(cmd->current_s_cmd);
|
||||||
if (!ft_strcmp(cmd->current_s_cmd->cmd, "env"))
|
if (!ft_strcmp(cmd->current_s_cmd->cmd, "env"))
|
||||||
print_env(cmd);
|
print_env(cmd);
|
||||||
if (!ft_strcmp(cmd->current_s_cmd->cmd, "export"))
|
if (!ft_strcmp(cmd->current_s_cmd->cmd, "export"))
|
||||||
|
|||||||
41
srcs/built_in/exit.c
Normal file
41
srcs/built_in/exit.c
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* exit.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2022/04/15 11:23:32 by apommier #+# #+# */
|
||||||
|
/* Updated: 2022/04/15 13:02:34 by apommier ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../../includes/minishell.h"
|
||||||
|
|
||||||
|
void ft_exit(t_s_cmd *cmd)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = -1;
|
||||||
|
//printf("nb_args= %d\n", cmd->nb_args);
|
||||||
|
if (cmd->nb_args > 2)
|
||||||
|
{
|
||||||
|
ft_putstr_fd("Minishell: exit: too many arguments\n", 2);
|
||||||
|
if (cmd->child)
|
||||||
|
cmd->big_cmd->err_var = 1;
|
||||||
|
else
|
||||||
|
exit(1);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
else if (cmd->nb_args == 1)
|
||||||
|
exit_shell(cmd->big_cmd, 0);
|
||||||
|
while (cmd->args[1][++i])
|
||||||
|
{
|
||||||
|
if (!ft_isdigit(cmd->args[1][i]) && !(cmd->args[1][i] == '-' && ft_isdigit(cmd->args[1][i + 1])))
|
||||||
|
{
|
||||||
|
ft_putstr_fd("Minishell: exit: numeric argument required\n", 2);
|
||||||
|
exit_shell(cmd->big_cmd, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit_shell(cmd->big_cmd, ft_atoi(cmd->args[1]));
|
||||||
|
}
|
||||||
10
srcs/main.c
10
srcs/main.c
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/06 13:27:11 by apommier #+# #+# */
|
/* Created: 2022/03/06 13:27:11 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/15 06:01:07 by apommier ### ########.fr */
|
/* Updated: 2022/04/15 12:34:32 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -62,14 +62,14 @@ void print_prompt(char **path)
|
|||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
input = readline("\033[1;31m~$ \033[0m");
|
input = readline("\033[1;31m~$ \033[0m");
|
||||||
if (!input)
|
/*if (!input)
|
||||||
exit_shell(cmd);
|
exit_shell(cmd);*/
|
||||||
add_history(input);
|
add_history(input);
|
||||||
if (!ft_strcmp("exit", input) && input)
|
/*if (!ft_strcmp("exit", input) && input)
|
||||||
{
|
{
|
||||||
free(input);
|
free(input);
|
||||||
exit_shell(cmd);
|
exit_shell(cmd);
|
||||||
}
|
}*/
|
||||||
if (ft_strlen(input) && next_space(input, 0) && input)
|
if (ft_strlen(input) && next_space(input, 0) && input)
|
||||||
{
|
{
|
||||||
cmd = set_cmd(input, path);
|
cmd = set_cmd(input, path);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/02 18:51:31 by apommier #+# #+# */
|
/* Created: 2022/04/02 18:51:31 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/15 06:29:09 by apommier ### ########.fr */
|
/* Updated: 2022/04/15 11:22:50 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|||||||
@ -6,26 +6,29 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/09 12:33:30 by apommier #+# #+# */
|
/* Created: 2022/03/09 12:33:30 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/13 21:25:05 by apommier ### ########.fr */
|
/* Updated: 2022/04/15 12:55:45 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "../../includes/minishell.h"
|
#include "../../includes/minishell.h"
|
||||||
|
|
||||||
void exit_shell(t_cmd *cmd)
|
void exit_shell(t_cmd *cmd, int ret)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
unsigned char ret_exit;
|
||||||
|
|
||||||
|
ret_exit = (unsigned char)ret;
|
||||||
i = 0;
|
i = 0;
|
||||||
if (cmd)
|
/*if (cmd)
|
||||||
free_double(cmd->env);
|
free_double(cmd->env);*/
|
||||||
|
free_cmd(cmd);
|
||||||
clear_history();
|
clear_history();
|
||||||
//print_double_fd(cmd->s_cmds[0]->env, 1);
|
//print_double_fd(cmd->s_cmds[0]->env, 1);
|
||||||
ft_putstr_fd("exit\n", 1);
|
ft_putstr_fd("exit\n", 1);
|
||||||
//if (cmd->path)
|
//if (cmd->path)
|
||||||
//free_double(cmd->path);
|
//free_double(cmd->path);
|
||||||
cmd = 0;
|
cmd = 0;
|
||||||
exit(1);
|
exit(ret_exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_cmd(t_cmd *cmd)
|
void free_cmd(t_cmd *cmd)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user