pub struct MagicDatabase { /* private fields */ }Expand description
Main interface for magic rule database
Implementations§
Source§impl MagicDatabase
impl MagicDatabase
Sourcepub fn with_builtin_rules() -> Result<Self>
pub fn with_builtin_rules() -> Result<Self>
Create a database using built-in magic rules.
Loads magic rules that are compiled into the library binary at build time
from src/builtin_rules.magic. These rules provide high-confidence detection
for common file types including executables (ELF, PE/DOS), archives (ZIP, TAR,
GZIP), images (JPEG, PNG, GIF, BMP), and documents (PDF).
§Errors
Currently always returns Ok. In future implementations, this may return
an error if the built-in rules fail to load or validate.
§Examples
use libmagic_rs::MagicDatabase;
let db = MagicDatabase::with_builtin_rules()?;
let result = db.evaluate_buffer(b"\x7fELF")?;
// Returns actual file type detection (e.g., "ELF")Sourcepub fn with_builtin_rules_and_config(config: EvaluationConfig) -> Result<Self>
pub fn with_builtin_rules_and_config(config: EvaluationConfig) -> Result<Self>
Create database with built-in rules and custom configuration.
Loads built-in magic rules compiled at build time and applies the specified evaluation configuration (e.g., custom timeout settings).
§Arguments
config- Custom evaluation configuration to use with the built-in rules
§Errors
Returns LibmagicError if the configuration is invalid (e.g., timeout is zero).
§Examples
use libmagic_rs::{MagicDatabase, EvaluationConfig};
let config = EvaluationConfig {
timeout_ms: Some(5000), // 5 second timeout
..EvaluationConfig::default()
};
let db = MagicDatabase::with_builtin_rules_and_config(config)?;Sourcepub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self>
Load magic rules from a file
§Arguments
path- Path to the magic file to load
§Errors
Returns LibmagicError::IoError if the file cannot be read.
Returns LibmagicError::ParseError if the magic file format is invalid.
§Examples
use libmagic_rs::MagicDatabase;
let db = MagicDatabase::load_from_file("magic.db")?;Sourcepub fn load_from_file_with_config<P: AsRef<Path>>(
path: P,
config: EvaluationConfig,
) -> Result<Self>
pub fn load_from_file_with_config<P: AsRef<Path>>( path: P, config: EvaluationConfig, ) -> Result<Self>
Load from file with custom config (e.g., timeout)
§Errors
Returns error if file cannot be read, parsed, or config is invalid
Sourcepub fn evaluate_file<P: AsRef<Path>>(&self, path: P) -> Result<EvaluationResult>
pub fn evaluate_file<P: AsRef<Path>>(&self, path: P) -> Result<EvaluationResult>
Evaluate magic rules against a file
§Arguments
path- Path to the file to evaluate
§Errors
Returns LibmagicError::IoError if the file cannot be accessed.
Returns LibmagicError::EvaluationError if rule evaluation fails.
§Examples
use libmagic_rs::MagicDatabase;
let db = MagicDatabase::load_from_file("magic.db")?;
let result = db.evaluate_file("sample.bin")?;
println!("File type: {}", result.description);Sourcepub fn evaluate_buffer(&self, buffer: &[u8]) -> Result<EvaluationResult>
pub fn evaluate_buffer(&self, buffer: &[u8]) -> Result<EvaluationResult>
Evaluate magic rules against an in-memory buffer
This method evaluates a byte buffer directly without reading from disk, which is useful for stdin input or pre-loaded data.
§Arguments
buffer- Byte buffer to evaluate
§Errors
Returns LibmagicError::EvaluationError if rule evaluation fails.
§Examples
use libmagic_rs::MagicDatabase;
let db = MagicDatabase::load_from_file("/usr/share/misc/magic")?;
let buffer = b"test data";
let result = db.evaluate_buffer(buffer)?;
println!("Buffer type: {}", result.description);Sourcepub fn config(&self) -> &EvaluationConfig
pub fn config(&self) -> &EvaluationConfig
Returns the evaluation configuration used by this database.
This provides read-only access to the evaluation configuration for callers that need to inspect resource limits or evaluation options.
Sourcepub fn source_path(&self) -> Option<&Path>
pub fn source_path(&self) -> Option<&Path>
Returns the path from which magic rules were loaded.
This method returns the source path that was used to load the magic rules into this database. It is useful for debugging, logging, and tracking the origin of magic rules.
§Returns
Some(&Path)- If the database was loaded from a file or directory usingload_from_file()None- If the database was constructed programmatically or the source path was not recorded
§Examples
use libmagic_rs::MagicDatabase;
let db = MagicDatabase::load_from_file("/usr/share/misc/magic")?;
if let Some(path) = db.source_path() {
println!("Rules loaded from: {}", path.display());
}