magic-db 0.1.0

This crate provides a precompiled magic database for file type identification. It allows any program to perform magic file detection without the burden of compiling rules from source.
docs.rs failed to build magic-db-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: magic-db-0.2.5

magic-db: Precompiled Magic Rules Database

A precompiled database of file type detection rules based on the original libmagic project, optimized and adapted for use with magic-rs. This crate provides ready-to-use file type detection capabilities without requiring external rule files.

Features

  • Precompiled Rules: Optimized database embedded directly in your binary
  • No External Dependencies: All rules are included in the compiled crate
  • Enhanced Rules: Improved and extended versions of the original libmagic rules
  • Easy Integration: Simple one-line access to the compiled database

Installation

Add magic-db to your Cargo.toml:

[dependencies]
magic-db = "0.1"  # Replace with the latest version
magic-rs = "0.1"  # Required peer dependency

Usage

use magic_db::CompiledDb;
use std::fs::File;
use std::env::current_exe;

fn main() -> Result<(), magic_rs::Error> {
    // Open the precompiled database
    let db = CompiledDb::open()?;

    // Use it to detect file types
    let mut file = File::open(current_exe()?)?;
    let magic = db.magic_first(&mut file, None)?;
    assert!(!magic.is_default());

    println!("File type: {}", magic.message());
    println!("MIME type: {}", magic.mime_type());
    Ok(())
}

About the Rules

This database contains slightly modified versions of the original libmagic rules that are available in the src/magdir directory of this repository.

Some of the rules have been:

  • Adapted: Modified to work with the magic-rs parser
  • Optimized: Performance improvements for common file types
  • Extended: Additional rules were created
  • Fixed: Corrections to inaccurate or problematic original rules

Rule Exclusions

The database intentionally excludes the der rules (ASN.1/DER encoding rules) because:

  • The magic-rs parser doesn't support (yet) the specific DER test types implemented in the original libmagic

Source Rules

The source magic rules are available in the repository at: src/magdir

You can:

  1. Browse the rules to understand how file types are detected
  2. Suggest improvements by opening issues or pull requests
  3. Use these rules as a reference for creating your own custom rules

License

This project is licensed under the GPL-3.0 License.

See Also

  • magic-rs: The core file type detection library
  • magic-embed: The macro used to create this database
  • magic: Expected magic rule format