Пример #1
0
static int	ft_stateprep_herdoc(t_list *begin, t_config *config)
{
	t_stream	*stream;

	stream = ft_save_stream(NULL);
	if (config->heredoc == 2 || !isatty(0))
		return (ft_error(SHNAME, HEREDOC_ERR, BNDATA, 1 | SERROR));
	config->heredoc = 1;
	config->shell_state = SCANNING_COMMAND;
	config->pwd_subrep = "heredoc> ";
	config->prompt_len = 9;
	ft_heredoc(begin, config, stream);
	ft_update_pwd(config);
	config->heredoc = 0;
	if (stream->state == REPROMPT)
		return (1);
	config->shell_state = RUNNING_COMMAND;
	return (0);
}
Пример #2
0
void			ft_dless(t_parser *parser, t_data *d)
{
	char	**tab;
	int		fd;

	tab = ft_strsplit_shell(parser->left->str);
	if (!tab || !tab[0])
	{
		ft_putendl_fd("parser error", 2);
		return ;
	}
	ft_heredoc(tab);
	ft_tabdel(&tab);
	fd = open("/tmp/.less", O_RDONLY);
	dup2(fd, 0);
	d->redirect = 0;
	ft_process_tree(parser->right, d);
	d->redirect = 1;
	dup2(d->save_fd[0], 0);
	close(fd);
}