Ejemplo n.º 1
0
void			ft_cd(char *buf, t_params *p)
{
	char	**av;
	char	*new_dir;
	int		ret;
	int		size;

	ret = 0;
	av = ft_split(buf);
	new_dir = NULL;
	size = av_size(av);
	if (size > 2)
		ft_putendl("cd: syntax error");
	else if (size == 1 || (size == 2 && !ft_strcmp(av[1], "~")))
		new_dir = ft_strdup(p->home);
	else
		new_dir = get_newdir(p, av[1]);
	if (new_dir && !(ret = check_path(new_dir)) && !chdir(new_dir))
		update_env(p, new_dir);
	else if (new_dir && !(ret = check_path(new_dir)) && chdir(new_dir) == -1)
		ft_print_error("cd: not a directory: ", av[1]);
	if (new_dir && ret && av[1])
		improper_path(ret, av[1]);
	ft_strdel(&new_dir);
	del_av(av);
}
Ejemplo n.º 2
0
static void		cd_proc(t_env *env, char *new_dir, char *av)
{
	int		ret;

	if (new_dir && !(ret = check_path(new_dir)) && !chdir(new_dir))
	{
		if (av[0] == '/')
			update_env(&env, new_dir);
		else
			update_env(&env, "/nfs");
	}
	if (ret)
	{
		improper_path(ret, av);
		g_pid.built = 0;
	}
	set_flag(&env, 0);
}