/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_split.c                                         :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: hulamy <marvin@42.fr>                      +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2019/11/25 14:00:13 by hulamy            #+#    #+#             */
/*   Updated: 2019/12/03 19:07:08 by hulamy           ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

/*
** return an array of string with each word found in str, with c as separator
*/


	#include <libc.h>

	size_t		ft_strlen(const char *str)
	{
		size_t i;

		write (1, "gr\n", 3);
		i = 0;
		while (str[i])
			i++;
		return (i);
	}

	char	*ft_substr(char const *s, unsigned int start, size_t len)
	{
		char	*str;
		size_t	i;

		if (!s)
			return (NULL);
		if (ft_strlen(s) < start)
			return ("");
		if (!(str = (char *)malloc(sizeof(char) * (len + 1))))
			return (NULL);
		i = 0;
		while (i < len && s[start])
			str[i++] = s[start++];
		str[i] = '\0';
		return (str);
	}

	char		**ft_split(char const *s, char c);

	//int		main(int ac, char **av)
	int		main(void)
	{
		char	**str;
		int		i;

		char	*s;
		char	c;

	//	if  (ac == 3)
	//	{
			i = 0;
	//		s = av[1];
	//		c = av[2][0];
			s = "";
			c = 'c';
			if ((str = ft_split(s, c)))
			{
				while (str[i])
					printf("%s\n", str[i++]);
			}
	//	}
		return (0);
	}


//#include "libft.h"

static int	ft_count_word(char const *s, char c)
{
	int		i;
	int		words;

	write (1, "gt\n", 3);
	i = 0;
	words = 0;
	while (s[i])
	{
		if (s[i] != c)
		{
			words++;
			while (s[i] && s[i] != c)
				i++;
		}
		else
			i++;
	}
	return (words);
}

void		*ft_free(char **array)
{
	while (array)
		free(array++);
	return (NULL);
}

char		**ft_split(char const *s, char c)
{
	char	**array;
	int		i;
	int		j;
	int		len;

	write (1, "gu\n", 3);
	if (!s || !c || !(i = ft_count_word(s, c)))
		return (NULL);
	if (!(array = malloc(sizeof(char *) * (i + 1))))
		return (NULL);
	array[i] = 0;
	i = -1;
	j = 0;
	while (s[++i])
	{
		if (s[i] != c)
		{
			len = 0;
			while (s[i + len] && s[i + len] != c)
				len++;
			if (!(array[j++] = ft_substr(s, i, len)))
				return (ft_free(array));
			i = i + len - 1;
		}
	}
	return (array);
}
