Crate magic_db

Crate magic_db 

Source
Expand description

§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 pure-magic. 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
pure-magic = "0.1"  # Required peer dependency

§Usage

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

fn main() -> Result<(), pure_magic::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.first_magic(&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 pure-magic 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 pure-magic 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

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

Structs§

CompiledDb
This structure exposes an embedded compiled magic database.