X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Ffb-direct.c;h=f87baa36316ba4ebfd78ce4d3371e3e9ce2a3491;hb=f17e4350dcf0c033891e52b30b0c32a4a4fed5e0;hp=15a4568ad90f6c925ffe57f3412208ab10c3f7b2;hpb=e8060fa4647c5c4ccf07efb91a35f65c543dfc4f;p=libucw.git diff --git a/ucw/fb-direct.c b/ucw/fb-direct.c index 15a4568a..f87baa36 100644 --- a/ucw/fb-direct.c +++ b/ucw/fb-direct.c @@ -25,27 +25,18 @@ #undef LOCAL_DEBUG -#include "ucw/lib.h" -#include "ucw/fastbuf.h" -#include "ucw/lfs.h" -#include "ucw/asio.h" -#include "ucw/conf.h" -#include "ucw/threads.h" +#include +#include +#include +#include +#include +#include #include #include #include #include -uns fbdir_cheat; - -static struct cf_section fbdir_cf = { - CF_ITEMS { - CF_UNS("Cheat", &fbdir_cheat), - CF_END - } -}; - #define FBDIR_ALIGN 512 enum fbdir_mode { // Current operating mode @@ -66,13 +57,24 @@ struct fb_direct { enum fbdir_mode mode; byte name[0]; }; -#define FB_DIRECT(f) ((struct fb_direct *)(f)->is_fastbuf) +#define FB_DIRECT(f) ((struct fb_direct *)(f)) + +#ifndef TEST +uns fbdir_cheat; + +static struct cf_section fbdir_cf = { + CF_ITEMS { + CF_UNS("Cheat", &fbdir_cheat), + CF_END + } +}; static void CONSTRUCTOR fbdir_global_init(void) { cf_declare_section("FBDirect", &fbdir_cf, 0); } +#endif static void fbdir_read_sync(struct fb_direct *F) @@ -157,7 +159,7 @@ fbdir_refill(struct fastbuf *f) if (!r->status) return 0; if (r->status < 0) - die("Error reading %s: %s", f->name, strerror(r->returned_errno)); + bthrow(f, "read", "Error reading %s: %s", f->name, strerror(r->returned_errno)); f->bptr = f->buffer = r->buffer; f->bstop = f->bufend = f->buffer + r->status; f->pos += r->status; @@ -191,7 +193,7 @@ fbdir_spout(struct fastbuf *f) asio_sync(F->io_queue); DBG("FB-DIRECT: Truncating at %llu", (long long)f->pos); if (ucw_ftruncate(F->fd, f->pos) < 0) - die("Error truncating %s: %m", f->name); + bthrow(f, "write", "Error truncating %s: %m", f->name); } else asio_submit(r); @@ -311,7 +313,7 @@ fbdir_open_fd_internal(int fd, const char *name, struct asio_queue *q, uns buffe #ifdef TEST -#include "ucw/getopt.h" +#include int main(int argc, char **argv) {