예제 #1
0
int		first(t_getline *sd, char **line)
{
	char	*tmp;
	int		ret;
	int		i;

	tmp = ft_strnew(BUFF_SIZE);
	if (sd && sd->str && (ret = ft_is(sd->str, '\n')))
	{
		i = ft_strlen(sd->str);
		*line = ft_strsub(sd->str , 0, ret);
		i = i - ft_strlen(*line);
		sd->str = ft_strsub(sd->str, ret + 1, i);
		return (1);
	}
	else if (sd && sd->str)
	{
		*line = sd->str;
		sd->str = NULL;
	}
	while (sd && (ret = read(sd->fd, tmp, BUFF_SIZE)))
	{
		if (!ret)
			return (0);
		if ((ret = ft_is(tmp, '\n')))
		{
			tmp[ret] = '\0';
			*line = ft_strjoin(*line, tmp);
			sd->str = ft_strjoin(sd->str, &(tmp[ret + 1]));
			tmp[ret] = '\n';
			return (1);
		}
		else
			*line = ft_strjoin(*line, tmp);
	}
	return (ret);
}
예제 #2
0
파일: main.c 프로젝트: AzizArouss/42
void		test_is(int (*is)(int), int (*ft_is)(int), char *name, int d)
{
	int		i;
	int		j;

	i = -50;
	j = 0;
	printf("\n\033[36mTest: [ft_%s] with value from -50 to 150\033[00m\n", name);
	while (i < 150)
	{
		if (ft_is(i) != is(i))
		{
			printf("\033[31mError: [%d]\n    Return: %s[%d] <> ft_%s[%d]\033[00m\n", i, name, is(i), name, ft_is(i));
			j++;
		}
		else if (d == 1)
			printf("[%d]: %s = [%d] <> ft_%s = [%d] -> [\033[32mOK\033[00m]\n", i, name, is(i), name, ft_is(i));
			i++;
	}
	if (j == 0)
		printf("\033[36m[%s] -> \033[32m[OK]\033[00m\n", name);
	else
		printf("\033[36m[%s] -> \033[31m[FAIL]\033[00m\n", name);
}