int main(int ac, char **av, char **env) { char *line; char **env_copy; ac = 0; av[0] = "allez"; env_copy = ft_cpy_char2(env); ft_putstr("jaubert$> "); while (get_next_line(0, &line) && ft_strcmp(line, "exit") != 0) { if (ft_strcmp(line, "pwd") == 0) ft_pwd(); else if (ft_strncmp(line, "cd", 2) == 0) ft_cd(line); else if (ft_strncmp(line, "env", 3) == 0) ft_env(line, env_copy); else if (ft_strncmp(line, "setenv", 6) == 0) env_copy = ft_setenv(line, env_copy); else if (line) ft_launch_bin(line, env_copy); ft_putstr("jaubert$> "); free(line); } return (0); }
int ft_setenv(char *line, t_env *env) { char **tmp; int ret; int len; ret = 0; tmp = ft_strsplit(line, ' '); if (!tmp[1]) { ft_env(env, tmp); return (0); } len = ft_tablen(tmp); if (!tmp[2]) tmp[2] = ""; ret = ft_check_line_env(env, tmp[1]); if (ft_strcmp(tmp[1], "PATH") == 0) ft_error_setenv(2); else if (ret > 0 && len <= 3) ft_replace_line_env(env, tmp[1], tmp[2]); else if (ret == 0 && len <= 3) ft_add_line(env, tmp[1], tmp[2]); else ft_error_setenv(1); return (0); }
static int ft_setenv(char **cmd, t_mlist *mlist) { int i; t_list *tmp; char *bis; char *join; i = 0; if ((i = ft_count_tab(cmd)) == 1) return (ft_env(cmd, mlist)); if (i > 3) return (!ft_putendl_fd("setenv: Too many arguments.", 2)); join = ft_strjoin(cmd[1], "="); bis = join; free(join); join = ft_strjoin(bis, cmd[2]); free(bis); if ((tmp = ft_get_env(cmd[1], mlist->env)) != NULL) { free(tmp->content); tmp->content = join; return (1); } ft_lstpushback(&(mlist->env), join, ft_strlen(join) + 1); free(join); return (1); }
void ft_loop(char **cmd, t_env **e, char **tab_e) { if (!ft_strcmp(cmd[0], "echo")) ft_echo(cmd, *e); else if (!ft_strcmp(cmd[0], "exit")) { free_list(*e); exit(0); } else if (!ft_strcmp(cmd[0], "env")) { tab_e = listtotab(*e); ft_env(*e, cmd, tab_e); } else if (!ft_strcmp(cmd[0], "setenv")) ft_setenv(e, cmd); else if (!ft_strcmp(cmd[0], "unsetenv")) ft_unsetenv(e, cmd); else if (!ft_strcmp(cmd[0], "cd") && *e) ft_cd(*e, cmd); else { tab_e = listtotab(*e); do_fork(cmd, *e, tab_e); } free_tab(cmd); }
int built_env(t_sh *sh, t_tree *root) { int ac; int ret; ac = 0; while (root->cmd.arg[ac]) ac++; ret = ft_env(ac, root->cmd.arg, sh->bin); if ((root->cmd.bitset & EX_OUTPIPE) == EX_OUTPIPE\ || (root->cmd.bitset & EX_OUTREDIR) == EX_OUTREDIR) exit((ret ? EXIT_FAILURE : EXIT_SUCCESS)); return (ret); (void)sh; }
void ft_homeenv2(t_s *s) { int i; int nbenv; nbenv = 0; i = 1; while (s->in[i]) { if (checkegalenv(s->in[i]) == 0) nbenv++; else ft_env(s, nbenv); i++; } }
int ft_perform_cmd(t_tree *t, t_env *e) { int value; value = 0; if (!ft_strcmp(t->p->tok, "exit")) value = ft_exit(t->p); else if (!ft_strcmp(t->p->tok, "echo")) ft_echo(t->p); else if (!(ft_strcmp(t->p->tok, "cd"))) value = ft_cd(t->p, e); else if (!(ft_strcmp(t->p->tok, "env"))) value = ft_env(t->p, e); else if (!(ft_strcmp(t->p->tok, "unsetenv"))) value = ft_unsetenv(t->p, &(e->env)); else if (!(ft_strcmp(t->p->tok, "setenv"))) value = ft_setenv(t->p, &(e->env)); else value = ft_perform_exe(t->p, e); return (value); }
int implemented_function(char **cmd) { if (!cmd) return (1); if (ft_strcmp(cmd[0], "exit") == 0) { free_arr(&cmd); return (-1); } else if (ft_strcmp(cmd[0], "env") == 0) ft_env(cmd); else if (ft_strcmp(cmd[0], "cd") == 0) ft_cd(cmd); else if (ft_strcmp(cmd[0], "setenv") == 0) ENVP = ft_setenv(cmd); else if (ft_strcmp(cmd[0], "unsetenv") == 0) ENVP = ft_unsetenv(cmd); else return (0); return (1); }
int check_bultins(char **av, t_env *env) { if (!ft_strcmp(av[0], "exit")) ft_exit(av, env); else if (!ft_strcmp(av[0], "cd")) ft_cd(av, env); else if (!ft_strcmp(av[0], "setenv")) ft_setenv(av, env); else if (!ft_strcmp(av[0], "unsetenv")) ft_unsetenv(av, env); else if (!ft_strcmp(av[0], "env")) { ft_env(av, env->environ); resumed_terminal(); } else if (!ft_strcmp(av[0], "echo")) ft_echo(av, env->environ); else return (0); free_double_array(av); return (1); }