X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Ffastbuf.h;h=d831ed36153a877f27d0cf5f9cb85d90ac615604;hb=91373ee6489fbe08db12bef2cf6df704b31e1378;hp=01e7f60a28f05a154c3c7996b08f164c9a4013d4;hpb=bdaf9c7ed7ca3611e4d2c2262422517720deff95;p=libucw.git diff --git a/lib/fastbuf.h b/lib/fastbuf.h index 01e7f60a..d831ed36 100644 --- a/lib/fastbuf.h +++ b/lib/fastbuf.h @@ -268,7 +268,7 @@ static inline void bput5(struct fastbuf *f, u64 l) bput5_slow(f, l); } -uns bread_slow(struct fastbuf *f, void *b, uns l); +uns bread_slow(struct fastbuf *f, void *b, uns l, uns check); static inline uns bread(struct fastbuf *f, void *b, uns l) { if (f->bptr + l <= f->bstop) @@ -278,7 +278,19 @@ static inline uns bread(struct fastbuf *f, void *b, uns l) return l; } else - return bread_slow(f, b, l); + return bread_slow(f, b, l, 0); +} + +static inline uns breadb(struct fastbuf *f, void *b, uns l) +{ + if (f->bptr + l <= f->bstop) + { + memcpy(b, f->bptr, l); + f->bptr += l; + return l; + } + else + return bread_slow(f, b, l, 1); } void bwrite_slow(struct fastbuf *f, void *b, uns l); @@ -294,6 +306,7 @@ static inline void bwrite(struct fastbuf *f, void *b, uns l) } byte *bgets(struct fastbuf *f, byte *b, uns l); /* Non-std */ +byte *bgets0(struct fastbuf *f, byte *b, uns l); static inline void bputs(struct fastbuf *f, byte *b)