Пример #1
0
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);
}
Пример #2
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);
}
Пример #3
0
Файл: main.c Проект: kelu27/42
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);
	}
}
Пример #4
0
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);
}