From mboxrd@z Thu Jan  1 00:00:00 1970
From: David Gibson <david@gibson.dropbear.id.au>
To: passt-dev@passt.top
Subject: Re: [PATCH v2 1/4] Add cleaner line-by-line reading primitives
Date: Tue, 28 Jun 2022 10:47:35 +1000
Message-ID: <YrpPp6qwovuLfnHJ@yekko>
In-Reply-To: <20220627123632.3c25bb18@elisabeth>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============1749225399650699591=="

--===============1749225399650699591==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit

On Mon, Jun 27, 2022 at 12:36:32PM +0200, Stefano Brivio wrote:
> On Fri, 24 Jun 2022 12:17:29 +1000
> David Gibson <david(a)gibson.dropbear.id.au> 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

--===============1749225399650699591==
Content-Type: application/pgp-signature
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="signature.asc"
MIME-Version: 1.0

LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRSXpCQUVCQ0FBZEZpRUVvVUx4V3U0L1dz
MGRCK1h0Z3lwWTRnRXdZU0lGQW1LNlQ0QUFDZ2tRZ3lwWTRnRXcKWVNJQ05BLytJNVFLZ29EWHVh
QkNRMnpMTGQxRlc4aEIzR1JqU0NEbjI2eVlmVkMrMkZoTzJkc2F4b1kxMkVrVQpXY256NGFneTF5
b3F4SnNnNFFYcUNnMTd2OGV6bFowMjNOc3ZUSk5FNkJxMkFrcm52NGMveWFGU3pBZ29SYnRXCnpW
ZEZ2MVlSYjhZaU5RcWJnV0pKcEF1UWM2MmYxdlZzRXR2dnRaUHRVbXdrVmk1bGhSOEVhY2NGZDRF
SCtMZnUKcHE5RHZaMVRmRGFYRTQzWDF2dVQrNU9KV1dzUjJIWk9sQ1FyTnRzdkJGRGZhTkVqMUhL
d1JsdG81Y0JFL0hKdApTMFQ5VmRGVXc4dHowU29vTjlpZTFUc1orS0RqdmlXamNvb3FhS1JMTzJQ
R1VrbjJudEo2ZEp4akhHcnVqdnpkCms1Y3BoN0VwU0RsNFJYVjEyZyttS0dGZVg4REVxQU9JRVQx
dmRkSXZHMkM3bUpHVEdzTEJWM2RRUVlGcXJ4NWkKVSs5bmg3VVFIVGQ0bEZOL0tzUlBSQmNIVEZN
N0s4SWt4YjQ0YzdTQXBSSG5ZdjJJazdwWms4NDZBVHVhT0ljOQp2dG1OVlVFOE9BK1grNG9EYmg2
YkRLQXM4WFBWRWlWZ05NcnZQL0MxSTlJS0NnaDBoVndzUVAxaGxrcm9KMUR2CmZpUXdNQnlTcjAz
cjBRN2wwWmdsTjJCU3poemZRZFJWNU9SUEljMWFMOVZ2K256cWF4c21SL0dpZW9wcUZFM3MKWi8r
cnZxZWpUZHhnWFJPbEZEWFBWcm8wUjdJVUVRZGlKL2FVdzJydloyNStmZ3dRUVlMVXhmalN2cEp1
MkpsbQpoOEIxb0QvZ1h2cVZVNW1HaG9BUzVxOW82dE96V2VsYklHaHEyTjBEbnFmYXJSdHhxbTA9
Cj1oUEU3Ci0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQo=

--===============1749225399650699591==--