/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   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 <limits.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[ARG_MAX];
	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);
}