]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libString/s_read.c
libc: revert date change again. this is getting ridicuoulus.
[plan9front.git] / sys / src / libString / s_read.c
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include "String.h"
5
6 enum
7 {
8         Minread=        256,
9 };
10
11 /* Append up to 'len' input bytes to the string 'to'.
12  *
13  * Returns the number of characters read.
14  */ 
15 extern int
16 s_read(Biobuf *fp, String *to, int len)
17 {
18         int rv;
19         int n;
20
21         if(to->ref > 1)
22                 sysfatal("can't s_read a shared string");
23         for(rv = 0; rv < len; rv += n){
24                 n = to->end - to->ptr;
25                 if(n < Minread){
26                         s_grow(to, Minread);
27                         n = to->end - to->ptr;
28                 }
29                 if(n > len - rv)
30                         n = len - rv;
31                 n = Bread(fp, to->ptr, n);
32                 if(n <= 0)
33                         break;
34                 to->ptr += n;
35         }
36         s_terminate(to);
37         return rv;
38 }