heredoc and builtins fix
This commit is contained in:
@@ -183,7 +183,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 ;
|
||||
@@ -193,9 +198,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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user