Crate cluproccmdline[][src]

Fast secure parsing /proc/cmdline".

Use:

DefaultIter

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::this_machine().unwrap();
for (name, value) in cmdline.iter() {
    if let Some(name) = name {
        println!(
            "Cmdline_str: {} {}", 
            String::from_utf8(name.to_vec()).unwrap(), 
            String::from_utf8(value.to_vec()).unwrap()
        );
    }
    // OUTPUT: 
    // IF /proc/cmdline = "BOOT_IMAGE=/boot/vmlinuz-linux-zen nmi_watchdog=0"
    // TO -> "Cmdline_str: BOOT_IMAGE /boot/vmlinuz-linux-zen"
    // TO -> "Cmdline_str: nmi_watchdog 0"
}	
use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
let mut iter = cmdline.iter();

while let Some((Some(name), value)) = iter.next() {
    println!("{} {}", 
        String::from_utf8(name.to_vec()).unwrap(), 
        String::from_utf8(value.to_vec()).unwrap()
    );
    // OUTPUT:
    // rw
}

OneIter

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
for value in cmdline.iter_one() {
    println!("{}", 
        String::from_utf8(value.to_vec()).unwrap()
    );
    // OUTPUT: 
    // rw
}
use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
let mut iter = cmdline.iter_one();

while let Some(value) = iter.next() {
    println!("{}", 
        String::from_utf8(value.to_vec()).unwrap()
    );
    // OUTPUT:
    // rw
}

TwoIter

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
for (value, name) in cmdline.iter_two() {
    println!("{} {}", 
        String::from_utf8(name.to_vec()).unwrap(),
        String::from_utf8(value.to_vec()).unwrap()
    );
    // OUTPUT: 
    // test all
}

Hash proc cmdline

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
assert_eq!(cmdline.cmdline_hash(), 1877887864476248772);

Benchmark

Machine: Intel Core 2 Duo (2000 MHz), 2 Gb DDR2

test tests::bench_oneslice_new ... bench:         101 ns/iter (+/- 14)
test tests::bench_slice_new    ... bench:         105 ns/iter (+/- 23)

Modules

iter
structs

Data structures

Enums

CmdlineErr

Description of errors

Traits

Cmdline

Main functions of Cmdline.

Functions

array_buf

Creates cmdline from Vec. Equivalent CmdlineBuf::array(array).

array_slice

Creates cmdline from &[u8]. Equivalent CmdlineSlice::array(array).

open_file

Opens the cmdline from the file.

this_machine

Opens the cmdline of the current machine. Equivalent open_file("/proc/cmdline").