X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Ffb-mem.c;h=77ad43d94f09573bd53d721aee8ff969db6c7c8c;hb=156301aa8c7fd24d49ed27cfbd1afc10ccb7bc58;hp=a100d481f05016f720295ea1183499804f635e1c;hpb=a45646a634b71708f5bc4277868c60e80daaa84c;p=libucw.git diff --git a/ucw/fb-mem.c b/ucw/fb-mem.c index a100d481..77ad43d9 100644 --- a/ucw/fb-mem.c +++ b/ucw/fb-mem.c @@ -7,21 +7,21 @@ * of the GNU Lesser General Public License. */ -#include "ucw/lib.h" -#include "ucw/fastbuf.h" +#include +#include #include struct memstream { - unsigned blocksize; - unsigned uc; + uint blocksize; + uint uc; struct msblock *first; }; struct msblock { struct msblock *next; ucw_off_t pos; - unsigned size; + uint size; byte data[0]; }; @@ -30,7 +30,7 @@ struct fb_mem { struct memstream *stream; struct msblock *block; }; -#define FB_MEM(f) ((struct fb_mem *)(f)->is_fastbuf) +#define FB_MEM(f) ((struct fb_mem *)(f)) static int fbmem_refill(struct fastbuf *f) @@ -112,10 +112,10 @@ fbmem_seek(struct fastbuf *f, ucw_off_t pos, int whence) { if (pos <= b->pos + (ucw_off_t)b->size) /* <=, because we need to be able to seek just after file end */ { - f->buffer = b->data; + f->buffer = f->bstop = b->data; f->bptr = b->data + (pos - b->pos); - f->bufend = f->bstop = b->data + b->size; - f->pos = b->pos + b->size; + f->bufend = b->data + b->size; + f->pos = b->pos; FB_MEM(f)->block = b; return 1; } @@ -123,12 +123,12 @@ fbmem_seek(struct fastbuf *f, ucw_off_t pos, int whence) if (!m->first && !pos) { /* Seeking to offset 0 in an empty file needs an exception */ - f->buffer = f->bptr = f->bufend = NULL; + f->buffer = f->bptr = f->bstop = f->bufend = NULL; f->pos = 0; FB_MEM(f)->block = NULL; return 1; } - die("fbmem_seek to invalid offset"); + bthrow(f, "seek", "fbmem_seek to an invalid offset"); } static void @@ -150,7 +150,7 @@ fbmem_close(struct fastbuf *f) } struct fastbuf * -fbmem_create(unsigned blocksize) +fbmem_create(uint blocksize) { struct fastbuf *f = xmalloc_zero(sizeof(struct fb_mem)); struct memstream *s = xmalloc_zero(sizeof(struct memstream)); @@ -162,7 +162,6 @@ fbmem_create(unsigned blocksize) f->name = ""; f->spout = fbmem_spout; f->close = fbmem_close; - fb_tie(f); return f; } @@ -181,7 +180,6 @@ fbmem_clone_read(struct fastbuf *b) f->seek = fbmem_seek; f->close = fbmem_close; f->can_overwrite_buffer = 1; - fb_tie(f); return f; }