clear unwrap (#8605)

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou 2024-07-04 20:18:53 +08:00 committed by GitHub
parent 94addb162b
commit 86ff768241
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 54 additions and 42 deletions

View File

@ -795,7 +795,11 @@ impl FuseNode {
conn_id: desc.conn_id,
stream_id: rand::random(),
index: inode as usize - 2,
name: desc.name.to_str().unwrap().to_owned(),
name: desc
.name
.to_str()
.map(|s| s.to_string())
.unwrap_or_default(),
parent: None,
attributes: InodeAttributes::from_description(inode, desc),
children: Vec::new(),
@ -1140,7 +1144,7 @@ mod fuse_test {
}
fn build_single_file(prefix: &str) {
let raw_name = "衬衫的价格为 9 镑 15 便士.txt";
let raw_name = "simple_test_file.txt";
let f_name = if prefix == "" {
raw_name.to_string()
} else {

View File

@ -52,9 +52,9 @@ pub fn create_cliprdr_context(
log::warn!("umount {:?} may fail: {:?}", mnt_path, e);
}
let unix_ctx = unix::ClipboardContext::new(timeout, mnt_path.parse().unwrap())?;
let unix_ctx = unix::ClipboardContext::new(timeout, mnt_path.parse()?)?;
log::debug!("start cliprdr FUSE");
unix_ctx.run().expect("failed to start cliprdr FUSE");
unix_ctx.run()?;
Ok(Box::new(unix_ctx) as Box<_>)
}

View File

@ -113,7 +113,7 @@ impl LocalFile {
let win32_time = self
.last_write_time
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.unwrap_or_default()
.as_nanos() as u64
/ 100
+ LDAP_EPOCH_DELTA;
@ -188,7 +188,7 @@ impl LocalFile {
pub fn read_exact_at(&mut self, buf: &mut [u8], offset: u64) -> Result<(), CliprdrError> {
self.load_handle()?;
let handle = self.handle.as_mut().unwrap();
let handle = self.handle.as_mut()?;
if offset != self.offset.load(Ordering::Relaxed) {
handle
@ -238,9 +238,9 @@ pub(super) fn construct_file_list(paths: &[PathBuf]) -> Result<Vec<LocalFile>, C
})?;
if mt.is_dir() {
let dir = std::fs::read_dir(path).unwrap();
let dir = std::fs::read_dir(path)?;
for entry in dir {
let entry = entry.unwrap();
let entry = entry?;
let path = entry.path();
constr_file_lst(&path, file_list, visited)?;
}

View File

@ -383,13 +383,11 @@ impl ClipboardContext {
let file_contents_id = fmt_lst
.iter()
.find(|(_, name)| name == FILECONTENTS_FORMAT_NAME)
.map(|(id, _)| *id)
.unwrap();
.map(|(id, _)| *id)?;
let file_descriptor_id = fmt_lst
.iter()
.find(|(_, name)| name == FILEDESCRIPTORW_FORMAT_NAME)
.map(|(id, _)| *id)
.unwrap();
.map(|(id, _)| *id)?;
add_remote_format(FILECONTENTS_FORMAT_NAME, file_contents_id);
add_remote_format(FILEDESCRIPTORW_FORMAT_NAME, file_descriptor_id);

View File

@ -7,9 +7,9 @@ use crate::CliprdrError;
// url encode and decode is needed
const ENCODE_SET: percent_encoding::AsciiSet = percent_encoding::CONTROLS.add(b' ').remove(b'/');
pub(super) fn encode_path_to_uri(path: &PathBuf) -> String {
let encoded = percent_encoding::percent_encode(path.to_str().unwrap().as_bytes(), &ENCODE_SET)
.to_string();
pub(super) fn encode_path_to_uri(path: &PathBuf) -> io::Result<String> {
let encoded =
percent_encoding::percent_encode(path.to_str()?.as_bytes(), &ENCODE_SET).to_string();
format!("file://{}", encoded)
}
@ -54,7 +54,7 @@ mod uri_test {
#[test]
fn test_conversion() {
let path = std::path::PathBuf::from("/home/rustdesk/pictures/🖼️.png");
let uri = super::encode_path_to_uri(&path);
let uri = super::encode_path_to_uri(&path).unwrap();
assert_eq!(
uri,
"file:///home/rustdesk/pictures/%F0%9F%96%BC%EF%B8%8F.png"

View File

@ -89,7 +89,13 @@ impl SysClipboard for X11Clipboard {
fn set_file_list(&self, paths: &[PathBuf]) -> Result<(), CliprdrError> {
*self.former_file_list.lock() = paths.to_vec();
let uri_list: Vec<String> = paths.iter().map(encode_path_to_uri).collect();
let uri_list: Vec<String> = {
let mut v = Vec::new();
for path in paths {
v.push(encode_path_to_uri(path)?);
}
v
};
let uri_list = uri_list.join("\n");
let text_uri_list_data = uri_list.as_bytes().to_vec();
let gnome_copied_files_data = ["copy\n".as_bytes(), uri_list.as_bytes()].concat();

View File

@ -5,16 +5,16 @@
#![allow(non_snake_case)]
#![allow(deref_nullptr)]
use std::{
boxed::Box,
ffi::{CStr, CString},
result::Result,
};
use crate::{
allow_err, send_data, ClipboardFile, CliprdrError, CliprdrServiceContext, ResultType,
ERR_CODE_INVALID_PARAMETER, ERR_CODE_SERVER_FUNCTION_NONE, VEC_MSG_CHANNEL,
};
use hbb_common::log;
use std::{
boxed::Box,
ffi::{CStr, CString},
result::Result,
};
// only used error code will be recorded here
/// success
@ -779,7 +779,7 @@ pub fn server_format_list(
} else {
let n = match CString::new(format.1) {
Ok(n) => n,
Err(_) => CString::new("").unwrap(),
Err(_) => CString::new("").unwrap_or_default(),
};
CLIPRDR_FORMAT {
formatId: format.0 as UINT32,

View File

@ -60,7 +60,7 @@ fn parse_plain_uri_list(v: Vec<u8>) -> Result<String, String> {
#[cfg(all(target_os = "linux", feature = "unix-file-copy-paste"))]
impl ClipboardContext {
pub fn new() -> Result<Self, String> {
pub fn new(_listen: bool) -> Result<Self, String> {
let clipboard = get_clipboard()?;
let string_getter = clipboard
.getter
@ -95,14 +95,14 @@ impl ClipboardContext {
.load(clip, self.string_getter, prop, TIMEOUT)
.map_err(|e| e.to_string())?;
let file_urls = get_clipboard()?.load(clip, self.text_uri_list, prop, TIMEOUT);
let file_urls = get_clipboard()?.load(clip, self.text_uri_list, prop, TIMEOUT)?;
if file_urls.is_err() || file_urls.as_ref().unwrap().is_empty() {
if file_urls.is_err() || file_urls.as_ref().is_empty() {
log::trace!("clipboard get text, no file urls");
return String::from_utf8(text_content).map_err(|e| e.to_string());
}
let file_urls = parse_plain_uri_list(file_urls.unwrap())?;
let file_urls = parse_plain_uri_list(file_urls)?;
let text_content = String::from_utf8(text_content).map_err(|e| e.to_string())?;

View File

@ -1069,12 +1069,9 @@ impl FlutterHandler {
// 1. "display 1" will not send the event.
// 2. "displays 0&1" will not send the event. Because it uses texutre render for now.
if !is_sent {
self.display_rgbas
.write()
.unwrap()
.get_mut(&display)
.unwrap()
.valid = false;
if let Some(rgba_data) = self.display_rgbas.write().unwrap().get_mut(&display) {
rgba_data.valid = false;
}
}
}

View File

@ -24,14 +24,16 @@ macro_rules! configure_http_client {
if let Some(auth) = proxy.intercept.maybe_auth() {
let basic_auth =
format!("Basic {}", auth.get_basic_authorization());
builder = builder.default_headers(
vec![(
reqwest::header::PROXY_AUTHORIZATION,
basic_auth.parse().unwrap(),
)]
.into_iter()
.collect(),
);
if let Ok(auth) = basic_auth.parse() {
builder = builder.default_headers(
vec![(
reqwest::header::PROXY_AUTHORIZATION,
auth,
)]
.into_iter()
.collect(),
);
}
}
builder.build().unwrap_or_else(|e| {
info!("Failed to create a proxied client: {}", e);

View File

@ -360,7 +360,12 @@ impl Server {
self.services
.keys()
.filter(|k| {
Self::is_video_service_name(k) && self.services.get(*k).unwrap().is_subed(conn_id)
Self::is_video_service_name(k)
&& self
.services
.get(*k)
.map(|s| s.is_subed(conn_id))
.unwrap_or(false)
})
.count()
}