Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <bio.h>
4
#include "String.h"
5
 
6
/* Append an input line to a String.
7
 *
8
 * Returns a pointer to the character string (or 0).
9
 * Trailing newline is left on.
10
 */ 
11
extern char *
12
s_read_line(Biobuf *fp, String *to)
13
{
14
	char *cp;
15
	int llen;
16
 
17
	if(to->ref > 1)
18
		sysfatal("can't s_read_line a shared string");
19
	s_terminate(to);
20
	cp = Brdline(fp, '\n');
21
	if(cp == 0)
22
		return 0;
23
	llen = Blinelen(fp);
24
	if(to->end - to->ptr < llen)
25
		s_grow(to, llen);
26
	memmove(to->ptr, cp, llen);
27
	cp = to->ptr;
28
	to->ptr += llen;
29
	s_terminate(to);
30
	return cp;
31
}