]> mj.ucw.cz Git - libucw.git/blob - lib/fb-buffer.c
5a248efdf85ee1c332c54a16a6942bea7ea73ef5
[libucw.git] / lib / fb-buffer.c
1 /*
2  *      Sherlock Library -- Fast Buffered I/O on Static Buffers
3  *
4  *      (c) 2003 Martin Mares <mj@ucw.cz>
5  *      (c) 2004 Robert Spalek <robert@ucw.cz>
6  *
7  *      This software may be freely distributed and used according to the terms
8  *      of the GNU Lesser General Public License.
9  */
10
11 #include "lib/lib.h"
12 #include "lib/fastbuf.h"
13
14 static int
15 fbbuf_refill(struct fastbuf *f UNUSED)
16 {
17   return 0;
18 }
19
20 void
21 fbbuf_init_read(struct fastbuf *f, byte *buf, uns size)
22 {
23   f->buffer = f->bptr = buf;
24   f->bstop = f->bufend = buf + size;
25   f->name = "fbbuf-read";
26   f->pos = size;
27   f->refill = fbbuf_refill;
28   f->spout = NULL;
29   f->seek = NULL;
30   f->close = NULL;
31   f->config = NULL;
32   f->can_overwrite_buffer = 1;
33 }
34
35 static void
36 fbbuf_spout(struct fastbuf *f UNUSED)
37 {
38   die("fbbuf: buffer overflow on write");
39 }
40
41 void
42 fbbuf_init_write(struct fastbuf *f, byte *buf, uns size)
43 {
44   f->buffer = f->bstop = f->bptr = buf;
45   f->bufend = buf + size;
46   f->name = "fbbuf-write";
47   f->pos = size;
48   f->refill = NULL;
49   f->spout = fbbuf_spout;
50   f->seek = NULL;
51   f->close = NULL;
52   f->config = NULL;
53   f->can_overwrite_buffer = 0;
54 }