* - `buffer <= bstop <= bufend` and `buffer <= bptr <= bufend`.
* - `pos` should be the real position in the file corresponding to the location of `bstop` in the buffer.
* It can be modified by any back-end's callback, but the position of `bptr` (`pos + (bptr - bstop)`)
- * must stay unchanged (except the `seek` callback of course).
+ * must stay unchanged after `refill` or `spout`.
* - Failed callbacks (except `close`) should use @bthrow().
* - Any callback pointer may be NULL in case the callback is not implemented.
* - Callbacks can change not only `bptr` and `bstop`, but also the location and size of the buffer;
struct fastbuf *bfdopen_internal(int fd, const char *name, uns buflen);
struct fastbuf *bfmmopen_internal(int fd, const char *name, uns mode);
+#ifdef CONFIG_UCW_FB_DIRECT
extern uns fbdir_cheat;
struct asio_queue;
struct fastbuf *fbdir_open_fd_internal(int fd, const char *name, struct asio_queue *io_queue, uns buffer_size, uns read_ahead, uns write_back);
+#endif
void bclose_file_helper(struct fastbuf *f, int fd, int is_temp_file);