Merge branch 'fix/variable_expansion' into solo

This commit is contained in:
marcnava-42cursus
2026-02-14 14:27:52 +01:00
29 changed files with 1107 additions and 155 deletions

View File

@@ -175,7 +175,12 @@ void set_envp(
)
{
t_hashmap **environment;
char **key_value;
char *equal;
char *key;
char *value;
char *new_shlvl;
int shlvl;
size_t key_len;
if (minishell == NULL || envp == NULL)
return ;
@@ -185,9 +190,36 @@ void set_envp(
return ;
while (*envp != NULL)
{
key_value = ft_split(*envp, '=');
set_env(key_value[0], key_value[1], minishell);
ft_free_split(key_value);
equal = ft_strchr(*envp, '=');
if (equal == NULL)
{
envp++;
continue ;
}
key_len = (size_t)(equal - *envp);
key = ft_substr(*envp, 0, key_len);
value = ft_strdup(equal + 1);
if (key == NULL || value == NULL)
{
free(key);
free(value);
minishell->exit = true;
return (malloc_error());
}
set_env(key, value, minishell);
free(key);
free(value);
envp++;
}
value = get_env("SHLVL", minishell);
shlvl = 0;
if (value != NULL)
shlvl = ft_atoi(value);
if (shlvl < 0)
shlvl = 0;
new_shlvl = ft_itoa(shlvl + 1);
if (new_shlvl == NULL)
return (minishell->exit = true, malloc_error());
set_env("SHLVL", new_shlvl, minishell);
free(new_shlvl);
}