/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* s_lalias.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include #include #include #include "s_struct.h" void s_lalias_rebind(t_lalias **lalias, const char name[], const char newval[]) { t_lalias *tmp; tmp = *lalias; while (tmp != NULL && ft_strncmp(tmp->name, name, ft_strlen(name) + 1) != 0) { tmp = tmp->next; } if (tmp == NULL) { return ; } ft_memdel((void*)&tmp->val); if ((tmp->val = ft_strdup(newval)) == NULL) { ft_dprintf(STDERR_FILENO, "%s\n", strerror(errno)); } } void s_lalias_add_front(t_lalias **lalias, t_lalias *new) { if (lalias == NULL || new == NULL) { return ; } new->next = *lalias; *lalias = new; } void s_lalias_clear(t_lalias **lalias) { t_lalias *tmp; t_lalias *renext; if (lalias == NULL) return ; tmp = *lalias; while (tmp != NULL) { renext = tmp->next; ft_memdel((void*)&tmp->name); ft_memdel((void*)&tmp->val); ft_memdel((void*)&tmp); tmp = renext; } *lalias = NULL; } t_lalias *s_lalias_new(const char name[], const char val[]) { t_lalias *link; static size_t id = 1; if ((link = (t_lalias*)malloc(sizeof(t_lalias))) == NULL) { return (NULL); } if ((link->name = ft_strdup(name)) == NULL) { return (NULL); } if ((link->val = ft_strdup(val)) == NULL) { return (NULL); } link->id = id; link->next = NULL; id += 1; return (link); }