On Mon, Jun 27, 2022 at 12:36:32PM +0200, Stefano Brivio wrote: > On Fri, 24 Jun 2022 12:17:29 +1000 > David Gibson wrote: > > > [...] > > > > +/** > > + * lineread_get() - Read a single line from file (no allocation) > > + * @lr: Line reader state structure > > + * @line: Place a pointer to the next line in this variable > > + * > > + * Return: Length of line read on success, 0 on EOF, negative on error > > + */ > > +int lineread_get(struct lineread *lr, char **line) > > +{ > > + bool eof = false; > > + int line_len; > > + > > + while ((line_len = peek_line(lr, eof)) < 0) { > > + int rc; > > + > > + if ((lr->next_line + lr->count) == LINEREAD_BUFFER_SIZE) { > > + /* No space at end */ > > + if (lr->next_line == 0) { > > + /* Buffer is full, which means we've > > + * hit a line too long for us to > > + * process. FIXME: report error > > + * better > > + */ > > + return -1; > > + } > > + memmove(lr->buf, lr->buf + lr->next_line, lr->count); > > + lr->next_line = 0; > > + } > > + > > + /* Read more data into the end of buffer */ > > + rc = read(lr->fd, lr->buf + lr->next_line + lr->count, > > + LINEREAD_BUFFER_SIZE - lr->next_line - lr->count); > > + if (rc < 0) { > > + return rc; > > + } else if (rc == 0) { > > clang-tidy still complains about this one, and I think it's reasonable > (though not fundamental) to change it, because (rc < 0) is a clear > error condition we're returning right away. I'd just change this on > merge. Fair enough. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson