int exec_builtin(t_group *grp, char *order) { int active; active = 0; order = ft_strtrim(order); if (ft_strcmp(grp->cmd[0], "env") == 0) { active++; if (manage_opt(grp) < 0) return (active); (grp->options->on[u] == true || (grp->define_cmd[namenv] > 0 && grp->define_cmd[utils] == false) || grp->cmd[1] == NULL) ? exec_env(grp, 1) : exec_env(grp, 0); } else if (ft_strcmp(grp->cmd[0], "cd") == 0) (active += 1) ? manage_cd(grp) : 0; else if (ft_strcmp(grp->cmd[0], "setenv") == 0) (active += 1) ? ft_setenv(grp) : 0; else if (ft_strcmp(grp->cmd[0], "unsetenv") == 0) (active += 1) ? ft_unsetenv(grp) : 0; else if (ft_strcmp(grp->cmd[0], "exit") == 0) grp->cmd[1] ? exit(ft_atoi(grp->cmd[1])) : exit(0); return (active); }
static int deal_with_arg(t_shell *sh, char **arg, char **env_cpy) { char **res; char *cmd; res = NULL; if (cmp_line(arg, env_cpy) == 0) { if (check_caract(*arg, '=') < 0) return (print_wrong_identifier_env(*arg)); else if (check_caract(*arg, '=') != 1) { cmd = join_tab(arg); exec_env(sh, cmd, env_cpy); free(cmd); return (sh->return_val); } else if (check_caract(*arg, '=') == 1) { res = add_elem(env_cpy, *arg); ft_print_tab(res); ft_free_tab(res); return (0); } } ft_print_tab(env_cpy); return (0); }
static int check_i_opt(t_shell *sh, char **arg, char **env_cpy) { char *cmd; char **tab_cpy; if (arg[0][0] == '-' && arg[0][1] == 'i' && !arg[0][2] && arg[1]) { arg++; cmd = join_tab(arg); tab_cpy = ft_tabdup(env_cpy); ft_free_tab(tab_cpy); tab_cpy = NULL; exec_env(sh, cmd, tab_cpy); free(cmd); return (0); } else return (1); }
static int check_u_opt(t_shell *sh, char **arg, char **env_cpy) { char *cmd; if (arg[0][0] == '-' && arg[0][1] == 'u' && !arg[0][2] && arg[1]) { arg++; if (check_arg(env_cpy, *arg) == 0) return (print_error_opt(*arg)); arg++; if (*arg) { cmd = join_tab(arg); exec_env(sh, cmd, env_cpy); free(cmd); return (sh->return_val); } else ft_print_tab(env_cpy); return (0); } else return (1); }