#include <unistd.h>
#include <stdio.h>
-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
};
#define FB_DIRECT(f) ((struct fb_direct *)(f)->is_fastbuf)
+#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)
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;
asio_submit(r);
asio_sync(F->io_queue);
DBG("FB-DIRECT: Truncating at %llu", (long long)f->pos);
- if (sh_ftruncate(F->fd, f->pos) < 0)
- die("Error truncating %s: %m", f->name);
+ if (ucw_ftruncate(F->fd, f->pos) < 0)
+ bthrow(f, "write", "Error truncating %s: %m", f->name);
}
else
asio_submit(r);
}
static int
-fbdir_seek(struct fastbuf *f, sh_off_t pos, int whence)
+fbdir_seek(struct fastbuf *f, ucw_off_t pos, int whence)
{
DBG("FB-DIRECT: Seek %llu %d", (long long)pos, whence);
return 1;
fbdir_change_mode(FB_DIRECT(f), M_NULL); // Wait for all async requests to finish
- sh_off_t l = sh_seek(FB_DIRECT(f)->fd, pos, whence);
+ ucw_off_t l = ucw_seek(FB_DIRECT(f)->fd, pos, whence);
if (l < 0)
return 0;
f->pos = l;