diff --git a/includes/minishell.h b/includes/minishell.h index fb84dad..5e29707 100644 --- a/includes/minishell.h +++ b/includes/minishell.h @@ -105,6 +105,7 @@ void print_double_fd(char **tab, int fd); void free_double(char **tab); //builtins utils +void ft_shlvl(char **env); void register_env(t_s_cmd *cmd, char *variable); void ft_env(t_s_cmd *cmd, char **env); int find_pwd(t_s_cmd *cmd); diff --git a/srcs/built_in/init_builtin.c b/srcs/built_in/init_builtin.c index c19a462..8ac6bb5 100644 --- a/srcs/built_in/init_builtin.c +++ b/srcs/built_in/init_builtin.c @@ -12,28 +12,30 @@ #include "../../includes/minishell.h" -// void join_variable(t_s_cmd *cmd, char **v_v, int size, char **tab) -// { -// char *str; -// char *tmp; -// -// while (tab[size]) -// { -// cmd->big_cmd->env[size] = ft_strdup(tab[size]); -// // printf("tmp----%s\n", tmp[size]); -// // printf("envy---%s\n", cmd->big_cmd->env[size]); -// size++; -// } -// str = ft_strjoin(v_v[0], "="); -// tmp = ft_strdup(str); -// free(str); -// str = ft_strjoin(tmp,v_v[1]); -// cmd->big_cmd->env[size] = ft_strdup(str); -// printf("ici\n"); -// free(str); -// free(tmp); -// cmd->big_cmd->env[size + 1] = NULL; -// } +void ft_shlvl(char **env) +{ + int i; + int index; + char *str; + + i = 0; + index = find_it(env, "SHLVL"); + if (index != -1) + { + while (env[index][i] && env[index][i] != '=') + i++; + str = ft_substr(env[index], i + 1, ft_strlen(env[index])); + i = ft_atoi(str); + free (str); + i += 1; + str = ft_itoa(i); + free (env[index]); + env[index] = ft_strjoin("SHLVL=", str); + free (str); + printf("%s\n", env[index]); + + } +} void register_env(t_s_cmd *cmd, char *variable) { diff --git a/srcs/main.c b/srcs/main.c index fb8e6ae..6003a6d 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -142,6 +142,7 @@ int main(int ac, char **av, char **path) printf("---MINISHELL START---\n"); signal(SIGINT, crtl_c); //signal(SIGQUIT, sig_quit); + ft_shlvl(env); print_prompt(env); return (0); } \ No newline at end of file