Files
minishell/srcs/builtins.c
2024-03-21 16:45:30 +01:00

89 lines
2.6 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* builtins.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/05 18:20:21 by marde-vr #+# #+# */
/* Updated: 2024/03/21 11:03:47 by tomoron ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int cmd_is_forkable_builtin(char *cmd_token)
{
if (!ft_strcmp(cmd_token, "echo") || !ft_strcmp(cmd_token, "ret")
|| !ft_strcmp(cmd_token, "env") || !ft_strcmp(cmd_token, "exit")
|| !ft_strcmp(cmd_token, "pwd"))
return (1);
return (0);
}
int cmd_is_builtin(t_msh *msh, char *cmd_token)
{
if (!cmd_token)
return (0);
else if (!ft_strcmp(cmd_token, "cd"))
{
cd(msh->cmds);
return (1);
}
else if (!ft_strcmp(cmd_token, "unalias"))
{
unalias(msh);
return (1);
}
else if (!ft_strcmp(cmd_token, "alias"))
{
alias(msh);
return (1);
}
else if (!ft_strcmp(cmd_token, "exit"))
{
exit_bt(msh);
return (1);
}
else if(!ft_strcmp(cmd_token,"export"))
{
ft_export(msh);
return(1);
}
else if(!ft_strcmp(cmd_token, "unset"))
{
ft_unset(msh);
return(1);
}
return (cmd_is_forkable_builtin(cmd_token));
}
int exec_builtin(t_msh *msh)
{
if (!msh->cmds->token)
return (STDIN_FILENO);
if (!ft_strcmp(msh->cmds->token, "echo"))
g_return_code = echo(msh->cmds->next);
else if (!ft_strcmp(msh->cmds->token, "ret"))
g_return_code = ft_atoi(msh->cmds->next->token);
else if (!ft_strcmp(msh->cmds->token, "env"))
g_return_code = print_env(msh->env);
else if (!ft_strcmp(msh->cmds->token, "exit"))
exit_bt(msh);
else if (!ft_strcmp(msh->cmds->token, "pwd"))
g_return_code = pwd();
else if (!ft_strcmp(msh->cmds->token, "cd"))
g_return_code = cd(msh->cmds);
// else if (!ft_strcmp(msh->cmds->token, "export"))
// g_return_code = ft_export(msh);
// else if (!ft_strcmp(msh->cmds->token, "unset"))
// g_return_code = ft_unset(msh);
else if (!ft_strcmp(msh->cmds->token, "alias"))
g_return_code = alias(msh);
else if (!ft_strcmp(msh->cmds->token, "unalias"))
g_return_code = unalias(msh);
else
return (STDIN_FILENO);
return (STDOUT_FILENO);
}