ifstructs 0.1.0

A Rust library with native bindings to unix if* structures
Documentation
macro_rules! set_name {
    ($name_field:expr, $name_str:expr) => {{
        let name_c = &::std::ffi::CString::new($name_str.to_owned()).map_err(|_| {
            ::std::io::Error::new(
                ::std::io::ErrorKind::InvalidInput,
                "malformed interface name",
            )
        })?;
        let name_slice = name_c.as_bytes_with_nul();
        if name_slice.len() > libc::IFNAMSIZ {
            return Err(io::Error::new(::std::io::ErrorKind::InvalidInput, ""));
        }
        $name_field[..name_slice.len()].clone_from_slice(name_slice);

        Ok(())
    }};
}

macro_rules! get_name {
    ($name_field:expr) => {{
        let nul_pos = match $name_field.iter().position(|x| *x == 0) {
            Some(p) => p,
            None => {
                return Err(::std::io::Error::new(
                    ::std::io::ErrorKind::InvalidData,
                    "malformed interface name",
                ))
            }
        };

        ::std::ffi::CString::new(&$name_field[..nul_pos])
            .unwrap()
            .into_string()
            .map_err(|_| {
                ::std::io::Error::new(
                    ::std::io::ErrorKind::InvalidData,
                    "malformed interface name",
                )
            })
    }};
}