URI:
       ts_read.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       ts_read.c (604B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <bio.h>
            4 #include "libString.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 }