int ft_cd(char **env, char *dir) { char *pwd; int i; if (!dir) dir = ft_get_home(env); dir = ft_split_custom(dir)[0]; if (dir[0] == '~') dir = ft_strjoin(ft_get_home(env), dir + 1); if (dir[0] == '-' && !dir[1]) { dir = env[ft_get_env(env, "OLDPWD")] + 7; ft_putendl(dir); } if (ft_strnequ(dir, "--", 2)) dir = ft_strjoin(ft_get_home(env), dir + 2); i = ft_get_env(env, "OLDPWD"); env[i] = ft_strjoin("OLDPWD=", ft_pwd()); if (chdir(dir) != 0) return (get_error_cd(dir)); pwd = ft_pwd(); i = ft_get_env(env, "PWD"); env[i] = ft_strjoin("PWD=", pwd); return (0); }
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); }
void ft_read_server(t_serv *e) { while ((e->r = read(e->cs, e->buff, 1023)) > 0) { e->buff[e->r - 1] = '\0'; printf("received %d bytes: [%s] from client N%d\n", e->r, e->buff, e->counter); if (ft_strcmp("ls", e->buff) == 0) ft_ls(e->cs); else if (ft_strcmp("pwd", e->buff) == 0) ft_pwd(e->cs, e->pwd); else if (ft_strncmp("cd ", e->buff, 3) == 0) ft_cd(e); else if (ft_strncmp("get ", e->buff, 4) == 0) ft_get_serv(e); else if (ft_strncmp("put ", e->buff, 4) == 0) ft_put_serv(e); } }
void execute(t_env *env) { if (ft_strcmp(env->com, "exit") == 0 || ft_strcmp(env->com, "quit") == 0) env->done = 1; else if (ft_strcmp(env->com, "clear") == 0) ft_printf("\033c"); else if (ft_strcmp(env->com, "echo") == 0) echo(env); else if (ft_strcmp(env->com, "env") == 0) show_env(env->env_var); else if (ft_strcmp(env->com, "setenv") == 0) ft_setenv(env); else if (ft_strcmp(env->com, "unsetenv") == 0) ft_unsetenv(env); else if (ft_strcmp(env->com, "cd") == 0) ft_cd(env); else if (ft_strcmp(env->com, "pwd") == 0) ft_pwd(env); else ft_run(env); }