fix get/set global_settings
This commit is contained in:
parent
642fe57408
commit
a64c61e3d3
1 changed files with 16 additions and 13 deletions
|
|
@ -1,21 +1,26 @@
|
|||
use std::ffi::c_void;
|
||||
use std::ffi::{CString, c_void};
|
||||
|
||||
use crate::NixideResult;
|
||||
use crate::errors::ErrorContext;
|
||||
use crate::stdext::AsCPtr as _;
|
||||
use crate::errors::{AsNixideResult as _, ErrorContext};
|
||||
use crate::util::wrap;
|
||||
use crate::util::wrappers::AsInnerPtr as _;
|
||||
|
||||
// DEBUG: should this really be unsafe?
|
||||
/// # Note
|
||||
/// This function is intentionally marked unsafe to discourage its use.
|
||||
/// Please prefer [nixide::FlakeSettings] and [nixide::FetchersSettings].
|
||||
///
|
||||
pub unsafe fn get_global_setting<S: AsRef<str>>(key: S) -> NixideResult<String> {
|
||||
let key = key.as_c_ptr()?;
|
||||
pub unsafe fn get_global_setting(key: &str) -> NixideResult<String> {
|
||||
let key = CString::new(key).to_nixide_result()?;
|
||||
|
||||
wrap::nix_string_callback!(
|
||||
|callback, userdata: *mut __UserData, ctx: &ErrorContext| unsafe {
|
||||
sys::nix_setting_get(ctx.as_ptr(), key, Some(callback), userdata as *mut c_void);
|
||||
sys::nix_setting_get(
|
||||
ctx.as_ptr(),
|
||||
key.as_ptr(),
|
||||
Some(callback),
|
||||
userdata as *mut c_void,
|
||||
);
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
@ -24,14 +29,12 @@ pub unsafe fn get_global_setting<S: AsRef<str>>(key: S) -> NixideResult<String>
|
|||
/// This function is intentionally marked unsafe to discourage its use.
|
||||
/// Please prefer [nixide::FlakeSettings] and [nixide::FetchersSettings].
|
||||
///
|
||||
pub unsafe fn set_global_setting<S: AsRef<str>, T: AsRef<str>>(
|
||||
key: S,
|
||||
value: T,
|
||||
) -> NixideResult<()> {
|
||||
let key = key.as_c_ptr()?;
|
||||
let value = value.as_c_ptr()?;
|
||||
pub unsafe fn set_global_setting(key: &str, value: &str) -> NixideResult<()> {
|
||||
// DEBUG: TODO: write a convenient way to convert this to NixideResult
|
||||
let key = CString::new(key).unwrap();
|
||||
let value = CString::new(value).unwrap();
|
||||
|
||||
wrap::nix_fn!(|ctx: &ErrorContext| unsafe {
|
||||
sys::nix_setting_set(ctx.as_ptr(), key, value);
|
||||
sys::nix_setting_set(ctx.as_ptr(), key.as_ptr(), value.as_ptr());
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue