]> mj.ucw.cz Git - libucw.git/commitdiff
When writing, the data needn't start at the beginning of the buffer.
authorMartin Mares <mj@ucw.cz>
Fri, 27 Sep 2002 21:45:40 +0000 (21:45 +0000)
committerMartin Mares <mj@ucw.cz>
Fri, 27 Sep 2002 21:45:40 +0000 (21:45 +0000)
(We need this for fb-mmap since the buffer is always page aligned.)

lib/fastbuf.c
lib/fastbuf.h

index 2631be06c1d7bf4c143228dba6a19ee331a58005..d976730d2b7affb829a2b4322e0f7ca57b2abb54 100644 (file)
@@ -24,13 +24,10 @@ void bclose(struct fastbuf *f)
 
 void bflush(struct fastbuf *f)
 {
-  if (f->bptr != f->buffer)
-    {                                  /* Have something to flush */
-      if (f->bstop > f->buffer)                /* Read data? */
-       f->bptr = f->bstop = f->buffer;
-      else                             /* Write data... */
-       f->spout(f);
-    }
+  if (f->bptr > f->bstop)
+    f->spout(f);
+  else if (f->bstop > f->buffer)
+    f->bptr = f->bstop = f->buffer;
 }
 
 inline void bsetpos(struct fastbuf *f, sh_off_t pos)
index 4f6c5e66f8ab8fa3e386f0d6a796d0ba67e80c35..1f502ce5d733a7ac85d95e7abbd20be2446a1a02 100644 (file)
  *
  *  When writing:
  *
- *  +----------------+---------------------------+
- *  | written data   | free space                |
- *  +----------------+---------------------------+
- *  ^                 ^                           ^
- *  buffer=bstop      bptr                        bufend
+ *  +--------+--------------+--------------------+
+ *  | unused | written data | free space         |
+ *  +--------+--------------+--------------------+
+ *  ^         ^              ^                    ^
+ *  buffer    bstop          bptr                 bufend
  *
  *  Dirty tricks:
  *