12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "sh.h"
- char *get_tenv(t_e *e, char *var)
- {
- int i;
- i = -1;
- while (e->env[++i] != NULL)
- if (ft_strcmp(e->env[i], var) == 61)
- return (ft_strchr(e->env[i], '=') + 1);
- return (NULL);
- }
- void ft_setenv(t_e *e, char *namevalue)
- {
- char **name;
- name = ft_strsplit(namevalue, '=');
- if (ft_search_pos_char(namevalue, '=') == -1 || \
- namevalue == NULL || isenv(name[0]) == 0)
- error_message("setenv use", "setenv ENV=env", NULL);
- else
- {
- if (get_tenv(e, name[0]) != NULL)
- del_env(e, name[0]);
- add_env(e, namevalue);
- }
- ft_tabdel(name);
- }
- void ft_unsetenv(t_e *e, char *name)
- {
- if (name == NULL || isenv(name) == 0)
- error_message("unsetenv use", "unsetenv ENV", NULL);
- else if (get_tenv(e, name) != NULL)
- del_env(e, name);
- }
- int isenv(char *str)
- {
- int i;
- i = -1;
- while (str[++i] != '\0')
- if (str[i] < 'A' || ('Z' < str[i] && str[i] < '_') ||
- ('_' < str[i] && str[i] < 'a') || str[i] > 'z')
- return (0);
- return (1);
- }
|