strdup_safe returns null if source was null;
environment needs to check for NULL
This commit is contained in:
parent
8178757d98
commit
f8236d14d1
@ -6,34 +6,44 @@
|
||||
/* By: willem <willem@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/02/08 13:59:48 by willem #+# #+# */
|
||||
/* Updated: 2025/02/26 16:09:20 by whaffman ######## odam.nl */
|
||||
/* Updated: 2025/03/04 10:44:41 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
static char *create_variable(t_minishell *msh, t_environment *env)
|
||||
{
|
||||
char *var;
|
||||
size_t len;
|
||||
|
||||
len = ft_strlen(env->name) + ft_strlen(env->value) + 2;
|
||||
var = malloc_safe(msh, len);
|
||||
ft_strlcpy(var, env->name, len);
|
||||
ft_strlcat(var, "=", len);
|
||||
ft_strlcat(var, env->value, len);
|
||||
return (var);
|
||||
}
|
||||
|
||||
char **environment_get_arr(t_minishell *msh)
|
||||
{
|
||||
char **arr;
|
||||
t_environment *env;
|
||||
int i;
|
||||
t_list *environment;
|
||||
t_list *env;
|
||||
|
||||
environment = msh->environment;
|
||||
env = msh->environment;
|
||||
arr = malloc_safe(msh,
|
||||
sizeof(char *) * (ft_lstsize(environment) + 1));
|
||||
sizeof(char *) * (ft_lstsize(env) + 1));
|
||||
i = 0;
|
||||
while (environment != NULL)
|
||||
while (env != NULL)
|
||||
{
|
||||
env = (t_environment *)environment->content;
|
||||
arr[i] = malloc_safe(msh,
|
||||
ft_strlen(env->name) + ft_strlen(env->value) + 2);
|
||||
ft_strlcpy(arr[i], env->name, ft_strlen(env->name) + 1);
|
||||
ft_strlcat(arr[i], "=", ft_strlen(env->name) + 2);
|
||||
ft_strlcat(arr[i], env->value,
|
||||
ft_strlen(env->name) + ft_strlen(env->value) + 2);
|
||||
environment = environment->next;
|
||||
i++;
|
||||
if (((t_environment *)env->content)->value != NULL
|
||||
&& ((t_environment *)env->content)->name != NULL)
|
||||
{
|
||||
arr[i] = create_variable(msh, (t_environment *)env->content);
|
||||
i++;
|
||||
}
|
||||
env = env->next;
|
||||
}
|
||||
arr[i] = NULL;
|
||||
return (arr);
|
||||
|
||||
@ -1,22 +1,24 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* :::::::: */
|
||||
/* ft_strdup_safe.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/02/20 18:01:27 by whaffman #+# #+# */
|
||||
/* Updated: 2025/02/20 18:04:53 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
char *ft_strdup_safe(t_minishell *msh, const char *str)
|
||||
{
|
||||
char *new_str;
|
||||
|
||||
new_str = ft_strdup(str);
|
||||
check_malloc(msh, new_str);
|
||||
return (new_str);
|
||||
}
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* :::::::: */
|
||||
/* ft_strdup_safe.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* Created: 2025/02/20 18:01:27 by whaffman #+# #+# */
|
||||
/* Updated: 2025/03/04 09:59:41 by whaffman ######## odam.nl */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
char *ft_strdup_safe(t_minishell *msh, const char *str)
|
||||
{
|
||||
char *new_str;
|
||||
|
||||
if (!str)
|
||||
return (NULL);
|
||||
new_str = ft_strdup(str);
|
||||
check_malloc(msh, new_str);
|
||||
return (new_str);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user