extern crate brotli;
#[cfg(not(feature="std"))]
fn main() {
    panic!("For no-stdlib examples please see the tests")
}
#[cfg(feature="std")]
fn main() {
    use std::io;
    let stdin = &mut io::stdin();
    {
        use std::io::{Read, Write};
        let mut reader = brotli::Decompressor::new(
            stdin,
            4096, // buffer size
        );
        let mut buf = [0u8; 4096];
        loop {
            match reader.read(&mut buf[..]) {
                Err(e) => {
                    if let io::ErrorKind::Interrupted = e.kind() {
                        continue;
                    }
                    panic!("{}", e);
                }
                Ok(size) => {
                    if size == 0 {
                        break;
                    }
                    match io::stdout().write_all(&buf[..size]) {
                        Err(e) => panic!("{}", e),
                        Ok(_) => {},
                    }
                }
            }
        }
    }   
}
