libesedb-sys
Rust -sys bindings to libyal/libesedb.
Building
- Have a compiler installed (if you're using Rust, you have one).
- (Optionally) LLVM for
bindgento regenerate the bindings. - Should use
cargo build -vvfor very verbose output to verifycccompiling.
Rebuilding Bindings
bindgen libesedb-20230824/include/libesedb.h -o src/bindings.rs -- -Ilibesedb-20230824/include -fparse-all-comments
Downstream Patches
Bugfix: Multi-Value Binary Data
https://github.com/libyal/libesedb/pull/69
QoL: Maximum Leaf-Pages
Note: the original value of 16 * 1024 has been increased as far as possible to (INT_MAX - 1) in order for large databases to load. In my testing the value makes no meaningful difference beyond limiting the sorts/sizes of files you can open.
Via the command-line:
LIBESEDB_MAXIMUM_NUMBER_OF_LEAF_PAGES="32 * 1024" cargo build -vv
In your Cargo.toml:
[env]
LIBESEDB_MAXIMUM_NUMBER_OF_LEAF_PAGES = "32 * 1024"
QoL: Counting Leaf-Pages
If you do set a leaf-page maximum, when it is exceeded the error message actually reports back that limit so anyone downstream can provide useful debugging information.
Updating Bundled libesedb
- Download/Clone head of the
mainbranchgit clone --branch main --depth 1 https://github.com/libyal/libesedb- https://github.com/libyal/libesedb/archive/refs/heads/main.zip
- Follow build instructions https://github.com/libyal/libesedb/wiki/Building
- Run the following
./synclibs.sh./autogen.sh./configuremake dist
- Output should include a
.tar.gzcontaining the source distribution version - Note: I used Cygwin on Windows, you will need the packages mentioned here: https://github.com/libyal/libesedb/wiki/Building#cygwin
- (for reference:
autoconf,automake,binutils,gcc-core,gcc-g++,gettext-devel,libiconv,libtool,make,pkg-config)
- (for reference:
- Run the following
- Rebuild bindings (see above)
Authors
libesedb
Copyright (C) 2009-2023, Joachim Metz <joachim.metz@gmail.com>
libesedb-sys
Copyright (C) 2022-2025, Oliver Lenehan ~sunsetkookaburra
License
libyal/libesedbis the hard work ofJoachim Metz (~joachimmetz), provided under LGPL-3.0-or-later. A distribution version of the library is bundled here.- This
-sysbinding is also provided under LGPL-3.0-or-later.