]> mj.ucw.cz Git - libucw.git/commitdiff
Renamed fb-gbuf to fb-grow as Robert suggested.
authorMartin Mares <mj@ucw.cz>
Tue, 21 Mar 2006 09:24:36 +0000 (10:24 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 21 Mar 2006 09:24:36 +0000 (10:24 +0100)
lib/Makefile
lib/fb-gbuf.c [deleted file]
lib/fb-grow.c [new file with mode: 0644]

index 451a11d8089e2b191c214171bfce9ca2de44e442..8535b6873f419d34ea4ed7cbbfd48cda744ca1a2 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile for the UCW Library (c) 1997--2005 Martin Mares <mj@ucw.cz>
+# Makefile for the UCW Library (c) 1997--2006 Martin Mares <mj@ucw.cz>
 
 DIRS+=lib
 
@@ -14,7 +14,7 @@ LIBUCW_MODS= \
        conf ipaccess \
        profile \
        fastbuf ff-printf ff-utf8 \
-       fb-file carefulio fb-mem fb-temp fb-mmap fb-limfd fb-buffer fb-gbuf \
+       fb-file carefulio fb-mem fb-temp fb-mmap fb-limfd fb-buffer fb-grow \
        str_ctype str_upper str_lower unicode-utf8 stkstring \
        wildmatch wordsplit ctmatch patimatch patmatch regex \
        prime primetable random timer randomkey \
diff --git a/lib/fb-gbuf.c b/lib/fb-gbuf.c
deleted file mode 100644 (file)
index 0b04817..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- *     UCW Library -- Fast Buffered I/O on Growing Buffers
- *
- *     (c) 2006 Martin Mares <mj@ucw.cz>
- *
- *     This software may be freely distributed and used according to the terms
- *     of the GNU Lesser General Public License.
- */
-
-#include "lib/lib.h"
-#include "lib/fastbuf.h"
-
-#include <stdlib.h>
-
-struct fb_gbuf {
-  struct fastbuf fb;
-  byte *last_written;
-};
-#define FB_GBUF(f) ((struct fb_gbuf *)(f)->is_fastbuf)
-
-static int
-fbgrow_refill(struct fastbuf *b)
-{
-  if (b->bstop != FB_GBUF(b)->last_written)
-    {
-      /* There was an intervening flush */
-      b->bstop = FB_GBUF(b)->last_written;
-      b->pos = b->bstop - b->buffer;
-      return 1;
-    }
-  /* We are at the end */
-  return 0;
-}
-
-static void
-fbgrow_spout(struct fastbuf *b)
-{
-  if (b->bptr >= b->bufend)
-    {
-      uns len = b->bufend - b->buffer;
-      b->buffer = xrealloc(b->buffer, 2*len);
-      b->bufend = b->buffer + 2*len;
-      b->bstop = b->buffer;
-      b->bptr = b->buffer + len;
-    }
-}
-
-static void
-fbgrow_seek(struct fastbuf *b, sh_off_t pos, int whence)
-{
-  ASSERT(FB_GBUF(b)->last_written);    /* Seeks allowed only in read mode */
-  sh_off_t len = FB_GBUF(b)->last_written - b->buffer;
-  if (whence == SEEK_END)
-    pos += len;
-  ASSERT(pos >= 0 && pos <= len);
-  b->bptr = b->buffer + pos;
-  b->bstop = FB_GBUF(b)->last_written;
-  b->pos = len;
-}
-
-static void
-fbgrow_close(struct fastbuf *b)
-{
-  xfree(b->buffer);
-  xfree(b);
-}
-
-struct fastbuf *
-fbgrow_create(unsigned basic_size)
-{
-  struct fastbuf *b = xmalloc_zero(sizeof(struct fb_gbuf));
-  b->buffer = xmalloc(basic_size);
-  b->bufend = b->buffer + basic_size;
-  b->bptr = b->bstop = b->buffer;
-  b->name = "<fbgbuf>";
-  b->refill = fbgrow_refill;
-  b->spout = fbgrow_spout;
-  b->seek = fbgrow_seek;
-  b->close = fbgrow_close;
-  b->can_overwrite_buffer = 1;
-  return b;
-}
-
-void
-fbgrow_reset(struct fastbuf *b)
-{
-  b->bptr = b->bstop = b->buffer;
-  b->pos = 0;
-  FB_GBUF(b)->last_written = NULL;
-}
-
-void
-fbgrow_rewind(struct fastbuf *b)
-{
-  if (!FB_GBUF(b)->last_written)
-    {
-      /* Last operation was a write, so remember the end position */
-      FB_GBUF(b)->last_written = b->bptr;
-    }
-  b->bptr = b->buffer;
-  b->bstop = FB_GBUF(b)->last_written;
-  b->pos = b->bstop - b->buffer;
-}
-
-#ifdef TEST
-
-int main(void)
-{
-  struct fastbuf *f;
-  int t;
-
-  f = fbgrow_create(3);
-  for (uns i=0; i<5; i++)
-    {
-      fbgrow_write(f);
-      bwrite(f, "12345", 5);
-      bwrite(f, "12345", 5);
-      printf("<%d>", (int)btell(f));
-      bflush(f);
-      printf("<%d>", (int)btell(f));
-      fbgrow_rewind(f);
-      printf("<%d>", (int)btell(f));
-      while ((t = bgetc(f)) >= 0)
-       putchar(t);
-      printf("<%d>", (int)btell(f));
-      fbgrow_rewind(f);
-      bseek(f, -1, SEEK_END);
-      printf("<%d>", (int)btell(f));
-      while ((t = bgetc(f)) >= 0)
-       putchar(t);
-      printf("<%d>\n", (int)btell(f));
-    }
-  bclose(f);
-  return 0;
-}
-
-#endif
diff --git a/lib/fb-grow.c b/lib/fb-grow.c
new file mode 100644 (file)
index 0000000..0b04817
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ *     UCW Library -- Fast Buffered I/O on Growing Buffers
+ *
+ *     (c) 2006 Martin Mares <mj@ucw.cz>
+ *
+ *     This software may be freely distributed and used according to the terms
+ *     of the GNU Lesser General Public License.
+ */
+
+#include "lib/lib.h"
+#include "lib/fastbuf.h"
+
+#include <stdlib.h>
+
+struct fb_gbuf {
+  struct fastbuf fb;
+  byte *last_written;
+};
+#define FB_GBUF(f) ((struct fb_gbuf *)(f)->is_fastbuf)
+
+static int
+fbgrow_refill(struct fastbuf *b)
+{
+  if (b->bstop != FB_GBUF(b)->last_written)
+    {
+      /* There was an intervening flush */
+      b->bstop = FB_GBUF(b)->last_written;
+      b->pos = b->bstop - b->buffer;
+      return 1;
+    }
+  /* We are at the end */
+  return 0;
+}
+
+static void
+fbgrow_spout(struct fastbuf *b)
+{
+  if (b->bptr >= b->bufend)
+    {
+      uns len = b->bufend - b->buffer;
+      b->buffer = xrealloc(b->buffer, 2*len);
+      b->bufend = b->buffer + 2*len;
+      b->bstop = b->buffer;
+      b->bptr = b->buffer + len;
+    }
+}
+
+static void
+fbgrow_seek(struct fastbuf *b, sh_off_t pos, int whence)
+{
+  ASSERT(FB_GBUF(b)->last_written);    /* Seeks allowed only in read mode */
+  sh_off_t len = FB_GBUF(b)->last_written - b->buffer;
+  if (whence == SEEK_END)
+    pos += len;
+  ASSERT(pos >= 0 && pos <= len);
+  b->bptr = b->buffer + pos;
+  b->bstop = FB_GBUF(b)->last_written;
+  b->pos = len;
+}
+
+static void
+fbgrow_close(struct fastbuf *b)
+{
+  xfree(b->buffer);
+  xfree(b);
+}
+
+struct fastbuf *
+fbgrow_create(unsigned basic_size)
+{
+  struct fastbuf *b = xmalloc_zero(sizeof(struct fb_gbuf));
+  b->buffer = xmalloc(basic_size);
+  b->bufend = b->buffer + basic_size;
+  b->bptr = b->bstop = b->buffer;
+  b->name = "<fbgbuf>";
+  b->refill = fbgrow_refill;
+  b->spout = fbgrow_spout;
+  b->seek = fbgrow_seek;
+  b->close = fbgrow_close;
+  b->can_overwrite_buffer = 1;
+  return b;
+}
+
+void
+fbgrow_reset(struct fastbuf *b)
+{
+  b->bptr = b->bstop = b->buffer;
+  b->pos = 0;
+  FB_GBUF(b)->last_written = NULL;
+}
+
+void
+fbgrow_rewind(struct fastbuf *b)
+{
+  if (!FB_GBUF(b)->last_written)
+    {
+      /* Last operation was a write, so remember the end position */
+      FB_GBUF(b)->last_written = b->bptr;
+    }
+  b->bptr = b->buffer;
+  b->bstop = FB_GBUF(b)->last_written;
+  b->pos = b->bstop - b->buffer;
+}
+
+#ifdef TEST
+
+int main(void)
+{
+  struct fastbuf *f;
+  int t;
+
+  f = fbgrow_create(3);
+  for (uns i=0; i<5; i++)
+    {
+      fbgrow_write(f);
+      bwrite(f, "12345", 5);
+      bwrite(f, "12345", 5);
+      printf("<%d>", (int)btell(f));
+      bflush(f);
+      printf("<%d>", (int)btell(f));
+      fbgrow_rewind(f);
+      printf("<%d>", (int)btell(f));
+      while ((t = bgetc(f)) >= 0)
+       putchar(t);
+      printf("<%d>", (int)btell(f));
+      fbgrow_rewind(f);
+      bseek(f, -1, SEEK_END);
+      printf("<%d>", (int)btell(f));
+      while ((t = bgetc(f)) >= 0)
+       putchar(t);
+      printf("<%d>\n", (int)btell(f));
+    }
+  bclose(f);
+  return 0;
+}
+
+#endif