discid-sys 0.6.0

Unsafe FFI bindings for MusicBrainz libdiscid
Documentation
use discid_sys::*;
use std::ffi::{CStr, CString};

fn main() {
    unsafe {
        let handle = discid_new();
        let device = CString::new("/dev/cdrom").expect("CString::new failed");
        let features = discid_feature::DISCID_FEATURE_READ | discid_feature::DISCID_FEATURE_MCN;
        let status = discid_read_sparse(handle, device.into_raw(), features.into());

        if status == 0 {
            let error_msg_ptr = discid_get_error_msg(handle);
            panic!(
                "Reading disc failed: {}",
                CStr::from_ptr(error_msg_ptr).to_string_lossy()
            );
        }

        let id_ptr = discid_get_id(handle);
        println!("Disc ID: {}", CStr::from_ptr(id_ptr).to_string_lossy());

        let mcn_ptr = discid_get_mcn(handle);
        println!("MCN    : {}", CStr::from_ptr(mcn_ptr).to_string_lossy());

        discid_free(handle);
    }
}