]> mj.ucw.cz Git - libucw.git/commitdiff
Split bdirect_read to prepare and commit part (similarly to how
authorMartin Mares <mj@ucw.cz>
Tue, 20 Aug 2002 21:55:59 +0000 (21:55 +0000)
committerMartin Mares <mj@ucw.cz>
Tue, 20 Aug 2002 21:55:59 +0000 (21:55 +0000)
bdirect_write already works). This allows partial processing of
read data.

lib/fastbuf.c
lib/fastbuf.h

index 9f5d36924da5dbbbb88e1b76227d96c6d0bcb694..013c1b0848d3453672c38828c24bc91a4a8d09c4 100644 (file)
@@ -288,7 +288,7 @@ bgets0(struct fastbuf *f, byte *b, uns l)
 }
 
 int
-bdirect_read(struct fastbuf *f, byte **buf)
+bdirect_read_prepare(struct fastbuf *f, byte **buf)
 {
   int len;
 
@@ -296,10 +296,15 @@ bdirect_read(struct fastbuf *f, byte **buf)
     return EOF;
   *buf = f->bptr;
   len = f->bstop - f->bptr;
-  f->bptr += len;
   return len;
 }
 
+void
+bdirect_read_commit(struct fastbuf *f, byte *pos)
+{
+  f->bptr = pos;
+}
+
 int
 bdirect_write_prepare(struct fastbuf *f, byte **buf)
 {
index 3739982c5ad8ecc723d7b51e79dac09d0d44a06e..69df9b710bc4f565a38c85b65143fdf7f84dba41 100644 (file)
@@ -284,7 +284,8 @@ bputsn(struct fastbuf *f, byte *b)
 
 /* Direct I/O on buffers */
 
-int bdirect_read(struct fastbuf *f, byte **buf);
+int bdirect_read_prepare(struct fastbuf *f, byte **buf);
+void bdirect_read_commit(struct fastbuf *f, byte *pos);
 int bdirect_write_prepare(struct fastbuf *f, byte **buf);
 void bdirect_write_commit(struct fastbuf *f, byte *pos);