ceph-rbd 0.3.2

Ceph Rados Block Device Bindings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extern crate ceph;
extern crate libc;
#[macro_use]
extern crate log;
pub mod ffi;
pub mod rbd;

use self::ceph::error::RadosResult;
use self::libc::{c_char, c_int, strerror_r};

pub(crate) fn get_error(n: c_int) -> RadosResult<String> {
    let mut buf = vec![0u8; 256];
    unsafe {
        strerror_r(n, buf.as_mut_ptr() as *mut c_char, buf.len());
    }
    buf = buf.iter().take_while(|&x| x != &0u8).cloned().collect();
    Ok(String::from_utf8_lossy(&buf).into_owned())
}