Ejemplo n.º 1
0
int					ft_opera_handler(char *str)
{
	int			k;
	char		**tb;

	INIT(int, i, ft_is_opera(str));
	if (i >= 0)
		return (ft_truc2(str, i));
	i = red_is(str);
	IF_(i >= 0);
	tb = malloc(sizeof(char *) * (COUNTC(str, '>') + COUNTC(str, '<') + 2));
	INIT(int, j, ft_getcharpos(str, g_rc[i], 0));
	DBA(k, 0, tb[k++], ft_strsub(str, 0, j));
	str = str + j;
	WHILE(i >= 0 && j >= 0);
	j = ft_getcharpos(str + ((str[1] == g_rc[i]) ? 2 : 1), g_rc[i], 0);
	IF_(j >= 0);
	tb[k++] = ft_strsub(str, 0, j + ((str[1] == g_rc[i]) ? 2 : 1));
	str = str + ((j > 0) ? j : 1) + ((str[1] == g_rc[i]) ? 2 : 1);
	i = red_is(str);
	ELSE(tb[k++] = ft_strdup(str));
	ENDWHILE;
	tb[k] = NULL;
	return (ft_truc(tb));
	ENDIF;
	return (-2);
}
Ejemplo n.º 2
0
int				get_next_line(int const fd, char **line)
{
	char			buf[BUF];
	static t_gnl	*fdlist = NULL;
	char			**memory;
	int				ret;

	if (fd == CLEAN && line == THIS_CRAP)
	{
		fdlist = ft_gnl_init(CLEAN, fdlist);
		return (0);
	}
	if (fd < 0)
		return (-1);
	fdlist = ft_gnl_init(fd, fdlist);
	memory = &(fdlist->memory);
	while (!(ret = COUNTC(*memory, '\n')) &&
			(ret = read(fd, buf, BUF)) > 0)
	{
		*memory = ft_str_expand(*memory, ret);
		*memory = ft_strncat(*memory, buf, ret);
	}
	if ((ret == -1) || (ret == 0 && **memory == '\0'))
		return (ret);
	ft_gnl_cut(*memory, line, memory);
	return (1);
}