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> +#+ +:+ +#+ */
|
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/03/05 18:20:21 by marde-vr #+# #+# */
|
/* 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")
|
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, "env") || !ft_strcmp(cmd_token, "exit")
|
||||||
|| !ft_strcmp(cmd_token, "pwd") || !ft_strcmp(cmd_token, "export")
|
|| !ft_strcmp(cmd_token, "pwd"))
|
||||||
|| !ft_strcmp(cmd_token, "unset"))
|
|
||||||
return (1);
|
return (1);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -46,6 +45,16 @@ int cmd_is_builtin(t_msh *msh, char *cmd_token)
|
|||||||
exit_bt(msh);
|
exit_bt(msh);
|
||||||
return (1);
|
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));
|
return (cmd_is_forkable_builtin(cmd_token));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,10 +74,10 @@ int exec_builtin(t_msh *msh)
|
|||||||
g_return_code = pwd();
|
g_return_code = pwd();
|
||||||
else if (!ft_strcmp(msh->cmds->token, "cd"))
|
else if (!ft_strcmp(msh->cmds->token, "cd"))
|
||||||
g_return_code = cd(msh->cmds);
|
g_return_code = cd(msh->cmds);
|
||||||
else if (!ft_strcmp(msh->cmds->token, "export"))
|
// else if (!ft_strcmp(msh->cmds->token, "export"))
|
||||||
g_return_code = ft_export(msh);
|
// g_return_code = ft_export(msh);
|
||||||
else if (!ft_strcmp(msh->cmds->token, "unset"))
|
// else if (!ft_strcmp(msh->cmds->token, "unset"))
|
||||||
g_return_code = ft_unset(msh);
|
// g_return_code = ft_unset(msh);
|
||||||
else if (!ft_strcmp(msh->cmds->token, "alias"))
|
else if (!ft_strcmp(msh->cmds->token, "alias"))
|
||||||
g_return_code = alias(msh);
|
g_return_code = alias(msh);
|
||||||
else if (!ft_strcmp(msh->cmds->token, "unalias"))
|
else if (!ft_strcmp(msh->cmds->token, "unalias"))
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/02/07 14:12:49 by tomoron #+# #+# */
|
/* 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)
|
while (i < cmd_count)
|
||||||
{
|
{
|
||||||
free(msh->fds[i]);
|
free(msh->fds[i]);
|
||||||
|
msh->fds[i] = 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
free(msh->fds);
|
free(msh->fds);
|
||||||
|
msh->fds = 0;
|
||||||
free(msh->pids);
|
free(msh->pids);
|
||||||
}
|
}
|
||||||
|
@ -6,26 +6,58 @@
|
|||||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/02/18 18:29:20 by marde-vr #+# #+# */
|
/* 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"
|
#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)
|
int ft_export(t_msh *msh)
|
||||||
{
|
{
|
||||||
t_cmd *cmd;
|
t_cmd *cmd;
|
||||||
|
|
||||||
cmd = msh->cmds;
|
cmd = msh->cmds;
|
||||||
(void)cmd;
|
if(cmd && !cmd->next)
|
||||||
|
print_env_declare(msh->env);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_unset(t_msh *msh)
|
int ft_unset(t_msh *msh)
|
||||||
{
|
{
|
||||||
t_cmd *cmd;
|
t_cmd *cmd;
|
||||||
|
t_env *tmp_env;
|
||||||
|
t_env *prev;
|
||||||
|
|
||||||
cmd = msh->cmds;
|
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);
|
return (0);
|
||||||
}
|
}
|
||||||
|
11
srcs/pipe.c
11
srcs/pipe.c
@ -6,7 +6,7 @@
|
|||||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/03/05 18:17:25 by marde-vr #+# #+# */
|
/* 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)
|
void execute_command(t_msh *msh, char **cmd_args, int i)
|
||||||
{
|
{
|
||||||
|
char **env;
|
||||||
if (msh->cmds->token && (!ft_strcmp(msh->cmds->token, "cd")
|
if (msh->cmds->token && (!ft_strcmp(msh->cmds->token, "cd")
|
||||||
|| !ft_strcmp(msh->cmds->token, "alias")
|
|| !ft_strcmp(msh->cmds->token, "alias")
|
||||||
|| !ft_strcmp(msh->cmds->token, "unalias")
|
|| !ft_strcmp(msh->cmds->token, "unalias")
|
||||||
@ -37,13 +38,18 @@ void execute_command(t_msh *msh, char **cmd_args, int i)
|
|||||||
while (i >= 0)
|
while (i >= 0)
|
||||||
{
|
{
|
||||||
free(msh->fds[i]);
|
free(msh->fds[i]);
|
||||||
|
msh->fds[i] = 0;
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
free(cmd_args);
|
free(cmd_args);
|
||||||
ft_exit(msh, 1);
|
ft_exit(msh, 1);
|
||||||
}
|
}
|
||||||
if (msh->cmds->token)
|
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)
|
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)
|
while (i >= 0)
|
||||||
{
|
{
|
||||||
free(msh->fds[i]);
|
free(msh->fds[i]);
|
||||||
|
msh->fds[i] = 0;
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
free(cmd_args);
|
free(cmd_args);
|
||||||
|
17
srcs/utils.c
17
srcs/utils.c
@ -6,7 +6,7 @@
|
|||||||
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
/* By: marde-vr <marde-vr@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/03/05 18:19:26 by marde-vr #+# #+# */
|
/* 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)
|
void free_msh(t_msh *msh)
|
||||||
{
|
{
|
||||||
|
int cmd_count = 0;
|
||||||
if (msh)
|
if (msh)
|
||||||
{
|
{
|
||||||
if (msh->cmds)
|
|
||||||
free_cmd(msh->cmds);
|
|
||||||
if (msh->env)
|
|
||||||
free_env(msh->env);
|
free_env(msh->env);
|
||||||
if (msh->aliases)
|
|
||||||
free_alias(msh->aliases);
|
free_alias(msh->aliases);
|
||||||
if (msh->pids)
|
|
||||||
free(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(msh->fds);
|
||||||
|
free_cmd(msh->cmds);
|
||||||
free(msh);
|
free(msh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user