void *GetOffsetLink( GenLinkedOffsetList *pList, void *elem) /* Return the link pointer contained within element e for pList, or NULL if it is 0. */ { size_t nextOffset; nextOffset = GETOFFSET( elem, pList->LinkOffset); return nextOffset ? (char*) elem + nextOffset : NULL; }
int get_next_line(int fd, char **line) { static t_buf save[MAX_FILES]; char *buffer; char *tmp2; char *br; ssize_t ret; X; if (!GETBUF(fd)) GETBUF(fd) = ft_memalloc(1); while (!(br = ft_strchr(GETOFFSET(fd), '\n')) && (ret = read(fd, buffer, BUFF_SIZE)) > 0) { GETREAD(fd) += ret; buffer[ret] = '\0'; SWAP(GETBUF(fd), ft_strjoin(GETOFFSET(fd), buffer), tmp2); GETREADED(fd) = 0; } if (ft_strlen(GETOFFSET(fd)) == 0 && ret == 0) OHOHOHAHAHAH; if (GETREAD(fd) == -1 || ret < 0 || (ret = ft_cpybuf(GETOFFSET(fd), line, br, save[fd])) == -1) return (-1); GETREADED(fd) += (GETOFFSET(fd)[ret] != 0) ? ret + 1 : ret; GETREAD(fd) -= (GETOFFSET(fd)[ret] != 0) ? ret + 1 : ret; return (1); }
static void AssignOffsetLink( void *elem, void *link, size_t linkOffset) // Assign link to elem as an offset from elem. Assign 0 to elem if link is NULL. { GETOFFSET( elem, linkOffset) = link ? (size_t) link - (size_t) elem : 0; }