/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* env3.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/17 17:25:09 by erey-bet #+# #+# */ /* Updated: 2023/02/23 15:46:46 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "libftx/libftx.h" #include "minishell.h" char *get_value(char *str) { char *s; int i; int start; s = ft_calloc(ft_strlen(str), sizeof(char)); start = get_index(str, '='); i = start; while (str[++i]) s[i - start - 1] = str[i]; return (s); } char *get_key(char *str) { char *s; int i; s = ft_calloc(ft_strlen(str), sizeof(char)); i = -1; while (str[++i] != '=') s[i] = str[i]; return (s); } int create_value_by_key_dup(char *key, char *value, t_list **env) { char *key_dup; char *value_dup; key_dup = ft_strdup(key); if (key_dup == NULL) { ft_eprintf("minishell: malloc failed\n"); return (1); } value_dup = ft_strdup(value); if (value_dup == NULL) { free(key); ft_eprintf("minishell: malloc failed\n"); return (1); } if (create_value_by_key(key_dup, value_dup, env)) return (1); return (0); } int delete_by_key(char *key, t_list **head) { t_list *last; t_list *current; current = *head; while (current->next != NULL) { if (ft_strcmp(((t_env *)current->content)->key, key) == 0) { if (last->next != NULL) last->next = current->next; else *head = current->next; return (0); } last = current; current = current->next; } return (1); } int possible_key(char *key) { int i; i = -1; if (ft_isdigit(key[i + 1]) || key[i + 1] == '@') return (0); while (key[++i]) if (!ft_isalnum(key[i]) && key[i] != '_' && key[i] != '#' && key[i] != '@') return (0); return (1); }