Пример #1
0
Файл: red.c Проект: jalcim/42sh
int			double_rightbis(char *line, t_sh *t, char *l_p, int i)
{
	int		d;
	int		wak;

	d = dup(1);
	dup2(t->fd1, 1);
	while (read(t->fd1, &wak, 1) > 0)
		;
	close(t->fd1);
	exec_cmd(t);
	dup2(d, 1);
	close(d);
	if (line[i] && (OPE2(line, i) || PIPOR(line, i)))
	{
		t->pv2 = i;
		if (OPE2(line, i) && have_pipe(line, i, t) == t->pv2)
			return (ft_red(line, t));
		i = t->pv2;
		pre_parse(l_p, line, i, t);
		if (line[t->pv2] && line[t->pv2] == '>')
			return (ft_red(line, t));
		return (t->pv2);
	}
	return (t->pv2 = i);
}
Пример #2
0
int			main(int ac, char **av)
{
	t_list	*targets;
	int		flags;

	if (ac == 1)
		ls_dir(get_newrdir(".", NONE), 0, 0, 0);
	else if (checkpute(ac, av))
		ft_putendl_fd("ls: fts_open: No such file or directory", 2);
	else
	{
		targets = NULL;
		flags = parser(ac, av, &targets);
		if (flags >= 0)
			pre_parse(targets, flags);
		ft_lstdel(&targets, 0);
	}
	return (0);
}
Пример #3
0
Файл: red.c Проект: jalcim/42sh
int			left_red_next(int i, t_sh *t, char **line)
{
	char	*l_p;

	l_p = NULL;
	t->pv2 = i;
	if (OPE2(*line, i) && have_pipe(*line, i, t) == t->pv2)
	{
		ft_red(*line, t);
		dup2(t->dupl, 0);
		close(t->dupl);
		t->fd1 = 0;
		return (t->pv2);
	}
	i = t->pv2;
	pre_parse(l_p, *line, i, t);
	dup2(t->dupl, 0);
	close(t->dupl);
	t->fd1 = 0;
	if ((*line)[t->pv2] && OPE2(*line, i))
		return (ft_red(*line, t));
	return (t->pv2);
}