readdiscid/
readdiscid.rs

1use discid::{DiscId, Features};
2use std::env;
3
4fn main() {
5    // Read the device name from the command line or use the default.
6    let arg1 = env::args().nth(1).unwrap_or_default();
7    let device = if !arg1.is_empty() {
8        Some(&arg1[..])
9    } else {
10        None
11    };
12    let result = DiscId::read_features(device, Features::all());
13
14    match result {
15        Ok(disc) => print_disc_info(disc),
16        Err(e) => {
17            eprintln!("{}", e);
18            std::process::exit(1);
19        }
20    }
21}
22
23fn print_disc_info(disc: DiscId) {
24    println!("DiscID      : {}", disc.id());
25    println!("FreeDB ID   : {}", disc.freedb_id());
26    println!("TOC         : {}", disc.toc_string());
27    println!("MCN         : {}", disc.mcn());
28    println!("First track : {}", disc.first_track_num());
29    println!("Last track  : {}", disc.last_track_num());
30    println!("Sectors     : {}\n", disc.sectors());
31
32    for track in disc.tracks() {
33        println!("Track #{}", track.number);
34        println!("    ISRC    : {}", track.isrc);
35        println!("    Offset  : {}", track.offset);
36        println!("    Sectors : {}", track.sectors);
37    }
38}