sg 0.3.0

Library for Linux's SCSI Generic (SG) interface
Documentation
extern crate sg;

use sg::{Device, Task};
use std::ffi::OsStr;
use std::time::Duration;

fn run_tur(path: &OsStr) -> std::io::Result<()> {
    let cdb = [0; 6];
    let mut task = Task::new();
    task.set_timeout(Duration::from_secs(20));
    task.set_cdb(&cdb);
    let device = Device::open(path)?;
    assert_eq!(device.send(&[task])?, 1);
    let mut tasks = Vec::new();
    assert_eq!(device.receive(&mut tasks)?, 1);
    println!("{}", tasks[0].ok());
    Ok(())
}

fn main() {
    let mut args = std::env::args_os();
    if args.len() != 2 {
        eprintln!("Usage: {:?} DEV", args.next().unwrap());
        return;
    }

    if let Err(e) = run_tur(&args.next_back().unwrap()) {
        eprintln!("Error: {}", e);
        std::process::exit(1);
    }
}