From bdccd9f1e4cda51e20f40b7bde9aa8ba3f02cd9d Mon Sep 17 00:00:00 2001 From: PrStein Date: Tue, 12 Apr 2022 23:10:00 +0200 Subject: [PATCH] unset --- includes/minishell.h | 3 ++- srcs/built_in/cd.c | 17 ---------------- srcs/built_in/choose_builtin.c | 2 +- srcs/built_in/env.c | 37 ++++++++++++++++++++++++++-------- srcs/built_in/export.c | 4 ++-- srcs/built_in/unset.c | 8 ++++++++ 6 files changed, 42 insertions(+), 29 deletions(-) diff --git a/includes/minishell.h b/includes/minishell.h index 018d18d..11ddfe3 100644 --- a/includes/minishell.h +++ b/includes/minishell.h @@ -99,9 +99,10 @@ int find_len(char *input, int i, char c); void lone_export(t_s_cmd *cmd); void find_variable(char *variable, t_s_cmd *cmd); int find_it(char **str, char *s); +int check_variable(char *variable); //real builtin -void print_env(char **tab); +void print_env(t_cmd *cmd); void ft_env(t_s_cmd *cmd, char **env); void ft_exit(t_s_cmd *cmd); void ft_export(t_s_cmd *cmd); diff --git a/srcs/built_in/cd.c b/srcs/built_in/cd.c index ba82ae0..c65363a 100644 --- a/srcs/built_in/cd.c +++ b/srcs/built_in/cd.c @@ -200,20 +200,3 @@ void open_directory(t_s_cmd *cmd) } } -void ft_pwd(t_s_cmd *cmd) -{ - int i; - char p[1024]; - char *str; - - i = 1; - str = getcwd(p, sizeof(p)); - if (!str) - { - cmd->big_cmd->err_var = 1; - ft_putstr_fd("Minishell: pwd: Not found\n", 2); - } - else - ft_putendl_fd(p, 1); - -} \ No newline at end of file diff --git a/srcs/built_in/choose_builtin.c b/srcs/built_in/choose_builtin.c index f65a58d..9d4b872 100644 --- a/srcs/built_in/choose_builtin.c +++ b/srcs/built_in/choose_builtin.c @@ -32,7 +32,7 @@ int is_builtin(char *cmd) void call_builtin(t_cmd *cmd) { if (!ft_strcmp(cmd->current_s_cmd->cmd, "env")) - print_env(cmd->env); + print_env(cmd); if (!ft_strcmp(cmd->current_s_cmd->cmd, "export")) ft_export(cmd->current_s_cmd); if (!ft_strcmp(cmd->current_s_cmd->cmd, "unset")) diff --git a/srcs/built_in/env.c b/srcs/built_in/env.c index f734260..2b210ee 100644 --- a/srcs/built_in/env.c +++ b/srcs/built_in/env.c @@ -12,21 +12,42 @@ #include "../../includes/minishell.h" -void print_env(char **tab) +void print_env(t_cmd *cmd) { int i; i = 0; - if (tab) + if (cmd->current_s_cmd->nb_args > 1) { - while (tab[i]) + ft_putstr_fd("Minishell: env: '", 2); + ft_putstr_fd(cmd->current_s_cmd->args[1], 2); + ft_putstr_fd("': No such file or directory\n", 2); + // 127 + } + else if (cmd->env) + { + while (cmd->env[i]) { - if (ft_strchr(tab[i], '=')) - { - ft_putstr_fd(tab[i], 1); - ft_putstr_fd("\n", 1); - } + if (ft_strchr(cmd->env[i], '=')) + ft_putendl_fd(cmd->env[i], 1); i++; } } +} + +void ft_pwd(t_s_cmd *cmd) +{ + int i; + char p[1024]; + char *str; + + i = 1; + str = getcwd(p, sizeof(p)); + if (!str) + { + cmd->big_cmd->err_var = 1; + ft_putstr_fd("Minishell: pwd: Not found\n", 2); + } + else + ft_putendl_fd(p, 1); } \ No newline at end of file diff --git a/srcs/built_in/export.c b/srcs/built_in/export.c index b44e7a0..a8a01ad 100644 --- a/srcs/built_in/export.c +++ b/srcs/built_in/export.c @@ -58,9 +58,9 @@ void ft_export_variable(t_s_cmd *cmd, char *variable) i = 0; if (check_variable(variable) == 1) { - ft_putstr_fd("Minishell: export: ", 2); + ft_putstr_fd("Minishell: export: `", 2); ft_putstr_fd(variable, 2); - ft_putstr_fd(": not a valid identifier\n", 2); + ft_putstr_fd("': not a valid identifier\n", 2); // 1 return ; } diff --git a/srcs/built_in/unset.c b/srcs/built_in/unset.c index 9bb5122..e7dec68 100644 --- a/srcs/built_in/unset.c +++ b/srcs/built_in/unset.c @@ -65,6 +65,14 @@ void find_variable(char *variable, t_s_cmd *cmd) i = find_it(cmd->big_cmd->env, variable); // str = ft_strjoin(variable, "="); j = 0; + if (check_variable(variable) == 1) + { + ft_putstr_fd("Minishell: unset: `", 2); + ft_putstr_fd(variable, 2); + ft_putstr_fd("': not a valid identifier\n", 2); + // 2 + return ; + } // while (str[j]) // j++; // while (cmd->big_cmd->env[i] && !(ft_strncmp(cmd->big_cmd->env[i], str, j) == 0))