shared_mime/
lib.rs

1//! Support for parsing entries from the XDG Shared Mime Info database.
2pub mod answer;
3pub mod error;
4mod fnmatch;
5pub mod mimedb;
6pub mod query;
7pub mod record;
8#[cfg(feature = "xdg-runtime")]
9pub mod runtime;
10mod search_queue;
11mod strcache;
12
13use log::*;
14
15pub use error::{LoadError, QueryError};
16
17pub use answer::Answer;
18pub use mimedb::MimeDB;
19pub use query::{FileQuery, FileQueryBuilder};
20
21/// Load the MIME database.
22#[cfg(not(feature = "xdg-runtime"))]
23pub fn load_mime_db() -> Result<MimeDB, LoadError> {
24    Err(LoadError::Unavailable)
25}
26
27/// Load the MIME database.
28#[cfg(feature = "xdg-runtime")]
29pub fn load_mime_db() -> Result<MimeDB, LoadError> {
30    use runtime::load_xdg_mime_info;
31
32    let mut db = MimeDB::new();
33    let info = load_xdg_mime_info()?;
34    db.add_shared_mime_info(info);
35    debug!(
36        "loaded shared MIME info with {} types and {} globs",
37        db.type_count(),
38        db.glob_count()
39    );
40    Ok(db)
41}