cbf-chrome 0.1.0-alpha.7

Chromium-specific safe API layer for CBF.
Documentation
use std::ffi::{CStr, CString, c_char};

use super::BridgeError;

pub(super) fn c_string_to_string(value: *mut c_char) -> String {
    if value.is_null() {
        return String::new();
    }

    unsafe { CStr::from_ptr(value) }
        .to_string_lossy()
        .into_owned()
}

pub(super) fn to_optional_cstring(value: &Option<String>) -> Result<Option<CString>, BridgeError> {
    value
        .as_ref()
        .map(|text| CString::new(text.as_str()).map_err(|_| BridgeError::InvalidInput))
        .transpose()
}