chepa
This commit is contained in:
BIN
srcs/.lst_alias.c.swp
Normal file
BIN
srcs/.lst_alias.c.swp
Normal file
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/05 18:20:21 by marde-vr #+# #+# */
|
||||
/* Updated: 2024/03/05 18:51:41 by marde-vr ### ########.fr */
|
||||
/* Updated: 2024/03/21 11:03:47 by tomoron ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -16,8 +16,7 @@ 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") || !ft_strcmp(cmd_token, "export")
|
||||
|| !ft_strcmp(cmd_token, "unset"))
|
||||
|| !ft_strcmp(cmd_token, "pwd"))
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
@ -46,6 +45,16 @@ int cmd_is_builtin(t_msh *msh, char *cmd_token)
|
||||
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));
|
||||
}
|
||||
|
||||
@ -65,10 +74,10 @@ int exec_builtin(t_msh *msh)
|
||||
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, "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"))
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/02/07 14:12:49 by tomoron #+# #+# */
|
||||
/* Updated: 2024/03/05 19:05:20 by marde-vr ### ########.fr */
|
||||
/* Updated: 2024/03/21 13:42:56 by tomoron ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -87,8 +87,10 @@ void exec_commands(t_msh *msh)
|
||||
while (i < cmd_count)
|
||||
{
|
||||
free(msh->fds[i]);
|
||||
msh->fds[i] = 0;
|
||||
i++;
|
||||
}
|
||||
free(msh->fds);
|
||||
msh->fds = 0;
|
||||
free(msh->pids);
|
||||
}
|
||||
|
@ -6,26 +6,58 @@
|
||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/02/18 18:29:20 by marde-vr #+# #+# */
|
||||
/* Updated: 2024/02/28 12:45:59 by marde-vr ### ########.fr */
|
||||
/* Updated: 2024/03/21 13:58:13 by tomoron ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
void print_env_declare(t_env *env)
|
||||
{
|
||||
while(env)
|
||||
{
|
||||
if(strcmp(env->name, "_"))
|
||||
printf("declare -x %s=\"%s\"\n", env->name, env->value);
|
||||
env = env->next;
|
||||
}
|
||||
}
|
||||
|
||||
int ft_export(t_msh *msh)
|
||||
{
|
||||
t_cmd *cmd;
|
||||
|
||||
cmd = msh->cmds;
|
||||
(void)cmd;
|
||||
if(cmd && !cmd->next)
|
||||
print_env_declare(msh->env);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int ft_unset(t_msh *msh)
|
||||
{
|
||||
t_cmd *cmd;
|
||||
t_env *tmp_env;
|
||||
t_env *prev;
|
||||
|
||||
cmd = msh->cmds;
|
||||
(void)cmd;
|
||||
tmp_env = msh->env;
|
||||
prev = 0;
|
||||
if(cmd && cmd->next && cmd->next->type == ARG)
|
||||
{
|
||||
while(tmp_env)
|
||||
{
|
||||
if(!strcmp(cmd->next->token, tmp_env->name))
|
||||
{
|
||||
free(tmp_env->name);
|
||||
free(tmp_env->value);
|
||||
if(!prev)
|
||||
msh->env = tmp_env->next;
|
||||
else
|
||||
prev->next = tmp_env->next;
|
||||
free(tmp_env);
|
||||
return(0);
|
||||
}
|
||||
prev = tmp_env;
|
||||
tmp_env = tmp_env->next;
|
||||
}
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
11
srcs/pipe.c
11
srcs/pipe.c
@ -6,7 +6,7 @@
|
||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/05 18:17:25 by marde-vr #+# #+# */
|
||||
/* Updated: 2024/03/06 08:22:46 by marde-vr ### ########.fr */
|
||||
/* Updated: 2024/03/21 13:50:47 by tomoron ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -29,6 +29,7 @@ void close_pipe_fds(t_msh *msh, int i)
|
||||
|
||||
void execute_command(t_msh *msh, char **cmd_args, int i)
|
||||
{
|
||||
char **env;
|
||||
if (msh->cmds->token && (!ft_strcmp(msh->cmds->token, "cd")
|
||||
|| !ft_strcmp(msh->cmds->token, "alias")
|
||||
|| !ft_strcmp(msh->cmds->token, "unalias")
|
||||
@ -37,13 +38,18 @@ void execute_command(t_msh *msh, char **cmd_args, int i)
|
||||
while (i >= 0)
|
||||
{
|
||||
free(msh->fds[i]);
|
||||
msh->fds[i] = 0;
|
||||
i--;
|
||||
}
|
||||
free(cmd_args);
|
||||
ft_exit(msh, 1);
|
||||
}
|
||||
if (msh->cmds->token)
|
||||
execve(msh->cmds->token, cmd_args, env_to_char_tab(msh->env));
|
||||
{
|
||||
env = env_to_char_tab(msh->env);
|
||||
execve(msh->cmds->token, cmd_args, env);
|
||||
ft_free_str_arr(env);
|
||||
}
|
||||
}
|
||||
|
||||
void child(t_msh *msh, char **cmd_args, int i)
|
||||
@ -62,6 +68,7 @@ void child(t_msh *msh, char **cmd_args, int i)
|
||||
while (i >= 0)
|
||||
{
|
||||
free(msh->fds[i]);
|
||||
msh->fds[i] = 0;
|
||||
i--;
|
||||
}
|
||||
free(cmd_args);
|
||||
|
19
srcs/utils.c
19
srcs/utils.c
@ -6,7 +6,7 @@
|
||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/05 18:19:26 by marde-vr #+# #+# */
|
||||
/* Updated: 2024/03/06 10:19:58 by marde-vr ### ########.fr */
|
||||
/* Updated: 2024/03/21 13:21:52 by tomoron ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,18 +14,23 @@
|
||||
|
||||
void free_msh(t_msh *msh)
|
||||
{
|
||||
int cmd_count = 0;
|
||||
if (msh)
|
||||
{
|
||||
if (msh->cmds)
|
||||
free_cmd(msh->cmds);
|
||||
if (msh->env)
|
||||
free_env(msh->env);
|
||||
if (msh->aliases)
|
||||
free_alias(msh->aliases);
|
||||
if (msh->pids)
|
||||
free(msh->pids);
|
||||
if (msh->fds)
|
||||
if(msh->fds)
|
||||
{
|
||||
cmd_count = get_cmd_count(msh->cmds);
|
||||
while(cmd_count)
|
||||
{
|
||||
free(msh->fds[cmd_count - 1]);
|
||||
cmd_count--;
|
||||
}
|
||||
}
|
||||
free(msh->fds);
|
||||
free_cmd(msh->cmds);
|
||||
free(msh);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user