mach_object 0.1.16

Mach-O File Format Parser for Rust
Documentation
# rust-macho [![travis]https://travis-ci.org/flier/rust-macho.svg?branch=master]https://travis-ci.org/flier/rust-macho [![crate]https://img.shields.io/crates/v/mach_object.svg]https://crates.io/crates/mach_object [![docs]https://docs.rs/mach_object/badge.svg]https://docs.rs/mach_object
Mach-O File Format Parser for Rust

## Usage

To use, add the following line to Cargo.toml under [dependencies]:

```toml
mach_object = "0.1"
```
or alternatively,
```toml
mach_object = { git = "https://github.com/flier/rust-macho.git" }
```

## Examples

Use OFile::parse to read the mach-o file from a &[u8] slice.

```rust
use std::io::{Read, Cursor};
use std::fs::File;
use mach_object::{OFile, CPU_TYPE_X86_64, MachCommand, LoadCommand};

let mut f = File::open("test/helloworld").unwrap();
let mut buf = Vec::new();
let size = f.read_to_end(&mut buf).unwrap();
let mut cur = Cursor::new(&buf[..size]);
if let OFile::MachFile { ref header, ref commands } = OFile::parse(&mut cur).unwrap() {
    assert_eq!(header.cputype, CPU_TYPE_X86_64);
    assert_eq!(header.ncmds as usize, commands.len());
    for &MachCommand(ref cmd, cmdsize) in commands {
        if let &LoadCommand::Segment64 { ref segname, ref sections, .. } = cmd {
            println!("segment: {}", segname);

            for ref sect in sections {
                println!("  section: {}", sect.sectname);
            }
        }
    }
}
```

For more detail, please check the unit tests and the [otool](examples/otool.rs) example.