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); }
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); }