From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Wed, 9 Oct 2013 12:04:23 -0400 To: 9fans@9fans.net Message-ID: <25ea711db6f83d26ca16faf38466bdcc@ladd.quanstro.net> In-Reply-To: <4c6dec5271e325c32ee144badfeae4c8@quintile.net> References: <4c6dec5271e325c32ee144badfeae4c8@quintile.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] Brdline and the last line Topicbox-Message-UUID: 843f4002-ead8-11e9-9d60-3106f5b1d025 On Wed Oct 9 11:54:41 EDT 2013, steve@quintile.net wrote: > Hi all > > It has long been an irritation that Brdline returns failure (to match the > end of line token) at end of file if the file does not end with a newline. > > This is correct but annoying. > > does anyone had a neat snippet of code which ensures we parse the > last line correctly? > > For files on the filesystem I just fix them, but I am wrapping Brdline > around a tcp connection so I am not in control of how people terminate > their files... how about int brdline(Biobuf *b, char *buf, int nbuf) { int i, rv; Rune r; for(i = 0; i < nbuf - UTFmax - 1; ){ rv = Bgetrune(b); if(rv == -1 || rv == '\n') break; r = rv; i += chartorune(&r, buf+i); } buf[i] = 0; return i; } - erik