static char *get_next_word(const char *s, char c) { size_t length; char *word; int i; i = 0; length = ft_strlen_char(s, c); if (!(word = (char*)malloc(length + 1))) return (NULL); while (*s && *s != c) word[i++] = *s++; word[i] = '\0'; return (word); }
t_lst *init_lst(char **env) { t_lst *node; t_lst *head; head = NULL; while (*env) { node = (t_lst *)malloc(sizeof(t_lst)); if (!node) return (NULL); node->next = NULL; node->line = ft_strdup(*env); node->name = ft_strsub(*env, 0, ft_strlen_char(*env, '=')); if (ft_strccmp(*env, "USER="******"HOME=", 5) == 0) node->home = ft_strchr(*env, '/'); push_node(node, &head); env++; } return (head); }
void list_remove(t_list **list, char *str) { t_list *it; t_list *previous; it = *list; previous = 0; while (it != NULL) { if (ft_strnequ(it->str, str, ft_strlen_char(it->str, '=')) == 1) { if (previous) previous->next = it->next; else *list = it->next; free(it->str); free(it); return ; } previous = it; it = it->next; } ft_erreur(BUILTIN_UNSETENV, ERR_NON_EXISTING_KEY, str); }