#include <u.h>
#include <libc.h>
#include <bio.h>
#include "libString.h"

/* Append an input line to a String.
 *
 * Returns a pointer to the character string (or 0).
 * Trailing newline is left on.
 */ 
extern char *
s_read_line(Biobuf *fp, String *to)
{
	char *cp;
	int llen;

	if(to->ref > 1)
		sysfatal("can't s_read_line a shared string");
	s_terminate(to);
	cp = Brdline(fp, '\n');
	if(cp == 0)
		return 0;
	llen = Blinelen(fp);
	if(to->end - to->ptr < llen)
		s_grow(to, llen);
	memmove(to->ptr, cp, llen);
	cp = to->ptr;
	to->ptr += llen;
	s_terminate(to);
	return cp;
}
