Exemple #1
0
size_t			_ft_ios_copy_stock(t_ios *ios, t_lst *stock, void *dst,
					size_t n)
{
	size_t		i;
	size_t		size;

	i = 0;
	while (i < n && stock != NULL)
	{
		size = BUFFER_BUFF_SIZE - ios->_cursor;
		ft_memcpy(dst + i, stock->data + ios->_cursor,
			ft_sizemin(size, n - i));
		ios->_cursor = 0;
		ft_lstshift(&stock, &free);
		i += size;
	}
	if (i == n)
		ios->_cursor = size;
	return (i);
}
static char			*get_copy(t_list **list, int pos, int *start)
{
	int		i;
	char	*str;
	int		max;

	i = 0;
	max = pos - *start;
	str = (char *)malloc(sizeof(char) * (max + 1));
	while (i <= max && list != NULL && *list != NULL)
	{
		ft_strncpy(&str[i], (char *)(*list)->content + *start, max - i);
		i += BUF_SIZE - *start;
		if (i <= max)
			ft_lstshift(list);
		*start = 0;
	}
	*start = pos % BUF_SIZE + 1;
	str[max] = '\0';
	return (str);
}
Exemple #3
0
static char		*make_str(t_fd *fdatas, int const line_end)
{
	int		i;
	int		max;
	char	*str;

	i = 0;
	max = (line_end - fdatas->start);
	if (!(str = (char *)malloc(sizeof(char) * (max + 1))))
		return (NULL);
	while (i < max)
	{
		ft_strncpy(&(str[i]), fdatas->lst->content + fdatas->start, (max - i));
		i += BUFF_SIZE - fdatas->start;
		if (i <= max)
			ft_lstshift(&(fdatas->lst));
		fdatas->start = 0;
	}
	str[max] = '\0';
	fdatas->start = line_end % BUFF_SIZE + 1;
	return (str);
}