int get_next_line(int const fd, char **line) { static char *buffer = NULL; char *temp; int i; int c; if (line == 0) return (-1); c = 42; temp = ft_strnew(BUFF_SIZE); while (ft_good_guy_strchr(buffer, '\n') == 0 && c != 0) { if ((c = read(fd, temp, BUFF_SIZE)) < 0) return (ft_neg(buffer, temp, -1)); buffer = ft_strrealloc(buffer, BUFF_SIZE); ft_strcat(buffer, temp); } free(temp); i = ft_search(buffer); if (*buffer == 0) return (ft_neg(buffer, 0, 0)); *line = ft_strsub(buffer, 0, i); temp = ft_strsub(buffer, i + 1, ft_strlen(buffer + i + 1)); free(buffer); buffer = temp; return (1); }
char *ft_itoa_base(intmax_t n, int base) { int i; int len; int neg; char *str; char *cmp; cmp = init(&neg, &i); len = ft_get_len(n, base); is_neg(&neg, &n); if (n == 0) return (ft_strdup("0")); if (neg && !(str = (char *)malloc(sizeof(char) * (len + 1)))) return (NULL); else return (ft_neg(n, base, len)); str[len + 1] = 0; while (len + 1) { str[len] = cmp[n % base]; n = n / base; len--; } if (str[0] == '0') str = ft_strsub(str, 1, ft_strlen(str) - 1); return (str); }
int ft_is_sort(int *tab, int length, int (*f)(int, int)) { int i; i = 0; while (i < length - 1) { if (f(tab[i], tab[i + 1]) < 0) { i++; return (ft_pos(tab, length, i, f)); } else { if (f(tab[i], tab[i + 1]) > 0) { i++; return (ft_neg(tab, length, i, f)); } i++; } } return (1); }