use std::env;
use std::io::Result;

fn watch_pid(pid: libc::pid_t) -> Result<()> {
    let mut watcher = kqueue::Watcher::new()?;

    watcher.add_pid(
        pid,
        kqueue::EventFilter::EVFILT_PROC,
        kqueue::FilterFlag::NOTE_EXIT,
    )?;

    watcher.watch()?;

    println!("Watching for events, press Ctrl+C to stop...");
    for ev in watcher.iter() {
        println!("{:?}", ev);
    }

    Ok(())
}

fn main() {
    if let Some(pid) = env::args().nth(1) {
        if let Ok(npid) = pid.parse::<libc::pid_t>() {
            if let Err(err) = watch_pid(npid) {
                println!("{:?}", err);
            }
        }
    } else {
        println!("Usage: cargo run --example pid <pid>");
    }
}
