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::NixideResult;
|
||||||
use crate::errors::ErrorContext;
|
use crate::errors::{AsNixideResult as _, ErrorContext};
|
||||||
use crate::stdext::AsCPtr as _;
|
|
||||||
use crate::util::wrap;
|
use crate::util::wrap;
|
||||||
use crate::util::wrappers::AsInnerPtr as _;
|
use crate::util::wrappers::AsInnerPtr as _;
|
||||||
|
|
||||||
|
// DEBUG: should this really be unsafe?
|
||||||
/// # Note
|
/// # Note
|
||||||
/// This function is intentionally marked unsafe to discourage its use.
|
/// This function is intentionally marked unsafe to discourage its use.
|
||||||
/// Please prefer [nixide::FlakeSettings] and [nixide::FetchersSettings].
|
/// Please prefer [nixide::FlakeSettings] and [nixide::FetchersSettings].
|
||||||
///
|
///
|
||||||
pub unsafe fn get_global_setting<S: AsRef<str>>(key: S) -> NixideResult<String> {
|
pub unsafe fn get_global_setting(key: &str) -> NixideResult<String> {
|
||||||
let key = key.as_c_ptr()?;
|
let key = CString::new(key).to_nixide_result()?;
|
||||||
|
|
||||||
wrap::nix_string_callback!(
|
wrap::nix_string_callback!(
|
||||||
|callback, userdata: *mut __UserData, ctx: &ErrorContext| unsafe {
|
|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.
|
/// This function is intentionally marked unsafe to discourage its use.
|
||||||
/// Please prefer [nixide::FlakeSettings] and [nixide::FetchersSettings].
|
/// Please prefer [nixide::FlakeSettings] and [nixide::FetchersSettings].
|
||||||
///
|
///
|
||||||
pub unsafe fn set_global_setting<S: AsRef<str>, T: AsRef<str>>(
|
pub unsafe fn set_global_setting(key: &str, value: &str) -> NixideResult<()> {
|
||||||
key: S,
|
// DEBUG: TODO: write a convenient way to convert this to NixideResult
|
||||||
value: T,
|
let key = CString::new(key).unwrap();
|
||||||
) -> NixideResult<()> {
|
let value = CString::new(value).unwrap();
|
||||||
let key = key.as_c_ptr()?;
|
|
||||||
let value = value.as_c_ptr()?;
|
|
||||||
|
|
||||||
wrap::nix_fn!(|ctx: &ErrorContext| unsafe {
|
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