12345678910111213141516171819202122232425262728293031 |
- #include <u.h>
- #include <libc.h>
- #include <bio.h>
- #include "String.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;
- }
|