Rust declarations for libmagic.
This cargo -sys package provides libmagic declarations for e.g. the magic binding.
magic-sys is available on crates.io so you can use it like this (in your Cargo.toml):
[dependencies]
magic-sys = "0.3"The rustdoc is available on docs.rs.
This crate requires the libmagic C library in version 5.
You need to specify your libmagic version by activating the matching magic-sys feature.
Each API version has a crate feature like "v5-38" (v5.38 is also the default), see Cargo.toml
If you use a different version of libmagic, adjust your configuration:
[dependencies.magic-sys]
version = "0.3"
default-features = false
features = ["v5-41"]Note that those version features are additive, so "v5-41" implies "v5-40" and other previous versions.
libmagic needs to be installed in a standard location (also see issue #1).
On a Debian based Linux system this can be achieved like this:
sudo apt-get install libmagic1 libmagic-devOn RHEL/Cent OS, Gentoo and others you will need to install the file package.
On Mac OS X you can use Homebrew:
brew install libmagicFeedback for Windows (issue #2) support is appreciated!
You can use Microsoft's vcpkg via vcpkg-rs and cargo-vcpkg.
If you choose the latter, that means you'll have to:
cargo install cargo-vcpkg
cargo vcpkg buildAfterwards, you can cargo build etc. your crate as usual.
The Minimum Supported Rust Version (MSRV) is Rust 1.38 or higher.
This version might be changed in the future, but it will be done with a crate version bump.
By default libmagic will be searched in the system library paths. If you need to use a different library or are cross-compiling, you can set the MAGIC_DIR and MAGIC_STATIC environment variables.
Tells rustc where to find libmagic.so / libmagic.a. Can have a target-specific prefix like X86_64_UNKNOWN_LINUX_MUSL_MAGIC_DIR
Controls static linking with libmagic. Enabled automatically if there's only a libmagic.a in the (provided) search path or if explicitly enabled like MAGIC_STATIC=true. Can have a target-specific prefix like X86_64_UNKNOWN_LINUX_MUSL_MAGIC_STATIC
Similarly MAGIC_STATIC=false can be used to choose to link libmagic dynamically.
If unset but both libraries are available, the build will bail out with an error and you have to set one option explicitly.
The optional vcpkg integration has its own set of environment variables, see vcpkg crate docs.
If you do not use cargo vcpkg build, you will have to either
vcpkg install libmagicand set the environment variables for yourvcpkgroot directoryvcpkg integrate installyourvcpkgroot user-wide
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.