mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-24 00:00:19 +03:00
refactor: casting-related clippy::pedantic
fixes
Prefer using `ptr::addr_of!()` and `pointer::cast()` instead of raw `as` where clippy complains and other type casting lints. Signed-off-by: Thomas Mühlbacher <tmuehlbacher@posteo.net>
This commit is contained in:
parent
15e3c90584
commit
96a346254d
@ -28,7 +28,7 @@ fn handle_c_command(mut argv: Vec<String>, symlink_cmd: Option<&str>) -> i32 {
|
|||||||
let argv: Vec<_> = argv.into_iter().map(|s| CString::new(s).unwrap()).collect();
|
let argv: Vec<_> = argv.into_iter().map(|s| CString::new(s).unwrap()).collect();
|
||||||
let mut argv = argv
|
let mut argv = argv
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|s| Box::into_raw(s.into_boxed_c_str()) as *mut c_char)
|
.map(|s| Box::into_raw(s.into_boxed_c_str()).cast::<c_char>())
|
||||||
.collect::<Box<[*mut c_char]>>();
|
.collect::<Box<[*mut c_char]>>();
|
||||||
let argv = argv.as_mut_ptr();
|
let argv = argv.as_mut_ptr();
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
use std::{
|
use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
ffi::{c_char, c_void, CString},
|
env,
|
||||||
|
ffi::CString,
|
||||||
|
fs,
|
||||||
io::{stdout, IsTerminal},
|
io::{stdout, IsTerminal},
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
{env, fs, str},
|
ptr, str,
|
||||||
};
|
};
|
||||||
|
|
||||||
use anyhow::{ensure, Result};
|
use anyhow::{ensure, Result};
|
||||||
@ -28,12 +30,10 @@ fn mount_inner(
|
|||||||
let fstype = CString::new(fstype)?;
|
let fstype = CString::new(fstype)?;
|
||||||
|
|
||||||
// convert to pointers for ffi
|
// convert to pointers for ffi
|
||||||
let src = src.as_c_str().to_bytes_with_nul().as_ptr() as *const c_char;
|
let src = src.as_ptr();
|
||||||
let target = target.as_c_str().to_bytes_with_nul().as_ptr() as *const c_char;
|
let target = target.as_ptr();
|
||||||
let data = data.as_ref().map_or(std::ptr::null(), |data| {
|
let data = data.map_or(ptr::null(), |data| data.as_ptr().cast());
|
||||||
data.as_c_str().to_bytes_with_nul().as_ptr() as *const c_void
|
let fstype = fstype.as_ptr();
|
||||||
});
|
|
||||||
let fstype = fstype.as_c_str().to_bytes_with_nul().as_ptr() as *const c_char;
|
|
||||||
|
|
||||||
let ret = {
|
let ret = {
|
||||||
info!("mounting filesystem");
|
info!("mounting filesystem");
|
||||||
|
12
src/key.rs
12
src/key.rs
@ -4,7 +4,7 @@ use std::{
|
|||||||
io::{stdin, IsTerminal},
|
io::{stdin, IsTerminal},
|
||||||
mem,
|
mem,
|
||||||
path::Path,
|
path::Path,
|
||||||
thread,
|
ptr, thread,
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ impl KeyHandle {
|
|||||||
let bch_key_magic = BCH_KEY_MAGIC.as_bytes().read_u64::<LittleEndian>().unwrap();
|
let bch_key_magic = BCH_KEY_MAGIC.as_bytes().read_u64::<LittleEndian>().unwrap();
|
||||||
|
|
||||||
let crypt = sb.sb().crypt().unwrap();
|
let crypt = sb.sb().crypt().unwrap();
|
||||||
let crypt_ptr = crypt as *const _ as *mut _;
|
let crypt_ptr = ptr::addr_of!(*crypt).cast_mut();
|
||||||
|
|
||||||
let mut output: bch_key =
|
let mut output: bch_key =
|
||||||
unsafe { bcachefs::derive_passphrase(crypt_ptr, passphrase.get().as_ptr()) };
|
unsafe { bcachefs::derive_passphrase(crypt_ptr, passphrase.get().as_ptr()) };
|
||||||
@ -75,9 +75,9 @@ impl KeyHandle {
|
|||||||
|
|
||||||
let ret = unsafe {
|
let ret = unsafe {
|
||||||
bch2_chacha_encrypt_key(
|
bch2_chacha_encrypt_key(
|
||||||
&mut output as *mut _,
|
ptr::addr_of_mut!(output),
|
||||||
sb.sb().nonce(),
|
sb.sb().nonce(),
|
||||||
&mut key as *mut _ as *mut _,
|
ptr::addr_of_mut!(key).cast(),
|
||||||
mem::size_of_val(&key),
|
mem::size_of_val(&key),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
@ -93,7 +93,7 @@ impl KeyHandle {
|
|||||||
keyutils::add_key(
|
keyutils::add_key(
|
||||||
key_type,
|
key_type,
|
||||||
key_name,
|
key_name,
|
||||||
&output as *const _ as *const _,
|
ptr::addr_of!(output).cast(),
|
||||||
mem::size_of_val(&output),
|
mem::size_of_val(&output),
|
||||||
keyutils::KEY_SPEC_USER_KEYRING,
|
keyutils::KEY_SPEC_USER_KEYRING,
|
||||||
)
|
)
|
||||||
@ -103,7 +103,7 @@ impl KeyHandle {
|
|||||||
info!("Found key in keyring");
|
info!("Found key in keyring");
|
||||||
Ok(KeyHandle {
|
Ok(KeyHandle {
|
||||||
_uuid: sb.sb().uuid(),
|
_uuid: sb.sb().uuid(),
|
||||||
_id: key_id as c_long,
|
_id: c_long::from(key_id),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
Err(anyhow!("failed to add key to keyring: {}", errno::errno()))
|
Err(anyhow!("failed to add key to keyring: {}", errno::errno()))
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use std::path::Path;
|
use std::{path::Path, ptr};
|
||||||
|
|
||||||
use bch_bindgen::c::{
|
use bch_bindgen::c::{
|
||||||
bcache_fs_close, bcache_fs_open, bch_ioctl_subvolume, bchfs_handle, BCH_IOCTL_SUBVOLUME_CREATE,
|
bcache_fs_close, bcache_fs_open, bch_ioctl_subvolume, bchfs_handle, BCH_IOCTL_SUBVOLUME_CREATE,
|
||||||
@ -42,7 +42,7 @@ pub enum BcachefsIoctlPayload {
|
|||||||
impl From<&BcachefsIoctlPayload> for *const libc::c_void {
|
impl From<&BcachefsIoctlPayload> for *const libc::c_void {
|
||||||
fn from(value: &BcachefsIoctlPayload) -> Self {
|
fn from(value: &BcachefsIoctlPayload) -> Self {
|
||||||
match value {
|
match value {
|
||||||
BcachefsIoctlPayload::Subvolume(p) => p as *const _ as *const libc::c_void,
|
BcachefsIoctlPayload::Subvolume(p) => ptr::addr_of!(p).cast(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user