Hello, If speed is matter, try rdline() in Kirara. http://plan9.aichi-u.ac.jp/netlib/kirara/kirara-1.2a.tgz
More improved version will be included in kirara-2.0 (to be released). On 2013/10/10, at 1:04, erik quanstrom wrote: > On Wed Oct 9 11:54:41 EDT 2013, st...@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 >