void go_to(int i, char **tab, char ***penv) { char pwd[1024]; char **cmd; getcwd(pwd, sizeof(pwd)); cmd = ft_strsplit(ft_strjoin("setenv OLDPWD ", pwd), ' '); b_setenv(0, cmd, penv); chdir(tab[i + 1]); getcwd(pwd, sizeof(pwd)); cmd = ft_strsplit(ft_strjoin("setenv PWD ", pwd), ' '); b_setenv(0, cmd, penv); }
static void b_cd_env(t_shell *shell, char *oldpwd) { char *av[4]; char pwd[4096]; shell->oldpwd = strdup(oldpwd); av[0] = "setenv"; av[1] = "OLDPWD"; av[2] = shell->oldpwd; av[3] = NULL; b_setenv(3, av, shell); if (getcwd(pwd, 4096) == NULL) strcpy(pwd, "/"); av[1] = "PWD"; av[2] = pwd; b_setenv(3, av, shell); }
void valid_builtin(t_init *init) { init->s = ft_strtrim(init->s); if (!(ft_strcmp(init->s, "env"))) disp_env(init->tmpenv); else if (!(ft_strncmp(init->s, "setenv", 6))) b_setenv(init); else if (!(ft_strncmp(init->s, "unsetenv", 8))) b_unsetenv(init); else if (!(ft_strncmp(init->s, "cd", 2))) change_dir(init->s, init->tmpenv); else if (!(ft_strcmp(init->s, "pwd"))) disp_pwd(init->tmpenv); else if (!(ft_strcmp(init->s, "exit"))) go_exit(init); else foork(init->tmpenv, init->s); }