/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   p_args_next.c                                      :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2020/02/14 17:19:27 by rbousset          #+#    #+#             */
/*   Updated: 2020/02/14 17:19:29 by rbousset         ###   ########lyon.fr   */
/*                                                                            */
/* ************************************************************************** */

#include <libft.h>
#include <stdint.h>

#include "d_define.h"
#include "p_args.h"
#include "p_args_len.h"

static char
	*p_give_me_an_arg(char tmp[],
					const char word[],
					const uint16_t i,
					const size_t start[])
{
	tmp[0] = '\0';
	ft_strlcpy(tmp,
			word + start[i],
			(p_arg_len(word, start[i]) - start[i]) + 1);
	return (tmp);
}

void
	p_del_alloced_words(char *words[], uint16_t to_del)
{
	uint16_t	i;

	i = 0;
	while (i < to_del)
	{
		ft_memdel((void*)&words[i]);
		i++;
	}
}

uint16_t
	p_dup_words(char *words[],
				const char word[],
				const uint16_t argc,
				const size_t start[])
{
	char		tmp[4096];
	uint16_t	i;

	i = 0;
	while (i < argc)
	{
		if ((words[i] = ft_strdup(
				p_give_me_an_arg(tmp, word, i, start)
			)) == NULL)
			return (i);
		i++;
	}
	return (i);
}