common/iobuf.h: Clarify semantics of nofast. Simplify implementation.
authorNeal H. Walfield <neal@g10code.com>
Sun, 9 Aug 2015 14:53:51 +0000 (16:53 +0200)
committerNeal H. Walfield <neal@g10code.com>
Thu, 20 Aug 2015 12:16:16 +0000 (14:16 +0200)
* common/iobuf.h (struct iobuf_struct): Clarify semantics of nofast.
Simplify use of nofast to implement just these semantics.

--
Signed-off-by: Neal H. Walfield <neal@g10code.com>.
common/iobuf.c
common/iobuf.h

index 479038a..3a68c26 100644 (file)
@@ -1651,7 +1651,7 @@ iobuf_push_filter2 (iobuf_t a,
   /* disable nlimit for the new stream */
   a->ntotal = b->ntotal + b->nbytes;
   a->nlimit = a->nbytes = 0;
-  a->nofast &= ~1;
+  a->nofast = 0;
   /* make a link from the new stream to the original stream */
   a->chain = b;
 
@@ -2124,9 +2124,9 @@ void
 iobuf_set_limit (iobuf_t a, off_t nlimit)
 {
   if (nlimit)
-    a->nofast |= 1;
+    a->nofast = 1;
   else
-    a->nofast &= ~1;
+    a->nofast = 0;
   a->nlimit = nlimit;
   a->ntotal += a->nbytes;
   a->nbytes = 0;
@@ -2308,7 +2308,7 @@ iobuf_seek (iobuf_t a, off_t newpos)
   a->d.start = 0;
   a->nbytes = 0;
   a->nlimit = 0;
-  a->nofast &= ~1;
+  a->nofast = 0;
   a->ntotal = newpos;
   a->error = 0;
   /* remove filters, but the last */
index c6877e0..a693809 100644 (file)
@@ -75,7 +75,11 @@ struct iobuf_struct
   off_t nlimit;
   off_t nbytes;                        /* Used together with nlimit. */
   off_t ntotal;                        /* Total bytes read (position of stream). */
-  int nofast;                  /* Used by the iobuf_get (). */
+
+  /* Whether we need to read from the filter one byte at a time or
+     whether we can do bulk reads.  We need to read one byte at a time
+     if a limit (set via iobuf_set_limit) is active.  */
+  int nofast;
   struct
   {
     size_t size;               /* Allocated size */