Ejemplo n.º 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);
}
Ejemplo n.º 2
0
t_magic	*ft_go_from_home(t_magic *magic, char **info)
{
	int		pwd;
	char	*path;
	int		access;

	pwd = ft_wline(magic->env, "PWD");
	path = ft_get_home(magic->env);
	if ((access = ft_check_access_cd(path, &info[1][1])) == 0)
	{
		if (chdir(ft_strjoin(path, &info[1][1])) == 0)
		{
			magic = ft_set_oldpwd(magic);
			if (pwd >= 0)
			{
				free(magic->env[pwd]);
				magic->env[pwd] = ft_strjoin("PWD=", getcwd(NULL, 0));
			}
		}
		free(magic->pwd);
		magic->pwd = ft_get_pwd();
	}
	else
		ft_parse_error_cd(access, info[1]);
	return (magic);
}
Ejemplo n.º 3
0
t_magic	*ft_go_home(t_magic *magic)
{
	char	*home;
	int		pwd;
	int		access;

	pwd = ft_wline(magic->env, "PWD");
	home = ft_get_home(magic->env);
	if ((access = ft_check_access_cd(home, "")) == 0)
	{
		if (chdir(home) == 0)
		{
			magic = ft_set_oldpwd(magic);
			if (pwd >= 0)
			{
				free(magic->env[pwd]);
				magic->env[pwd] = ft_strjoin("PWD=", getcwd(NULL, 0));
			}
		}
		free(magic->pwd);
		magic->pwd = ft_get_pwd();
	}
	else if (ft_strlen(home) > 0)
		ft_parse_error_cd(access, home);
	return (magic);
}