static ut64 r_io_def_mmap_lseek(RIO *io, RIODesc *fd, ut64 offset, int whence) { RIOMMapFileObj *mmo; if (!fd || !fd->data) return -1; mmo = fd->data; return r_io_def_mmap_seek(io, mmo, offset, whence); }
static int r_io_def_mmap_refresh_def_mmap_buf(RIOMMapFileObj *mmo) { RIO* io = mmo->io_backref; ut64 cur; if (mmo->buf) { cur = mmo->buf->cur; r_buf_free (mmo->buf); mmo->buf = NULL; } else { cur = 0; } st64 sz = r_file_size (mmo->filename); if (sz == 0 || sz > ST32_MAX) { // Do not use mmap if the file is huge mmo->rawio = 1; } if (mmo->rawio) { mmo->fd = __io_posix_open (mmo->filename, mmo->flags, mmo->mode); return (mmo->fd != -1); } mmo->buf = r_buf_mmap (mmo->filename, mmo->flags); if (mmo->buf) { r_io_def_mmap_seek (io, mmo, cur, SEEK_SET); return true; } else { mmo->rawio = 1; mmo->fd = __io_posix_open (mmo->filename, mmo->flags, mmo->mode); return (mmo->fd != -1); } return false; }
static int r_io_def_mmap_refresh_def_mmap_buf(RIOMMapFileObj *mmo) { RIO* io = mmo->io_backref; ut64 cur = mmo->buf ? mmo->buf->cur : 0; if (mmo->buf) { r_buf_free (mmo->buf); mmo->buf = NULL; } mmo->buf = r_buf_mmap (mmo->filename, mmo->flags); if (mmo->buf) r_io_def_mmap_seek (io, mmo, cur, SEEK_SET); return (mmo->buf ? R_TRUE : R_FALSE); }
static int r_io_def_mmap_refresh_def_mmap_buf(RIOMMapFileObj *mmo) { RIO* io = mmo->io_backref; ut64 cur = mmo->buf ? mmo->buf->cur : 0; if (mmo->buf) { r_buf_free (mmo->buf); mmo->buf = NULL; } if (r_file_size (mmo->filename)> ST32_MAX) { // Do not use mmap if the file is huge mmo->rawio = 1; } if (mmo->rawio) { mmo->fd = __io_posix_open (mmo->filename, mmo->flags, mmo->mode); return (mmo->fd != -1); } mmo->buf = r_buf_mmap (mmo->filename, mmo->flags); if (mmo->buf) r_io_def_mmap_seek (io, mmo, cur, SEEK_SET); return (mmo->buf ? R_TRUE : R_FALSE); }
static ut64 r_io_def_mmap_lseek(RIO *io, RIODesc *fd, ut64 offset, int whence) { return (fd && fd->data) ? r_io_def_mmap_seek (io, (RIOMMapFileObj *)fd->data, offset, whence) : UT64_MAX; }
static ut64 r_io_def_mmap_lseek(RIO *io, RIODesc *fd, ut64 offset, int whence) { if (!fd || !fd->data) return UT64_MAX; return r_io_def_mmap_seek (io, (RIOMMapFileObj *)fd->data, offset, whence); }