// #include <stdio.h> void check_cmd(t_env *e) { char **str; int i; //printf("\t\tReceived command\n"); i = 0; //str = ft_split(line); // ft_memcpy(e->line, line, _POSIX2_LINE_MAX); // e->len = sizeof(line) - 1; // launch_interprete(e); str = e->argv; put_env(e); if (str[0] && ft_strcmp(str[0], "setenv") == 0) { while(str[i]) i++; if (i == 3) ft_set(e->list, str[1], str[2]); else if(i == 2) ft_set(e->list, str[1], "\0"); else if(i > 3) ft_putstr_fd("setenv: Too many arguments.\n", 2); else print_env(e->env); } else if (str[0] && ft_strcmp(str[0], "unsetenv") == 0) { if (str[1]) ft_unset(e->list, str); else ft_putstr_fd("unsetenv: Too few arguments.\n", 2); } else check_cmd2(str, e); // if (str) // ft_free_tab(&str); }
void update_env(char **args, t_list **aim, int *i) { int ret; *i = 0; while (args[*i] && ((!ft_strcmp("-u", args[*i])) || !ft_strcmp("--unset", args[*i]) || ft_get_char(args[*i], '=') != -1 || !ft_strcmp("-i", args[*i]))) { if (args[*i + 1] && (!ft_strcmp("-u", args[*i]) || !ft_strcmp("--unset", args[*i]))) ft_unset(args[++(*i)], *aim); if ((ret = ft_get_char(args[*i], '=')) != -1) { args[*i][ret] = '\0'; if (!(*aim)) new_in_list(ft_ptrf("%s=%s", args[*i], args[*i] + ret + 1), aim, &env_node); else ft_set(args[*i], args[*i] + ret + 1, 1, *aim); } (*i)++; } }