From 2cea45c05d8cdc4298ab9992e14d5da236974009 Mon Sep 17 00:00:00 2001 From: tomoron Date: Wed, 24 Apr 2024 13:06:26 +0200 Subject: [PATCH] shlvl --- srcs/export.c | 5 +++-- srcs/main.c | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/srcs/export.c b/srcs/export.c index 5ce4201..2e91b88 100755 --- a/srcs/export.c +++ b/srcs/export.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/18 18:29:20 by marde-vr #+# #+# */ -/* Updated: 2024/04/23 12:49:46 by tomoron ### ########.fr */ +/* Updated: 2024/04/24 13:03:32 by tomoron ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,9 +88,10 @@ t_env *export_set_env(t_env *env, char *name, char *value, int append) t_env *tmp; tmp = env; - if (!value) + if (!value || !name) { free(name); + free(value); ft_printf_fd(2, "minishell: malloc failed"); return (env); } diff --git a/srcs/main.c b/srcs/main.c index ca455d4..e5d165c 100755 --- a/srcs/main.c +++ b/srcs/main.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/02 21:59:20 by tomoron #+# #+# */ -/* Updated: 2024/04/23 14:33:16 by tomoron ### ########.fr */ +/* Updated: 2024/04/24 13:05:21 by tomoron ### ########.fr */ /* */ /* ************************************************************************** */ @@ -71,6 +71,21 @@ t_env *get_env(char **envp) return (env); } +t_env *add_shlvl(t_env *env) +{ + int nb; + char *tmp; + + tmp = ft_get_env(env, "SHLVL"); + if(!tmp) + nb = 0; + else + nb = ft_atoi(tmp); + nb++; + env = export_set_env(env, ft_strdup("SHLVL"), ft_itoa(nb), 0); + return(env); +} + int init_minishell(t_msh **msh, int argc, char **argv, char **envp) { struct termios t_p; @@ -81,6 +96,7 @@ int init_minishell(t_msh **msh, int argc, char **argv, char **envp) (void)argc; (void)argv; (*msh)->env = get_env(envp); + (*msh)->env = add_shlvl((*msh)->env); tcgetattr(1, &t_p); (*msh)->echoctl = t_p.c_lflag & ECHOCTL; signal(SIGINT, signal_handler_interactive); //enables ctrl-C