use crate::core::private::Sealed;
use crate::fdisk::Fdisk;
use crate::fdisk::FdiskError;
pub trait FdiskSGIExt: Sealed {
fn sgi_add_hint(&mut self) -> Result<(), FdiskError>;
fn sgi_set_boot_file(&mut self) -> Result<(), FdiskError>;
}
impl<'a> FdiskSGIExt for Fdisk<'a> {
fn sgi_add_hint(&mut self) -> Result<(), FdiskError> {
log::debug!("Fdisk::sgi_add_hint adding hint to SGI label");
let result = unsafe { libfdisk::fdisk_sgi_create_info(self.inner) };
match result {
0 => {
log::debug!("Fdisk::sgi_add_hint added hint to SGI label");
Ok(())
}
code => {
let err_msg = "failed to add hint to SGI label".to_owned();
log::debug!("Fdisk::sgi_add_hint {}. libfdisk::fdisk_sgi_create_info returned error code: {:?}", err_msg, code);
Err(FdiskError::Config(err_msg))
}
}
}
fn sgi_set_boot_file(&mut self) -> Result<(), FdiskError> {
log::debug!("Fdisk::sgi_set_boot_file setting SGI boot file");
let result = unsafe { libfdisk::fdisk_sgi_set_bootfile(self.inner) };
match result {
0 => {
log::debug!("Fdisk::sgi_set_boot_file set SGI boot file");
Ok(())
}
code => {
let err_msg = "failed to set SGI boot file".to_owned();
log::debug!("Fdisk::sgi_set_boot_file {}. libfdisk::fdisk_sgi_set_bootfile returned error code: {:?}", err_msg, code);
Err(FdiskError::Config(err_msg))
}
}
}
}